├── .babelrc ├── .bowerrc ├── .eslintrc ├── .flowconfig ├── .gitignore ├── .jshintrc ├── .stylishcolors ├── .travis.yml ├── AUTHORS ├── Procfile ├── README.md ├── bower.json ├── build ├── app.css ├── assets │ ├── ANIMATIONS.md │ ├── BREADCRUMBS.md │ ├── CHART.md │ ├── CLICKBUTTON.md │ ├── FORMVALIDATION.md │ ├── INCLUDEMD.md │ ├── MIXINS.md │ ├── REACTFIRE.md │ ├── README.md │ ├── STATICS.md │ ├── STICKY.md │ ├── fonts │ │ └── bootstrap │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ ├── posts.json │ └── react_logo.png ├── components │ ├── es6-promise │ │ ├── .bower.json │ │ ├── bower.json │ │ ├── promise.js │ │ └── promise.min.js │ ├── fastclick │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bower.json │ │ └── lib │ │ │ └── fastclick.js │ ├── flexslider │ │ ├── .bower.json │ │ ├── CONTRIBUTING.md │ │ ├── README.mdown │ │ ├── changelog.txt │ │ ├── demo │ │ │ ├── basic-carousel.html │ │ │ ├── carousel-min-max.html │ │ │ ├── css │ │ │ │ └── demo.css │ │ │ ├── dynamic-carousel-min-max.html │ │ │ ├── fonts │ │ │ │ └── webfonts │ │ │ │ │ ├── geo-medium │ │ │ │ │ ├── eot │ │ │ │ │ │ └── 1110FC_0.eot │ │ │ │ │ ├── svg │ │ │ │ │ │ ├── 1110FC_0.svg │ │ │ │ │ │ └── svg_test.html │ │ │ │ │ ├── ttf │ │ │ │ │ │ └── 1110FC_0.ttf │ │ │ │ │ └── woff │ │ │ │ │ │ └── 1110FC_0.woff │ │ │ │ │ ├── geo-regular │ │ │ │ │ ├── eot │ │ │ │ │ │ └── 11014B_0.eot │ │ │ │ │ ├── svg │ │ │ │ │ │ ├── 11014B_0.svg │ │ │ │ │ │ └── svg_test.html │ │ │ │ │ ├── ttf │ │ │ │ │ │ └── 11014B_0.ttf │ │ │ │ │ └── woff │ │ │ │ │ │ └── 11014B_0.woff │ │ │ │ │ └── geo-semibold │ │ │ │ │ ├── eot │ │ │ │ │ └── style_169898.eot │ │ │ │ │ ├── svg │ │ │ │ │ ├── index.html │ │ │ │ │ └── style_169898.svg │ │ │ │ │ ├── ttf │ │ │ │ │ └── style_169898.ttf │ │ │ │ │ └── woff │ │ │ │ │ └── style_169898.woff │ │ │ ├── images │ │ │ │ ├── kitchen_adventurer_caramel.jpg │ │ │ │ ├── kitchen_adventurer_cheesecake_brownie.jpg │ │ │ │ ├── kitchen_adventurer_donut.jpg │ │ │ │ ├── kitchen_adventurer_lemon.jpg │ │ │ │ └── logo.png │ │ │ ├── index.html │ │ │ ├── js │ │ │ │ ├── demo.js │ │ │ │ ├── froogaloop.js │ │ │ │ ├── jquery.easing.js │ │ │ │ ├── jquery.fitvid.js │ │ │ │ ├── jquery.mousewheel.js │ │ │ │ ├── modernizr.js │ │ │ │ ├── shBrushCss.js │ │ │ │ ├── shBrushJScript.js │ │ │ │ ├── shBrushXml.js │ │ │ │ └── shCore.js │ │ │ ├── thumbnail-controlnav.html │ │ │ ├── thumbnail-slider.html │ │ │ ├── video-wistia.html │ │ │ └── video.html │ │ ├── flexslider.css │ │ ├── flexslider.less │ │ ├── fonts │ │ │ ├── flexslider-icon.eot │ │ │ ├── flexslider-icon.svg │ │ │ ├── flexslider-icon.ttf │ │ │ └── flexslider-icon.woff │ │ ├── images │ │ │ └── bg_play_pause.png │ │ ├── jquery.flexslider-min.js │ │ └── jquery.flexslider.js │ ├── foundation │ │ ├── .bower.json │ │ ├── bower.json │ │ ├── css │ │ │ ├── foundation.css │ │ │ └── normalize.css │ │ ├── js │ │ │ ├── foundation.js │ │ │ ├── foundation.min.js │ │ │ ├── foundation │ │ │ │ ├── foundation.abide.js │ │ │ │ ├── foundation.accordion.js │ │ │ │ ├── foundation.alert.js │ │ │ │ ├── foundation.clearing.js │ │ │ │ ├── foundation.dropdown.js │ │ │ │ ├── foundation.equalizer.js │ │ │ │ ├── foundation.interchange.js │ │ │ │ ├── foundation.joyride.js │ │ │ │ ├── foundation.js │ │ │ │ ├── foundation.magellan.js │ │ │ │ ├── foundation.offcanvas.js │ │ │ │ ├── foundation.orbit.js │ │ │ │ ├── foundation.reveal.js │ │ │ │ ├── foundation.slider.js │ │ │ │ ├── foundation.tab.js │ │ │ │ ├── foundation.tooltip.js │ │ │ │ └── foundation.topbar.js │ │ │ └── vendor │ │ │ │ ├── fastclick.js │ │ │ │ ├── jquery.cookie.js │ │ │ │ ├── jquery.js │ │ │ │ ├── modernizr.js │ │ │ │ └── placeholder.js │ │ └── scss │ │ │ ├── foundation.scss │ │ │ ├── foundation │ │ │ ├── _functions.scss │ │ │ ├── _settings.scss │ │ │ └── components │ │ │ │ ├── _accordion.scss │ │ │ │ ├── _alert-boxes.scss │ │ │ │ ├── _block-grid.scss │ │ │ │ ├── _breadcrumbs.scss │ │ │ │ ├── _button-groups.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _clearing.scss │ │ │ │ ├── _dropdown-buttons.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _flex-video.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _global.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _icon-bar.scss │ │ │ │ ├── _inline-lists.scss │ │ │ │ ├── _joyride.scss │ │ │ │ ├── _keystrokes.scss │ │ │ │ ├── _labels.scss │ │ │ │ ├── _magellan.scss │ │ │ │ ├── _offcanvas.scss │ │ │ │ ├── _orbit.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _panels.scss │ │ │ │ ├── _pricing-tables.scss │ │ │ │ ├── _progress-bars.scss │ │ │ │ ├── _range-slider.scss │ │ │ │ ├── _reveal.scss │ │ │ │ ├── _side-nav.scss │ │ │ │ ├── _split-buttons.scss │ │ │ │ ├── _sub-nav.scss │ │ │ │ ├── _switches.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _tabs.scss │ │ │ │ ├── _thumbs.scss │ │ │ │ ├── _toolbar.scss │ │ │ │ ├── _tooltips.scss │ │ │ │ ├── _top-bar.scss │ │ │ │ ├── _type.scss │ │ │ │ └── _visibility.scss │ │ │ └── normalize.scss │ ├── jquery-placeholder │ │ ├── .bower.json │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── LICENSE-MIT.txt │ │ ├── README.md │ │ ├── bower.json │ │ ├── demo.html │ │ ├── jquery.placeholder.js │ │ └── tests │ │ │ ├── index.html │ │ │ └── tests.js │ ├── jquery.cookie │ │ ├── .bower.json │ │ ├── bower.json │ │ └── jquery.cookie.js │ ├── jquery │ │ ├── .bower.json │ │ ├── MIT-LICENSE.txt │ │ ├── bower.json │ │ ├── dist │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ └── jquery.min.map │ │ └── src │ │ │ ├── ajax.js │ │ │ ├── ajax │ │ │ ├── jsonp.js │ │ │ ├── load.js │ │ │ ├── parseJSON.js │ │ │ ├── parseXML.js │ │ │ ├── script.js │ │ │ ├── var │ │ │ │ ├── nonce.js │ │ │ │ └── rquery.js │ │ │ └── xhr.js │ │ │ ├── attributes.js │ │ │ ├── attributes │ │ │ ├── attr.js │ │ │ ├── classes.js │ │ │ ├── prop.js │ │ │ ├── support.js │ │ │ └── val.js │ │ │ ├── callbacks.js │ │ │ ├── core.js │ │ │ ├── core │ │ │ ├── access.js │ │ │ ├── init.js │ │ │ ├── parseHTML.js │ │ │ ├── ready.js │ │ │ └── var │ │ │ │ └── rsingleTag.js │ │ │ ├── css.js │ │ │ ├── css │ │ │ ├── addGetHookIf.js │ │ │ ├── curCSS.js │ │ │ ├── defaultDisplay.js │ │ │ ├── hiddenVisibleSelectors.js │ │ │ ├── support.js │ │ │ ├── swap.js │ │ │ └── var │ │ │ │ ├── cssExpand.js │ │ │ │ ├── getStyles.js │ │ │ │ ├── isHidden.js │ │ │ │ ├── rmargin.js │ │ │ │ └── rnumnonpx.js │ │ │ ├── data.js │ │ │ ├── data │ │ │ ├── Data.js │ │ │ ├── accepts.js │ │ │ └── var │ │ │ │ ├── data_priv.js │ │ │ │ └── data_user.js │ │ │ ├── deferred.js │ │ │ ├── deprecated.js │ │ │ ├── dimensions.js │ │ │ ├── effects.js │ │ │ ├── effects │ │ │ ├── Tween.js │ │ │ └── animatedSelector.js │ │ │ ├── event.js │ │ │ ├── event │ │ │ ├── alias.js │ │ │ └── support.js │ │ │ ├── exports │ │ │ ├── amd.js │ │ │ └── global.js │ │ │ ├── intro.js │ │ │ ├── jquery.js │ │ │ ├── manipulation.js │ │ │ ├── manipulation │ │ │ ├── _evalUrl.js │ │ │ ├── support.js │ │ │ └── var │ │ │ │ └── rcheckableType.js │ │ │ ├── offset.js │ │ │ ├── outro.js │ │ │ ├── queue.js │ │ │ ├── queue │ │ │ └── delay.js │ │ │ ├── selector-native.js │ │ │ ├── selector-sizzle.js │ │ │ ├── selector.js │ │ │ ├── serialize.js │ │ │ ├── sizzle │ │ │ └── dist │ │ │ │ ├── sizzle.js │ │ │ │ ├── sizzle.min.js │ │ │ │ └── sizzle.min.map │ │ │ ├── traversing.js │ │ │ ├── traversing │ │ │ ├── findFilter.js │ │ │ └── var │ │ │ │ └── rneedsContext.js │ │ │ ├── var │ │ │ ├── arr.js │ │ │ ├── class2type.js │ │ │ ├── concat.js │ │ │ ├── hasOwn.js │ │ │ ├── indexOf.js │ │ │ ├── pnum.js │ │ │ ├── push.js │ │ │ ├── rnotwhite.js │ │ │ ├── slice.js │ │ │ ├── strundefined.js │ │ │ ├── support.js │ │ │ └── toString.js │ │ │ └── wrap.js │ └── modernizr │ │ ├── .bower.json │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── feature-detects │ │ ├── a-download.js │ │ ├── audio-audiodata-api.js │ │ ├── audio-webaudio-api.js │ │ ├── battery-api.js │ │ ├── battery-level.js │ │ ├── blob-constructor.js │ │ ├── canvas-todataurl-type.js │ │ ├── contenteditable.js │ │ ├── contentsecuritypolicy.js │ │ ├── contextmenu.js │ │ ├── cookies.js │ │ ├── cors.js │ │ ├── css-backgroundposition-shorthand.js │ │ ├── css-backgroundposition-xy.js │ │ ├── css-backgroundrepeat.js │ │ ├── css-backgroundsizecover.js │ │ ├── css-boxsizing.js │ │ ├── css-calc.js │ │ ├── css-cubicbezierrange.js │ │ ├── css-displayrunin.js │ │ ├── css-displaytable.js │ │ ├── css-filters.js │ │ ├── css-hyphens.js │ │ ├── css-lastchild.js │ │ ├── css-mask.js │ │ ├── css-mediaqueries.js │ │ ├── css-objectfit.js │ │ ├── css-overflow-scrolling.js │ │ ├── css-pointerevents.js │ │ ├── css-positionsticky.js │ │ ├── css-regions.js │ │ ├── css-remunit.js │ │ ├── css-resize.js │ │ ├── css-scrollbars.js │ │ ├── css-shapes.js │ │ ├── css-subpixelfont.js │ │ ├── css-supports.js │ │ ├── css-userselect.js │ │ ├── css-vhunit.js │ │ ├── css-vmaxunit.js │ │ ├── css-vminunit.js │ │ ├── css-vwunit.js │ │ ├── custom-protocol-handler.js │ │ ├── dart.js │ │ ├── dataview-api.js │ │ ├── dom-classlist.js │ │ ├── dom-createElement-attrs.js │ │ ├── dom-dataset.js │ │ ├── dom-microdata.js │ │ ├── elem-datalist.js │ │ ├── elem-details.js │ │ ├── elem-output.js │ │ ├── elem-progress-meter.js │ │ ├── elem-ruby.js │ │ ├── elem-time.js │ │ ├── elem-track.js │ │ ├── emoji.js │ │ ├── es5-strictmode.js │ │ ├── event-deviceorientation-motion.js │ │ ├── exif-orientation.js │ │ ├── file-api.js │ │ ├── file-filesystem.js │ │ ├── forms-fileinput.js │ │ ├── forms-formattribute.js │ │ ├── forms-inputnumber-l10n.js │ │ ├── forms-placeholder.js │ │ ├── forms-speechinput.js │ │ ├── forms-validation.js │ │ ├── fullscreen-api.js │ │ ├── gamepad.js │ │ ├── getusermedia.js │ │ ├── ie8compat.js │ │ ├── iframe-sandbox.js │ │ ├── iframe-seamless.js │ │ ├── iframe-srcdoc.js │ │ ├── img-apng.js │ │ ├── img-webp.js │ │ ├── json.js │ │ ├── lists-reversed.js │ │ ├── mathml.js │ │ ├── network-connection.js │ │ ├── network-eventsource.js │ │ ├── network-xhr2.js │ │ ├── notification.js │ │ ├── performance.js │ │ ├── pointerlock-api.js │ │ ├── quota-management-api.js │ │ ├── requestanimationframe.js │ │ ├── script-async.js │ │ ├── script-defer.js │ │ ├── style-scoped.js │ │ ├── svg-filters.js │ │ ├── unicode.js │ │ ├── url-data-uri.js │ │ ├── userdata.js │ │ ├── vibration.js │ │ ├── web-intents.js │ │ ├── webgl-extensions.js │ │ ├── websockets-binary.js │ │ ├── window-framed.js │ │ ├── workers-blobworkers.js │ │ ├── workers-dataworkers.js │ │ └── workers-sharedworkers.js │ │ ├── grunt.js │ │ ├── media │ │ ├── Modernizr 2 Logo.ai │ │ ├── Modernizr 2 Logo.eps │ │ ├── Modernizr 2 Logo.pdf │ │ ├── Modernizr 2 Logo.png │ │ └── Modernizr 2 Logo.svg │ │ ├── modernizr.js │ │ ├── readme.md │ │ └── test │ │ ├── basic.html │ │ ├── caniuse.html │ │ ├── caniuse_files │ │ ├── Windsong-webfont.eot │ │ ├── Windsong-webfont.otf │ │ ├── Windsong-webfont.svg │ │ ├── Windsong-webfont.ttf │ │ ├── Windsong-webfont.woff │ │ ├── alpha.png │ │ ├── apng_test.png │ │ ├── before-after.png │ │ ├── form_validation.html │ │ ├── ga.js │ │ ├── green5x5.png │ │ ├── hashchange.html │ │ ├── jquery.min.js │ │ ├── mathml.html │ │ ├── mathml_ref.png │ │ ├── modernizr-1.7.min.js │ │ ├── png_alpha_result.png │ │ ├── pushstate.html │ │ ├── red30x30.png │ │ ├── ruby.png │ │ ├── stroked-text.png │ │ ├── style.css │ │ ├── svg-html-blur.png │ │ ├── svg-img.svg │ │ ├── svg-img.svg.1 │ │ ├── svg_blur.png │ │ ├── table.png │ │ ├── text-shadow1.png │ │ ├── text-shadow2.png │ │ ├── windsong_font.png │ │ └── xhtml.html │ │ ├── index.html │ │ ├── js │ │ ├── basic.html │ │ ├── dumpdata.js │ │ ├── lib │ │ │ ├── detect-global.js │ │ │ ├── jquery-1.7b2.js │ │ │ ├── jsonselect.js │ │ │ ├── polyfills.js │ │ │ └── uaparser.js │ │ ├── setup.js │ │ ├── unit-caniuse.js │ │ └── unit.js │ │ └── qunit │ │ ├── qunit.css │ │ ├── qunit.js │ │ └── run-qunit.js ├── favicon.ico ├── img │ ├── close_btn.png │ ├── favicon.ico │ ├── filter.png │ ├── home.png │ ├── home_selected.png │ ├── invoices.png │ ├── invoices_selected.png │ ├── logo.png │ ├── menu-handler.png │ ├── menu_divider.png │ ├── no_icon.png │ ├── placeholders │ │ ├── 1400x240.png │ │ ├── abo-graph.png │ │ ├── abonnent.png │ │ ├── abonnenter-abo.png │ │ ├── addsubscriber-1.jpg │ │ ├── addsubscriber-1.png │ │ ├── addsubscriber-2.jpg │ │ ├── addsubscriber-2.png │ │ ├── ban-graph.png │ │ ├── ban.png │ │ ├── fakturaer-2.png │ │ ├── fakturaer.png │ │ ├── forbruk.png │ │ ├── instillinger.png │ │ └── rapporter.png │ ├── reports.png │ ├── reports_selected.png │ ├── search.png │ ├── smiley.png │ ├── subscribers.png │ ├── subscribers_selected.png │ ├── tsr-icons-fonts │ │ ├── old │ │ │ ├── ts-icons-all.eot │ │ │ ├── ts-icons-all.svg │ │ │ ├── ts-icons-all.ttf │ │ │ └── ts-icons-all.woff │ │ ├── selection.json │ │ ├── ts-icons-all.eot │ │ ├── ts-icons-all.svg │ │ ├── ts-icons-all.ttf │ │ └── ts-icons-all.woff │ ├── usage.png │ └── usage_selected.png ├── index.html ├── jquery.min.map └── vendor.js ├── config.js ├── config ├── config.js ├── webpack.config.js └── webpack.deploy.js ├── dev.js ├── favicon.ico ├── gulpfile.js ├── heroku.js ├── lib └── config-moulder.js ├── package.json ├── preprocessor.js ├── public ├── dist │ ├── app.css │ ├── assets │ │ ├── ANIMATIONS.md │ │ ├── BREADCRUMBS.md │ │ ├── CHART.md │ │ ├── CLICKBUTTON.md │ │ ├── COMPONENT.md │ │ ├── FORMVALIDATION.md │ │ ├── INCLUDEMD.md │ │ ├── MIXINS.md │ │ ├── REACTFIRE.md │ │ ├── README.md │ │ ├── STATICS.md │ │ ├── STICKY.md │ │ ├── fonts │ │ │ └── bootstrap │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── posts.json │ │ └── react_logo.png │ ├── bundle.js │ ├── es5-sham.map │ ├── es5-shim.map │ ├── favicon.ico │ ├── index.html │ ├── jquery.min.map │ ├── site.css │ └── vendor.js └── src │ ├── assets │ ├── ANIMATIONS.md │ ├── BREADCRUMBS.md │ ├── CHART.md │ ├── CLICKBUTTON.md │ ├── COMPONENT.md │ ├── FORMVALIDATION.md │ ├── INCLUDEMD.md │ ├── MIXINS.md │ ├── REACTFIRE.md │ ├── README.md │ ├── STATICS.md │ ├── STICKY.md │ ├── fonts │ │ └── bootstrap │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ ├── posts.json │ └── react_logo.png │ ├── es5-sham.map │ ├── es5-shim.map │ ├── favicon.ico │ ├── index.html │ ├── jquery.min.map │ ├── lib │ ├── ajax-put-delete.jquery.js │ ├── ajax-put-delete.jquery.min.js │ ├── extract-jquery-ajax-error.js │ └── random-string.js │ ├── scripts │ ├── animations │ │ └── index.js │ ├── app.js │ ├── articles │ │ ├── index.js │ │ └── item │ │ │ ├── edit.js │ │ │ └── index.js │ ├── breadcrumbs │ │ └── index.js │ ├── button │ │ └── index.js │ ├── charts │ │ └── index.js │ ├── component │ │ └── index.js │ ├── editable │ │ ├── AUTHORS │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── index.js │ │ └── package.json │ ├── forms │ │ └── index.js │ ├── home │ │ └── index.js │ ├── jfokus │ │ └── index.js │ ├── layout.js │ ├── logdown │ │ ├── .jscsrc │ │ ├── .jshintrc │ │ ├── .npmignore │ │ ├── .travis.yml │ │ ├── dist │ │ │ └── index.js │ │ ├── example │ │ │ ├── index.html │ │ │ ├── lib │ │ │ │ ├── devtools-detect.js │ │ │ │ └── logdown.js │ │ │ └── node.js │ │ ├── gulpfile.js │ │ ├── package.json │ │ ├── readme.md │ │ ├── src │ │ │ └── index.js │ │ └── test │ │ │ ├── browser.js │ │ │ ├── karma-travisci.conf.js │ │ │ ├── karma.conf.js │ │ │ └── server.js │ ├── login │ │ ├── index.js │ │ └── store.js │ ├── markdown │ │ └── index.js │ ├── mcfly │ │ ├── index.js │ │ └── store.js │ ├── mixin │ │ └── index.js │ ├── mixins │ │ └── ajax.js │ ├── reactfire │ │ └── index.js │ ├── reflux │ │ ├── actions.js │ │ ├── index.js │ │ ├── state.js │ │ └── store.js │ ├── source │ │ └── index.js │ ├── static │ │ └── index.js │ └── stickydiv │ │ └── index.js │ └── styles │ ├── _animate.scss │ ├── _base.scss │ ├── _blend_modes.scss │ ├── _body.scss │ ├── _color-schemer.scss │ ├── _flyin.scss │ ├── _login.scss │ ├── _variables.scss │ ├── app.scss │ └── color-schemer │ ├── _cmyk.scss │ ├── _color-adjustments.scss │ ├── _color-schemer.scss │ ├── _colorblind.scss │ ├── _comparison.scss │ ├── _equalize.scss │ ├── _harmonize.scss │ ├── _interpolation.scss │ ├── _mix.scss │ ├── _mixins.scss │ ├── _ryb.scss │ └── _tint-shade.scss ├── server.js ├── start.js ├── tasks ├── clean.js ├── copy.js ├── copystyles.js ├── critical.js ├── lint.js ├── serve.js ├── styles.js ├── transform.js ├── vendor.js └── webpack.js ├── test-helpers ├── blanket-stub-jsx.js ├── index.js ├── jsx-stub-transform.js └── testdom.js ├── tests ├── CheckboxWithLabel-test.js ├── blanket-stub-jsx.js ├── compiler.js ├── jsx-stub-transform.js └── testdom.js └── webpack.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015","react"] 3 | } 4 | 5 | -------------------------------------------------------------------------------- /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "public/dist/components" 3 | } 4 | -------------------------------------------------------------------------------- /.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | .*/dist/.* 3 | [include] 4 | 5 | [libs] 6 | 7 | [options] 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | temp 3 | build 4 | ../api/run.sh 5 | npm-debug.log 6 | .DS_Store? 7 | ._* 8 | .Spotlight-V100 9 | .Trashes 10 | ehthumbs.db 11 | Thumbs.db 12 | 13 | node_modules 14 | /_ 15 | /.idea 16 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "node": true, 3 | "asi": true, 4 | "esnext": true, 5 | "boss": true, 6 | "curly": false, 7 | "devel": true, 8 | "eqnull": true, 9 | "expr": true, 10 | "funcscope": true, 11 | "globalstrict": true, 12 | "loopfunc": true, 13 | "newcap": false, 14 | "noempty": true, 15 | "nonstandard": true, 16 | "sub": true, 17 | "undef": true, 18 | "mocha": true, 19 | "unused": true, 20 | "multistr":true, 21 | "globals": { 22 | "localStorage": false, 23 | "document": false, 24 | "window": false, 25 | "self": false, 26 | "$": false, 27 | "process": false, 28 | "module": false, 29 | "exports": false, 30 | "console": false, 31 | "it": false, 32 | "describe": false 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /.stylishcolors: -------------------------------------------------------------------------------- 1 | { 2 | "meta": "gray", 3 | "reason": "yellow", 4 | "verbose": "gray", 5 | "error": "red", 6 | "noproblem": "green" 7 | } 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.10" 4 | 5 | # By default, Travis runs "npm install" to install dependencies and "npm test" 6 | # to run the tests. Both of these work for us. 7 | # See http://docs.travis-ci.com/user/languages/javascript-with-nodejs/ 8 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Ben Levy 2 | Sven Anders Robbestad 3 | ibjohansen 4 | thomasfl 5 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node heroku.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ATTENTION 2 | 3 | I consider the code in this repo okayish for 2014-era React, but I now consider it completely deprecated. 4 | 5 | Please visit this repo instead: https://github.com/svenanders/minimal-react 6 | 7 | 8 | # Learn React 9 | 10 | This repo is a learning tool for React. Each single module is meant to show or highlight a feature or thing you can do with React. Fork and add modules if you want to showcase something. 11 | 12 | ## Check it out online 13 | 14 | [Web site](https://learnreact.robbestad.com/) 15 | 16 | ## Install 17 | 18 | ```sh 19 | $ npm install 20 | $ npm run dev 21 | open http://localhost:8080 22 | ``` 23 | 24 | ## Type checking 25 | 26 | ```flow check``` 27 | 28 | Static Type checking is (partially) implemented with Flow. 29 | 30 | ## Tests 31 | 32 | #### Travis 33 | 34 | https://travis-ci.org/svenanders/learn-react 35 | 36 | [![Build Status](https://travis-ci.org/svenanders/learn-react.svg?branch=master)](https://travis-ci.org/svenanders/learn-react) 37 | 38 | #### Local testing 39 | 40 | ```npm test``` 41 | 42 | Testing is done with Jest. It uses a preprocessor that strips Flow type annotations and a test helper that mocks 43 | react-router. 44 | 45 | ## Tech 46 | 47 | > Built on an application architecture for React 48 | 49 | - [React Router](https://github.com/rackt/react-router) 50 | - [Reflux](https://www.npmjs.org/package/reflux) 51 | - [Flow](http://flowtype.org/) 52 | - [Jest](https://facebook.github.io/jest/) 53 | 54 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "2.0.0", 4 | "authors": [ 5 | "Sven Anders Robbestad " 6 | ], 7 | "license": "MIT", 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "bower_components", 12 | "test", 13 | "tests" 14 | ], 15 | "dependencies": { 16 | "es6-promise": "~2.0.0", 17 | "es5-shim": "~4.0.3", 18 | "modernizr": ">= 2.7.2", 19 | "fastclick": ">=0.6.11" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /build/assets/BREADCRUMBS.md: -------------------------------------------------------------------------------- 1 | # React Breadcrumbs 2 | 3 | [React][1] Component for [React-Router][4]. 4 | 5 | Demo at [opensourceprojects.robbestad.com][2] 6 | 7 | ## Installation 8 | 9 | % npm install react-breadcrumbs --save 10 | 11 | ## Usage 12 | 13 | 14 | var Breadcrumbs = require('react-breadcrumbs'); 15 | 16 | MyComponent = React.createClass({ 17 | render: function() { 18 | return ( 19 |
20 | 21 |
22 | ); 23 | } 24 | }); 25 | 26 | Optionally, you can add this prop to replace the default separator: 27 | 28 | 29 | 30 | The breadcrumbs will automatically populate based on your 31 | route configuration. It requires that you have a name="" parameter 32 | in your routes for every route. It will use the displayName parameter 33 | for the Breadcrumb link. 34 | 35 | [1]: https://facebook.github.io/react 36 | [2]: http://opensourceprojects.robbestad.com/ 37 | [3]: https://github.com/svenanders/react-breadcrumbs/issues/1 38 | [4]: https://github.com/rackt/react-router 39 | -------------------------------------------------------------------------------- /build/assets/CLICKBUTTON.md: -------------------------------------------------------------------------------- 1 | # Click a button 2 | 3 | 4 | /** 5 | * Click a button class 6 | * @flow 7 | */ 8 | 9 | var React = require("react"); 10 | 11 | module.exports = React.createClass({ 12 | getInitialState: function (): any { 13 | return { 14 | buttonText: "Not clicked", 15 | buttonClicked: 0, 16 | buttonStyle:'info' 17 | }; 18 | }, 19 | 20 | onClick: function (): any { 21 | this.state.buttonClicked ? 22 | this.setState({buttonText: "Not clicked", 23 | buttonClicked: 0, buttonStyle:'info'}) : 24 | this.setState({buttonText: "Clicked me", 25 | buttonClicked: 1, buttonStyle:'success'}); 26 | }, 27 | 28 | 29 | render: function ():any { 30 | return
31 |

