├── .gitignore ├── README.md ├── labs ├── img │ ├── .gitkeep │ ├── lab01 │ │ ├── gulp.init.png │ │ ├── gulp.serve.png │ │ ├── gulp.test.png │ │ ├── gulp.watch.png │ │ └── welcome.png │ ├── lab02 │ │ ├── breakpoint.png │ │ ├── gulp.test.png │ │ ├── howdy.partner.png │ │ ├── karma.debug.png │ │ ├── mocha.htmlreporter.png │ │ ├── sourcemaps.png │ │ └── woohoo.png │ ├── lab03 │ │ └── first.page.png │ ├── lab04 │ │ ├── employee.deleted.png │ │ └── employees.png │ ├── lab05 │ │ ├── create.employee.png │ │ ├── edit.employee.png │ │ ├── employees.png │ │ ├── login.form.png │ │ └── validation.errors.png │ └── lab06 │ │ ├── progress.png │ │ └── snackbar.png ├── lab-01-setup.md ├── lab-02-first-component.md ├── lab-03-routing.md ├── lab-04-flux.md ├── lab-05-forms.md └── lab-06-custom-components.md └── slidedeck ├── .bowerrc ├── .gitignore ├── README.md ├── bower.json ├── dist ├── assets │ ├── css │ │ ├── pdf.css │ │ └── style.css │ ├── font │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── league_gothic-webfont.eot │ │ ├── league_gothic-webfont.svg │ │ ├── league_gothic-webfont.ttf │ │ ├── league_gothic-webfont.woff │ │ └── league_gothic_license │ ├── img │ │ ├── 2015-OPI-Logo-Long.png │ │ ├── 2015-OPI-Logo-Stacked.png │ │ ├── bootstrap-logo.png │ │ ├── bower-logo.png │ │ ├── browserify-logo.png │ │ ├── emote │ │ │ ├── awesome.gif │ │ │ ├── mind-blown.gif │ │ │ ├── protractor-flow.png │ │ │ ├── scope.png │ │ │ ├── transclude-frame.png │ │ │ └── wat_grande.jpg │ │ ├── flux-logo.png │ │ ├── gulp-logo.png │ │ ├── lecture-01 │ │ │ ├── gulp.test.png │ │ │ └── mocha.htmlreporter.png │ │ ├── lecture-04 │ │ │ └── flux.diagram.png │ │ ├── node-logo.png │ │ ├── opi-logo.png │ │ └── react-logo.png │ └── js │ │ └── app.js ├── includes │ └── mixins.html ├── index.html ├── lectures │ ├── intro.html │ ├── lecture-01.html │ ├── lecture-02.html │ ├── lecture-03.html │ ├── lecture-04.html │ ├── lecture-05.html │ └── lecture-06.html └── temp │ ├── app.js │ ├── pdf.css │ └── style.css ├── gulpfile.js ├── package.json ├── publish.sh └── src ├── assets ├── img │ ├── 2015-OPI-Logo-Long.png │ ├── 2015-OPI-Logo-Stacked.png │ ├── bootstrap-logo.png │ ├── bower-logo.png │ ├── browserify-logo.png │ ├── emote │ │ ├── awesome.gif │ │ ├── mind-blown.gif │ │ ├── protractor-flow.png │ │ ├── scope.png │ │ ├── transclude-frame.png │ │ └── wat_grande.jpg │ ├── flux-logo.png │ ├── gulp-logo.png │ ├── lecture-01 │ │ ├── gulp.test.png │ │ └── mocha.htmlreporter.png │ ├── lecture-04 │ │ └── flux.diagram.png │ ├── node-logo.png │ ├── opi-logo.png │ └── react-logo.png ├── js │ └── components │ │ ├── font-awesome │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── bower.json │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ ├── font-awesome.css.map │ │ │ └── font-awesome.min.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── less │ │ │ ├── animated.less │ │ │ ├── bordered-pulled.less │ │ │ ├── core.less │ │ │ ├── fixed-width.less │ │ │ ├── font-awesome.less │ │ │ ├── icons.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── mixins.less │ │ │ ├── path.less │ │ │ ├── rotated-flipped.less │ │ │ ├── stacked.less │ │ │ └── variables.less │ │ └── scss │ │ │ ├── _animated.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _core.scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _icons.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _mixins.scss │ │ │ ├── _path.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _stacked.scss │ │ │ ├── _variables.scss │ │ │ └── font-awesome.scss │ │ ├── headjs │ │ ├── .bower.json │ │ ├── bower.json │ │ └── dist │ │ │ └── 1.0.0 │ │ │ ├── changelog.txt │ │ │ ├── head.core.js │ │ │ ├── head.core.min.js │ │ │ ├── head.core.min.js.map │ │ │ ├── head.css3.js │ │ │ ├── head.css3.min.js │ │ │ ├── head.css3.min.js.map │ │ │ ├── head.js │ │ │ ├── head.load.js │ │ │ ├── head.load.min.js │ │ │ ├── head.load.min.js.map │ │ │ ├── head.min.js │ │ │ └── head.min.js.map │ │ ├── highlight.js │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── bower.json │ │ ├── component.json │ │ ├── composer.json │ │ ├── highlight.pack.js │ │ └── styles │ │ │ ├── arta.css │ │ │ ├── ascetic.css │ │ │ ├── atelier-dune.dark.css │ │ │ ├── atelier-dune.light.css │ │ │ ├── atelier-forest.dark.css │ │ │ ├── atelier-forest.light.css │ │ │ ├── atelier-heath.dark.css │ │ │ ├── atelier-heath.light.css │ │ │ ├── atelier-lakeside.dark.css │ │ │ ├── atelier-lakeside.light.css │ │ │ ├── atelier-seaside.dark.css │ │ │ ├── atelier-seaside.light.css │ │ │ ├── brown_paper.css │ │ │ ├── brown_papersq.png │ │ │ ├── codepen-embed.css │ │ │ ├── color-brewer.css │ │ │ ├── dark.css │ │ │ ├── default.css │ │ │ ├── docco.css │ │ │ ├── far.css │ │ │ ├── foundation.css │ │ │ ├── github.css │ │ │ ├── googlecode.css │ │ │ ├── hybrid.css │ │ │ ├── idea.css │ │ │ ├── ir_black.css │ │ │ ├── kimbie.dark.css │ │ │ ├── kimbie.light.css │ │ │ ├── magula.css │ │ │ ├── mono-blue.css │ │ │ ├── monokai.css │ │ │ ├── monokai_sublime.css │ │ │ ├── obsidian.css │ │ │ ├── paraiso.dark.css │ │ │ ├── paraiso.light.css │ │ │ ├── pojoaque.css │ │ │ ├── pojoaque.jpg │ │ │ ├── railscasts.css │ │ │ ├── rainbow.css │ │ │ ├── school_book.css │ │ │ ├── school_book.png │ │ │ ├── solarized_dark.css │ │ │ ├── solarized_light.css │ │ │ ├── sunburst.css │ │ │ ├── tomorrow-night-blue.css │ │ │ ├── tomorrow-night-bright.css │ │ │ ├── tomorrow-night-eighties.css │ │ │ ├── tomorrow-night.css │ │ │ ├── tomorrow.css │ │ │ ├── vs.css │ │ │ ├── xcode.css │ │ │ └── zenburn.css │ │ ├── jquery.classList │ │ ├── .bower.json │ │ ├── .eslintignore │ │ ├── .eslintrc │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .jscsrc │ │ ├── .jshintrc │ │ ├── Gruntfile.js │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── .eslintrc │ │ │ └── jquery.class_list.js │ │ ├── lesshat │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README-template.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── build │ │ │ ├── lesshat-prefixed.less │ │ │ └── lesshat.less │ │ ├── mixins │ │ │ ├── align-content │ │ │ │ ├── align-content.js │ │ │ │ ├── align-content.md │ │ │ │ └── test.js │ │ │ ├── align-items │ │ │ │ ├── align-items.js │ │ │ │ ├── align-items.md │ │ │ │ └── test.js │ │ │ ├── align-self │ │ │ │ ├── align-self.js │ │ │ │ ├── align-self.md │ │ │ │ └── test.js │ │ │ ├── animation-delay │ │ │ │ ├── animation-delay.js │ │ │ │ ├── animation-delay.md │ │ │ │ └── test.js │ │ │ ├── animation-direction │ │ │ │ ├── animation-direction.js │ │ │ │ ├── animation-direction.md │ │ │ │ └── test.js │ │ │ ├── animation-duration │ │ │ │ ├── animation-duration.js │ │ │ │ ├── animation-duration.md │ │ │ │ └── test.js │ │ │ ├── animation-fill-mode │ │ │ │ ├── animation-fill-mode.js │ │ │ │ ├── animation-fill-mode.md │ │ │ │ └── test.js │ │ │ ├── animation-iteration-count │ │ │ │ ├── animation-iteration-count.js │ │ │ │ ├── animation-iteration-count.md │ │ │ │ └── test.js │ │ │ ├── animation-name │ │ │ │ ├── animation-name.js │ │ │ │ ├── animation-name.md │ │ │ │ └── test.js │ │ │ ├── animation-play-state │ │ │ │ ├── animation-play-state.js │ │ │ │ ├── animation-play-state.md │ │ │ │ └── test.js │ │ │ ├── animation-timing-function │ │ │ │ ├── animation-timing-function.js │ │ │ │ ├── animation-timing-function.md │ │ │ │ └── test.js │ │ │ ├── animation │ │ │ │ ├── animation.js │ │ │ │ ├── animation.md │ │ │ │ └── test.js │ │ │ ├── appearance │ │ │ │ ├── appearance.js │ │ │ │ ├── appearance.md │ │ │ │ └── test.js │ │ │ ├── backface-visibility │ │ │ │ ├── backface-visibility.js │ │ │ │ ├── backface-visibility.md │ │ │ │ └── test.js │ │ │ ├── background-clip │ │ │ │ ├── background-clip.js │ │ │ │ ├── background-clip.md │ │ │ │ └── test.js │ │ │ ├── background-image │ │ │ │ ├── background-image.js │ │ │ │ ├── background-image.md │ │ │ │ └── test.js │ │ │ ├── background-origin │ │ │ │ ├── background-origin.js │ │ │ │ ├── background-origin.md │ │ │ │ └── test.js │ │ │ ├── background-size │ │ │ │ ├── background-size.js │ │ │ │ ├── background-size.md │ │ │ │ └── test.js │ │ │ ├── blur │ │ │ │ ├── blur.js │ │ │ │ ├── blur.md │ │ │ │ └── test.js │ │ │ ├── border-bottom-left-radius │ │ │ │ ├── border-bottom-left-radius.js │ │ │ │ ├── border-bottom-left-radius.md │ │ │ │ └── test.js │ │ │ ├── border-bottom-right-radius │ │ │ │ ├── border-bottom-right-radius.js │ │ │ │ ├── border-bottom-right-radius.md │ │ │ │ └── test.js │ │ │ ├── border-image │ │ │ │ ├── border-image.js │ │ │ │ ├── border-image.md │ │ │ │ └── test.js │ │ │ ├── border-radius │ │ │ │ ├── border-radius.js │ │ │ │ ├── border-radius.md │ │ │ │ └── test.js │ │ │ ├── border-top-left-radius │ │ │ │ ├── border-top-left-radius.js │ │ │ │ ├── border-top-left-radius.md │ │ │ │ └── test.js │ │ │ ├── border-top-right-radius │ │ │ │ ├── border-top-right-radius.js │ │ │ │ ├── border-top-right-radius.md │ │ │ │ └── test.js │ │ │ ├── box-shadow │ │ │ │ ├── box-shadow.js │ │ │ │ ├── box-shadow.md │ │ │ │ └── test.js │ │ │ ├── box-sizing │ │ │ │ ├── box-sizing.js │ │ │ │ ├── box-sizing.md │ │ │ │ └── test.js │ │ │ ├── brightness │ │ │ │ ├── brightness.js │ │ │ │ ├── brightness.md │ │ │ │ └── test.js │ │ │ ├── calc │ │ │ │ ├── calc.js │ │ │ │ ├── calc.md │ │ │ │ └── result.less │ │ │ ├── column-count │ │ │ │ ├── column-count.js │ │ │ │ ├── column-count.md │ │ │ │ └── test.js │ │ │ ├── column-gap │ │ │ │ ├── column-gap.js │ │ │ │ ├── column-gap.md │ │ │ │ └── test.js │ │ │ ├── column-rule │ │ │ │ ├── column-rule.js │ │ │ │ ├── column-rule.md │ │ │ │ └── test.js │ │ │ ├── column-width │ │ │ │ ├── column-width.js │ │ │ │ ├── column-width.md │ │ │ │ └── test.js │ │ │ ├── columns │ │ │ │ ├── columns.js │ │ │ │ ├── columns.md │ │ │ │ └── test.js │ │ │ ├── contrast │ │ │ │ ├── contrast.js │ │ │ │ ├── contrast.md │ │ │ │ └── test.js │ │ │ ├── display │ │ │ │ ├── display.js │ │ │ │ ├── display.md │ │ │ │ └── test.js │ │ │ ├── drop-shadow │ │ │ │ ├── drop-shadow.js │ │ │ │ ├── drop-shadow.md │ │ │ │ └── test.js │ │ │ ├── filter │ │ │ │ ├── filter.js │ │ │ │ ├── filter.md │ │ │ │ └── test.js │ │ │ ├── flex-basis │ │ │ │ ├── flex-basis.js │ │ │ │ ├── flex-basis.md │ │ │ │ └── test.js │ │ │ ├── flex-direction │ │ │ │ ├── flex-direction.js │ │ │ │ ├── flex-direction.md │ │ │ │ └── test.js │ │ │ ├── flex-grow │ │ │ │ ├── flex-grow.js │ │ │ │ ├── flex-grow.md │ │ │ │ └── test.js │ │ │ ├── flex-shrink │ │ │ │ ├── flex-shrink.js │ │ │ │ ├── flex-shrink.md │ │ │ │ └── test.js │ │ │ ├── flex-wrap │ │ │ │ ├── flex-wrap.js │ │ │ │ ├── flex-wrap.md │ │ │ │ └── test.js │ │ │ ├── flex │ │ │ │ ├── flex.js │ │ │ │ ├── flex.md │ │ │ │ └── test.js │ │ │ ├── font-face │ │ │ │ ├── font-face.less │ │ │ │ └── font-face.md │ │ │ ├── footer.less │ │ │ ├── grayscale │ │ │ │ ├── grayscale.js │ │ │ │ ├── grayscale.md │ │ │ │ └── test.js │ │ │ ├── header.less │ │ │ ├── hue-rotate │ │ │ │ ├── hue-rotate.js │ │ │ │ ├── hue-rotate.md │ │ │ │ └── test.js │ │ │ ├── hyphens │ │ │ │ ├── hyphens.js │ │ │ │ ├── hyphens.md │ │ │ │ └── test.js │ │ │ ├── invert │ │ │ │ ├── invert.js │ │ │ │ ├── invert.md │ │ │ │ └── test.js │ │ │ ├── justify-content │ │ │ │ ├── justify-content.js │ │ │ │ ├── justify-content.md │ │ │ │ └── test.js │ │ │ ├── keyframes │ │ │ │ ├── keyframes.js │ │ │ │ ├── keyframes.md │ │ │ │ └── result.less │ │ │ ├── opacity │ │ │ │ ├── opacity.js │ │ │ │ ├── opacity.md │ │ │ │ └── test.js │ │ │ ├── order │ │ │ │ ├── order.js │ │ │ │ ├── order.md │ │ │ │ └── test.js │ │ │ ├── perspective-origin │ │ │ │ ├── perspective-origin.js │ │ │ │ ├── perspective-origin.md │ │ │ │ └── test.js │ │ │ ├── perspective │ │ │ │ ├── perspective.js │ │ │ │ ├── perspective.md │ │ │ │ └── test.js │ │ │ ├── placeholder │ │ │ │ ├── placeholder.less │ │ │ │ └── placeholder.md │ │ │ ├── properties.doc │ │ │ ├── rotate │ │ │ │ ├── rotate.js │ │ │ │ ├── rotate.md │ │ │ │ └── test.js │ │ │ ├── rotate3d │ │ │ │ ├── rotate3d.js │ │ │ │ ├── rotate3d.md │ │ │ │ └── test.js │ │ │ ├── rotateX │ │ │ │ ├── rotateX.js │ │ │ │ ├── rotateX.md │ │ │ │ └── test.js │ │ │ ├── rotateY │ │ │ │ ├── rotateY.js │ │ │ │ ├── rotateY.md │ │ │ │ └── test.js │ │ │ ├── rotateZ │ │ │ │ ├── rotateZ.js │ │ │ │ ├── rotateZ.md │ │ │ │ └── test.js │ │ │ ├── saturate │ │ │ │ ├── saturate.js │ │ │ │ ├── saturate.md │ │ │ │ └── test.js │ │ │ ├── scale │ │ │ │ ├── scale.js │ │ │ │ ├── scale.md │ │ │ │ └── test.js │ │ │ ├── scale3d │ │ │ │ ├── scale3d.js │ │ │ │ ├── scale3d.md │ │ │ │ └── test.js │ │ │ ├── scaleX │ │ │ │ ├── scaleX.js │ │ │ │ ├── scaleX.md │ │ │ │ └── test.js │ │ │ ├── scaleY │ │ │ │ ├── scaleY.js │ │ │ │ ├── scaleY.md │ │ │ │ └── test.js │ │ │ ├── scaleZ │ │ │ │ ├── scaleZ.js │ │ │ │ ├── scaleZ.md │ │ │ │ └── test.js │ │ │ ├── selection │ │ │ │ ├── result.less │ │ │ │ ├── selection.js │ │ │ │ └── selection.md │ │ │ ├── sepia │ │ │ │ ├── sepia.js │ │ │ │ ├── sepia.md │ │ │ │ └── test.js │ │ │ ├── size │ │ │ │ ├── size.less │ │ │ │ └── size.md │ │ │ ├── skew │ │ │ │ ├── skew.js │ │ │ │ ├── skew.md │ │ │ │ └── test.js │ │ │ ├── skewX │ │ │ │ ├── skewX.js │ │ │ │ ├── skewX.md │ │ │ │ └── test.js │ │ │ ├── skewY │ │ │ │ ├── skewY.js │ │ │ │ ├── skewY.md │ │ │ │ └── test.js │ │ │ ├── transform-origin │ │ │ │ ├── test.js │ │ │ │ ├── transform-origin.js │ │ │ │ └── transform-origin.md │ │ │ ├── transform-style │ │ │ │ ├── test.js │ │ │ │ ├── transform-style.js │ │ │ │ └── transform-style.md │ │ │ ├── transform │ │ │ │ ├── test.js │ │ │ │ ├── transform.js │ │ │ │ └── transform.md │ │ │ ├── transition-delay │ │ │ │ ├── test.js │ │ │ │ ├── transition-delay.js │ │ │ │ └── transition-delay.md │ │ │ ├── transition-duration │ │ │ │ ├── test.js │ │ │ │ ├── transition-duration.js │ │ │ │ └── transition-duration.md │ │ │ ├── transition-property │ │ │ │ ├── test.js │ │ │ │ ├── transition-property.js │ │ │ │ └── transition-property.md │ │ │ ├── transition-timing-function │ │ │ │ ├── test.js │ │ │ │ ├── transition-timing-function.js │ │ │ │ └── transition-timing-function.md │ │ │ ├── transition │ │ │ │ ├── test.js │ │ │ │ ├── transition.js │ │ │ │ └── transition.md │ │ │ ├── translate │ │ │ │ ├── test.js │ │ │ │ ├── translate.js │ │ │ │ └── translate.md │ │ │ ├── translate3d │ │ │ │ ├── test.js │ │ │ │ ├── translate3d.js │ │ │ │ └── translate3d.md │ │ │ ├── translateX │ │ │ │ ├── test.js │ │ │ │ ├── translateX.js │ │ │ │ └── translateX.md │ │ │ ├── translateY │ │ │ │ ├── test.js │ │ │ │ ├── translateY.js │ │ │ │ └── translateY.md │ │ │ ├── translateZ │ │ │ │ ├── test.js │ │ │ │ ├── translateZ.js │ │ │ │ └── translateZ.md │ │ │ └── user-select │ │ │ │ ├── test.js │ │ │ │ ├── user-select.js │ │ │ │ └── user-select.md │ │ └── package.json │ │ └── reveal.js │ │ ├── .bower.json │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── css │ │ ├── print │ │ │ ├── paper.css │ │ │ └── pdf.css │ │ ├── reveal.css │ │ ├── reveal.min.css │ │ └── theme │ │ │ ├── README.md │ │ │ ├── beige.css │ │ │ ├── blood.css │ │ │ ├── default.css │ │ │ ├── moon.css │ │ │ ├── night.css │ │ │ ├── serif.css │ │ │ ├── simple.css │ │ │ ├── sky.css │ │ │ ├── solarized.css │ │ │ ├── source │ │ │ ├── beige.scss │ │ │ ├── blood.scss │ │ │ ├── default.scss │ │ │ ├── moon.scss │ │ │ ├── night.scss │ │ │ ├── serif.scss │ │ │ ├── simple.scss │ │ │ ├── sky.scss │ │ │ └── solarized.scss │ │ │ └── template │ │ │ ├── mixins.scss │ │ │ ├── settings.scss │ │ │ └── theme.scss │ │ ├── index.html │ │ ├── js │ │ ├── reveal.js │ │ └── reveal.min.js │ │ ├── lib │ │ ├── css │ │ │ └── zenburn.css │ │ ├── font │ │ │ ├── league_gothic-webfont.eot │ │ │ ├── league_gothic-webfont.svg │ │ │ ├── league_gothic-webfont.ttf │ │ │ ├── league_gothic-webfont.woff │ │ │ └── league_gothic_license │ │ └── js │ │ │ ├── classList.js │ │ │ ├── head.min.js │ │ │ └── html5shiv.js │ │ ├── package.json │ │ ├── plugin │ │ ├── highlight │ │ │ └── highlight.js │ │ ├── leap │ │ │ └── leap.js │ │ ├── markdown │ │ │ ├── example.html │ │ │ ├── example.md │ │ │ ├── markdown.js │ │ │ └── marked.js │ │ ├── math │ │ │ └── math.js │ │ ├── multiplex │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── master.js │ │ ├── notes-server │ │ │ ├── client.js │ │ │ ├── index.js │ │ │ └── notes.html │ │ ├── notes │ │ │ ├── notes.html │ │ │ └── notes.js │ │ ├── postmessage │ │ │ ├── example.html │ │ │ └── postmessage.js │ │ ├── print-pdf │ │ │ └── print-pdf.js │ │ ├── remotes │ │ │ └── remotes.js │ │ ├── search │ │ │ └── search.js │ │ └── zoom-js │ │ │ └── zoom.js │ │ └── test │ │ ├── examples │ │ ├── assets │ │ │ ├── image1.png │ │ │ └── image2.png │ │ ├── barebones.html │ │ ├── embedded-media.html │ │ ├── math.html │ │ └── slide-backgrounds.html │ │ ├── qunit-1.12.0.css │ │ ├── qunit-1.12.0.js │ │ ├── test-markdown-element-attributes.html │ │ ├── test-markdown-element-attributes.js │ │ ├── test-markdown-slide-attributes.html │ │ ├── test-markdown-slide-attributes.js │ │ ├── test-markdown.html │ │ ├── test-markdown.js │ │ ├── test.html │ │ └── test.js └── less │ ├── custom.less │ ├── pdf.less │ ├── reveal.less │ ├── style.less │ └── templates │ ├── default.less │ └── react.less ├── js └── reveal.init.js ├── snippets.jade └── views ├── includes └── mixins.jade ├── index.jade └── lectures ├── intro.jade ├── lecture-01.jade ├── lecture-02.jade ├── lecture-03.jade ├── lecture-04.jade ├── lecture-05.jade └── lecture-06.jade /.gitignore: -------------------------------------------------------------------------------- 1 | npm-debug.log 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | React Workshop Labs and Slides 2 | ================ 3 | 4 | ## Labs ## 5 | Lab markdown files are located in the labs folder 6 | 7 | ## Slide Deck ## 8 | The slide deck is located in the slidedeck folder. You can access the 9 | slides using GitHub pages [here](http://objectpartners.github.io/react-workshop) 10 | -------------------------------------------------------------------------------- /labs/img/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/.gitkeep -------------------------------------------------------------------------------- /labs/img/lab01/gulp.init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab01/gulp.init.png -------------------------------------------------------------------------------- /labs/img/lab01/gulp.serve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab01/gulp.serve.png -------------------------------------------------------------------------------- /labs/img/lab01/gulp.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab01/gulp.test.png -------------------------------------------------------------------------------- /labs/img/lab01/gulp.watch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab01/gulp.watch.png -------------------------------------------------------------------------------- /labs/img/lab01/welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab01/welcome.png -------------------------------------------------------------------------------- /labs/img/lab02/breakpoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/breakpoint.png -------------------------------------------------------------------------------- /labs/img/lab02/gulp.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/gulp.test.png -------------------------------------------------------------------------------- /labs/img/lab02/howdy.partner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/howdy.partner.png -------------------------------------------------------------------------------- /labs/img/lab02/karma.debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/karma.debug.png -------------------------------------------------------------------------------- /labs/img/lab02/mocha.htmlreporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/mocha.htmlreporter.png -------------------------------------------------------------------------------- /labs/img/lab02/sourcemaps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/sourcemaps.png -------------------------------------------------------------------------------- /labs/img/lab02/woohoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab02/woohoo.png -------------------------------------------------------------------------------- /labs/img/lab03/first.page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab03/first.page.png -------------------------------------------------------------------------------- /labs/img/lab04/employee.deleted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab04/employee.deleted.png -------------------------------------------------------------------------------- /labs/img/lab04/employees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab04/employees.png -------------------------------------------------------------------------------- /labs/img/lab05/create.employee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab05/create.employee.png -------------------------------------------------------------------------------- /labs/img/lab05/edit.employee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab05/edit.employee.png -------------------------------------------------------------------------------- /labs/img/lab05/employees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab05/employees.png -------------------------------------------------------------------------------- /labs/img/lab05/login.form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab05/login.form.png -------------------------------------------------------------------------------- /labs/img/lab05/validation.errors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab05/validation.errors.png -------------------------------------------------------------------------------- /labs/img/lab06/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab06/progress.png -------------------------------------------------------------------------------- /labs/img/lab06/snackbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/labs/img/lab06/snackbar.png -------------------------------------------------------------------------------- /slidedeck/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "src/assets/js/components" 3 | } 4 | -------------------------------------------------------------------------------- /slidedeck/.gitignore: -------------------------------------------------------------------------------- 1 | src/assets/js/components 2 | node_modules 3 | -------------------------------------------------------------------------------- /slidedeck/README.md: -------------------------------------------------------------------------------- 1 | ### Slided Deck Dependencies ### 2 | 3 | * [Node](http://nodejs.org/) 4 | * [Grunt](https://github.com/cowboy/grunt) `npm install -g grunt-cli` 5 | * [Bower](http://twitter.github.com/bower/) `npm install -g bower` 6 | 7 | ####Getting Started 8 | * Run `npm install` to install node dependencies 9 | * Run `bower install` to install client-side dependencies 10 | 11 | ####Grunt Commands 12 | `grunt assemble` 13 | * Minify/uglify the javascript source and css 14 | * Compiles jade 15 | * Stages everything in the dist folder 16 | 17 | `grunt run` 18 | * Starts a server running on port 8001 19 | * Watches for changes on project files 20 | * When files change, the assemble task is re-run and 21 | * Livereload triggers browser update on assemble task completion 22 | 23 | `grunt publish` 24 | * Publishes slides to GitHub pages 25 | * Uses git subtree merge to merge the contents of dist into the gh-pages branch 26 | -------------------------------------------------------------------------------- /slidedeck/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-workshop-slides", 3 | "version": "0.0.1", 4 | "ignore": [ 5 | "**/.*", 6 | "node_modules", 7 | "bower_components", 8 | "test", 9 | "tests" 10 | ], 11 | "dependencies": { 12 | "reveal.js": "2.6.1", 13 | "jquery.classList": "*", 14 | "headjs": "1.0.3", 15 | "lesshat": "~2.0.15", 16 | "font-awesome": "4.3.0", 17 | "highlight.js": "components/highlightjs#8.7.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/FontAwesome.otf -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/league_gothic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/league_gothic-webfont.eot -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/league_gothic-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/league_gothic-webfont.ttf -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/league_gothic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/font/league_gothic-webfont.woff -------------------------------------------------------------------------------- /slidedeck/dist/assets/font/league_gothic_license: -------------------------------------------------------------------------------- 1 | SIL Open Font License (OFL) 2 | http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL 3 | -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/2015-OPI-Logo-Long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/2015-OPI-Logo-Long.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/2015-OPI-Logo-Stacked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/2015-OPI-Logo-Stacked.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/bootstrap-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/bootstrap-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/bower-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/bower-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/browserify-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/browserify-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/emote/awesome.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/emote/awesome.gif -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/emote/mind-blown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/emote/mind-blown.gif -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/emote/protractor-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/emote/protractor-flow.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/emote/scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/emote/scope.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/emote/transclude-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/emote/transclude-frame.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/emote/wat_grande.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/emote/wat_grande.jpg -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/flux-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/flux-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/gulp-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/gulp-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/lecture-01/gulp.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/lecture-01/gulp.test.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/lecture-01/mocha.htmlreporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/lecture-01/mocha.htmlreporter.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/lecture-04/flux.diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/lecture-04/flux.diagram.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/node-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/node-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/opi-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/opi-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/assets/img/react-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/assets/img/react-logo.png -------------------------------------------------------------------------------- /slidedeck/dist/includes/mixins.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/dist/includes/mixins.html -------------------------------------------------------------------------------- /slidedeck/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-workshop-slides", 3 | "version": "0.0.1", 4 | "description": "react-workshop-slides", 5 | "main": "index.js", 6 | "devDependencies": { 7 | "connect": "2.14.3", 8 | "connect-redirection": "0.0.1", 9 | "gulp": "^3.9.0", 10 | "gulp-clean": "^0.3.1", 11 | "gulp-concat": "^2.6.0", 12 | "gulp-connect": "^2.2.0", 13 | "gulp-cssmin": "^0.1.7", 14 | "gulp-jade": "^1.0.1", 15 | "gulp-less": "^3.0.3", 16 | "gulp-livereload": "^3.8.0", 17 | "gulp-uglify": "^1.2.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /slidedeck/publish.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd ../ 4 | git subtree split --branch gh-pages --prefix slidedeck/dist/ 5 | -------------------------------------------------------------------------------- /slidedeck/src/assets/img/2015-OPI-Logo-Long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/2015-OPI-Logo-Long.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/2015-OPI-Logo-Stacked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/2015-OPI-Logo-Stacked.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/bootstrap-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/bootstrap-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/bower-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/bower-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/browserify-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/browserify-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/emote/awesome.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/emote/awesome.gif -------------------------------------------------------------------------------- /slidedeck/src/assets/img/emote/mind-blown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/emote/mind-blown.gif -------------------------------------------------------------------------------- /slidedeck/src/assets/img/emote/protractor-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/emote/protractor-flow.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/emote/scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/emote/scope.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/emote/transclude-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/emote/transclude-frame.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/emote/wat_grande.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/emote/wat_grande.jpg -------------------------------------------------------------------------------- /slidedeck/src/assets/img/flux-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/flux-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/gulp-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/gulp-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/lecture-01/gulp.test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/lecture-01/gulp.test.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/lecture-01/mocha.htmlreporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/lecture-01/mocha.htmlreporter.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/lecture-04/flux.diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/lecture-04/flux.diagram.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/node-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/node-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/opi-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/opi-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/img/react-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/img/react-logo.png -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "font-awesome", 3 | "description": "Font Awesome", 4 | "version": "4.3.0", 5 | "keywords": [], 6 | "homepage": "http://fontawesome.io", 7 | "dependencies": {}, 8 | "devDependencies": {}, 9 | "license": [ 10 | "OFL-1.1", 11 | "MIT", 12 | "CC-BY-3.0" 13 | ], 14 | "main": [ 15 | "./css/font-awesome.css", 16 | "./fonts/*" 17 | ], 18 | "ignore": [ 19 | "*/.*", 20 | "*.json", 21 | "src", 22 | "*.yml", 23 | "Gemfile", 24 | "Gemfile.lock", 25 | "*.md" 26 | ], 27 | "_release": "4.3.0", 28 | "_resolution": { 29 | "type": "version", 30 | "tag": "v4.3.0", 31 | "commit": "e9665bad5b5b944da1095faf88209fabbfe725c1" 32 | }, 33 | "_source": "git://github.com/FortAwesome/Font-Awesome.git", 34 | "_target": "4.3.0", 35 | "_originalSource": "font-awesome" 36 | } -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.egg-info 3 | *.db 4 | *.db.old 5 | *.swp 6 | *.db-journal 7 | 8 | .coverage 9 | .DS_Store 10 | .installed.cfg 11 | _gh_pages/* 12 | 13 | .idea/* 14 | .svn/* 15 | src/website/static/* 16 | src/website/media/* 17 | 18 | bin 19 | cfcache 20 | develop-eggs 21 | dist 22 | downloads 23 | eggs 24 | parts 25 | tmp 26 | .sass-cache 27 | node_modules 28 | 29 | src/website/settingslocal.py 30 | stunnel.log 31 | 32 | .ruby-version 33 | .bundle 34 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/.npmignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | *.egg-info 3 | *.db 4 | *.db.old 5 | *.swp 6 | *.db-journal 7 | 8 | .coverage 9 | .DS_Store 10 | .installed.cfg 11 | _gh_pages/* 12 | 13 | .idea/* 14 | .svn/* 15 | src/website/static/* 16 | src/website/media/* 17 | 18 | bin 19 | cfcache 20 | develop-eggs 21 | dist 22 | downloads 23 | eggs 24 | parts 25 | tmp 26 | .sass-cache 27 | node_modules 28 | 29 | src/website/settingslocal.py 30 | stunnel.log 31 | 32 | .ruby-version 33 | 34 | # don't need these in the npm package. 35 | src/ 36 | _config.yml 37 | bower.json 38 | component.json 39 | composer.json 40 | CONTRIBUTING.md 41 | Gemfile 42 | Gemfile.lock 43 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "font-awesome", 3 | "description": "Font Awesome", 4 | "version": "4.3.0", 5 | "keywords": [], 6 | "homepage": "http://fontawesome.io", 7 | "dependencies": {}, 8 | "devDependencies": {}, 9 | "license": ["OFL-1.1", "MIT", "CC-BY-3.0"], 10 | "main": [ 11 | "./css/font-awesome.css", 12 | "./fonts/*" 13 | ], 14 | "ignore": [ 15 | "*/.*", 16 | "*.json", 17 | "src", 18 | "*.yml", 19 | "Gemfile", 20 | "Gemfile.lock", 21 | "*.md" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/bordered-pulled.less: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em @fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .@{fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/path.less: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); 7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), 8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), 9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), 10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), 11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/rotated-flipped.less: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } 5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } 6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } 7 | 8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } 9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .@{fa-css-prefix}-rotate-90, 15 | :root .@{fa-css-prefix}-rotate-180, 16 | :root .@{fa-css-prefix}-rotate-270, 17 | :root .@{fa-css-prefix}-flip-horizontal, 18 | :root .@{fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .pull-right { float: right; } 11 | .pull-left { float: left; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.pull-left { margin-right: .3em; } 15 | &.pull-right { margin-left: .3em; } 16 | } 17 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | transform: translate(0, 0); // ensures no half-pixel rendering in firefox 12 | 13 | } 14 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); 7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), 8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), 9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), 10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), 11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); 12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/font-awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/headjs/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "headjs", 3 | "description": "HeadJS: Responsive Design, Feature Detections & Asset Loading. The only script in your ", 4 | "version": "1.0.3", 5 | "license" : "MIT", 6 | "authors": [ 7 | {"name": "Tero Piirainen"}, 8 | {"name": "Robert Hoffmann"} 9 | ], 10 | "homepage " : "http://headjs.com", 11 | "main" : ["./dist/1.0.0/head.min.js","./dist/1.0.0/head.min.js.map","./dist/1.0.0/changelog.txt"], 12 | "ignore": [ 13 | "**", 14 | "!/dist/1.0.0/*.js", 15 | "!/dist/1.0.0/*.map", 16 | "!/dist/1.0.0/*.txt" 17 | ], 18 | "directory": "public/scripts", 19 | "repository": { 20 | "type": "git", "url": "git://github.com/headjs/headjs.git" 21 | }, 22 | "keywords": [ 23 | "loader", 24 | "require", 25 | "polyfill", 26 | "html5", 27 | "css3", 28 | "feature", 29 | "responsive" 30 | ] 31 | } -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "highlightjs", 3 | "version": "8.7.0", 4 | "main": [ 5 | "highlight.pack.min.js", 6 | "styles/default.css" 7 | ], 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "vendor", 12 | "components" 13 | ], 14 | "homepage": "https://github.com/components/highlightjs", 15 | "_release": "8.7.0", 16 | "_resolution": { 17 | "type": "version", 18 | "tag": "8.7.0", 19 | "commit": "3c0b4bc4a70ca3312437829c6d48ccd342467d74" 20 | }, 21 | "_source": "git://github.com/components/highlightjs.git", 22 | "_target": "8.7.0", 23 | "_originalSource": "components/highlightjs" 24 | } -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/Makefile: -------------------------------------------------------------------------------- 1 | VERSION=8.7 2 | 3 | default: build 4 | @cp -f build/highlight.* . 5 | @cp -f highlight/src/styles/* styles 6 | @du -hs highlight.* 7 | 8 | build: highlight 9 | @cd highlight && git fetch && git checkout $(VERSION) 10 | @cd highlight && npm install 11 | @mkdir -p build 12 | @cd highlight && node tools/build.js && cp build/highlight.pack.js ../build/highlight.pack.min.js 13 | @cd highlight && node tools/build.js -n && cp build/highlight.pack.js ../build/highlight.pack.js 14 | 15 | highlight: 16 | @git clone git://github.com/isagalaev/highlight.js.git $@ 17 | 18 | clean: 19 | @rm -rf build 20 | 21 | .PHONY: default 22 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/README.md: -------------------------------------------------------------------------------- 1 | Highlight.js 2 | ============ 3 | 4 | Shim repository for [Highlight.js](http://highlightjs.org/). 5 | 6 | Package Managers 7 | ---------------- 8 | 9 | * [Bower](http://bower.io): `highlightjs` 10 | * [Composer](http://packagist.org/packages/components/highlightjs): `components/highlightjs` 11 | * [Component](http://component.io): `components/highlightjs` 12 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "highlightjs", 3 | "version": "8.7.0", 4 | "main": [ 5 | "highlight.pack.min.js", 6 | "styles/default.css" 7 | ], 8 | "ignore": [ 9 | "**/.*", 10 | "node_modules", 11 | "vendor", 12 | "components" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "highlightjs", 3 | "repo": "components/highlightjs", 4 | "version": "8.7.0", 5 | "main": "highlight.pack.min.js", 6 | "scripts": [ 7 | "highlight.pack.min.js" 8 | ], 9 | "files": [ 10 | "styles/default.css" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "components/highlightjs", 3 | "description": "Highlight.js highlights syntax in code examples on blogs, forums and in fact on any web pages.", 4 | "type": "component", 5 | "license": "BSD-3-Clause", 6 | "authors": [ 7 | { 8 | "name": "Ivan Sagalaev", 9 | "email": "maniac@softwaremaniacs.org", 10 | "homepage": "http://softwaremaniacs.org" 11 | } 12 | ], 13 | "extra": { 14 | "component": { 15 | "scripts": [ 16 | "highlight.pack.min.js" 17 | ], 18 | "files": [ 19 | "styles/*" 20 | ], 21 | "shim": { 22 | "exports": "hljs" 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/styles/brown_papersq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/highlight.js/styles/brown_papersq.png -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/styles/pojoaque.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/highlight.js/styles/pojoaque.jpg -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/highlight.js/styles/school_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/improving-minnesota/react-workshop/2b58047bbd4faa957cb870a3ddd1b3c927417b4a/slidedeck/src/assets/js/components/highlight.js/styles/school_book.png -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/jquery.classList/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery.classList", 3 | "homepage": "https://github.com/mzgol/jquery.classList", 4 | "version": "0.2.0", 5 | "_release": "0.2.0", 6 | "_resolution": { 7 | "type": "version", 8 | "tag": "0.2.0", 9 | "commit": "b149428130d2cfe0c0cc07fe28b74b68a98a3ed8" 10 | }, 11 | "_source": "git://github.com/mzgol/jquery.classList.git", 12 | "_target": "*", 13 | "_originalSource": "jquery.classList" 14 | } -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/jquery.classList/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/** 2 | dist/** 3 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/jquery.classList/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/jquery.classList/.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .*~ 3 | /dist/ 4 | /node_modules/ 5 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/jquery.classList/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "bitwise": true, 3 | "curly": true, 4 | "eqeqeq": true, 5 | "eqnull": true, 6 | "forin": false, 7 | "immed": true, 8 | "newcap": true, 9 | "noarg": true, 10 | "noempty": true, 11 | "nonew": true, 12 | "onevar": true, 13 | "strict": true, 14 | "trailing": true, 15 | "undef": true, 16 | "unused": false, 17 | 18 | "browser": true, 19 | "devel": true, 20 | "jquery": true, 21 | 22 | "quotmark": "single", 23 | "maxerr": 50, 24 | "maxlen": 120 25 | } 26 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/jquery.classList/src/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true 4 | }, 5 | 6 | "globals": { 7 | "jQuery": false, 8 | "$": false 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lesshat", 3 | "version": "2.0.15", 4 | "main": "./build/lesshat.less", 5 | "homepage": "https://github.com/csshat/lesshat", 6 | "_release": "2.0.15", 7 | "_resolution": { 8 | "type": "version", 9 | "tag": "v2.0.15", 10 | "commit": "702a7d1286573a60fdf2e9e1445db5be8b4934e6" 11 | }, 12 | "_source": "git://github.com/csshat/lesshat.git", 13 | "_target": "~2.0.15", 14 | "_originalSource": "lesshat" 15 | } -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.10" 4 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lesshat", 3 | "version": "2.0.15", 4 | "main": "./build/lesshat.less" 5 | } -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-content/align-content.md: -------------------------------------------------------------------------------- 1 | ### • align-content 2 | **Summary:** 3 | 4 | The CSS align-content property aligns a flex container's lines within the flex container when there is an extra space on the cross-axis. This property has no effect on the single line flexible boxes. 5 | 6 | Resources: **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-content)**, **[CSS-Tricks](http://css-tricks.com/almanac/properties/a/align-content/)** 7 | 8 | **Syntax:** 9 | 10 | Default value: stretch 11 | 12 | .align-content(flex-start | flex-end | center | space-between | space-around | stretch) 13 | 14 | **Example:** 15 | 16 | div { 17 | .align-content(flex-start); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-align-content: flex-start; 23 | -ms-flex-line-pack: start; 24 | align-content: flex-start; 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-content/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('align-content', function() { 4 | 5 | /** 6 | * If you want to test this code, comment 'alignContent.result' from align-content.js 7 | */ 8 | // it('should return start', function (done) { 9 | // test.alignContent.ms('flex-start', 'start', done); 10 | // }); 11 | 12 | }); 13 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-items/align-items.md: -------------------------------------------------------------------------------- 1 | ### • align-items 2 | **Summary:** 3 | 4 | The CSS align-items property aligns flex items of the current flex line the same way as justify-content but in the perpendicular direction. 5 | 6 | Resources: **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items)**, **[CSS-Tricks](http://css-tricks.com/almanac/properties/a/align-items/)** 7 | 8 | **Syntax:** 9 | 10 | Default value: stretch 11 | 12 | .align-items(flex-start | flex-end | center | baseline | stretch) 13 | 14 | **Example:** 15 | 16 | div { 17 | .align-items(flex-start); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-box-align: flex-start; 23 | -moz-box-align: start; 24 | -webkit-align-items: start; 25 | -ms-flex-align: flex-start; 26 | align-items: flex-start; 27 | } 28 | 29 | 30 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-items/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('align-items', function () { 4 | 5 | /** 6 | * If you want to test this code, comment 'alignItems.result' from align-items.js 7 | */ 8 | // it('should return start', function (done) { 9 | // test.alignItems.ms('flex-start', 'start', done); 10 | // }); 11 | 12 | }); 13 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-self/align-self.js: -------------------------------------------------------------------------------- 1 | /** 2 | * AlignSelf (flexbox) mixin 3 | */ 4 | 5 | var alignSelf = function alignSelf(value) { 6 | value = value || 'auto'; 7 | 8 | return value; 9 | }; 10 | 11 | alignSelf.ms = function msalignSelf(value) { 12 | value = value || 'auto'; 13 | 14 | if (value == 'flex-start') { 15 | value = 'start'; 16 | } else if (value == 'flex-end') { 17 | value = 'end'; 18 | } 19 | 20 | return value; 21 | }; 22 | 23 | /** 24 | * For which browsers is this mixin specified 25 | */ 26 | 27 | alignSelf.vendors = ['webkit','ms']; 28 | 29 | /** 30 | * Export mixin 31 | */ 32 | 33 | module.exports = alignSelf; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-self/align-self.md: -------------------------------------------------------------------------------- 1 | ### • align-self 2 | **Summary:** 3 | 4 | The align-self CSS property aligns flex items of the current flex line overriding the align-items value. If any of the flex item's cross-axis margin is set to auto, then align-self is ignored. 5 | 6 | Resources: **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-self)**, **[CSS-Tricks](http://css-tricks.com/almanac/properties/a/align-self/)** 7 | 8 | **Syntax:** 9 | 10 | Default value: auto 11 | 12 | .align-self(auto | flex-start | flex-end | center | baseline | stretch) 13 | 14 | **Example:** 15 | 16 | div { 17 | .align-self(flex-start); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-align-self: flex-start; 23 | -ms-align-self: start; 24 | align-self: flex-start; 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/align-self/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('align-self', function () { 4 | 5 | it('should return start', function (done) { 6 | test.alignSelf.ms('flex-start', 'start', done); 7 | }); 8 | 9 | }); 10 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-delay/animation-delay.js: -------------------------------------------------------------------------------- 1 | /** 2 | * AnimationDelay mixin 3 | */ 4 | 5 | var animationDelay = function animationDelay(value) { 6 | value = value || '0'; 7 | var valueRegex = /(?:\d)(?:ms|s)/gi; 8 | var numWithoutValue = /(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi; 9 | 10 | if (!valueRegex.test(value) && value !== '0') { 11 | value = value.replace(numWithoutValue, function(match) { 12 | 13 | if (parseFloat(match, 10) > 10) { 14 | match += 'ms'; 15 | } else { 16 | match += 's'; 17 | } 18 | 19 | return match; 20 | }); 21 | } 22 | 23 | return value; 24 | }; 25 | 26 | /** 27 | * For which browsers is this mixin specified 28 | */ 29 | 30 | animationDelay.vendors = ['webkit', 'moz', 'opera']; 31 | 32 | /** 33 | * Export mixin 34 | */ 35 | 36 | module.exports = animationDelay; 37 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-delay/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-delay', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationDelay('2s, 4s', '2s, 4s', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationDelay('200ms', '200ms', done); 11 | }); 12 | 13 | it('should return numbers with second and milisecond value', function(done) { 14 | test.animationDelay('9, 200', '9s, 200ms', done); 15 | }); 16 | 17 | it('should return the same value', function(done) { 18 | test.animationDelay('.2s', '0.2s', done); 19 | }); 20 | 21 | it('should add unit and return the same value', function(done) { 22 | test.animationDelay('.2', '0.2s', done); 23 | }); 24 | 25 | }); 26 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-direction/animation-direction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationDirection mixin 3 | */ 4 | 5 | var animationDirection = function animationDirection(value) { 6 | return value || 'normal'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | animationDirection.vendors = ['webkit', 'moz', 'opera']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = animationDirection; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-direction/animation-direction.md: -------------------------------------------------------------------------------- 1 | ### • animation-direction 2 | **Summary:** 3 | 4 | The animation-direction CSS property indicates whether the animation should play in reverse on alternate cycles. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/animation-direction)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction)** 7 | 8 | **Syntax:** 9 | 10 | Default value: normal 11 | 12 | .animation-direction(, …) 13 | 14 | **Example:** 15 | 16 | div { 17 | .animation-direction(reverse, alternate); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-animation-direction: reverse, alternate; 23 | -moz-animation-direction: reverse, alternate; 24 | -opera-animation-direction: reverse, alternate; 25 | animation-direction: reverse, alternate; 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-direction/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-direction', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationDirection('reverse', 'reverse', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationDirection('reverse, alternate', 'reverse, alternate', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-duration/animation-duration.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationDuration mixin 3 | */ 4 | 5 | var animationDuration = function animationDuration(value) { 6 | value = value || '0'; 7 | var valueRegex = /ms|s/gi; 8 | var numWithoutValue = /(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi; 9 | 10 | if (!valueRegex.test(value) && value !== '0') { 11 | value = value.replace(numWithoutValue, function(match) { 12 | 13 | if (parseFloat(match, 10) > 10) { 14 | match += 'ms'; 15 | } else { 16 | match += 's'; 17 | } 18 | 19 | return match; 20 | }); 21 | } 22 | 23 | return value; 24 | }; 25 | 26 | /** 27 | * For which browsers is this mixin specified 28 | */ 29 | 30 | animationDuration.vendors = ['webkit', 'moz', 'opera']; 31 | 32 | /** 33 | * Export mixin 34 | */ 35 | 36 | module.exports = animationDuration; 37 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-duration/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-duration', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationDuration('2s', '2s', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationDuration('200ms, 400ms', '200ms, 400ms', done); 11 | }); 12 | 13 | it('should return number with ms', function(done) { 14 | test.animationDuration('2000', '2000ms', done); 15 | }); 16 | 17 | it('should return number with s', function(done) { 18 | test.animationDuration('5', '5s', done); 19 | }); 20 | 21 | it('should return the same value', function(done) { 22 | test.animationDuration('.3s', '0.3s', done); 23 | }); 24 | 25 | }); 26 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-fill-mode/animation-fill-mode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationFillMode mixin 3 | */ 4 | 5 | var animationFillMode = function animationFillMode(value) { 6 | return value || 'none'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | animationFillMode.vendors = ['webkit', 'moz', 'opera']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = animationFillMode; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-fill-mode/animation-fill-mode.md: -------------------------------------------------------------------------------- 1 | ### • animation-fill-mode 2 | **Summary:** 3 | 4 | The animation-fill-mode CSS property specifies how a CSS animation should apply styles to its target before and after it is executing. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/animation-fill-mode)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-fill-mode)** 7 | 8 | **Syntax:** 9 | 10 | Default value: none 11 | 12 | .animation-fill-mode(, …) 13 | 14 | **Example:** 15 | 16 | div { 17 | .animation-fill-mode(forwards); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-animation-fill-mode: forwards; 23 | -moz-animation-fill-mode: forwards; 24 | -opera-animation-fill-mode: forwards; 25 | animation-fill-mode: forwards; 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-fill-mode/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-fill-mode', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationFillMode('forwards', 'forwards', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationFillMode('forwards, both', 'forwards, both', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-iteration-count/animation-iteration-count.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationIterationCount mixin 3 | */ 4 | 5 | var animationIterationCount = function animationIterationCount(value) { 6 | return value || '0'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | animationIterationCount.vendors = ['webkit', 'moz', 'opera']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = animationIterationCount; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-iteration-count/animation-iteration-count.md: -------------------------------------------------------------------------------- 1 | ### • animation-iteration-count 2 | **Summary:** 3 | 4 | The animation-iteration-count CSS property specifies how a CSS animation should apply styles to its target before and after it is executing. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/animation-iteration-count)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-iteration-count)** 7 | 8 | **Syntax:** 9 | 10 | Default value: 1 11 | 12 | .animation-iteration-count(, …) 13 | 14 | **Example:** 15 | 16 | div { 17 | .animation-iteration-count(3); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-animation-iteration-count: 3; 23 | -moz-animation-iteration-count: 3; 24 | -opera-animation-iteration-count: 3; 25 | animation-iteration-count: 3; 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-iteration-count/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-iteration-count', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationIterationCount('3', '3', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationIterationCount('11, 44', '11, 44', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-name/animation-name.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationName mixin 3 | */ 4 | 5 | var animationName = function animationName(value) { 6 | return value || 'none'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | animationName.vendors = ['webkit', 'moz', 'opera']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = animationName; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-name/animation-name.md: -------------------------------------------------------------------------------- 1 | ### • animation-name 2 | **Summary:** 3 | 4 | The animation-name CSS property specifies a list of animations that should be applied to the selected element. Each name indicates a @keyframes at-rule that defines the property values for the animation sequence. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/animation-name)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-name)** 7 | 8 | **Syntax:** 9 | 10 | Default value: none 11 | 12 | .animation-name(, …) 13 | 14 | **Example:** 15 | 16 | div { 17 | .animation-name(animation-1, animation-2); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-animation-name: animation-1, animation-2; 23 | -moz-animation-name: animation-1, animation-2; 24 | -opera-animation-name: animation-1, animation-2; 25 | animation-name: animation-1, animation-2; 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-name/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-name', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationName('brutalAnimation', 'brutalAnimation', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationName('anim-1, anim-2, anim-3', 'anim-1, anim-2, anim-3', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-play-state/animation-play-state.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationPlayState mixin 3 | */ 4 | 5 | var animationPlayState = function animationPlayState(value) { 6 | return value || 'running'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | animationPlayState.vendors = ['webkit', 'moz', 'opera']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = animationPlayState; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-play-state/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-play-state', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationPlayState('running', 'running', done); 7 | }); 8 | 9 | it('should return the default value running', function(done) { 10 | test.animationPlayState('', 'running', done); 11 | }); 12 | 13 | 14 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-timing-function/animation-timing-function.js: -------------------------------------------------------------------------------- 1 | /** 2 | * animationTimingFunction mixin 3 | */ 4 | 5 | var animationTimingFunction = function animationTimingFunction(value) { 6 | return value || 'ease'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | animationTimingFunction.vendors = ['webkit', 'moz', 'opera']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = animationTimingFunction; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation-timing-function/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('animation-timing-function', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.animationTimingFunction('cubic-bezier(0.42,0,0.58,1)', 'cubic-bezier(0.42, 0, 0.58, 1)', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.animationTimingFunction('cubic-bezier(0.42,0,0.58,1), cubic-bezier(0.42,0,0.58,1)', 'cubic-bezier(0.42, 0, 0.58, 1), cubic-bezier(0.42, 0, 0.58, 1)', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation/animation.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Animation mixin 3 | */ 4 | 5 | var animation = function animation(value) { 6 | value = value || 'none'; 7 | 8 | if (/^[^, ]*,/.test(value)) { 9 | value = value.replace(/(?:,)(?![^(]*\))/g, ''); 10 | } 11 | 12 | return value; 13 | }; 14 | 15 | /** 16 | * For which browsers is this mixin specified 17 | */ 18 | 19 | animation.vendors = ['webkit', 'moz', 'opera']; 20 | 21 | /** 22 | * Export mixin 23 | */ 24 | 25 | module.exports = animation; 26 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation/animation.md: -------------------------------------------------------------------------------- 1 | ### • animation 2 | **Summary:** 3 | 4 | Shorthand to define a CSS animation, setting all parameters at once. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/animation/animation)**, **[CSS3files](http://www.css3files.com/animation/)** 7 | 8 | **Syntax:** 9 | 10 | Default value: none 11 | 12 | .animation(animation-name | animation-duration | animation-timing-function | animation-delay | animation-iteration-count | animation-direction | animation-fill-mode , […]*) 13 | 14 | **Example:** 15 | 16 | div { 17 | .animation(nameAnimation 2s linear alternate); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-animation: nameAnimation 2s linear alternate; 23 | -moz-animation: nameAnimation 2s linear alternate; 24 | -opera-animation: nameAnimation 2s linear alternate; 25 | animation: nameAnimation 2s linear alternate; 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/animation/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | 4 | describe('animation', function() { 5 | 6 | it('should add zero before dot and return the same value', function(done) { 7 | test.animation('nameAnimation .2s', 'nameAnimation 0.2s', done); 8 | }); 9 | 10 | it('should return the same value', function(done) { 11 | test.animation('nameAnimation 2s linear alternate, nameAnimation2 1s linear alternate', 'nameAnimation 2s linear alternate, nameAnimation2 1s linear alternate', done); 12 | }); 13 | 14 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/appearance/appearance.js: -------------------------------------------------------------------------------- 1 | /** 2 | * appearance mixin 3 | */ 4 | 5 | var appearance = function appearance(value) { 6 | return value || 'none'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | appearance.vendors = ['webkit', 'moz']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = appearance; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/appearance/appearance.md: -------------------------------------------------------------------------------- 1 | ### • appearance 2 | **Summary:** 3 | 4 | Allows changing the style of any element to platform-based interface elements or vice versa. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/appearance)**, **[CSS-Tricks](http://css-tricks.com/almanac/properties/a/appearance/)** 7 | 8 | **Syntax:** 9 | 10 | Default value: none 11 | 12 | .appearance() 13 | 14 | **Example:** 15 | 16 | div { 17 | .appearance(); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-appearance: none; 23 | -moz-appearance: none; 24 | appearance: none; 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/appearance/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('appearance', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.appearance('button', 'button', done); 7 | }); 8 | 9 | it('should return the default value none', function(done) { 10 | test.appearance('', 'none', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/backface-visibility/backface-visibility.js: -------------------------------------------------------------------------------- 1 | /** 2 | * backfaceVisibility mixin 3 | */ 4 | 5 | var backfaceVisibility = function backfaceVisibility(value) { 6 | return value || 'visible'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | backfaceVisibility.vendors = ['webkit', 'moz', 'opera', 'ms']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = backfaceVisibility; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/backface-visibility/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('backface-visibility', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.backfaceVisibility('hidden', 'hidden', done); 7 | }); 8 | 9 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-clip/background-clip.js: -------------------------------------------------------------------------------- 1 | /** 2 | * backgroundClip mixin 3 | */ 4 | 5 | var backgroundClip = function backgroundClip(value) { 6 | return value || 'border-box'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | backgroundClip.vendors = ['webkit', 'moz']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = backgroundClip; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-clip/background-clip.md: -------------------------------------------------------------------------------- 1 | ### • background-clip 2 | **Summary:** 3 | 4 | The background-clip CSS property specifies whether an element's background, either the color or image, extends underneath its border. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/background-clip)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip)** 7 | 8 | **Syntax:** 9 | 10 | Default value: border-box 11 | 12 | .background-clip() 13 | 14 | **Example:** 15 | 16 | div { 17 | .background-clip(padding-box); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-background-clip: padding-box; 23 | -moz-background-clip: padding-box; 24 | background-clip: padding-box; 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-clip/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('background-clip', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.backgroundClip('padding-box', 'padding-box', done); 7 | }); 8 | 9 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-origin/background-origin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * backgroundOrigin mixin 3 | */ 4 | 5 | var backgroundOrigin = function backgroundOrigin(value) { 6 | return value || 'padding-box'; 7 | }; 8 | 9 | /** 10 | * For which browsers is this mixin specified 11 | */ 12 | 13 | backgroundOrigin.vendors = ['webkit', 'moz']; 14 | 15 | /** 16 | * Export mixin 17 | */ 18 | 19 | module.exports = backgroundOrigin; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-origin/background-origin.md: -------------------------------------------------------------------------------- 1 | ### • background-origin 2 | **Summary:** 3 | 4 | The background-origin CSS property determines the background positioning area, that is the position of the origin of an image specified using the background-image CSS property. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/background-origin)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin)** 7 | 8 | **Syntax:** 9 | 10 | Default value: padding-box 11 | 12 | .background-origin() 13 | 14 | **Example:** 15 | 16 | div { 17 | .background-origin(content-box); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-background-origin: content-box; 23 | -moz-background-origin: content-box; 24 | background-origin: content-box; 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-origin/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('background-origin', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.backgroundOrigin('content-box', 'content-box', done); 7 | }); 8 | 9 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-size/background-size.js: -------------------------------------------------------------------------------- 1 | /** 2 | * backgroundSize mixin 3 | */ 4 | 5 | var backgroundSize = function backgroundSize(value) { 6 | value = value || 'auto auto'; 7 | var numRegex = /\d/gi; 8 | var numWithoutValue = /(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi; 9 | 10 | if (/^[^, ]*,/.test(value)) { 11 | value = value.replace(/(?:,)(?![^(]*\))/g, ''); 12 | } 13 | 14 | if (numRegex.test(value)) { 15 | value = value.replace(numWithoutValue, function(match) { 16 | return (match == 0) && match || match + 'px'; 17 | }); 18 | } 19 | 20 | return value; 21 | }; 22 | 23 | /** 24 | * For which browsers is this mixin specified 25 | */ 26 | 27 | backgroundSize.vendors = ['webkit', 'moz']; 28 | 29 | /** 30 | * Export mixin 31 | */ 32 | 33 | module.exports = backgroundSize; 34 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-size/background-size.md: -------------------------------------------------------------------------------- 1 | ### • background-size 2 | **Summary:** 3 | 4 | The background-size CSS property specifies the size of the background images. The size of the image can be fully constrained or only partially in order to preserve its intrinsic ratio. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/background-size)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/background-size)** 7 | 8 | **Syntax:** 9 | 10 | Default value: auto auto 11 | 12 | .background-size(, ...) 13 | 14 | **Tips and tricks:** 15 | 16 | If you omit units, `background-size` adds `px` automatically. 17 | 18 | **Example:** 19 | 20 | div { 21 | .background-size(cover, 100%); 22 | } 23 | 24 | // Result 25 | div { 26 | -webkit-background-size: cover, 100%; 27 | -moz-background-size: cover, 100%; 28 | background-size: cover, 100%; 29 | } 30 | 31 | 32 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/background-size/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('background-size', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.backgroundSize('cover 100%', 'cover 100%', done); 7 | }); 8 | 9 | it('should return numbers with px', function(done) { 10 | test.backgroundSize('400 300', '400px 300px', done); 11 | }); 12 | 13 | it('should return the same value', function(done) { 14 | test.backgroundSize('.25em cover', '0.25em cover', done); 15 | }); 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/blur/blur.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Blur mixin 3 | */ 4 | 5 | var blur = function blur(value) { 6 | value = value || '0'; 7 | var numRegex = /\d/gi; 8 | var numWithoutValue = /(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi; 9 | 10 | if (numRegex.test(value)) { 11 | value = value.replace(numWithoutValue, function(match) { 12 | return (match == 0) && match || match + 'px'; 13 | }); 14 | } 15 | 16 | return value; 17 | }; 18 | 19 | /** 20 | * Result settings 21 | */ 22 | 23 | blur.result = { 24 | property: 'filter', 25 | value: 'blur({{ result }})', 26 | }; 27 | 28 | /** 29 | * For which browsers is this mixin specified 30 | */ 31 | 32 | blur.vendors = ['webkit', 'moz', 'ms']; 33 | 34 | /** 35 | * Export mixin 36 | */ 37 | 38 | module.exports = blur; 39 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/blur/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('blur', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.resultProperty = 'filter'; 7 | test.blur('10', 'blur(10px)', done); 8 | }); 9 | 10 | it('should return the same value', function(done) { 11 | test.resultProperty = 'filter'; 12 | test.blur('0.6em', 'blur(0.6em)', done); 13 | }); 14 | 15 | }); 16 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-bottom-left-radius/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('border-bottom-left-radius', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.borderBottomLeftRadius('10px', '10px', done); 7 | }); 8 | 9 | it('should return numbers with px', function(done) { 10 | test.borderBottomLeftRadius('20', '20px', done); 11 | }); 12 | 13 | it('should return numbers with px', function(done) { 14 | test.resultProperty = 'border-radius-bottomleft'; 15 | test.borderBottomLeftRadius.moz('20', '20px', done); 16 | }); 17 | 18 | }); 19 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-bottom-right-radius/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('border-bottom-right-radius', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.borderBottomRightRadius('10px', '10px', done); 7 | }); 8 | 9 | it('should return numbers with px', function(done) { 10 | test.borderBottomRightRadius('20', '20px', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-image/border-image.js: -------------------------------------------------------------------------------- 1 | /** 2 | * borderImage mixin 3 | */ 4 | 5 | var borderImage = function borderImage(value) { 6 | value = value || 08121991; 7 | 8 | if (/^[^, ]*,/.test(value)) { 9 | value = value.replace(/(?:,)(?![^(]*\))/g, ''); 10 | } 11 | 12 | return value; 13 | }; 14 | 15 | /** 16 | * For which browsers is this mixin specified 17 | */ 18 | 19 | borderImage.vendors = ['webkit', 'moz', 'opera']; 20 | 21 | /** 22 | * Export mixin 23 | */ 24 | 25 | module.exports = borderImage; 26 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-image/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('border-image', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.borderImage('url(border.png) 61 45 62 54 repeat', 'url(border.png) 61 45 62 54 repeat', done); 7 | }); 8 | 9 | it('should return the same value', function(done) { 10 | test.borderImage('url(../images/border.png) 61 45 62 54 repeat', 'url(../images/border.png) 61 45 62 54 repeat', done); 11 | }); 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-radius/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('border-radius', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.borderRadius('10px', '10px', done); 7 | }); 8 | 9 | it('should return numbers with px', function(done) { 10 | test.borderRadius('20 30', '20px 30px', done); 11 | }); 12 | 13 | it('should return the same value', function(done) { 14 | test.borderRadius('0.33em', '0.33em', done); 15 | }); 16 | 17 | it('should return the same value', function(done) { 18 | test.borderRadius('.46em', '0.46em', done); 19 | }); 20 | 21 | }); 22 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-top-left-radius/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('border-top-left-radius', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.borderTopLeftRadius('10px', '10px', done); 7 | }); 8 | 9 | it('should return numbers with px', function(done) { 10 | test.borderTopLeftRadius('20', '20px', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/border-top-right-radius/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('border-top-right-radius', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.borderTopRightRadius('10px', '10px', done); 7 | }); 8 | 9 | it('should return numbers with px', function(done) { 10 | test.borderTopRightRadius('20', '20px', done); 11 | }); 12 | 13 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/box-shadow/box-shadow.js: -------------------------------------------------------------------------------- 1 | /** 2 | * boxShadow mixin 3 | */ 4 | 5 | boxShadow = function boxShadow(value) { 6 | value = value || '0'; 7 | var numRegex = /\d/gi; 8 | var numWithoutValue = /(?:\s|^)(\.?\d+\.?\d*)(?![^(]*\)|\w|%|\.)/gi; 9 | 10 | if (/^[^, ]*,/.test(value)) { 11 | value = value.replace(/(?:,)(?![^(]*\))/g, ''); 12 | } 13 | 14 | if (numRegex.test(value)) { 15 | value = value.replace(numWithoutValue, function(match) { 16 | return (match == 0) && match || match + 'px'; 17 | }); 18 | } 19 | 20 | return value; 21 | }; 22 | 23 | /** 24 | * For which browsers is this mixin specified 25 | */ 26 | 27 | boxShadow.vendors = ['webkit', 'moz']; 28 | 29 | /** 30 | * Export mixin 31 | */ 32 | 33 | module.exports = boxShadow; 34 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/box-shadow/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('box-shadow', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.boxShadow('0 1px 10px rgba(20,20,20,0.5)', '0 1px 10px rgba(20, 20, 20, 0.5)', done); 7 | }); 8 | 9 | it('should add px for numbers', function(done) { 10 | test.boxShadow('5 4 100 rgba(20,20,20,0.5)', '5px 4px 100px rgba(20, 20, 20, 0.5)', done); 11 | }); 12 | 13 | it('should add px for numbers', function(done) { 14 | test.boxShadow('5 4 100 rgba(20,20,20,0.5), inset 5 4 100 rgba(20,20,20,0.5)', '5px 4px 100px rgba(20, 20, 20, 0.5), inset 5px 4px 100px rgba(20, 20, 20, 0.5)', done); 15 | }); 16 | 17 | it('should return the same value', function(done) { 18 | test.boxShadow('0em 0.125em 0.3125em 0em rgba(0, 0, 0, 0.5)', '0em 0.125em 0.3125em 0em rgba(0, 0, 0, 0.5)', done); 19 | }); 20 | 21 | }); 22 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/box-sizing/box-sizing.js: -------------------------------------------------------------------------------- 1 | /** 2 | * BoxSizing mixin 3 | */ 4 | 5 | var boxSizing = function boxSizing(value) { 6 | value = value || 'content-box'; 7 | 8 | return value; 9 | }; 10 | 11 | /** 12 | * For which browsers is this mixin specified 13 | */ 14 | 15 | boxSizing.vendors = ['webkit', 'moz']; 16 | 17 | 18 | /** 19 | * Export mixin 20 | */ 21 | 22 | module.exports = boxSizing; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/box-sizing/box-sizing.md: -------------------------------------------------------------------------------- 1 | ### • box-sizing 2 | **Summary:** 3 | 4 | The box-sizing CSS property is used to alter the default CSS box model used to calculate widths and heights of elements. It is possible to use this property to emulate the behavior of browsers that do not correctly support the CSS box model specification. 5 | 6 | Resources: **[WebPlatform](http://docs.webplatform.org/wiki/css/properties/box-sizing)**, **[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing)** 7 | 8 | **Syntax:** 9 | 10 | Default value: content-box 11 | 12 | .box-sizing(content-box | padding-box | border-box) 13 | 14 | **Example:** 15 | 16 | div { 17 | .box-sizing(padding-box); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-box-sizing: padding-box; 23 | -moz-box-sizing: padding-box; 24 | box-sizing: padding-box; 25 | } 26 | 27 | 28 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/box-sizing/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('box-sizing', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.boxSizing('border-box', 'border-box', done); 7 | }); 8 | 9 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/brightness/brightness.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Brightness mixin 3 | */ 4 | 5 | var brightness = function brightness(value) { 6 | value = value || '1'; 7 | 8 | return value; 9 | }; 10 | 11 | /** 12 | * Result settings 13 | */ 14 | 15 | brightness.result = { 16 | property: 'filter', 17 | value: 'brightness({{ result }})', 18 | }; 19 | 20 | /** 21 | * For which browsers is this mixin specified 22 | */ 23 | 24 | brightness.vendors = ['webkit', 'moz', 'ms']; 25 | 26 | /** 27 | * Export mixin 28 | */ 29 | 30 | module.exports = brightness; -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/brightness/brightness.md: -------------------------------------------------------------------------------- 1 | ### • brightness (shorthand for filter property) 2 | **Summary:** 3 | 4 | Applies a linear multiplier to input image, making it appear more or less bright. A value of 0% will create an image that is completely black. A value of 100% leaves the input unchanged. Other values are linear multipliers on the effect. Values of an amount over 100% are allowed, providing brighter results. If the ‘amount’ parameter is missing, a value of 100% is used. 5 | 6 | Resources: **MDN** 7 | 8 | **Syntax:** 9 | 10 | Default value: 0 11 | 12 | .brightness(amount) 13 | 14 | **Example:** 15 | 16 | div { 17 | .brightness(0.5); 18 | } 19 | 20 | // Result 21 | div { 22 | -webkit-filter: brightness(0.5); 23 | -moz-filter: brightness(0.5); 24 | -ms-filter: brightness(0.5); 25 | filter: brightness(0.5); 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/brightness/test.js: -------------------------------------------------------------------------------- 1 | var assert = require('assert'); 2 | 3 | describe('brightness', function() { 4 | 5 | it('should return the same value', function(done) { 6 | test.resultProperty = 'filter'; 7 | test.brightness('.5', 'brightness(0.5)', done); 8 | }); 9 | 10 | }); -------------------------------------------------------------------------------- /slidedeck/src/assets/js/components/lesshat/mixins/calc/calc.md: -------------------------------------------------------------------------------- 1 | ### • calc 2 | **Summary:** 3 | 4 | The calc() CSS function can be used anywhere a ``, ``, ``, `