Button

32 |

33 | 38 |

39 | 40 |
41 | } 42 | }); 43 | 44 | -------------------------------------------------------------------------------- /build/assets/INCLUDEMD.md: -------------------------------------------------------------------------------- 1 | # Markdown to HTML 2 | 3 | [React][1] Component that converts a Markdown file to HTML 4 | 5 | ## Installation 6 | 7 | % npm install react-markdown-to-html --save 8 | 9 | ## Usage 10 | 11 | 12 | #### With JSX 13 | 14 | var Markdown2HTML = require('react-markdown-to-html'); 15 | MyComponent = React.createClass({ 16 | render: function() { 17 | return ( 18 | 19 | ); 20 | } 21 | }); 22 | 23 | #### Without JSX 24 | 25 | var Markdown2HTML = require('react-markdown-to-html'); 26 | MyComponent = React.createClass({displayName: "MyComponent", 27 | render: function() { 28 | return ( 29 | React.createElement(Markdown2HTML, {src: "README.md"}) 30 | ); 31 | } 32 | }); 33 | 34 | [1]: https://facebook.github.io/react 35 | [2]: http://opensourceprojects.robbestad.com/#/markdown -------------------------------------------------------------------------------- /build/assets/MIXINS.md: -------------------------------------------------------------------------------- 1 | ### Mixins Example 2 | 3 | var SetIntervalMixin = { 4 | 5 | componentWillMount: function() { 6 | this.intervals = []; 7 | }, 8 | setInterval: function() { 9 | this.intervals.push(setInterval.apply(null, arguments)); 10 | }, 11 | componentWillUnmount: function() { 12 | this.intervals.map(clearInterval); 13 | } 14 | }; 15 | 16 | var React = require("react"); 17 | 18 | var Mixin = React.createClass({ 19 | displayName: "Home", 20 | getInitialState(){ 21 | return{ 22 | seconds:0 23 | } 24 | }, 25 | mixins:[SetIntervalMixin], 26 | statics: { 27 | increment(n) { return n + 1; } 28 | }, 29 | componentDidMount() { 30 | this.setInterval(this.tick, 1000); 31 | }, 32 | tick() { 33 | this.setState({seconds: Mixin.increment(this.state.seconds)}); 34 | }, 35 | render() { 36 | 37 | return
38 |
39 | 40 |

Mixin

41 | {this.props.name} has been running for {this.state.seconds} {this.unit} seconds 42 | 43 |
44 |
45 | } 46 | }); 47 | module.exports=Mixin; -------------------------------------------------------------------------------- /build/assets/README.md: -------------------------------------------------------------------------------- 1 | ## Sourcecode 2 | 3 | [Github](https://github.com/svenanders/react-reflux-boilerplate) 4 | 5 | ## About 6 | 7 | > An application architecture for React utilizing a unidirectional data flow with the [Reflux](https://www.npmjs.org/package/reflux) Architecture 8 | 9 | ## Tech 10 | 11 | - [React Router](https://github.com/rackt/react-router) 12 | - [Reflux](https://www.npmjs.org/package/reflux) 13 | - [Flow](http://flowtype.org/) 14 | - [Jest](https://facebook.github.io/jest/) 15 | 16 | ## Install 17 | 18 | ```sh 19 | $ npm install 20 | $ bower install 21 | $ ./script/dev 22 | # open http://localhost:3000 23 | ``` 24 | 25 | ## Type checking 26 | 27 | ```flow check``` 28 | 29 | Type checking is implemented with Flow. 30 | 31 | ## Tests 32 | 33 | ```npm test``` 34 | 35 | Testing is done with Jest. It uses a preprocessor that strips Flow type annotations and a test helper that mocks 36 | react-router. 37 | -------------------------------------------------------------------------------- /build/assets/STATICS.md: -------------------------------------------------------------------------------- 1 | ### Statics Example 2 | 3 | var React = require("react"); 4 | var Markdown2Html = require("react-markdown-to-html"); 5 | var Breadcrumbs = require('react-breadcrumbs'); 6 | 7 | 8 | var Component = React.createClass({ 9 | getInitialState() { 10 | return { 11 | greeting: 'Hello World' 12 | } 13 | }, 14 | statics: { 15 | componentName: 'My Static Component' 16 | }, 17 | render: function () { 18 | return
19 | 20 | 21 |

{this.state.greeting}

22 | 23 |
24 | } 25 | }); 26 | 27 | //console.log(Component.componentName); // My Static Component 28 | 29 | 30 | module.exports = Component; -------------------------------------------------------------------------------- /build/assets/STICKY.md: -------------------------------------------------------------------------------- 1 | # Sticky Div 2 | 3 | React Component that sets a div (or any HTML element) sticky when it's scrolled beyond view. 4 | 5 | ## Installation 6 | 7 | % npm install react-stickydiv --save 8 | 9 | ## Usage 10 | 11 | #### With JSX 12 | 13 | var StickyDiv = require('react-stickydiv'); 14 | 15 | MyComponent = React.createClass({ 16 | render: function() { 17 | return ( 18 | 19 | I'm Sticky 20 | 21 | ); 22 | } 23 | }); 24 | 25 | #### Without JSX 26 | 27 | var MyComponent = React.createClass({ 28 | render: function() { 29 | return React.createElement(StickyDiv, null, React.createElement("div", null, "I'm Sticky")); 30 | } 31 | }); 32 | -------------------------------------------------------------------------------- /build/assets/fonts/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/assets/fonts/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /build/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /build/assets/fonts/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/assets/fonts/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /build/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /build/assets/react_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/assets/react_logo.png -------------------------------------------------------------------------------- /build/components/es6-promise/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-promise", 3 | "version": "2.0.0", 4 | "main": "./promise.js", 5 | "homepage": "https://github.com/components/es6-promise", 6 | "_release": "2.0.0", 7 | "_resolution": { 8 | "type": "version", 9 | "tag": "v2.0.0", 10 | "commit": "77cfeef0c6ce8d486e497a6ac9fe6427354c5c4a" 11 | }, 12 | "_source": "git://github.com/components/es6-promise.git", 13 | "_target": "~2.0.0", 14 | "_originalSource": "es6-promise", 15 | "_direct": true 16 | } -------------------------------------------------------------------------------- /build/components/es6-promise/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "es6-promise", 3 | "version": "2.0.0", 4 | "main": "./promise.js" 5 | } 6 | -------------------------------------------------------------------------------- /build/components/fastclick/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fastclick", 3 | "version": "1.0.3", 4 | "main": "lib/fastclick.js", 5 | "ignore": [ 6 | "**/.*", 7 | "component.json", 8 | "package.json", 9 | "Makefile", 10 | "tests", 11 | "examples" 12 | ], 13 | "homepage": "https://github.com/ftlabs/fastclick", 14 | "_release": "1.0.3", 15 | "_resolution": { 16 | "type": "version", 17 | "tag": "v1.0.3", 18 | "commit": "0ea8330a63019a07c8ccc86deca866bb31189b66" 19 | }, 20 | "_source": "git://github.com/ftlabs/fastclick.git", 21 | "_target": ">=0.6.11", 22 | "_originalSource": "fastclick" 23 | } -------------------------------------------------------------------------------- /build/components/fastclick/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 The Financial Times Ltd. 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /build/components/fastclick/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fastclick", 3 | "version": "1.0.3", 4 | "main": "lib/fastclick.js", 5 | "ignore": [ 6 | "**/.*", 7 | "component.json", 8 | "package.json", 9 | "Makefile", 10 | "tests", 11 | "examples" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /build/components/flexslider/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flexslider", 3 | "homepage": "https://github.com/woothemes/FlexSlider", 4 | "_release": "8b3766e026", 5 | "_resolution": { 6 | "type": "branch", 7 | "branch": "master", 8 | "commit": "8b3766e026926ed199c2118199fda8a3ab7f418b" 9 | }, 10 | "_source": "git://github.com/woothemes/FlexSlider.git", 11 | "_target": "*", 12 | "_originalSource": "flexslider" 13 | } -------------------------------------------------------------------------------- /build/components/flexslider/changelog.txt: -------------------------------------------------------------------------------- 1 | FLEXSLIDER CHANGELOG 2 | 3 | 2013.02.15 - Version 2.0 4 | * Added changelog.txt 5 | 6 | 2014.05.7 - Version 2.2.2 7 | * Added flexslider.less -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-medium/eot/1110FC_0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-medium/eot/1110FC_0.eot -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-medium/ttf/1110FC_0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-medium/ttf/1110FC_0.ttf -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-medium/woff/1110FC_0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-medium/woff/1110FC_0.woff -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-regular/eot/11014B_0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-regular/eot/11014B_0.eot -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-regular/ttf/11014B_0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-regular/ttf/11014B_0.ttf -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-regular/woff/11014B_0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-regular/woff/11014B_0.woff -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-semibold/eot/style_169898.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-semibold/eot/style_169898.eot -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-semibold/ttf/style_169898.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-semibold/ttf/style_169898.ttf -------------------------------------------------------------------------------- /build/components/flexslider/demo/fonts/webfonts/geo-semibold/woff/style_169898.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/fonts/webfonts/geo-semibold/woff/style_169898.woff -------------------------------------------------------------------------------- /build/components/flexslider/demo/images/kitchen_adventurer_caramel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/images/kitchen_adventurer_caramel.jpg -------------------------------------------------------------------------------- /build/components/flexslider/demo/images/kitchen_adventurer_cheesecake_brownie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/images/kitchen_adventurer_cheesecake_brownie.jpg -------------------------------------------------------------------------------- /build/components/flexslider/demo/images/kitchen_adventurer_donut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/images/kitchen_adventurer_donut.jpg -------------------------------------------------------------------------------- /build/components/flexslider/demo/images/kitchen_adventurer_lemon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/images/kitchen_adventurer_lemon.jpg -------------------------------------------------------------------------------- /build/components/flexslider/demo/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/demo/images/logo.png -------------------------------------------------------------------------------- /build/components/flexslider/demo/js/demo.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | var toggles = $('.toggle a'), 3 | codes = $('.code'); 4 | 5 | toggles.on("click", function(event){ 6 | event.preventDefault(); 7 | var $this = $(this); 8 | 9 | if (!$this.hasClass("active")) { 10 | toggles.removeClass("active"); 11 | $this.addClass("active"); 12 | codes.hide().filter(this.hash).show(); 13 | } 14 | }); 15 | toggles.first().click(); 16 | }); -------------------------------------------------------------------------------- /build/components/flexslider/fonts/flexslider-icon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/fonts/flexslider-icon.eot -------------------------------------------------------------------------------- /build/components/flexslider/fonts/flexslider-icon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/fonts/flexslider-icon.ttf -------------------------------------------------------------------------------- /build/components/flexslider/fonts/flexslider-icon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/fonts/flexslider-icon.woff -------------------------------------------------------------------------------- /build/components/flexslider/images/bg_play_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/robbestad/learn-react/4df1658517fb9610248fcef3a640ef656fa40884/build/components/flexslider/images/bg_play_pause.png -------------------------------------------------------------------------------- /build/components/foundation/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foundation", 3 | "version": "5.4.7", 4 | "main": [ 5 | "css/foundation.css", 6 | "css/foundation.css.map", 7 | "js/foundation.js" 8 | ], 9 | "ignore": [], 10 | "dependencies": { 11 | "jquery": ">= 2.1.0", 12 | "modernizr": ">= 2.7.2", 13 | "fastclick": ">=0.6.11", 14 | "jquery.cookie": "~1.4.0", 15 | "jquery-placeholder": "~2.0.7" 16 | }, 17 | "devDependencies": { 18 | "jquery.autocomplete": "devbridge/jQuery-Autocomplete#1.2.9", 19 | "lodash": "~2.4.1" 20 | }, 21 | "private": true, 22 | "homepage": "https://github.com/zurb/bower-foundation", 23 | "_release": "5.4.7", 24 | "_resolution": { 25 | "type": "version", 26 | "tag": "5.4.7", 27 | "commit": "4371fdca68a2635a7000c9f5567ff9bb62d2a687" 28 | }, 29 | "_source": "git://github.com/zurb/bower-foundation.git", 30 | "_target": "~5.4.7", 31 | "_originalSource": "foundation" 32 | } -------------------------------------------------------------------------------- /build/components/foundation/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foundation", 3 | "version": "5.4.7", 4 | "main": [ 5 | "css/foundation.css", 6 | "css/foundation.css.map", 7 | "js/foundation.js" 8 | ], 9 | "ignore": [ 10 | ], 11 | "dependencies": { 12 | "jquery": ">= 2.1.0", 13 | "modernizr": ">= 2.7.2", 14 | "fastclick": ">=0.6.11", 15 | "jquery.cookie": "~1.4.0", 16 | "jquery-placeholder": "~2.0.7" 17 | }, 18 | "devDependencies": { 19 | "jquery.autocomplete": "devbridge/jQuery-Autocomplete#1.2.9", 20 | "lodash": "~2.4.1" 21 | }, 22 | "private": true 23 | } 24 | -------------------------------------------------------------------------------- /build/components/foundation/js/foundation/foundation.alert.js: -------------------------------------------------------------------------------- 1 | ;(function ($, window, document, undefined) { 2 | 'use strict'; 3 | 4 | Foundation.libs.alert = { 5 | name : 'alert', 6 | 7 | version : '5.4.7', 8 | 9 | settings : { 10 | callback: function (){} 11 | }, 12 | 13 | init : function (scope, method, options) { 14 | this.bindings(method, options); 15 | }, 16 | 17 | events : function () { 18 | var self = this, 19 | S = this.S; 20 | 21 | $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) { 22 | var alertBox = S(this).closest('[' + self.attr_name() + ']'), 23 | settings = alertBox.data(self.attr_name(true) + '-init') || self.settings; 24 | 25 | e.preventDefault(); 26 | if (Modernizr.csstransitions) { 27 | alertBox.addClass("alert-close"); 28 | alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function(e) { 29 | S(this).trigger('close').trigger('close.fndtn.alert').remove(); 30 | settings.callback(); 31 | }); 32 | } else { 33 | alertBox.fadeOut(300, function () { 34 | S(this).trigger('close').trigger('close.fndtn.alert').remove(); 35 | settings.callback(); 36 | }); 37 | } 38 | }); 39 | }, 40 | 41 | reflow : function () {} 42 | }; 43 | }(jQuery, window, window.document)); 44 | -------------------------------------------------------------------------------- /build/components/foundation/js/vendor/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2013 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}}); -------------------------------------------------------------------------------- /build/components/foundation/scss/foundation/components/_flex-video.scss: -------------------------------------------------------------------------------- 1 | // Foundation by ZURB 2 | // foundation.zurb.com 3 | // Licensed under MIT Open Source 4 | 5 | @import "global"; 6 | 7 | // 8 | // @variables 9 | // 10 | $include-html-media-classes: $include-html-classes !default; 11 | 12 | // We use these to control video container padding and margins 13 | $flex-video-padding-top: rem-calc(25) !default; 14 | $flex-video-padding-bottom: 67.5% !default; 15 | $flex-video-margin-bottom: rem-calc(16) !default; 16 | 17 | // We use this to control widescreen bottom padding 18 | $flex-video-widescreen-padding-bottom: 56.34% !default; 19 | 20 | // 21 | // @mixins 22 | // 23 | 24 | @mixin flex-video-container { 25 | position: relative; 26 | padding-top: $flex-video-padding-top; 27 | padding-bottom: $flex-video-padding-bottom; 28 | height: 0; 29 | margin-bottom: $flex-video-margin-bottom; 30 | overflow: hidden; 31 | 32 | &.widescreen { padding-bottom: $flex-video-widescreen-padding-bottom; } 33 | &.vimeo { padding-top: 0; } 34 | 35 | iframe, 36 | object, 37 | embed, 38 | video { 39 | position: absolute; 40 | top: 0; 41 | #{$default-float}: 0; 42 | width: 100%; 43 | height: 100%; 44 | } 45 | } 46 | 47 | @include exports("flex-video") { 48 | @if $include-html-media-classes { 49 | .flex-video { @include flex-video-container; } 50 | } 51 | } -------------------------------------------------------------------------------- /build/components/foundation/scss/foundation/components/_magellan.scss: -------------------------------------------------------------------------------- 1 | // Foundation by ZURB 2 | // foundation.zurb.com 3 | // Licensed under MIT Open Source 4 | 5 | @import "global"; 6 | 7 | // 8 | // @variables 9 | // 10 | $include-html-magellan-classes: $include-html-classes !default; 11 | 12 | $magellan-bg: $white !default; 13 | $magellan-padding: 10px !default; 14 | 15 | @include exports("magellan") { 16 | @if $include-html-magellan-classes { 17 | 18 | #{data('magellan-expedition')}, #{data('magellan-expedition-clone')} { 19 | background: $magellan-bg; 20 | z-index: 50; 21 | min-width: 100%; 22 | padding: $magellan-padding; 23 | 24 | .sub-nav { 25 | margin-bottom: 0; 26 | dd { margin-bottom: 0; } 27 | a { 28 | line-height: 1.8em; 29 | } 30 | } 31 | } 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /build/components/foundation/scss/foundation/components/_toolbar.scss: -------------------------------------------------------------------------------- 1 | // Foundation by ZURB 2 | // foundation.zurb.com 3 | // Licensed under MIT Open Source 4 | // toolbar styles 5 | 6 | .toolbar { 7 | background: $oil; 8 | width: 100%; 9 | font-size: 0; 10 | display: inline-block; 11 | 12 | &.label-bottom .tab .tab-content { 13 | i, img { margin-bottom: 10px; } 14 | } 15 | 16 | &.label-right .tab .tab-content { 17 | i, img { margin-right: 10px; display: inline-block;} 18 | label { display: inline-block; } 19 | } 20 | 21 | &.vertical.label-right .tab .tab-content { 22 | text-align: left; 23 | } 24 | 25 | &.vertical { 26 | height: 100%; 27 | width: auto; 28 | 29 | .tab { 30 | width: auto; 31 | margin: auto; 32 | float: none; 33 | } 34 | } 35 | 36 | .tab { 37 | text-align: center; 38 | width: 25%; 39 | margin: 0 auto; 40 | display: block; 41 | padding: 20px; 42 | float: left; 43 | 44 | &:hover { 45 | background: rgba($white, 0.1); 46 | } 47 | } 48 | } 49 | 50 | .toolbar .tab-content { 51 | font-size: 16px; 52 | text-align: center; 53 | 54 | label { color: $iron; } 55 | 56 | i { 57 | font-size: 30px; 58 | display: block; 59 | margin: 0 auto; 60 | color: $iron; 61 | vertical-align: middle; 62 | } 63 | 64 | img { 65 | width: 30px; 66 | height: 30px; 67 | display: block; 68 | margin: 0 auto; 69 | } 70 | } -------------------------------------------------------------------------------- /build/components/jquery-placeholder/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-placeholder", 3 | "version": "2.0.8", 4 | "main": [ 5 | "jquery.placeholder.js" 6 | ], 7 | "homepage": "https://github.com/mathiasbynens/jquery-placeholder", 8 | "_release": "2.0.8", 9 | "_resolution": { 10 | "type": "version", 11 | "tag": "v2.0.8", 12 | "commit": "051f21ef5279f4887d9caf6af7af211d933ba670" 13 | }, 14 | "_source": "git://github.com/mathiasbynens/jquery-placeholder.git", 15 | "_target": "~2.0.7", 16 | "_originalSource": "jquery-placeholder" 17 | } -------------------------------------------------------------------------------- /build/components/jquery-placeholder/.gitattributes: -------------------------------------------------------------------------------- 1 | * eol=lf -------------------------------------------------------------------------------- /build/components/jquery-placeholder/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /build/components/jquery-placeholder/LICENSE-MIT.txt: -------------------------------------------------------------------------------- 1 | Copyright Mathias Bynens 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /build/components/jquery-placeholder/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery-placeholder", 3 | "version": "2.0.8", 4 | "main": ["jquery.placeholder.js"] 5 | } 6 | -------------------------------------------------------------------------------- /build/components/jquery.cookie/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery.cookie", 3 | "version": "1.4.1", 4 | "main": [ 5 | "./jquery.cookie.js" 6 | ], 7 | "dependencies": { 8 | "jquery": ">=1.2" 9 | }, 10 | "ignore": [ 11 | "test", 12 | ".*", 13 | "*.json", 14 | "*.md", 15 | "*.txt", 16 | "Gruntfile.js" 17 | ], 18 | "homepage": "https://github.com/carhartl/jquery-cookie", 19 | "_release": "1.4.1", 20 | "_resolution": { 21 | "type": "version", 22 | "tag": "v1.4.1", 23 | "commit": "92b7715518f2e6e90f4cfc7a07f9726a614ebe66" 24 | }, 25 | "_source": "git://github.com/carhartl/jquery-cookie.git", 26 | "_target": "~1.4.0", 27 | "_originalSource": "jquery.cookie" 28 | } -------------------------------------------------------------------------------- /build/components/jquery.cookie/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery.cookie", 3 | "version": "1.4.1", 4 | "main": [ 5 | "./jquery.cookie.js" 6 | ], 7 | "dependencies": { 8 | "jquery": ">=1.2" 9 | }, 10 | "ignore": [ 11 | "test", 12 | ".*", 13 | "*.json", 14 | "*.md", 15 | "*.txt", 16 | "Gruntfile.js" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /build/components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.1", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "1.10.19", 18 | "requirejs": "2.1.10", 19 | "qunit": "1.14.0", 20 | "sinon": "1.8.1" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ], 27 | "homepage": "https://github.com/jquery/jquery", 28 | "_release": "2.1.1", 29 | "_resolution": { 30 | "type": "version", 31 | "tag": "2.1.1", 32 | "commit": "4dec426aa2a6cbabb1b064319ba7c272d594a688" 33 | }, 34 | "_source": "git://github.com/jquery/jquery.git", 35 | "_target": ">= 2.1.0", 36 | "_originalSource": "jquery" 37 | } -------------------------------------------------------------------------------- /build/components/jquery/MIT-LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 jQuery Foundation and other contributors 2 | http://jquery.com/ 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /build/components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "version": "2.1.1", 4 | "main": "dist/jquery.js", 5 | "license": "MIT", 6 | "ignore": [ 7 | "**/.*", 8 | "build", 9 | "speed", 10 | "test", 11 | "*.md", 12 | "AUTHORS.txt", 13 | "Gruntfile.js", 14 | "package.json" 15 | ], 16 | "devDependencies": { 17 | "sizzle": "1.10.19", 18 | "requirejs": "2.1.10", 19 | "qunit": "1.14.0", 20 | "sinon": "1.8.1" 21 | }, 22 | "keywords": [ 23 | "jquery", 24 | "javascript", 25 | "library" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /build/components/jquery/src/ajax/parseJSON.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Support: Android 2.3 6 | // Workaround failure to string-cast null input 7 | jQuery.parseJSON = function( data ) { 8 | return JSON.parse( data + "" ); 9 | }; 10 | 11 | return jQuery.parseJSON; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /build/components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Cross-browser xml parsing 6 | jQuery.parseXML = function( data ) { 7 | var xml, tmp; 8 | if ( !data || typeof data !== "string" ) { 9 | return null; 10 | } 11 | 12 | // Support: IE9 13 | try { 14 | tmp = new DOMParser(); 15 | xml = tmp.parseFromString( data, "text/xml" ); 16 | } catch ( e ) { 17 | xml = undefined; 18 | } 19 | 20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 21 | jQuery.error( "Invalid XML: " + data ); 22 | } 23 | return xml; 24 | }; 25 | 26 | return jQuery.parseXML; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /build/components/jquery/src/ajax/var/nonce.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core" 3 | ], function( jQuery ) { 4 | return jQuery.now(); 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/ajax/var/rquery.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\?/); 3 | }); 4 | -------------------------------------------------------------------------------- /build/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 | // Return jQuery for attributes-only inclusion 10 | return jQuery; 11 | }); 12 | -------------------------------------------------------------------------------- /build/components/jquery/src/attributes/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var input = document.createElement( "input" ), 7 | select = document.createElement( "select" ), 8 | opt = select.appendChild( document.createElement( "option" ) ); 9 | 10 | input.type = "checkbox"; 11 | 12 | // Support: iOS 5.1, Android 4.x, Android 2.3 13 | // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) 14 | support.checkOn = input.value !== ""; 15 | 16 | // Must access the parent to make an option select properly 17 | // Support: IE9, IE10 18 | support.optSelected = opt.selected; 19 | 20 | // Make sure that the options inside disabled selects aren't marked as disabled 21 | // (WebKit marks them as disabled) 22 | select.disabled = true; 23 | support.optDisabled = !opt.disabled; 24 | 25 | // Check if an input maintains its value after becoming a radio 26 | // Support: IE9, IE10 27 | input = document.createElement( "input" ); 28 | input.value = "t"; 29 | input.type = "radio"; 30 | support.radioValue = input.value === "t"; 31 | })(); 32 | 33 | return support; 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /build/components/jquery/src/core/access.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Multifunctional method to get and set values of a collection 6 | // The value/s can optionally be executed if it's a function 7 | var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 8 | var i = 0, 9 | len = elems.length, 10 | bulk = key == null; 11 | 12 | // Sets many values 13 | if ( jQuery.type( key ) === "object" ) { 14 | chainable = true; 15 | for ( i in key ) { 16 | jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); 17 | } 18 | 19 | // Sets one value 20 | } else if ( value !== undefined ) { 21 | chainable = true; 22 | 23 | if ( !jQuery.isFunction( value ) ) { 24 | raw = true; 25 | } 26 | 27 | if ( bulk ) { 28 | // Bulk operations run against the entire set 29 | if ( raw ) { 30 | fn.call( elems, value ); 31 | fn = null; 32 | 33 | // ...except when executing function values 34 | } else { 35 | bulk = fn; 36 | fn = function( elem, key, value ) { 37 | return bulk.call( jQuery( elem ), value ); 38 | }; 39 | } 40 | } 41 | 42 | if ( fn ) { 43 | for ( ; i < len; i++ ) { 44 | fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); 45 | } 46 | } 47 | } 48 | 49 | return chainable ? 50 | elems : 51 | 52 | // Gets 53 | bulk ? 54 | fn.call( elems ) : 55 | len ? fn( elems[0], key ) : emptyGet; 56 | }; 57 | 58 | return access; 59 | 60 | }); 61 | -------------------------------------------------------------------------------- /build/components/jquery/src/core/parseHTML.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "./var/rsingleTag", 4 | "../manipulation" // buildFragment 5 | ], function( jQuery, rsingleTag ) { 6 | 7 | // data: string of html 8 | // context (optional): If specified, the fragment will be created in this context, defaults to document 9 | // keepScripts (optional): If true, will include scripts passed in the html string 10 | jQuery.parseHTML = function( data, context, keepScripts ) { 11 | if ( !data || typeof data !== "string" ) { 12 | return null; 13 | } 14 | if ( typeof context === "boolean" ) { 15 | keepScripts = context; 16 | context = false; 17 | } 18 | context = context || document; 19 | 20 | var parsed = rsingleTag.exec( data ), 21 | scripts = !keepScripts && []; 22 | 23 | // Single tag 24 | if ( parsed ) { 25 | return [ context.createElement( parsed[1] ) ]; 26 | } 27 | 28 | parsed = jQuery.buildFragment( [ data ], context, scripts ); 29 | 30 | if ( scripts && scripts.length ) { 31 | jQuery( scripts ).remove(); 32 | } 33 | 34 | return jQuery.merge( [], parsed.childNodes ); 35 | }; 36 | 37 | return jQuery.parseHTML; 38 | 39 | }); 40 | -------------------------------------------------------------------------------- /build/components/jquery/src/core/var/rsingleTag.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // Match a standalone tag 3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); 4 | }); 5 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/addGetHookIf.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | 3 | function addGetHookIf( conditionFn, hookFn ) { 4 | // Define the hook, we'll check on the first run if it's really needed. 5 | return { 6 | get: function() { 7 | if ( conditionFn() ) { 8 | // Hook not needed (or it's not possible to use it due to missing dependency), 9 | // remove it. 10 | // Since there are no other hooks for marginRight, remove the whole object. 11 | delete this.get; 12 | return; 13 | } 14 | 15 | // Hook needed; redefine it so that the support test is not executed again. 16 | 17 | return (this.get = hookFn).apply( this, arguments ); 18 | } 19 | }; 20 | } 21 | 22 | return addGetHookIf; 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/hiddenVisibleSelectors.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector" 4 | ], function( jQuery ) { 5 | 6 | jQuery.expr.filters.hidden = function( elem ) { 7 | // Support: Opera <= 12.12 8 | // Opera reports offsetWidths and offsetHeights less than zero on some elements 9 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; 10 | }; 11 | jQuery.expr.filters.visible = function( elem ) { 12 | return !jQuery.expr.filters.hidden( elem ); 13 | }; 14 | 15 | }); 16 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/swap.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // A method for quickly swapping in/out CSS properties to get correct calculations. 6 | jQuery.swap = 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 | return jQuery.swap; 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/var/cssExpand.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return [ "Top", "Right", "Bottom", "Left" ]; 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/var/getStyles.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return function( elem ) { 3 | return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); 4 | }; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/var/isHidden.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | // css is assumed 5 | ], function( jQuery ) { 6 | 7 | return function( elem, el ) { 8 | // isHidden might be called from jQuery#filter function; 9 | // in that case, element will be second argument 10 | elem = el || elem; 11 | return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); 12 | }; 13 | }); 14 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/var/rmargin.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^margin/); 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/css/var/rnumnonpx.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../var/pnum" 3 | ], function( pnum ) { 4 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/data/accepts.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | /** 6 | * Determines whether an object can have data 7 | */ 8 | jQuery.acceptData = function( owner ) { 9 | // Accepts only: 10 | // - Node 11 | // - Node.ELEMENT_NODE 12 | // - Node.DOCUMENT_NODE 13 | // - Object 14 | // - Any 15 | /* jshint -W018 */ 16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17 | }; 18 | 19 | return jQuery.acceptData; 20 | }); 21 | -------------------------------------------------------------------------------- /build/components/jquery/src/data/var/data_priv.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/data/var/data_user.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../Data" 3 | ], function( Data ) { 4 | return new Data(); 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/deprecated.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./traversing" 4 | ], function( jQuery ) { 5 | 6 | // The number of elements contained in the matched element set 7 | jQuery.fn.size = function() { 8 | return this.length; 9 | }; 10 | 11 | jQuery.fn.andSelf = jQuery.fn.addBack; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /build/components/jquery/src/effects/animatedSelector.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../selector", 4 | "../effects" 5 | ], function( jQuery ) { 6 | 7 | jQuery.expr.filters.animated = function( elem ) { 8 | return jQuery.grep(jQuery.timers, function( fn ) { 9 | return elem === fn.elem; 10 | }).length; 11 | }; 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /build/components/jquery/src/event/alias.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../event" 4 | ], function( jQuery ) { 5 | 6 | jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 7 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 8 | "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { 9 | 10 | // Handle event binding 11 | jQuery.fn[ name ] = function( data, fn ) { 12 | return arguments.length > 0 ? 13 | this.on( name, null, data, fn ) : 14 | this.trigger( name ); 15 | }; 16 | }); 17 | 18 | jQuery.fn.extend({ 19 | hover: function( fnOver, fnOut ) { 20 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 21 | }, 22 | 23 | bind: function( types, data, fn ) { 24 | return this.on( types, null, data, fn ); 25 | }, 26 | unbind: function( types, fn ) { 27 | return this.off( types, null, fn ); 28 | }, 29 | 30 | delegate: function( selector, types, data, fn ) { 31 | return this.on( types, selector, data, fn ); 32 | }, 33 | undelegate: function( selector, types, fn ) { 34 | // ( namespace ) or ( selector, types [, fn] ) 35 | return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); 36 | } 37 | }); 38 | 39 | }); 40 | -------------------------------------------------------------------------------- /build/components/jquery/src/event/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | support.focusinBubbles = "onfocusin" in window; 6 | 7 | return support; 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /build/components/jquery/src/exports/amd.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | // Register as a named AMD module, since jQuery can be concatenated with other 6 | // files that may use define, but not via a proper concatenation script that 7 | // understands anonymous AMD modules. A named AMD is safest and most robust 8 | // way to register. Lowercase jquery is used because AMD module names are 9 | // derived from file names, and jQuery is normally delivered in a lowercase 10 | // file name. Do this after creating the global so that if an AMD module wants 11 | // to call noConflict to hide this version of jQuery, it will work. 12 | 13 | // Note that for maximum portability, libraries that are not jQuery should 14 | // declare themselves as anonymous modules, and avoid setting a global if an 15 | // AMD loader is present. jQuery is a special case. For more information, see 16 | // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 17 | 18 | if ( typeof define === "function" && define.amd ) { 19 | define( "jquery", [], function() { 20 | return jQuery; 21 | }); 22 | } 23 | 24 | }); 25 | -------------------------------------------------------------------------------- /build/components/jquery/src/exports/global.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../core", 3 | "../var/strundefined" 4 | ], function( jQuery, strundefined ) { 5 | 6 | var 7 | // Map over jQuery in case of overwrite 8 | _jQuery = window.jQuery, 9 | 10 | // Map over the $ in case of overwrite 11 | _$ = window.$; 12 | 13 | jQuery.noConflict = function( deep ) { 14 | if ( window.$ === jQuery ) { 15 | window.$ = _$; 16 | } 17 | 18 | if ( deep && window.jQuery === jQuery ) { 19 | window.jQuery = _jQuery; 20 | } 21 | 22 | return jQuery; 23 | }; 24 | 25 | // Expose jQuery and $ identifiers, even in 26 | // AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 27 | // and CommonJS for browser emulators (#13566) 28 | if ( typeof noGlobal === strundefined ) { 29 | window.jQuery = window.$ = jQuery; 30 | } 31 | 32 | }); 33 | -------------------------------------------------------------------------------- /build/components/jquery/src/jquery.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "./selector", 4 | "./traversing", 5 | "./callbacks", 6 | "./deferred", 7 | "./core/ready", 8 | "./data", 9 | "./queue", 10 | "./queue/delay", 11 | "./attributes", 12 | "./event", 13 | "./event/alias", 14 | "./manipulation", 15 | "./manipulation/_evalUrl", 16 | "./wrap", 17 | "./css", 18 | "./css/hiddenVisibleSelectors", 19 | "./serialize", 20 | "./ajax", 21 | "./ajax/xhr", 22 | "./ajax/script", 23 | "./ajax/jsonp", 24 | "./ajax/load", 25 | "./effects", 26 | "./effects/animatedSelector", 27 | "./offset", 28 | "./dimensions", 29 | "./deprecated", 30 | "./exports/amd", 31 | "./exports/global" 32 | ], function( jQuery ) { 33 | 34 | return jQuery; 35 | 36 | }); 37 | -------------------------------------------------------------------------------- /build/components/jquery/src/manipulation/_evalUrl.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../ajax" 3 | ], function( jQuery ) { 4 | 5 | jQuery._evalUrl = function( url ) { 6 | return jQuery.ajax({ 7 | url: url, 8 | type: "GET", 9 | dataType: "script", 10 | async: false, 11 | global: false, 12 | "throws": true 13 | }); 14 | }; 15 | 16 | return jQuery._evalUrl; 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /build/components/jquery/src/manipulation/support.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../var/support" 3 | ], function( support ) { 4 | 5 | (function() { 6 | var fragment = document.createDocumentFragment(), 7 | div = fragment.appendChild( document.createElement( "div" ) ), 8 | input = document.createElement( "input" ); 9 | 10 | // #11217 - WebKit loses check when the name is after the checked attribute 11 | // Support: Windows Web Apps (WWA) 12 | // `name` and `type` need .setAttribute for WWA 13 | input.setAttribute( "type", "radio" ); 14 | input.setAttribute( "checked", "checked" ); 15 | input.setAttribute( "name", "t" ); 16 | 17 | div.appendChild( input ); 18 | 19 | // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 20 | // old WebKit doesn't clone checked state correctly in fragments 21 | support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 22 | 23 | // Make sure textarea (and checkbox) defaultValue is properly cloned 24 | // Support: IE9-IE11+ 25 | div.innerHTML = ""; 26 | support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 27 | })(); 28 | 29 | return support; 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /build/components/jquery/src/manipulation/var/rcheckableType.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/^(?:checkbox|radio)$/i); 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/outro.js: -------------------------------------------------------------------------------- 1 | })); 2 | -------------------------------------------------------------------------------- /build/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 | // Based off of the plugin by Clint Helfers, with permission. 8 | // http://blindsignals.com/index.php/2009/07/jquery-delay/ 9 | jQuery.fn.delay = function( time, type ) { 10 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 11 | type = type || "fx"; 12 | 13 | return this.queue( type, function( next, hooks ) { 14 | var timeout = setTimeout( next, time ); 15 | hooks.stop = function() { 16 | clearTimeout( timeout ); 17 | }; 18 | }); 19 | }; 20 | 21 | return jQuery.fn.delay; 22 | }); 23 | -------------------------------------------------------------------------------- /build/components/jquery/src/selector-sizzle.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./core", 3 | "sizzle" 4 | ], function( jQuery, Sizzle ) { 5 | 6 | jQuery.find = Sizzle; 7 | jQuery.expr = Sizzle.selectors; 8 | jQuery.expr[":"] = jQuery.expr.pseudos; 9 | jQuery.unique = Sizzle.uniqueSort; 10 | jQuery.text = Sizzle.getText; 11 | jQuery.isXMLDoc = Sizzle.isXML; 12 | jQuery.contains = Sizzle.contains; 13 | 14 | }); 15 | -------------------------------------------------------------------------------- /build/components/jquery/src/selector.js: -------------------------------------------------------------------------------- 1 | define([ "./selector-sizzle" ]); 2 | -------------------------------------------------------------------------------- /build/components/jquery/src/traversing/var/rneedsContext.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "../../core", 3 | "../../selector" 4 | ], function( jQuery ) { 5 | return jQuery.expr.match.needsContext; 6 | }); 7 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/arr.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return []; 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/class2type.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // [[Class]] -> type pairs 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/concat.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.concat; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/hasOwn.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.hasOwnProperty; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/indexOf.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.indexOf; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/pnum.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/push.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.push; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/rnotwhite.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return (/\S+/g); 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/slice.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./arr" 3 | ], function( arr ) { 4 | return arr.slice; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/strundefined.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | return typeof undefined; 3 | }); 4 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/support.js: -------------------------------------------------------------------------------- 1 | define(function() { 2 | // All support tests are defined in their respective modules. 3 | return {}; 4 | }); 5 | -------------------------------------------------------------------------------- /build/components/jquery/src/var/toString.js: -------------------------------------------------------------------------------- 1 | define([ 2 | "./class2type" 3 | ], function( class2type ) { 4 | return class2type.toString; 5 | }); 6 | -------------------------------------------------------------------------------- /build/components/modernizr/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "modernizr", 3 | "homepage": "https://github.com/Modernizr/Modernizr", 4 | "version": "2.8.3", 5 | "_release": "2.8.3", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "v2.8.3", 9 | "commit": "d6bb30c0f12ebb3ddd01e90b0bf435e1c34e6f11" 10 | }, 11 | "_source": "git://github.com/Modernizr/Modernizr.git", 12 | "_target": ">= 2.7.2", 13 | "_originalSource": "modernizr" 14 | } -------------------------------------------------------------------------------- /build/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 | -------------------------------------------------------------------------------- /build/components/modernizr/.gitignore: -------------------------------------------------------------------------------- 1 | modernizr.min.js 2 | .DS_Store -------------------------------------------------------------------------------- /build/components/modernizr/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 0.8 4 | before_script: 5 | - npm install grunt 6 | script: grunt travis --verbose -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/a-download.js: -------------------------------------------------------------------------------- 1 | 2 | // a[download] attribute 3 | // When used on an , this attribute signifies that the resource it 4 | // points to should be downloaded by the browser rather than navigating to it. 5 | // http://developers.whatwg.org/links.html#downloading-resources 6 | // By Addy Osmani 7 | 8 | Modernizr.addTest('adownload', 'download' in document.createElement('a')); 9 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/audio-audiodata-api.js: -------------------------------------------------------------------------------- 1 | // Mozilla Audio Data API 2 | // https://wiki.mozilla.org/Audio_Data_API 3 | // by Addy Osmani 4 | Modernizr.addTest('audiodata', !!(window.Audio)); 5 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/audio-webaudio-api.js: -------------------------------------------------------------------------------- 1 | // Web Audio API 2 | // https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html 3 | // By Addy Osmani 4 | Modernizr.addTest('webaudio', !!(window.webkitAudioContext || window.AudioContext)); 5 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/battery-api.js: -------------------------------------------------------------------------------- 1 | 2 | // Battery API 3 | // https://developer.mozilla.org/en/DOM/window.navigator.mozBattery 4 | // By: Paul Sayre 5 | 6 | Modernizr.addTest('battery', 7 | !!Modernizr.prefixed('battery', navigator) 8 | ); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/battery-level.js: -------------------------------------------------------------------------------- 1 | 2 | // Low Battery Level 3 | // Enable a developer to remove CPU intensive CSS/JS when battery is low 4 | // developer.mozilla.org/en/DOM/window.navigator.mozBattery 5 | // By: Paul Sayre 6 | 7 | Modernizr.addTest('lowbattery', function () { 8 | var minLevel = 0.20, 9 | battery = Modernizr.prefixed('battery', navigator); 10 | return !!(battery && !battery.charging && battery.level <= minLevel); 11 | }); 12 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/blob-constructor.js: -------------------------------------------------------------------------------- 1 | // Blob constructor 2 | // http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob 3 | 4 | Modernizr.addTest('blobconstructor', function () { 5 | try { 6 | return !!new Blob(); 7 | } catch (e) { 8 | return false; 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/canvas-todataurl-type.js: -------------------------------------------------------------------------------- 1 | // canvas.toDataURL type support 2 | // http://www.w3.org/TR/html5/the-canvas-element.html#dom-canvas-todataurl 3 | 4 | // This test is asynchronous. Watch out. 5 | 6 | (function () { 7 | 8 | if (!Modernizr.canvas) { 9 | return false; 10 | } 11 | 12 | var image = new Image(), 13 | canvas = document.createElement('canvas'), 14 | ctx = canvas.getContext('2d'); 15 | 16 | image.onload = function() { 17 | ctx.drawImage(image, 0, 0); 18 | 19 | Modernizr.addTest('todataurljpeg', function() { 20 | return canvas.toDataURL('image/jpeg').indexOf('data:image/jpeg') === 0; 21 | }); 22 | Modernizr.addTest('todataurlwebp', function() { 23 | return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0; 24 | }); 25 | }; 26 | 27 | image.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg=='; 28 | }()); 29 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/contenteditable.js: -------------------------------------------------------------------------------- 1 | // contentEditable 2 | // http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable 3 | 4 | // this is known to false positive in some mobile browsers 5 | // here is a whitelist of verified working browsers: 6 | // https://github.com/NielsLeenheer/html5test/blob/549f6eac866aa861d9649a0707ff2c0157895706/scripts/engine.js#L2083 7 | 8 | Modernizr.addTest('contenteditable', 9 | 'contentEditable' in document.documentElement); 10 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/contentsecuritypolicy.js: -------------------------------------------------------------------------------- 1 | // Test for (experimental) Content Security Policy 1.1 support. 2 | // 3 | // This feature is still quite experimental, but is available now in Chrome 22. 4 | // If the `SecurityPolicy` property is available, you can be sure the browser 5 | // supports CSP. If it's not available, the browser still might support an 6 | // earlier version of the CSP spec. 7 | // 8 | // Editor's Draft: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html 9 | 10 | Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document)); 11 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/contextmenu.js: -------------------------------------------------------------------------------- 1 | // http://www.w3.org/TR/html5/interactive-elements.html#context-menus 2 | // Demo at http://thewebrocks.com/demos/context-menu/ 3 | Modernizr.addTest( 4 | 'contextmenu', 5 | ('contextMenu' in document.documentElement && 'HTMLMenuItemElement' in window) 6 | ); 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/cookies.js: -------------------------------------------------------------------------------- 1 | 2 | // by tauren 3 | // https://github.com/Modernizr/Modernizr/issues/191 4 | 5 | Modernizr.addTest('cookies', function () { 6 | // Quick test if browser has cookieEnabled host property 7 | if (navigator.cookieEnabled) return true; 8 | // Create cookie 9 | document.cookie = "cookietest=1"; 10 | var ret = document.cookie.indexOf("cookietest=") != -1; 11 | // Delete cookie 12 | document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"; 13 | return ret; 14 | }); 15 | 16 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/cors.js: -------------------------------------------------------------------------------- 1 | // cors 2 | // By Theodoor van Donge 3 | Modernizr.addTest('cors', !!(window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest())); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-backgroundposition-shorthand.js: -------------------------------------------------------------------------------- 1 | /* 2 | https://developer.mozilla.org/en/CSS/background-position 3 | http://www.w3.org/TR/css3-background/#background-position 4 | 5 | Example: http://jsfiddle.net/Blink/bBXvt/ 6 | */ 7 | 8 | (function() { 9 | 10 | var elem = document.createElement('a'), 11 | eStyle = elem.style, 12 | val = "right 10px bottom 10px"; 13 | 14 | Modernizr.addTest('bgpositionshorthand', function(){ 15 | eStyle.cssText = "background-position: " + val + ";"; 16 | return (eStyle.backgroundPosition === val); 17 | }); 18 | 19 | }()); 20 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-backgroundposition-xy.js: -------------------------------------------------------------------------------- 1 | /* 2 | Allan Lei https://github.com/allanlei 3 | 4 | Check adapted from https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js 5 | 6 | Test: http://jsfiddle.net/allanlei/R8AYS/ 7 | */ 8 | Modernizr.addTest('bgpositionxy', function() { 9 | return Modernizr.testStyles('#modernizr {background-position: 3px 5px;}', function(elem) { 10 | var cssStyleDeclaration = window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle; 11 | var xSupport = (cssStyleDeclaration.backgroundPositionX == '3px') || (cssStyleDeclaration['background-position-x'] == '3px'); 12 | var ySupport = (cssStyleDeclaration.backgroundPositionY == '5px') || (cssStyleDeclaration['background-position-y'] == '5px'); 13 | return xSupport && ySupport; 14 | }); 15 | }); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-backgroundrepeat.js: -------------------------------------------------------------------------------- 1 | // developer.mozilla.org/en/CSS/background-repeat 2 | 3 | // test page: jsbin.com/uzesun/ 4 | // http://jsfiddle.net/ryanseddon/yMLTQ/6/ 5 | 6 | (function(){ 7 | 8 | 9 | function getBgRepeatValue(elem){ 10 | return (window.getComputedStyle ? 11 | getComputedStyle(elem, null).getPropertyValue('background') : 12 | elem.currentStyle['background']); 13 | } 14 | 15 | 16 | Modernizr.testStyles(' #modernizr { background-repeat: round; } ', function(elem, rule){ 17 | 18 | Modernizr.addTest('bgrepeatround', getBgRepeatValue(elem) == 'round'); 19 | 20 | }); 21 | 22 | 23 | 24 | Modernizr.testStyles(' #modernizr { background-repeat: space; } ', function(elem, rule){ 25 | 26 | Modernizr.addTest('bgrepeatspace', getBgRepeatValue(elem) == 'space'); 27 | 28 | }); 29 | 30 | 31 | })(); 32 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-backgroundsizecover.js: -------------------------------------------------------------------------------- 1 | 2 | // developer.mozilla.org/en/CSS/background-size 3 | 4 | Modernizr.testStyles( '#modernizr{background-size:cover}', function( elem ) { 5 | var style = window.getComputedStyle ? 6 | window.getComputedStyle( elem, null ) 7 | : elem.currentStyle; 8 | 9 | Modernizr.addTest( 'bgsizecover', style.backgroundSize == 'cover' ); 10 | }); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-boxsizing.js: -------------------------------------------------------------------------------- 1 | 2 | // developer.mozilla.org/en/CSS/box-sizing 3 | // github.com/Modernizr/Modernizr/issues/248 4 | 5 | Modernizr.addTest("boxsizing",function(){ 6 | return Modernizr.testAllProps("boxSizing") && (document.documentMode === undefined || document.documentMode > 7); 7 | }); 8 | 9 | 10 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-calc.js: -------------------------------------------------------------------------------- 1 | // Method of allowing calculated values for length units, i.e. width: calc(100%-3em) http://caniuse.com/#search=calc 2 | // By @calvein 3 | 4 | Modernizr.addTest('csscalc', function() { 5 | var prop = 'width:'; 6 | var value = 'calc(10px);'; 7 | var el = document.createElement('div'); 8 | 9 | el.style.cssText = prop + Modernizr._prefixes.join(value + prop); 10 | 11 | return !!el.style.length; 12 | }); 13 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-cubicbezierrange.js: -------------------------------------------------------------------------------- 1 | // cubic-bezier values can't be > 1 for Webkit until bug #45761 (https://bugs.webkit.org/show_bug.cgi?id=45761) is fixed 2 | // By @calvein 3 | 4 | Modernizr.addTest('cubicbezierrange', function() { 5 | var el = document.createElement('div'); 6 | el.style.cssText = Modernizr._prefixes.join('transition-timing-function' + ':cubic-bezier(1,0,0,1.1); '); 7 | return !!el.style.length; 8 | }); 9 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-displayrunin.js: -------------------------------------------------------------------------------- 1 | 2 | // by alanhogan 3 | 4 | // https://github.com/Modernizr/Modernizr/issues/198 5 | // http://css-tricks.com/596-run-in/ 6 | 7 | 8 | 9 | Modernizr.testStyles(' #modernizr { display: run-in; } ', function(elem, rule){ 10 | 11 | var ret = (window.getComputedStyle ? 12 | getComputedStyle(elem, null).getPropertyValue('display') : 13 | elem.currentStyle['display']); 14 | 15 | Modernizr.addTest('display-runin', ret == 'run-in'); 16 | 17 | }); 18 | 19 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-displaytable.js: -------------------------------------------------------------------------------- 1 | // display: table and table-cell test. (both are tested under one name "table-cell" ) 2 | // By @scottjehl 3 | 4 | // all additional table display values are here: http://pastebin.com/Gk9PeVaQ though Scott has seen some IE false positives with that sort of weak detection. 5 | // more testing neccessary perhaps. 6 | 7 | Modernizr.addTest( "display-table",function(){ 8 | 9 | var doc = window.document, 10 | docElem = doc.documentElement, 11 | parent = doc.createElement( "div" ), 12 | child = doc.createElement( "div" ), 13 | childb = doc.createElement( "div" ), 14 | ret; 15 | 16 | parent.style.cssText = "display: table"; 17 | child.style.cssText = childb.style.cssText = "display: table-cell; padding: 10px"; 18 | 19 | parent.appendChild( child ); 20 | parent.appendChild( childb ); 21 | docElem.insertBefore( parent, docElem.firstChild ); 22 | 23 | ret = child.offsetLeft < childb.offsetLeft; 24 | docElem.removeChild(parent); 25 | return ret; 26 | }); 27 | 28 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-filters.js: -------------------------------------------------------------------------------- 1 | // https://github.com/Modernizr/Modernizr/issues/615 2 | // documentMode is needed for false positives in oldIE, please see issue above 3 | Modernizr.addTest('cssfilters', function() { 4 | var el = document.createElement('div'); 5 | el.style.cssText = Modernizr._prefixes.join('filter' + ':blur(2px); '); 6 | return !!el.style.length && ((document.documentMode === undefined || document.documentMode > 9)); 7 | }); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-lastchild.js: -------------------------------------------------------------------------------- 1 | // last-child pseudo selector 2 | // https://github.com/Modernizr/Modernizr/pull/304 3 | 4 | 5 | Modernizr.addTest('lastchild', function(){ 6 | 7 | return Modernizr.testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function (elem) { 8 | return elem.lastChild.offsetWidth > elem.firstChild.offsetWidth; 9 | }, 2); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-mask.js: -------------------------------------------------------------------------------- 1 | // this tests passes for webkit's proprietary `-webkit-mask` feature 2 | // www.webkit.org/blog/181/css-masks/ 3 | // developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html 4 | 5 | // it does not pass mozilla's implementation of `mask` for SVG 6 | 7 | // developer.mozilla.org/en/CSS/mask 8 | // developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content 9 | 10 | // Can combine with clippaths for awesomeness: http://generic.cx/for/webkit/test.html 11 | 12 | Modernizr.addTest('cssmask', Modernizr.testAllProps('maskRepeat')); 13 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-mediaqueries.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | Modernizr.addTest('mediaqueries', Modernizr.mq('only all')); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-objectfit.js: -------------------------------------------------------------------------------- 1 | 2 | // dev.opera.com/articles/view/css3-object-fit-object-position/ 3 | 4 | Modernizr.addTest('object-fit', 5 | !!Modernizr.prefixed('objectFit') 6 | ); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-overflow-scrolling.js: -------------------------------------------------------------------------------- 1 | 2 | // johanbrook.com/browsers/native-momentum-scrolling-ios-5/ 3 | // introduced in iOS5b2. Possible API may change... 4 | 5 | Modernizr.addTest("overflowscrolling",function(){ 6 | return Modernizr.testAllProps("overflowScrolling"); 7 | }); 8 | 9 | 10 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-pointerevents.js: -------------------------------------------------------------------------------- 1 | 2 | // developer.mozilla.org/en/CSS/pointer-events 3 | 4 | // Test and project pages: 5 | // ausi.github.com/Feature-detection-technique-for-pointer-events/ 6 | // github.com/ausi/Feature-detection-technique-for-pointer-events/wiki 7 | // github.com/Modernizr/Modernizr/issues/80 8 | 9 | 10 | Modernizr.addTest('pointerevents', function(){ 11 | var element = document.createElement('x'), 12 | documentElement = document.documentElement, 13 | getComputedStyle = window.getComputedStyle, 14 | supports; 15 | if(!('pointerEvents' in element.style)){ 16 | return false; 17 | } 18 | element.style.pointerEvents = 'auto'; 19 | element.style.pointerEvents = 'x'; 20 | documentElement.appendChild(element); 21 | supports = getComputedStyle && 22 | getComputedStyle(element, '').pointerEvents === 'auto'; 23 | documentElement.removeChild(element); 24 | return !!supports; 25 | }); 26 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-positionsticky.js: -------------------------------------------------------------------------------- 1 | // Sticky positioning - constrains an element to be positioned inside the 2 | // intersection of its container box, and the viewport. 3 | Modernizr.addTest('csspositionsticky', function () { 4 | 5 | var prop = 'position:'; 6 | var value = 'sticky'; 7 | var el = document.createElement('modernizr'); 8 | var mStyle = el.style; 9 | 10 | mStyle.cssText = prop + Modernizr._prefixes.join(value + ';' + prop).slice(0, -prop.length); 11 | 12 | return mStyle.position.indexOf(value) !== -1; 13 | }); 14 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-remunit.js: -------------------------------------------------------------------------------- 1 | 2 | // test by github.com/nsfmc 3 | 4 | // "The 'rem' unit ('root em') is relative to the computed 5 | // value of the 'font-size' value of the root element." 6 | // http://www.w3.org/TR/css3-values/#relative0 7 | // you can test by checking if the prop was ditched 8 | 9 | // http://snook.ca/archives/html_and_css/font-size-with-rem 10 | 11 | Modernizr.addTest('cssremunit', function(){ 12 | 13 | var div = document.createElement('div'); 14 | try { 15 | div.style.fontSize = '3rem'; 16 | } catch(er){} 17 | return (/rem/).test(div.style.fontSize); 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-resize.js: -------------------------------------------------------------------------------- 1 | 2 | // Test for CSS 3 UI "resize" property 3 | // http://www.w3.org/TR/css3-ui/#resize 4 | // https://developer.mozilla.org/en/CSS/resize 5 | 6 | Modernizr.addTest('cssresize', Modernizr.testAllProps('resize')); 7 | 8 | 9 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-scrollbars.js: -------------------------------------------------------------------------------- 1 | // Stylable scrollbars detection 2 | Modernizr.addTest('cssscrollbar', function() { 3 | 4 | var bool, 5 | 6 | styles = "#modernizr{overflow: scroll; width: 40px }#" + 7 | Modernizr._prefixes 8 | .join("scrollbar{width:0px}"+' #modernizr::') 9 | .split('#') 10 | .slice(1) 11 | .join('#') + "scrollbar{width:0px}"; 12 | 13 | Modernizr.testStyles(styles, function(node) { 14 | bool = 'scrollWidth' in node && node.scrollWidth == 40; 15 | }); 16 | 17 | return bool; 18 | 19 | }); 20 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-shapes.js: -------------------------------------------------------------------------------- 1 | 2 | // http://html.adobe.com/webplatform/layout/shapes 3 | 4 | Modernizr.addTest('shapes', Modernizr.testAllProps('shapeOutside', 'content-box', true)); 5 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-subpixelfont.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Test for SubPixel Font Rendering 3 | * (to infer if GDI or DirectWrite is used on Windows) 4 | * Authors: @derSchepp, @gerritvanaaken, @rodneyrehm, @yatil, @ryanseddon 5 | * Web: https://github.com/gerritvanaaken/subpixeldetect 6 | */ 7 | Modernizr.addTest('subpixelfont', function() { 8 | var bool, 9 | styles = "#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}"; 10 | 11 | // see https://github.com/Modernizr/Modernizr/blob/master/modernizr.js#L97 12 | Modernizr.testStyles(styles, function(elem) { 13 | var subpixel = elem.firstChild; 14 | 15 | subpixel.innerHTML = 'This is a text written in Arial'; 16 | 17 | bool = window.getComputedStyle ? 18 | window.getComputedStyle(subpixel, null).getPropertyValue("width") !== '44px' 19 | : false; 20 | }, 1, ['subpixel']); 21 | 22 | return bool; 23 | }); 24 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-supports.js: -------------------------------------------------------------------------------- 1 | // http://dev.w3.org/csswg/css3-conditional/#at-supports 2 | // github.com/Modernizr/Modernizr/issues/648 3 | // Relies on the fact that a browser vendor should expose the CSSSupportsRule interface 4 | // http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface 5 | 6 | Modernizr.addTest("supports","CSSSupportsRule" in window); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-userselect.js: -------------------------------------------------------------------------------- 1 | // -moz-user-select:none test. 2 | 3 | // by ryan seddon 4 | //https://github.com/Modernizr/Modernizr/issues/250 5 | 6 | 7 | Modernizr.addTest("userselect",function(){ 8 | return Modernizr.testAllProps("user-select"); 9 | }); 10 | 11 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-vhunit.js: -------------------------------------------------------------------------------- 1 | // https://github.com/Modernizr/Modernizr/issues/572 2 | // Similar to http://jsfiddle.net/FWeinb/etnYC/ 3 | Modernizr.addTest('cssvhunit', function() { 4 | var bool; 5 | Modernizr.testStyles("#modernizr { height: 50vh; }", function(elem, rule) { 6 | var height = parseInt(window.innerHeight/2,10), 7 | compStyle = parseInt((window.getComputedStyle ? 8 | getComputedStyle(elem, null) : 9 | elem.currentStyle)["height"],10); 10 | 11 | bool= (compStyle == height); 12 | }); 13 | return bool; 14 | }); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-vmaxunit.js: -------------------------------------------------------------------------------- 1 | // https://github.com/Modernizr/Modernizr/issues/572 2 | // http://jsfiddle.net/glsee/JDsWQ/4/ 3 | Modernizr.addTest('cssvmaxunit', function(){ 4 | var bool; 5 | Modernizr.testStyles("#modernizr { width: 50vmax; }", function(elem, rule) { 6 | var one_vw = window.innerWidth/100, 7 | one_vh = window.innerHeight/100, 8 | compWidth = parseInt((window.getComputedStyle ? 9 | getComputedStyle(elem, null) : 10 | elem.currentStyle)['width'],10); 11 | bool = ( parseInt(Math.max(one_vw, one_vh)*50,10) == compWidth ); 12 | }); 13 | return bool; 14 | }); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-vminunit.js: -------------------------------------------------------------------------------- 1 | // https://github.com/Modernizr/Modernizr/issues/572 2 | // http://jsfiddle.net/glsee/JRmdq/8/ 3 | Modernizr.addTest('cssvminunit', function(){ 4 | var bool; 5 | Modernizr.testStyles("#modernizr { width: 50vmin; }", function(elem, rule) { 6 | var one_vw = window.innerWidth/100, 7 | one_vh = window.innerHeight/100, 8 | compWidth = parseInt((window.getComputedStyle ? 9 | getComputedStyle(elem, null) : 10 | elem.currentStyle)['width'],10); 11 | bool = ( parseInt(Math.min(one_vw, one_vh)*50,10) == compWidth ); 12 | }); 13 | return bool; 14 | }); 15 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/css-vwunit.js: -------------------------------------------------------------------------------- 1 | // https://github.com/Modernizr/Modernizr/issues/572 2 | // http://jsfiddle.net/FWeinb/etnYC/ 3 | Modernizr.addTest('cssvwunit', function(){ 4 | var bool; 5 | Modernizr.testStyles("#modernizr { width: 50vw; }", function(elem, rule) { 6 | var width = parseInt(window.innerWidth/2,10), 7 | compStyle = parseInt((window.getComputedStyle ? 8 | getComputedStyle(elem, null) : 9 | elem.currentStyle)["width"],10); 10 | 11 | bool= (compStyle == width); 12 | }); 13 | return bool; 14 | }); 15 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/custom-protocol-handler.js: -------------------------------------------------------------------------------- 1 | /* 2 | Custom protocol handler support 3 | http://developers.whatwg.org/timers.html#custom-handlers 4 | 5 | Added by @benschwarz 6 | */ 7 | 8 | Modernizr.addTest('customprotocolhandler', function () { 9 | return !!navigator.registerProtocolHandler; 10 | }); 11 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/dart.js: -------------------------------------------------------------------------------- 1 | // Dart 2 | // By Theodoor van Donge 3 | 4 | // https://chromiumcodereview.appspot.com/9232049/ 5 | 6 | Modernizr.addTest('dart', !!Modernizr.prefixed('startDart', navigator)); 7 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/dataview-api.js: -------------------------------------------------------------------------------- 1 | // DataView 2 | // https://developer.mozilla.org/en/JavaScript_typed_arrays/DataView 3 | // By Addy Osmani 4 | Modernizr.addTest('dataview', (typeof DataView !== 'undefined' && 'getFloat64' in DataView.prototype)); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/dom-classlist.js: -------------------------------------------------------------------------------- 1 | // classList 2 | // https://developer.mozilla.org/en/DOM/element.classList 3 | // By Addy Osmani 4 | Modernizr.addTest('classlist', 'classList' in document.documentElement); 5 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/dom-createElement-attrs.js: -------------------------------------------------------------------------------- 1 | // by james a rosen. 2 | // https://github.com/Modernizr/Modernizr/issues/258 3 | 4 | Modernizr.addTest('createelement-attrs', function() { 5 | try { 6 | return document.createElement("").getAttribute('name') == 'test'; 7 | } catch(e) { 8 | return false; 9 | } 10 | }); 11 | 12 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/dom-dataset.js: -------------------------------------------------------------------------------- 1 | 2 | // dataset API for data-* attributes 3 | // test by @phiggins42 4 | 5 | Modernizr.addTest('dataset', function(){ 6 | var n = document.createElement("div"); 7 | n.setAttribute("data-a-b", "c"); 8 | return !!(n.dataset && n.dataset.aB === "c"); 9 | }); 10 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/dom-microdata.js: -------------------------------------------------------------------------------- 1 | // Microdata support 2 | // http://www.w3.org/TR/html5/microdata.html 3 | // By Addy Osmani 4 | Modernizr.addTest('microdata', !!(document['getItems'])); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/elem-datalist.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | // lol. we already have a test for datalist built in! silly you. 4 | 5 | 6 | // Helpful links while you're here, though.. 7 | 8 | // http://css-tricks.com/15346-relevant-dropdowns-polyfill-for-datalist/ 9 | // http://miketaylr.com/test/datalist.html 10 | // http://miketaylr.com/code/datalist.html 11 | 12 | Modernizr.addTest('datalistelem', Modernizr.input.list ); 13 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/elem-details.js: -------------------------------------------------------------------------------- 1 | // By @mathias, based on http://mths.be/axh 2 | Modernizr.addTest('details', function() { 3 | var doc = document, 4 | el = doc.createElement('details'), 5 | fake, 6 | root, 7 | diff; 8 | if (!('open' in el)) { // return early if possible; thanks @aFarkas! 9 | return false; 10 | } 11 | root = doc.body || (function() { 12 | var de = doc.documentElement; 13 | fake = true; 14 | return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild); 15 | }()); 16 | el.innerHTML = 'ab'; 17 | el.style.display = 'block'; 18 | root.appendChild(el); 19 | diff = el.offsetHeight; 20 | el.open = true; 21 | diff = diff != el.offsetHeight; 22 | root.removeChild(el); 23 | fake && root.parentNode.removeChild(root); 24 | return diff; 25 | }); -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/elem-output.js: -------------------------------------------------------------------------------- 1 | // 2 | // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-output-element 3 | // by Addy Osmani 4 | Modernizr.addTest('outputelem', 'value' in document.createElement('output')); 5 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/elem-progress-meter.js: -------------------------------------------------------------------------------- 1 | //By Stefan Wallin 2 | 3 | //tests for progressbar-support. All browsers that don't support progressbar returns undefined =) 4 | Modernizr.addTest("progressbar",function(){ 5 | return document.createElement('progress').max !== undefined; 6 | }); 7 | 8 | //tests for meter-support. All browsers that don't support meters returns undefined =) 9 | Modernizr.addTest("meter",function(){ 10 | return document.createElement('meter').max !== undefined; 11 | }); 12 | -------------------------------------------------------------------------------- /build/components/modernizr/feature-detects/elem-time.js: -------------------------------------------------------------------------------- 1 | //