From 76b82f3a801850acc4f6ccd76fc783b49adfd7f7 Mon Sep 17 00:00:00 2001 From: mhmardani Date: Sun, 5 Feb 2017 16:31:22 +0330 Subject: [PATCH] fix some style --- .../bootstrap-material-design/.bower.json | 56 + .../vendor/bootstrap-material-design/Gemfile | 6 + .../bootstrap-material-design/Gruntfile.js | 572 + .../ISSUE_TEMPLATE.md | 17 + .../bootstrap-material-design/LICENSE.md | 30 + .../bootstrap-material-design/README.md | 353 + .../bootstrap-material-design/_config.yml | 50 + .../bootstrap-elements.html | 1981 ++++ .../bootstrap-material-design/bower.json | 45 + .../dist/css/bootstrap-material-design.css | 3426 ++++++ .../css/bootstrap-material-design.css.map | 1 + .../css/bootstrap-material-design.min.css | 2 + .../css/bootstrap-material-design.min.css.map | 1 + .../dist/css/ripples.css | 47 + .../dist/css/ripples.css.map | 1 + .../dist/css/ripples.min.css | 2 + .../dist/css/ripples.min.css.map | 1 + .../dist/js/material.js | 352 + .../dist/js/material.min.js | 2 + .../dist/js/material.min.js.map | 1 + .../dist/js/ripples.js | 324 + .../dist/js/ripples.min.js | 2 + .../dist/js/ripples.min.js.map | 1 + .../grunt/configBridge.json | 28 + .../bootstrap-material-design/index.css | 360 + .../less/_alerts.less | 24 + .../less/_buttons.less | 246 + .../less/_cards.less | 66 + .../less/_checkboxes.less | 270 + .../less/_colors.less | 362 + .../bootstrap-material-design/less/_core.less | 93 + .../less/_dialogs.less | 52 + .../less/_dividers.less | 71 + .../bootstrap-material-design/less/_form.less | 40 + .../less/_import-bs-less.less | 2 + .../less/_import-bs-sass.less | 4 + .../less/_inputs-size.less | 221 + .../less/_inputs.less | 350 + .../less/_lists.less | 102 + .../less/_mixins.less | 86 + .../less/_navbar.less | 239 + .../less/_panels.less | 21 + .../less/_plugins.less | 5 + .../less/_popups.less | 18 + .../less/_progress.less | 10 + .../less/_radios.less | 115 + .../less/_shadows.less | 82 + .../bootstrap-material-design/less/_tabs.less | 24 + .../less/_themes.less | 6 + .../less/_togglebutton.less | 83 + .../less/_typography.less | 15 + .../less/_variables.less | 172 + .../less/_welljumbo.less | 26 + .../less/bootstrap-material-design.less | 4 + .../less/plugins/_plugin-dropdownjs.less | 15 + .../less/plugins/_plugin-nouislider.less | 110 + .../less/plugins/_plugin-selectize.less | 91 + .../less/plugins/_plugin-snackbarjs.less | 32 + .../less/ripples.less | 36 + .../material-design-color-palette.jpg | Bin 0 -> 28270 bytes .../bootstrap-material-design/package.json | 73 + .../sass/_alerts.scss | 19 + .../sass/_buttons.scss | 248 + .../sass/_cards.scss | 70 + .../sass/_checkboxes.scss | 276 + .../sass/_colors-map.scss | 311 + .../sass/_colors.scss | 361 + .../bootstrap-material-design/sass/_core.scss | 95 + .../sass/_dialogs.scss | 55 + .../sass/_dividers.scss | 73 + .../bootstrap-material-design/sass/_form.scss | 43 + .../sass/_import-bs-less.scss | 4 + .../sass/_import-bs-sass.scss | 1 + .../sass/_inputs-size.scss | 223 + .../sass/_inputs.scss | 355 + .../sass/_labels.scss | 6 + .../sass/_lists.scss | 111 + .../sass/_mixins-utilities.scss | 31 + .../sass/_mixins.scss | 242 + .../sass/_navbar.scss | 212 + .../sass/_panels.scss | 23 + .../sass/_plugins.scss | 7 + .../sass/_popups.scss | 20 + .../sass/_progress.scss | 12 + .../sass/_radios.scss | 119 + .../sass/_shadows.scss | 84 + .../bootstrap-material-design/sass/_tabs.scss | 26 + .../sass/_themes.scss | 8 + .../sass/_togglebutton.scss | 88 + .../sass/_typography.scss | 17 + .../sass/_variables.scss | 174 + .../sass/_welljumbo.scss | 28 + .../sass/bootstrap-material-design.scss | 6 + .../sass/plugins/_plugin-dropdownjs.scss | 18 + .../sass/plugins/_plugin-nouislider.scss | 115 + .../sass/plugins/_plugin-selectize.scss | 95 + .../sass/plugins/_plugin-snackbarjs.scss | 34 + .../sass/ripples.scss | 40 + .../scripts/index.js | 2 + .../scripts/material.js | 352 + .../scripts/ripples.js | 324 + .../bootstrap-material-design/testcase.html | 96 + .../assets/vendor/bootstrap-sass/.bower.json | 45 + .../assets/vendor/bootstrap-sass/CHANGELOG.md | 210 + .../vendor/bootstrap-sass/CONTRIBUTING.md | 86 + public/assets/vendor/bootstrap-sass/LICENSE | 22 + public/assets/vendor/bootstrap-sass/README.md | 390 + .../glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../glyphicons-halflings-regular.svg | 288 + .../glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../assets/javascripts/bootstrap-sprockets.js | 12 + .../assets/javascripts/bootstrap.js | 2377 ++++ .../assets/javascripts/bootstrap.min.js | 7 + .../assets/javascripts/bootstrap/affix.js | 162 + .../assets/javascripts/bootstrap/alert.js | 94 + .../assets/javascripts/bootstrap/button.js | 125 + .../assets/javascripts/bootstrap/carousel.js | 237 + .../assets/javascripts/bootstrap/collapse.js | 212 + .../assets/javascripts/bootstrap/dropdown.js | 165 + .../assets/javascripts/bootstrap/modal.js | 339 + .../assets/javascripts/bootstrap/popover.js | 108 + .../assets/javascripts/bootstrap/scrollspy.js | 172 + .../assets/javascripts/bootstrap/tab.js | 155 + .../assets/javascripts/bootstrap/tooltip.js | 520 + .../javascripts/bootstrap/transition.js | 59 + .../stylesheets/_bootstrap-compass.scss | 9 + .../assets/stylesheets/_bootstrap-mincer.scss | 19 + .../stylesheets/_bootstrap-sprockets.scss | 9 + .../assets/stylesheets/_bootstrap.scss | 56 + .../assets/stylesheets/bootstrap/_alerts.scss | 73 + .../assets/stylesheets/bootstrap/_badges.scss | 68 + .../stylesheets/bootstrap/_breadcrumbs.scss | 28 + .../stylesheets/bootstrap/_button-groups.scss | 244 + .../stylesheets/bootstrap/_buttons.scss | 168 + .../stylesheets/bootstrap/_carousel.scss | 270 + .../assets/stylesheets/bootstrap/_close.scss | 36 + .../assets/stylesheets/bootstrap/_code.scss | 69 + .../bootstrap/_component-animations.scss | 37 + .../stylesheets/bootstrap/_dropdowns.scss | 216 + .../assets/stylesheets/bootstrap/_forms.scss | 617 ++ .../stylesheets/bootstrap/_glyphicons.scss | 307 + .../assets/stylesheets/bootstrap/_grid.scss | 84 + .../stylesheets/bootstrap/_input-groups.scss | 171 + .../stylesheets/bootstrap/_jumbotron.scss | 54 + .../assets/stylesheets/bootstrap/_labels.scss | 66 + .../stylesheets/bootstrap/_list-group.scss | 130 + .../assets/stylesheets/bootstrap/_media.scss | 66 + .../assets/stylesheets/bootstrap/_mixins.scss | 40 + .../assets/stylesheets/bootstrap/_modals.scss | 150 + .../assets/stylesheets/bootstrap/_navbar.scss | 662 ++ .../assets/stylesheets/bootstrap/_navs.scss | 242 + .../stylesheets/bootstrap/_normalize.scss | 424 + .../assets/stylesheets/bootstrap/_pager.scss | 54 + .../stylesheets/bootstrap/_pagination.scss | 89 + .../assets/stylesheets/bootstrap/_panels.scss | 271 + .../stylesheets/bootstrap/_popovers.scss | 131 + .../assets/stylesheets/bootstrap/_print.scss | 101 + .../stylesheets/bootstrap/_progress-bars.scss | 87 + .../bootstrap/_responsive-embed.scss | 35 + .../bootstrap/_responsive-utilities.scss | 179 + .../stylesheets/bootstrap/_scaffolding.scss | 161 + .../assets/stylesheets/bootstrap/_tables.scss | 234 + .../assets/stylesheets/bootstrap/_theme.scss | 291 + .../stylesheets/bootstrap/_thumbnails.scss | 38 + .../stylesheets/bootstrap/_tooltip.scss | 101 + .../assets/stylesheets/bootstrap/_type.scss | 298 + .../stylesheets/bootstrap/_utilities.scss | 55 + .../stylesheets/bootstrap/_variables.scss | 874 ++ .../assets/stylesheets/bootstrap/_wells.scss | 29 + .../stylesheets/bootstrap/mixins/_alerts.scss | 14 + .../bootstrap/mixins/_background-variant.scss | 12 + .../bootstrap/mixins/_border-radius.scss | 18 + .../bootstrap/mixins/_buttons.scss | 65 + .../bootstrap/mixins/_center-block.scss | 7 + .../bootstrap/mixins/_clearfix.scss | 22 + .../stylesheets/bootstrap/mixins/_forms.scss | 88 + .../bootstrap/mixins/_gradients.scss | 58 + .../bootstrap/mixins/_grid-framework.scss | 81 + .../stylesheets/bootstrap/mixins/_grid.scss | 122 + .../bootstrap/mixins/_hide-text.scss | 21 + .../stylesheets/bootstrap/mixins/_image.scss | 33 + .../stylesheets/bootstrap/mixins/_labels.scss | 12 + .../bootstrap/mixins/_list-group.scss | 32 + .../bootstrap/mixins/_nav-divider.scss | 10 + .../bootstrap/mixins/_nav-vertical-align.scss | 9 + .../bootstrap/mixins/_opacity.scss | 8 + .../bootstrap/mixins/_pagination.scss | 24 + .../stylesheets/bootstrap/mixins/_panels.scss | 24 + .../bootstrap/mixins/_progress-bar.scss | 10 + .../bootstrap/mixins/_reset-filter.scss | 8 + .../bootstrap/mixins/_reset-text.scss | 18 + .../stylesheets/bootstrap/mixins/_resize.scss | 6 + .../mixins/_responsive-visibility.scss | 21 + .../stylesheets/bootstrap/mixins/_size.scss | 10 + .../bootstrap/mixins/_tab-focus.scss | 9 + .../bootstrap/mixins/_table-row.scss | 28 + .../bootstrap/mixins/_text-emphasis.scss | 12 + .../bootstrap/mixins/_text-overflow.scss | 8 + .../bootstrap/mixins/_vendor-prefixes.scss | 222 + .../assets/vendor/bootstrap-sass/bower.json | 36 + .../vendor/bootstrap-sass/composer.json | 35 + .../vendor/bootstrap-sass/eyeglass-exports.js | 7 + .../assets/vendor/bootstrap-sass/package.json | 44 + .../assets/vendor/bootstrap-sass/sache.json | 5 + public/assets/vendor/bootstrap/.bower.json | 44 + public/assets/vendor/bootstrap/CHANGELOG.md | 5 + public/assets/vendor/bootstrap/Gemfile | 6 + public/assets/vendor/bootstrap/Gruntfile.js | 511 + .../assets/vendor/bootstrap/ISSUE_TEMPLATE.md | 22 + public/assets/vendor/bootstrap/LICENSE | 21 + public/assets/vendor/bootstrap/README.md | 142 + public/assets/vendor/bootstrap/bower.json | 34 + .../bootstrap/dist/css/bootstrap-theme.css | 587 + .../dist/css/bootstrap-theme.css.map | 1 + .../dist/css/bootstrap-theme.min.css | 6 + .../dist/css/bootstrap-theme.min.css.map | 1 + .../vendor/bootstrap/dist/css/bootstrap.css | 6757 ++++++++++++ .../bootstrap/dist/css/bootstrap.css.map | 1 + .../bootstrap/dist/css/bootstrap.min.css | 6 + .../bootstrap/dist/css/bootstrap.min.css.map | 1 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../vendor/bootstrap/dist/js/bootstrap.js | 2377 ++++ .../vendor/bootstrap/dist/js/bootstrap.min.js | 7 + public/assets/vendor/bootstrap/dist/js/npm.js | 13 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../assets/vendor/bootstrap/grunt/.jshintrc | 7 + .../bootstrap/grunt/bs-commonjs-generator.js | 30 + .../grunt/bs-glyphicons-data-generator.js | 42 + .../bootstrap/grunt/bs-lessdoc-parser.js | 237 + .../bootstrap/grunt/bs-raw-files-generator.js | 44 + .../vendor/bootstrap/grunt/change-version.js | 109 + .../vendor/bootstrap/grunt/configBridge.json | 46 + .../bootstrap/grunt/npm-shrinkwrap.json | 2679 +++++ .../vendor/bootstrap/grunt/sauce_browsers.yml | 82 + public/assets/vendor/bootstrap/js/.jscsrc | 42 + public/assets/vendor/bootstrap/js/.jshintrc | 15 + public/assets/vendor/bootstrap/js/affix.js | 162 + public/assets/vendor/bootstrap/js/alert.js | 94 + public/assets/vendor/bootstrap/js/button.js | 125 + public/assets/vendor/bootstrap/js/carousel.js | 237 + public/assets/vendor/bootstrap/js/collapse.js | 212 + public/assets/vendor/bootstrap/js/dropdown.js | 165 + public/assets/vendor/bootstrap/js/modal.js | 339 + public/assets/vendor/bootstrap/js/popover.js | 108 + .../assets/vendor/bootstrap/js/scrollspy.js | 172 + public/assets/vendor/bootstrap/js/tab.js | 155 + public/assets/vendor/bootstrap/js/tooltip.js | 520 + .../assets/vendor/bootstrap/js/transition.js | 59 + .../vendor/bootstrap/less/.csscomb.json | 304 + .../assets/vendor/bootstrap/less/.csslintrc | 19 + .../assets/vendor/bootstrap/less/alerts.less | 73 + .../assets/vendor/bootstrap/less/badges.less | 66 + .../vendor/bootstrap/less/bootstrap.less | 56 + .../vendor/bootstrap/less/breadcrumbs.less | 26 + .../vendor/bootstrap/less/button-groups.less | 244 + .../assets/vendor/bootstrap/less/buttons.less | 166 + .../vendor/bootstrap/less/carousel.less | 270 + .../assets/vendor/bootstrap/less/close.less | 34 + public/assets/vendor/bootstrap/less/code.less | 69 + .../bootstrap/less/component-animations.less | 33 + .../vendor/bootstrap/less/dropdowns.less | 216 + .../assets/vendor/bootstrap/less/forms.less | 613 + .../vendor/bootstrap/less/glyphicons.less | 305 + public/assets/vendor/bootstrap/less/grid.less | 84 + .../vendor/bootstrap/less/input-groups.less | 171 + .../vendor/bootstrap/less/jumbotron.less | 54 + .../assets/vendor/bootstrap/less/labels.less | 64 + .../vendor/bootstrap/less/list-group.less | 130 + .../assets/vendor/bootstrap/less/media.less | 66 + .../assets/vendor/bootstrap/less/mixins.less | 40 + .../vendor/bootstrap/less/mixins/alerts.less | 14 + .../less/mixins/background-variant.less | 9 + .../bootstrap/less/mixins/border-radius.less | 18 + .../vendor/bootstrap/less/mixins/buttons.less | 65 + .../bootstrap/less/mixins/center-block.less | 7 + .../bootstrap/less/mixins/clearfix.less | 22 + .../vendor/bootstrap/less/mixins/forms.less | 85 + .../bootstrap/less/mixins/gradients.less | 59 + .../bootstrap/less/mixins/grid-framework.less | 91 + .../vendor/bootstrap/less/mixins/grid.less | 122 + .../bootstrap/less/mixins/hide-text.less | 21 + .../vendor/bootstrap/less/mixins/image.less | 33 + .../vendor/bootstrap/less/mixins/labels.less | 12 + .../bootstrap/less/mixins/list-group.less | 30 + .../bootstrap/less/mixins/nav-divider.less | 10 + .../less/mixins/nav-vertical-align.less | 9 + .../vendor/bootstrap/less/mixins/opacity.less | 8 + .../bootstrap/less/mixins/pagination.less | 24 + .../vendor/bootstrap/less/mixins/panels.less | 24 + .../bootstrap/less/mixins/progress-bar.less | 10 + .../bootstrap/less/mixins/reset-filter.less | 8 + .../bootstrap/less/mixins/reset-text.less | 18 + .../vendor/bootstrap/less/mixins/resize.less | 6 + .../less/mixins/responsive-visibility.less | 15 + .../vendor/bootstrap/less/mixins/size.less | 10 + .../bootstrap/less/mixins/tab-focus.less | 9 + .../bootstrap/less/mixins/table-row.less | 28 + .../bootstrap/less/mixins/text-emphasis.less | 9 + .../bootstrap/less/mixins/text-overflow.less | 8 + .../less/mixins/vendor-prefixes.less | 227 + .../assets/vendor/bootstrap/less/modals.less | 150 + .../assets/vendor/bootstrap/less/navbar.less | 660 ++ public/assets/vendor/bootstrap/less/navs.less | 242 + .../vendor/bootstrap/less/normalize.less | 424 + .../assets/vendor/bootstrap/less/pager.less | 54 + .../vendor/bootstrap/less/pagination.less | 89 + .../assets/vendor/bootstrap/less/panels.less | 271 + .../vendor/bootstrap/less/popovers.less | 131 + .../assets/vendor/bootstrap/less/print.less | 101 + .../vendor/bootstrap/less/progress-bars.less | 87 + .../bootstrap/less/responsive-embed.less | 35 + .../bootstrap/less/responsive-utilities.less | 194 + .../vendor/bootstrap/less/scaffolding.less | 161 + .../assets/vendor/bootstrap/less/tables.less | 234 + .../assets/vendor/bootstrap/less/theme.less | 291 + .../vendor/bootstrap/less/thumbnails.less | 36 + .../assets/vendor/bootstrap/less/tooltip.less | 101 + public/assets/vendor/bootstrap/less/type.less | 302 + .../vendor/bootstrap/less/utilities.less | 55 + .../vendor/bootstrap/less/variables.less | 869 ++ .../assets/vendor/bootstrap/less/wells.less | 29 + .../assets/vendor/bootstrap/nuget/MyGet.ps1 | 8 + .../bootstrap/nuget/bootstrap.less.nuspec | 28 + .../vendor/bootstrap/nuget/bootstrap.nuspec | 28 + public/assets/vendor/bootstrap/package.js | 32 + public/assets/vendor/bootstrap/package.json | 89 + public/assets/vendor/jquery/.bower.json | 25 + public/assets/vendor/jquery/AUTHORS.txt | 278 + public/assets/vendor/jquery/LICENSE.txt | 36 + public/assets/vendor/jquery/README.md | 65 + public/assets/vendor/jquery/bower.json | 14 + public/assets/vendor/jquery/dist/jquery.js | 9814 +++++++++++++++++ .../assets/vendor/jquery/dist/jquery.min.js | 4 + .../assets/vendor/jquery/dist/jquery.min.map | 1 + .../vendor/jquery/external/sizzle/LICENSE.txt | 36 + .../jquery/external/sizzle/dist/sizzle.js | 2143 ++++ .../jquery/external/sizzle/dist/sizzle.min.js | 3 + .../external/sizzle/dist/sizzle.min.map | 1 + public/assets/vendor/jquery/src/.jshintrc | 29 + public/assets/vendor/jquery/src/ajax.js | 845 ++ public/assets/vendor/jquery/src/ajax/jsonp.js | 100 + public/assets/vendor/jquery/src/ajax/load.js | 83 + .../vendor/jquery/src/ajax/parseJSON.js | 13 + .../assets/vendor/jquery/src/ajax/parseXML.js | 27 + .../assets/vendor/jquery/src/ajax/script.js | 68 + .../vendor/jquery/src/ajax/var/location.js | 3 + .../vendor/jquery/src/ajax/var/nonce.js | 5 + .../vendor/jquery/src/ajax/var/rquery.js | 3 + public/assets/vendor/jquery/src/ajax/xhr.js | 167 + public/assets/vendor/jquery/src/attributes.js | 11 + .../vendor/jquery/src/attributes/attr.js | 142 + .../vendor/jquery/src/attributes/classes.js | 177 + .../vendor/jquery/src/attributes/prop.js | 125 + .../vendor/jquery/src/attributes/support.js | 36 + .../vendor/jquery/src/attributes/val.js | 177 + public/assets/vendor/jquery/src/callbacks.js | 232 + public/assets/vendor/jquery/src/core.js | 494 + .../assets/vendor/jquery/src/core/access.js | 65 + public/assets/vendor/jquery/src/core/init.js | 134 + .../vendor/jquery/src/core/parseHTML.js | 41 + public/assets/vendor/jquery/src/core/ready.js | 103 + .../vendor/jquery/src/core/var/rsingleTag.js | 5 + public/assets/vendor/jquery/src/css.js | 502 + .../vendor/jquery/src/css/addGetHookIf.js | 24 + .../assets/vendor/jquery/src/css/adjustCSS.js | 65 + public/assets/vendor/jquery/src/css/curCSS.js | 60 + .../vendor/jquery/src/css/defaultDisplay.js | 72 + .../jquery/src/css/hiddenVisibleSelectors.js | 18 + .../assets/vendor/jquery/src/css/showHide.js | 48 + .../assets/vendor/jquery/src/css/support.js | 121 + .../vendor/jquery/src/css/var/cssExpand.js | 3 + .../vendor/jquery/src/css/var/getStyles.js | 15 + .../vendor/jquery/src/css/var/isHidden.js | 16 + .../vendor/jquery/src/css/var/rmargin.js | 3 + .../vendor/jquery/src/css/var/rnumnonpx.js | 5 + .../assets/vendor/jquery/src/css/var/swap.js | 24 + public/assets/vendor/jquery/src/data.js | 187 + public/assets/vendor/jquery/src/data/Data.js | 200 + .../vendor/jquery/src/data/var/acceptData.js | 18 + .../vendor/jquery/src/data/var/dataPriv.js | 5 + .../vendor/jquery/src/data/var/dataUser.js | 5 + public/assets/vendor/jquery/src/deferred.js | 158 + public/assets/vendor/jquery/src/deprecated.js | 32 + public/assets/vendor/jquery/src/dimensions.js | 54 + public/assets/vendor/jquery/src/effects.js | 629 ++ .../assets/vendor/jquery/src/effects/Tween.js | 121 + .../jquery/src/effects/animatedSelector.js | 13 + public/assets/vendor/jquery/src/event.js | 711 ++ public/assets/vendor/jquery/src/event/ajax.js | 20 + .../assets/vendor/jquery/src/event/alias.js | 27 + .../assets/vendor/jquery/src/event/focusin.js | 53 + .../assets/vendor/jquery/src/event/support.js | 9 + .../assets/vendor/jquery/src/event/trigger.js | 183 + .../assets/vendor/jquery/src/exports/amd.js | 24 + .../vendor/jquery/src/exports/global.js | 26 + public/assets/vendor/jquery/src/intro.js | 44 + public/assets/vendor/jquery/src/jquery.js | 37 + .../assets/vendor/jquery/src/manipulation.js | 481 + .../jquery/src/manipulation/_evalUrl.js | 20 + .../jquery/src/manipulation/buildFragment.js | 102 + .../vendor/jquery/src/manipulation/getAll.js | 21 + .../jquery/src/manipulation/setGlobalEval.js | 20 + .../vendor/jquery/src/manipulation/support.js | 33 + .../src/manipulation/var/rcheckableType.js | 3 + .../src/manipulation/var/rscriptType.js | 3 + .../jquery/src/manipulation/var/rtagName.js | 3 + .../vendor/jquery/src/manipulation/wrapMap.js | 27 + public/assets/vendor/jquery/src/offset.js | 218 + public/assets/vendor/jquery/src/outro.js | 2 + public/assets/vendor/jquery/src/queue.js | 143 + .../assets/vendor/jquery/src/queue/delay.js | 22 + .../vendor/jquery/src/selector-native.js | 211 + .../vendor/jquery/src/selector-sizzle.js | 14 + public/assets/vendor/jquery/src/selector.js | 1 + public/assets/vendor/jquery/src/serialize.js | 125 + public/assets/vendor/jquery/src/traversing.js | 175 + .../jquery/src/traversing/findFilter.js | 100 + .../vendor/jquery/src/traversing/var/dir.js | 20 + .../src/traversing/var/rneedsContext.js | 6 + .../jquery/src/traversing/var/siblings.js | 15 + public/assets/vendor/jquery/src/var/arr.js | 3 + .../vendor/jquery/src/var/class2type.js | 5 + public/assets/vendor/jquery/src/var/concat.js | 5 + .../assets/vendor/jquery/src/var/document.js | 3 + .../vendor/jquery/src/var/documentElement.js | 5 + public/assets/vendor/jquery/src/var/hasOwn.js | 5 + .../assets/vendor/jquery/src/var/indexOf.js | 5 + public/assets/vendor/jquery/src/var/pnum.js | 3 + public/assets/vendor/jquery/src/var/push.js | 5 + .../assets/vendor/jquery/src/var/rcssNum.js | 7 + .../assets/vendor/jquery/src/var/rnotwhite.js | 3 + public/assets/vendor/jquery/src/var/slice.js | 5 + .../assets/vendor/jquery/src/var/support.js | 5 + .../assets/vendor/jquery/src/var/toString.js | 5 + public/assets/vendor/jquery/src/wrap.js | 79 + sass/_checkboxes.scss | 2 +- 446 files changed, 76078 insertions(+), 1 deletion(-) create mode 100644 public/assets/vendor/bootstrap-material-design/.bower.json create mode 100644 public/assets/vendor/bootstrap-material-design/Gemfile create mode 100644 public/assets/vendor/bootstrap-material-design/Gruntfile.js create mode 100644 public/assets/vendor/bootstrap-material-design/ISSUE_TEMPLATE.md create mode 100644 public/assets/vendor/bootstrap-material-design/LICENSE.md create mode 100644 public/assets/vendor/bootstrap-material-design/README.md create mode 100644 public/assets/vendor/bootstrap-material-design/_config.yml create mode 100644 public/assets/vendor/bootstrap-material-design/bootstrap-elements.html create mode 100644 public/assets/vendor/bootstrap-material-design/bower.json create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css.map create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css.map create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/ripples.css create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/ripples.css.map create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css create mode 100644 public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css.map create mode 100644 public/assets/vendor/bootstrap-material-design/dist/js/material.js create mode 100644 public/assets/vendor/bootstrap-material-design/dist/js/material.min.js create mode 100644 public/assets/vendor/bootstrap-material-design/dist/js/material.min.js.map create mode 100644 public/assets/vendor/bootstrap-material-design/dist/js/ripples.js create mode 100644 public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js create mode 100644 public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js.map create mode 100644 public/assets/vendor/bootstrap-material-design/grunt/configBridge.json create mode 100644 public/assets/vendor/bootstrap-material-design/index.css create mode 100755 public/assets/vendor/bootstrap-material-design/less/_alerts.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_buttons.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_cards.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_checkboxes.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_colors.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_core.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_dialogs.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_dividers.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_form.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_import-bs-less.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_import-bs-sass.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_inputs-size.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_inputs.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_lists.less create mode 100755 public/assets/vendor/bootstrap-material-design/less/_mixins.less create mode 100755 public/assets/vendor/bootstrap-material-design/less/_navbar.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_panels.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_plugins.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_popups.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_progress.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_radios.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_shadows.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_tabs.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_themes.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_togglebutton.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_typography.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_variables.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/_welljumbo.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/bootstrap-material-design.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/plugins/_plugin-dropdownjs.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/plugins/_plugin-nouislider.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/plugins/_plugin-selectize.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/plugins/_plugin-snackbarjs.less create mode 100644 public/assets/vendor/bootstrap-material-design/less/ripples.less create mode 100644 public/assets/vendor/bootstrap-material-design/material-design-color-palette.jpg create mode 100644 public/assets/vendor/bootstrap-material-design/package.json create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_alerts.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_buttons.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_cards.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_checkboxes.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_colors-map.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_colors.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_core.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_dialogs.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_dividers.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_form.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_import-bs-less.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_import-bs-sass.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_inputs-size.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_inputs.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_labels.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_lists.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_mixins-utilities.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_mixins.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_navbar.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_panels.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_plugins.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_popups.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_progress.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_radios.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_shadows.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_tabs.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_themes.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_togglebutton.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_typography.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_variables.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/_welljumbo.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/bootstrap-material-design.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-dropdownjs.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-nouislider.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-selectize.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-snackbarjs.scss create mode 100644 public/assets/vendor/bootstrap-material-design/sass/ripples.scss create mode 100644 public/assets/vendor/bootstrap-material-design/scripts/index.js create mode 100644 public/assets/vendor/bootstrap-material-design/scripts/material.js create mode 100644 public/assets/vendor/bootstrap-material-design/scripts/ripples.js create mode 100644 public/assets/vendor/bootstrap-material-design/testcase.html create mode 100644 public/assets/vendor/bootstrap-sass/.bower.json create mode 100644 public/assets/vendor/bootstrap-sass/CHANGELOG.md create mode 100644 public/assets/vendor/bootstrap-sass/CONTRIBUTING.md create mode 100644 public/assets/vendor/bootstrap-sass/LICENSE create mode 100644 public/assets/vendor/bootstrap-sass/README.md create mode 100644 public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot create mode 100644 public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.svg create mode 100644 public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf create mode 100644 public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff create mode 100644 public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.min.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/affix.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/alert.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/button.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/carousel.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/collapse.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/modal.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/popover.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tab.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/transition.js create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_glyphicons.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_grid.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_input-groups.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_jumbotron.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_labels.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_list-group.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_media.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_mixins.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_modals.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_navbar.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_navs.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_normalize.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_pager.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_pagination.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_panels.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_popovers.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_print.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_progress-bars.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-embed.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-utilities.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_scaffolding.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_tables.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_theme.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_thumbnails.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_tooltip.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_type.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_utilities.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_gradients.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid-framework.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_hide-text.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_image.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_labels.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_list-group.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-divider.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_opacity.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_pagination.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_panels.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_progress-bar.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-filter.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-text.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_resize.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_size.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_tab-focus.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_table-row.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-overflow.scss create mode 100644 public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss create mode 100644 public/assets/vendor/bootstrap-sass/bower.json create mode 100644 public/assets/vendor/bootstrap-sass/composer.json create mode 100644 public/assets/vendor/bootstrap-sass/eyeglass-exports.js create mode 100644 public/assets/vendor/bootstrap-sass/package.json create mode 100644 public/assets/vendor/bootstrap-sass/sache.json create mode 100644 public/assets/vendor/bootstrap/.bower.json create mode 100644 public/assets/vendor/bootstrap/CHANGELOG.md create mode 100644 public/assets/vendor/bootstrap/Gemfile create mode 100644 public/assets/vendor/bootstrap/Gruntfile.js create mode 100644 public/assets/vendor/bootstrap/ISSUE_TEMPLATE.md create mode 100644 public/assets/vendor/bootstrap/LICENSE create mode 100644 public/assets/vendor/bootstrap/README.md create mode 100644 public/assets/vendor/bootstrap/bower.json create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap-theme.css create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap-theme.css.map create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap-theme.min.css create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap-theme.min.css.map create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap.css create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap.css.map create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap.min.css create mode 100644 public/assets/vendor/bootstrap/dist/css/bootstrap.min.css.map create mode 100644 public/assets/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.eot create mode 100644 public/assets/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.svg create mode 100644 public/assets/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/assets/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff create mode 100644 public/assets/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 create mode 100644 public/assets/vendor/bootstrap/dist/js/bootstrap.js create mode 100644 public/assets/vendor/bootstrap/dist/js/bootstrap.min.js create mode 100644 public/assets/vendor/bootstrap/dist/js/npm.js create mode 100644 public/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 public/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 public/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 public/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 public/assets/vendor/bootstrap/grunt/.jshintrc create mode 100644 public/assets/vendor/bootstrap/grunt/bs-commonjs-generator.js create mode 100644 public/assets/vendor/bootstrap/grunt/bs-glyphicons-data-generator.js create mode 100644 public/assets/vendor/bootstrap/grunt/bs-lessdoc-parser.js create mode 100644 public/assets/vendor/bootstrap/grunt/bs-raw-files-generator.js create mode 100755 public/assets/vendor/bootstrap/grunt/change-version.js create mode 100644 public/assets/vendor/bootstrap/grunt/configBridge.json create mode 100644 public/assets/vendor/bootstrap/grunt/npm-shrinkwrap.json create mode 100644 public/assets/vendor/bootstrap/grunt/sauce_browsers.yml create mode 100644 public/assets/vendor/bootstrap/js/.jscsrc create mode 100644 public/assets/vendor/bootstrap/js/.jshintrc create mode 100644 public/assets/vendor/bootstrap/js/affix.js create mode 100644 public/assets/vendor/bootstrap/js/alert.js create mode 100644 public/assets/vendor/bootstrap/js/button.js create mode 100644 public/assets/vendor/bootstrap/js/carousel.js create mode 100644 public/assets/vendor/bootstrap/js/collapse.js create mode 100644 public/assets/vendor/bootstrap/js/dropdown.js create mode 100644 public/assets/vendor/bootstrap/js/modal.js create mode 100644 public/assets/vendor/bootstrap/js/popover.js create mode 100644 public/assets/vendor/bootstrap/js/scrollspy.js create mode 100644 public/assets/vendor/bootstrap/js/tab.js create mode 100644 public/assets/vendor/bootstrap/js/tooltip.js create mode 100644 public/assets/vendor/bootstrap/js/transition.js create mode 100644 public/assets/vendor/bootstrap/less/.csscomb.json create mode 100644 public/assets/vendor/bootstrap/less/.csslintrc create mode 100644 public/assets/vendor/bootstrap/less/alerts.less create mode 100644 public/assets/vendor/bootstrap/less/badges.less create mode 100644 public/assets/vendor/bootstrap/less/bootstrap.less create mode 100644 public/assets/vendor/bootstrap/less/breadcrumbs.less create mode 100644 public/assets/vendor/bootstrap/less/button-groups.less create mode 100644 public/assets/vendor/bootstrap/less/buttons.less create mode 100644 public/assets/vendor/bootstrap/less/carousel.less create mode 100644 public/assets/vendor/bootstrap/less/close.less create mode 100644 public/assets/vendor/bootstrap/less/code.less create mode 100644 public/assets/vendor/bootstrap/less/component-animations.less create mode 100644 public/assets/vendor/bootstrap/less/dropdowns.less create mode 100644 public/assets/vendor/bootstrap/less/forms.less create mode 100644 public/assets/vendor/bootstrap/less/glyphicons.less create mode 100644 public/assets/vendor/bootstrap/less/grid.less create mode 100644 public/assets/vendor/bootstrap/less/input-groups.less create mode 100644 public/assets/vendor/bootstrap/less/jumbotron.less create mode 100644 public/assets/vendor/bootstrap/less/labels.less create mode 100644 public/assets/vendor/bootstrap/less/list-group.less create mode 100644 public/assets/vendor/bootstrap/less/media.less create mode 100644 public/assets/vendor/bootstrap/less/mixins.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/alerts.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/background-variant.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/border-radius.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/buttons.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/center-block.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/clearfix.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/forms.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/gradients.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/grid-framework.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/grid.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/hide-text.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/image.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/labels.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/list-group.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/nav-divider.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/nav-vertical-align.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/opacity.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/pagination.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/panels.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/progress-bar.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/reset-filter.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/reset-text.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/resize.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/responsive-visibility.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/size.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/tab-focus.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/table-row.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/text-emphasis.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/text-overflow.less create mode 100644 public/assets/vendor/bootstrap/less/mixins/vendor-prefixes.less create mode 100644 public/assets/vendor/bootstrap/less/modals.less create mode 100644 public/assets/vendor/bootstrap/less/navbar.less create mode 100644 public/assets/vendor/bootstrap/less/navs.less create mode 100644 public/assets/vendor/bootstrap/less/normalize.less create mode 100644 public/assets/vendor/bootstrap/less/pager.less create mode 100644 public/assets/vendor/bootstrap/less/pagination.less create mode 100644 public/assets/vendor/bootstrap/less/panels.less create mode 100644 public/assets/vendor/bootstrap/less/popovers.less create mode 100644 public/assets/vendor/bootstrap/less/print.less create mode 100644 public/assets/vendor/bootstrap/less/progress-bars.less create mode 100644 public/assets/vendor/bootstrap/less/responsive-embed.less create mode 100644 public/assets/vendor/bootstrap/less/responsive-utilities.less create mode 100644 public/assets/vendor/bootstrap/less/scaffolding.less create mode 100644 public/assets/vendor/bootstrap/less/tables.less create mode 100644 public/assets/vendor/bootstrap/less/theme.less create mode 100644 public/assets/vendor/bootstrap/less/thumbnails.less create mode 100644 public/assets/vendor/bootstrap/less/tooltip.less create mode 100644 public/assets/vendor/bootstrap/less/type.less create mode 100644 public/assets/vendor/bootstrap/less/utilities.less create mode 100644 public/assets/vendor/bootstrap/less/variables.less create mode 100644 public/assets/vendor/bootstrap/less/wells.less create mode 100644 public/assets/vendor/bootstrap/nuget/MyGet.ps1 create mode 100644 public/assets/vendor/bootstrap/nuget/bootstrap.less.nuspec create mode 100644 public/assets/vendor/bootstrap/nuget/bootstrap.nuspec create mode 100644 public/assets/vendor/bootstrap/package.js create mode 100644 public/assets/vendor/bootstrap/package.json create mode 100644 public/assets/vendor/jquery/.bower.json create mode 100644 public/assets/vendor/jquery/AUTHORS.txt create mode 100644 public/assets/vendor/jquery/LICENSE.txt create mode 100644 public/assets/vendor/jquery/README.md create mode 100644 public/assets/vendor/jquery/bower.json create mode 100644 public/assets/vendor/jquery/dist/jquery.js create mode 100644 public/assets/vendor/jquery/dist/jquery.min.js create mode 100644 public/assets/vendor/jquery/dist/jquery.min.map create mode 100644 public/assets/vendor/jquery/external/sizzle/LICENSE.txt create mode 100644 public/assets/vendor/jquery/external/sizzle/dist/sizzle.js create mode 100644 public/assets/vendor/jquery/external/sizzle/dist/sizzle.min.js create mode 100644 public/assets/vendor/jquery/external/sizzle/dist/sizzle.min.map create mode 100644 public/assets/vendor/jquery/src/.jshintrc create mode 100644 public/assets/vendor/jquery/src/ajax.js create mode 100644 public/assets/vendor/jquery/src/ajax/jsonp.js create mode 100644 public/assets/vendor/jquery/src/ajax/load.js create mode 100644 public/assets/vendor/jquery/src/ajax/parseJSON.js create mode 100644 public/assets/vendor/jquery/src/ajax/parseXML.js create mode 100644 public/assets/vendor/jquery/src/ajax/script.js create mode 100644 public/assets/vendor/jquery/src/ajax/var/location.js create mode 100644 public/assets/vendor/jquery/src/ajax/var/nonce.js create mode 100644 public/assets/vendor/jquery/src/ajax/var/rquery.js create mode 100644 public/assets/vendor/jquery/src/ajax/xhr.js create mode 100644 public/assets/vendor/jquery/src/attributes.js create mode 100644 public/assets/vendor/jquery/src/attributes/attr.js create mode 100644 public/assets/vendor/jquery/src/attributes/classes.js create mode 100644 public/assets/vendor/jquery/src/attributes/prop.js create mode 100644 public/assets/vendor/jquery/src/attributes/support.js create mode 100644 public/assets/vendor/jquery/src/attributes/val.js create mode 100644 public/assets/vendor/jquery/src/callbacks.js create mode 100644 public/assets/vendor/jquery/src/core.js create mode 100644 public/assets/vendor/jquery/src/core/access.js create mode 100644 public/assets/vendor/jquery/src/core/init.js create mode 100644 public/assets/vendor/jquery/src/core/parseHTML.js create mode 100644 public/assets/vendor/jquery/src/core/ready.js create mode 100644 public/assets/vendor/jquery/src/core/var/rsingleTag.js create mode 100644 public/assets/vendor/jquery/src/css.js create mode 100644 public/assets/vendor/jquery/src/css/addGetHookIf.js create mode 100644 public/assets/vendor/jquery/src/css/adjustCSS.js create mode 100644 public/assets/vendor/jquery/src/css/curCSS.js create mode 100644 public/assets/vendor/jquery/src/css/defaultDisplay.js create mode 100644 public/assets/vendor/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 public/assets/vendor/jquery/src/css/showHide.js create mode 100644 public/assets/vendor/jquery/src/css/support.js create mode 100644 public/assets/vendor/jquery/src/css/var/cssExpand.js create mode 100644 public/assets/vendor/jquery/src/css/var/getStyles.js create mode 100644 public/assets/vendor/jquery/src/css/var/isHidden.js create mode 100644 public/assets/vendor/jquery/src/css/var/rmargin.js create mode 100644 public/assets/vendor/jquery/src/css/var/rnumnonpx.js create mode 100644 public/assets/vendor/jquery/src/css/var/swap.js create mode 100644 public/assets/vendor/jquery/src/data.js create mode 100644 public/assets/vendor/jquery/src/data/Data.js create mode 100644 public/assets/vendor/jquery/src/data/var/acceptData.js create mode 100644 public/assets/vendor/jquery/src/data/var/dataPriv.js create mode 100644 public/assets/vendor/jquery/src/data/var/dataUser.js create mode 100644 public/assets/vendor/jquery/src/deferred.js create mode 100644 public/assets/vendor/jquery/src/deprecated.js create mode 100644 public/assets/vendor/jquery/src/dimensions.js create mode 100644 public/assets/vendor/jquery/src/effects.js create mode 100644 public/assets/vendor/jquery/src/effects/Tween.js create mode 100644 public/assets/vendor/jquery/src/effects/animatedSelector.js create mode 100644 public/assets/vendor/jquery/src/event.js create mode 100644 public/assets/vendor/jquery/src/event/ajax.js create mode 100644 public/assets/vendor/jquery/src/event/alias.js create mode 100644 public/assets/vendor/jquery/src/event/focusin.js create mode 100644 public/assets/vendor/jquery/src/event/support.js create mode 100644 public/assets/vendor/jquery/src/event/trigger.js create mode 100644 public/assets/vendor/jquery/src/exports/amd.js create mode 100644 public/assets/vendor/jquery/src/exports/global.js create mode 100644 public/assets/vendor/jquery/src/intro.js create mode 100644 public/assets/vendor/jquery/src/jquery.js create mode 100644 public/assets/vendor/jquery/src/manipulation.js create mode 100644 public/assets/vendor/jquery/src/manipulation/_evalUrl.js create mode 100644 public/assets/vendor/jquery/src/manipulation/buildFragment.js create mode 100644 public/assets/vendor/jquery/src/manipulation/getAll.js create mode 100644 public/assets/vendor/jquery/src/manipulation/setGlobalEval.js create mode 100644 public/assets/vendor/jquery/src/manipulation/support.js create mode 100644 public/assets/vendor/jquery/src/manipulation/var/rcheckableType.js create mode 100644 public/assets/vendor/jquery/src/manipulation/var/rscriptType.js create mode 100644 public/assets/vendor/jquery/src/manipulation/var/rtagName.js create mode 100644 public/assets/vendor/jquery/src/manipulation/wrapMap.js create mode 100644 public/assets/vendor/jquery/src/offset.js create mode 100644 public/assets/vendor/jquery/src/outro.js create mode 100644 public/assets/vendor/jquery/src/queue.js create mode 100644 public/assets/vendor/jquery/src/queue/delay.js create mode 100644 public/assets/vendor/jquery/src/selector-native.js create mode 100644 public/assets/vendor/jquery/src/selector-sizzle.js create mode 100644 public/assets/vendor/jquery/src/selector.js create mode 100644 public/assets/vendor/jquery/src/serialize.js create mode 100644 public/assets/vendor/jquery/src/traversing.js create mode 100644 public/assets/vendor/jquery/src/traversing/findFilter.js create mode 100644 public/assets/vendor/jquery/src/traversing/var/dir.js create mode 100644 public/assets/vendor/jquery/src/traversing/var/rneedsContext.js create mode 100644 public/assets/vendor/jquery/src/traversing/var/siblings.js create mode 100644 public/assets/vendor/jquery/src/var/arr.js create mode 100644 public/assets/vendor/jquery/src/var/class2type.js create mode 100644 public/assets/vendor/jquery/src/var/concat.js create mode 100644 public/assets/vendor/jquery/src/var/document.js create mode 100644 public/assets/vendor/jquery/src/var/documentElement.js create mode 100644 public/assets/vendor/jquery/src/var/hasOwn.js create mode 100644 public/assets/vendor/jquery/src/var/indexOf.js create mode 100644 public/assets/vendor/jquery/src/var/pnum.js create mode 100644 public/assets/vendor/jquery/src/var/push.js create mode 100644 public/assets/vendor/jquery/src/var/rcssNum.js create mode 100644 public/assets/vendor/jquery/src/var/rnotwhite.js create mode 100644 public/assets/vendor/jquery/src/var/slice.js create mode 100644 public/assets/vendor/jquery/src/var/support.js create mode 100644 public/assets/vendor/jquery/src/var/toString.js create mode 100644 public/assets/vendor/jquery/src/wrap.js diff --git a/public/assets/vendor/bootstrap-material-design/.bower.json b/public/assets/vendor/bootstrap-material-design/.bower.json new file mode 100644 index 00000000..b7e3c4f6 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/.bower.json @@ -0,0 +1,56 @@ +{ + "name": "bootstrap-material-design", + "homepage": "http://fezvrasta.github.io/bootstrap-material-design", + "authors": [ + "Federico Zivolo " + ], + "description": "Material Design theme for Bootstrap 3", + "main": [ + "dist/css/bootstrap-material-design.css", + "dist/js/material.js", + "dist/css/ripples.css", + "dist/js/ripples.js" + ], + "ignore": [ + "test", + "screenshots", + "demo", + ".editorconfig", + ".gitignore", + ".jshintrc", + ".travis.yml", + "CONTRIBUTING.md", + "Gruntfile.json", + "index.html", + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "keywords": [ + "material", + "design", + "bootstrap", + "theme", + "google", + "android" + ], + "license": "https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md", + "dependencies": { + "jquery": "^2.2", + "bootstrap": "~3.3.6", + "bootstrap-sass": "~3.3.6" + }, + "version": "0.5.10", + "_release": "0.5.10", + "_resolution": { + "type": "version", + "tag": "v0.5.10", + "commit": "85d8f025c4386bd5368b448b7f1437b4436ebf07" + }, + "_source": "https://github.com/mhmardani/bootstrap-material-design.git", + "_target": "v0.5.10", + "_originalSource": "https://github.com/mhmardani/bootstrap-material-design.git", + "_direct": true +} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/Gemfile b/public/assets/vendor/bootstrap-material-design/Gemfile new file mode 100644 index 00000000..a3e37be2 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' + +gem 'sass' +# gem 'jekyll' +# gem 'jekyll-less' +gem 'therubyracer' diff --git a/public/assets/vendor/bootstrap-material-design/Gruntfile.js b/public/assets/vendor/bootstrap-material-design/Gruntfile.js new file mode 100644 index 00000000..5f3c8c68 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/Gruntfile.js @@ -0,0 +1,572 @@ +module.exports = function (grunt) { + "use strict"; + + require("load-grunt-tasks")(grunt); + var configBridge = grunt.file.readJSON('./grunt/configBridge.json', {encoding: 'utf8'}); + + grunt.initConfig({ + + pkg: grunt.file.readJSON('package.json'), + jqueryCheck: configBridge.config.jqueryCheck.join('\n'), + jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'), + + + // Task configuration. + clean: { + dist: 'dist' + }, + + htmlmin: { + dist: { + options: { + collapseWhitespace: true, + conservativeCollapse: true, + minifyCSS: true, + minifyJS: true, + removeAttributeQuotes: true, + removeComments: true + }, + expand: true, + cwd: '_gh_pages', + dest: '_gh_pages', + src: [ + '**/*.html', + '!examples/**/*.html' + ] + } + }, + + htmllint: { + //options: { + // stoponerror: false, + // relaxerror: [] + //}, + //files: ['index.html', 'bootstrap-elements.html'] + all: { + options: { + ignore: '“&” did not start a character reference. (“&” probably should have been escaped as “&”.)' + }, + src: ["*.html"] + } + }, + + + // Make sure we are structurally correct for bootstrap + bootlint: { + options: { + stoponerror: false, + relaxerror: [] + }, + files: ['index.html', 'bootstrap-elements.html'] + }, + + // Convert from less to sass + lessToSass: { + convert: { + files: [{ + expand: true, + cwd: "less", + src: ["**/*.less", "!_mixins.less", "!_import-bs*"], + ext: ".scss", + dest: "sass" + }], + options: { + replacements: [ + + // convert bootstrap imports + { // https://regex101.com/r/bM6cP0/2 + pattern: /bower_components\/(bootstrap\/less\/)/gi, + replacement: "bower_components\/bootstrap-sass\/assets\/stylesheets\/bootstrap\/", + order: 2 + }, + + // convert conditional when not + { // https://regex101.com/r/cX6uF4/1 + pattern: /& when not \(isstring\(\$parent\)\)/gi, + replacement: "@if not $parent", + order: 2 + }, + + // convert conditional when + { // https://regex101.com/r/gH0jP0/2 + pattern: /& when \(isstring\(\$parent\)\)/gi, + replacement: "@else", + order: 2 + }, + + // convert conditional when + { // https://regex101.com/r/dL1lI8/2 + pattern: /& when /gi, + replacement: "@if ", + order: 2 + }, + + // convert all shadow mixins + { // https://regex101.com/r/sJ2lH4/1 + pattern: /.shadow-z-(\d+)((?:-hover)?) {/gi, + replacement: "@mixin shadow-z-$1$2 {", + order: 2 + }, + // bad conversions of .shadow-z-* + { // https://regex101.com/r/pV0yB0/3 + pattern: /\.shadow-z-(\d+)((?:-hover)?)(?:\(\))?;/gi, + replacement: "@include shadow-z-$1$2;", + order: 2 + }, + + // bad conversions to @include instead of @extend + { + pattern: /@include (foo1|foo2)\(\);/gi, + replacement: "@extend .$1;", + order: 2 + }, + + // hack - (no conditional replacements) + { // https://regex101.com/r/pV0yB0/2 + pattern: /@extend @extend/gi, + replacement: "@extend", + order: 10 + }, + + // button variations mixin replacement(s) + { // https://regex101.com/r/qD9qB8/4 + pattern: /.generic-variations\(unquote\(".btn", ~("([^"]+)?")\), (\$[\s\S]+?(?!\r|\n)), {$\n[\s\S]+}\);$\n/mg, + replacement: "@include button-variations(unquote(\".btn\"), $1, $3);\n", + order: 20 + }, + + //// background-color generic-variations + //{ // Multi-line replacement - https://regex101.com/r/cW6pH8/2 + // pattern: /.generic-variations\(unquote\(("[^"]+")\), (\$[\s\S]+?(?!\r|\n)), {$\n[\s\S]+?(?!\r|\n)background-color[\s\S]+?(?!\r|\n)(\(\d+\/\d+\))[\s\S]+?(?!\r|\n)}\);$\n/mg, + // replacement: "@include bg-color-variations(unquote($1), $2, $3);\n", + // order: 21 + //}, + + //// bg-box-shadow generic-variations + //{ // Multi-line replacement - https://regex101.com/r/jW8kR1/1 + // pattern: /.generic-variations\(unquote\(("[^"]+")\), (\$[\s\S]+?(?!\r|\n)), {$\n[\s\S]+?(?!\r|\n)box-shadow[\s\S]+?(?!\r|\n)[\s\S]+?(?!\r|\n)}\);$\n/mg, + // replacement: "@include bg-box-shadow-variations(unquote($1), $2);\n", + // order: 22 + //}, + + //// bg-img generic-variations + //{ // Multi-line replacement - https://regex101.com/r/aP2hH2/1 + // pattern: /.generic-variations\(unquote\(("[^"]+")\), (\$[\s\S]+?(?!\r|\n)), {$\n[\s\S]+?(?!\r|\n)background-image[\s\S]+?(?!\r|\n)[\s\S]+?(?!\r|\n)}\);$\n/mg, + // replacement: "@include bg-img-variations(unquote($1), $2);\n", + // order: 23 + //}, + + // material-placeholder + { // Multi-line replacement - https://regex101.com/r/eS2vQ3/2 + pattern: /.material-placeholder\({$\n([\s\S]+?)}\);$\n/mg, + replacement: "@include material-placeholder {\n$1\n}\n", + order: 24 + }, + + // navbar generic-variations + { // Multi-line replacement - https://regex101.com/r/lX1hH1/4 + pattern: /.generic-variations\(unquote\((".navbar"), ~("([^"]+)?")\), (\$[\s\S]+?(?!\r|\n)), {$\n[\s\S]+?(?!\r|\n)[\s\S]+?(?!\r|\n)[\s\S]+?(?!\r|\n)}\);$/mg, + replacement: "@include navbar-variations(unquote($1), unquote($2), $4);\n", + order: 25 + }, + + // fix calc references + { // https://regex101.com/r/aZ8iI5/1 + pattern: /calc\(unquote\("([^"]+)"\)\)/gi, + replacement: "calc($1)", + order: 100 + }, + + // fix unquote("", ~"") + { // https://regex101.com/r/vX4nO9/6 + pattern: /\(unquote\(("([^"]+)?"), ~("([^"]+)?")\),/gi, + replacement: "(unquote($1), unquote($3),", + order: 101 + }, + + // alert generic-variations (convert this one last - very broad search) + { // Multi-line replacement - https://regex101.com/r/jB1uL1/3 + pattern: /.generic-variations\(unquote\(".alert"\), unquote\(("([^"]+)?")\), (\$[\s\S]+?(?!\r|\n)), {$\n[\s\S]+}\);$\n/mg, + replacement: "@include alert-variations(unquote(\".alert\"), unquote($1), $3);\n", + order: 250 // very broad search, do this last + }, + + // auto generated notice + { // Multi-line replacement - https://regex101.com/r/aR2kT5/1 + pattern: /([\s\S]+)/mg, + replacement: "\/\/ This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten.\n\n$1", + order: 1000 // very broad search, do this last + } + ] + } + } + }, + + // Test compile sass + sass: { + compile: { + options:{ + loadPath: "bower_components/bootstrap-sass/assets/stylesheets", + }, + files: [{ + expand: true, + cwd: "sass", + src: ["bootstrap-material-design.scss", "ripples.scss"], + dest: "dist/sassc", // added to gitignore, only used for local testing + ext: ".css" + }] + } + }, + + // Compile less to .css + // Compile less to .min.css + // Create source maps of both + less: { + material: { + options: { + paths: ["less"], + sourceMap: true, + sourceMapRootpath: "/", + sourceMapFilename: "dist/css/bootstrap-material-design.css.map", + sourceMapURL: "bootstrap-material-design.css.map" + }, + files: { + "dist/css/bootstrap-material-design.css": "less/bootstrap-material-design.less", + } + }, + ripples: { + options: { + paths: ["less"], + sourceMap: true, + sourceMapRootpath: "/", + sourceMapFilename: "dist/css/ripples.css.map", + sourceMapURL: "ripples.css.map", + outputSourceFiles: true + }, + files: { + "dist/css/ripples.css": "less/ripples.less", + } + } + }, + + // Autoprefix .css and edit its source map + // Autoprefix .min.css an edit its source map + autoprefixer: { + options: { + map: true, + browsers: configBridge.config.autoprefixerBrowsers + }, + material: { + files: { + "dist/css/bootstrap-material-design.css": "dist/css/bootstrap-material-design.css" + } + }, + ripples: { + files: { + "dist/css/ripples.css": "dist/css/ripples.css" + } + } + }, + + csslint: { + options: { + csslintrc: 'less/.csslintrc' + }, + dist: [ + 'dist/css/bootstrap-material-design.css', + 'dist/css/ripples.css', + ], + distmin: [ + 'dist/css/bootstrap-material-design.min.css', + 'dist/css/ripples.min.css', + ] + }, + + // Minify CSS and adapt maps + cssmin: { + options: { + // TODO: disable `zeroUnits` optimization once clean-css 3.2 is released + // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly + compatibility: 'ie8', + keepSpecialComments: '*', + sourceMap: true, + advanced: false + }, + material: { + src: "dist/css/bootstrap-material-design.css", + dest: "dist/css/bootstrap-material-design.min.css" + }, + ripples: { + src: "dist/css/ripples.css", + dest: "dist/css/ripples.min.css" + } + }, + + // Copy .js to dist/js/ folder + copy: { + material: { + src: "scripts/material.js", + dest: "dist/js/material.js" + }, + ripples: { + src: "scripts/ripples.js", + dest: "dist/js/ripples.js" + }, + fonts: { + expand: true, + cwd: "fonts/", + src: "**", + dest: "dist/fonts/", + flatten: true, + filter: "isFile" + } + }, + + // Compile .js to .min.js + uglify: { + options: { + sourceMap: true + }, + material: { + files: { + "dist/js/material.min.js": "dist/js/material.js" + } + }, + ripples: { + files: { + "dist/js/ripples.min.js": "dist/js/ripples.js" + } + } + }, + + connect: { + options: { + port: 8040, + hostname: "localhost", + livereload: 35729 + + }, + livereload: { + options: { + open: true, + base: "." + } + }, + test: { + options: { + port: 8041, + open: "http://localhost:8041/_SpecRunner.html", + base: "." + } + } + }, + jasmine: { + scripts: "scripts/**/*.js", + options: { + build: true, + specs: "test/*Spec.js", + helpers: "test/*Helper.js", + vendor: [ + "https://code.jquery.com/jquery-1.10.2.min.js", + "https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" + ] + } + }, + jshint: { + options: { + jshintrc: "scripts/.jshintrc", + reporter: require("jshint-stylish") + }, + grunt: { + options: { + jshintrc: 'grunt/.jshintrc' + }, + src: ['Gruntfile.js', 'package.js'] + }, + core: { + src: ["scripts/**/*.js"] + }, + test: { + src: ["test/**/*.js"] + } + }, + + jscs: { + options: { + config: 'scripts/.jscsrc' + }, + grunt: { + src: '<%= jshint.grunt.src %>' + }, + core: { + src: '<%= jshint.core.src %>' + }, + test: { + src: '<%= jshint.test.src %>' + }, + assets: { + options: { + requireCamelCaseOrUpperCaseIdentifiers: null + }, + src: '<%= jshint.assets.src %>' + } + }, + + watch: { + html: { + files: ["index.html", "bootstrap-elements.html", "testcase.html"], + tasks: ["htmllint", "bootlint"] + }, + src: { + files: '<%= jshint.core.src %>', + tasks: ['jshint:core', 'dist-js'] // add tests when working again + }, + test: { + files: ["test/**/*.js"], + tasks: ["jshint:test", "jasmine"] + }, + less: { + files: ["less/**/*.less"], + tasks: ["dist-less"] + }, + livereload: { + options: { + livereload: "<%= connect.options.livereload %>" + }, + files: [ + "index.html", + "bootstrap-elements.html", + "dist/js/**/*.js", + "dist/css/**/*.css", + "demo/**/*.{png,jpg,jpeg,gif,webp,svg}" + ] + } + }, + + compress: { + main: { + options: { + archive: 'bootstrap-material-design-<%= pkg.version %>-dist.zip', + mode: 'zip', + level: 9, + pretty: true + }, + files: [ + { + expand: true, + cwd: 'dist/', + src: ['**'], + dest: 'bootstrap-material-design-<%= pkg.version %>-dist' + } + ] + } + }, + + exec: { + "meteor-init": { + command: [ + // Make sure Meteor is installed, per https://meteor.com/install. + // The curl'ed script is safe; takes 2 minutes to read source & check. + "type meteor >/dev/null 2>&1 || { curl https://install.meteor.com/ | sh; }", + // Meteor expects package.js to be in the root directory of + // the checkout, so copy it there temporarily + "cp meteor/package.js ." + ].join(";") + }, + "meteor-cleanup": { + // remove build files and package.js + command: "rm -rf .build.* versions.json package.js" + }, + "meteor-test": { + command: "node_modules/.bin/spacejam --mongo-url mongodb:// test-packages ./" + }, + "meteor-publish": { + command: [ + "ALL_EXIT_CODE=0; for PACKAGE_FILE in meteor/package*.js", + "do cp $PACKAGE_FILE ./package.js && meteor publish $@", + "ALL_EXIT_CODE=$(echo $ALL_EXIT_CODE + $? | bc); done", + "exit $ALL_EXIT_CODE" + ].join(";") + } + } + + }); + + + require('load-grunt-tasks')(grunt, {scope: 'devDependencies'}); + //require('time-grunt')(grunt); + + grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); + grunt.registerTask("test", [ + "dist", + "jasmine:scripts:build", + "connect:test:keepalive" + ]); + + // Docs HTML validation task + grunt.registerTask('validate-html', ['htmllint']); + + grunt.loadNpmTasks("grunt-less-to-sass"); + + // CSS distribution tasks + grunt.registerTask("dist-sass", [ + "lessToSass:convert", + "sass:compile" + ]); + + grunt.registerTask('less-compile', [ + "less:material", + "less:ripples" + ]); + + grunt.registerTask("dist-less", [ + "less-compile", + + "autoprefixer:material", + "autoprefixer:ripples", + "csslint:dist", + "cssmin:material", + "cssmin:ripples", + "csslint:distmin" + ]); + + grunt.registerTask("dist-js", [ + "jshint", + "copy:material", + "uglify:material", + "copy:ripples", + "uglify:ripples" + ]); + + grunt.registerTask("dist-fonts", [ + "copy:fonts" + ]); + + // Full distribution + grunt.registerTask("dist", [ + "clean:dist", + + "htmllint", + "bootlint", + + "dist-less", + "dist-sass", + "dist-js", + "dist-fonts", + "dist-sass" + ]); + + // Default task. + grunt.registerTask('default', ['dist']); // test as well when it works? + + + grunt.registerTask("serve", [ + "htmllint", + "bootlint", + "dist-less", + "dist-js", + "dist-fonts", + "connect:livereload", + "watch" + ]); +}; diff --git a/public/assets/vendor/bootstrap-material-design/ISSUE_TEMPLATE.md b/public/assets/vendor/bootstrap-material-design/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..a5d46e24 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/ISSUE_TEMPLATE.md @@ -0,0 +1,17 @@ +**All** bug reports must contain a test case using one of **our** Codepen templates; Bug reports without one will be summarily closed: +- `v3` Codepen template - http://codepen.io/rosskevin/pen/VvRgrN +- `v4` Codepen template - http://codepen.io/rosskevin/pen/eJMMVB + +---- + +#### Test Case +(Codepen URL here) + +#### Summary +A summary of the issue and the browser/OS environment in which it occurs. If suitable, include the steps required to reproduce the bug. + +#### Expected result +Description of expectation, mockup, etc. + +#### Additional Information +Any other information you want to share that is relevant to the issue being reported. This might include the lines of code that you have identified as causing the bug, and potential solutions (and your opinions on their merits). diff --git a/public/assets/vendor/bootstrap-material-design/LICENSE.md b/public/assets/vendor/bootstrap-material-design/LICENSE.md new file mode 100644 index 00000000..4199bf6f --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/LICENSE.md @@ -0,0 +1,30 @@ +The MIT License (MIT) + +Copyright (c) 2015-2016, Federico Zivolo and contributors - https://github.com/FezVrasta/bootstrap-material-design + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## Acknowledgements: + +- Some original Bootstrap code and documentation http://getbootstrap.com +`Copyright (c) 2011-2015 Twitter, Inc` + +- Some original MDL code http://www.getmdl.io/ +`Copyright 2015 Google Inc. All Rights Reserved.` diff --git a/public/assets/vendor/bootstrap-material-design/README.md b/public/assets/vendor/bootstrap-material-design/README.md new file mode 100644 index 00000000..c2ea2ed9 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/README.md @@ -0,0 +1,353 @@ +[![banner](demo/imgs/banner.jpg)](#) + +[![build status](https://travis-ci.org/FezVrasta/bootstrap-material-design.svg?branch=master)](https://travis-ci.org/FezVrasta/bootstrap-material-design) +[![gratipay](https://img.shields.io/gratipay/FezVrasta.svg)](https://gratipay.com/FezVrasta) +[![Bower version](https://badge.fury.io/bo/bootstrap-material-design.svg)](https://github.com/FezVrasta/bootstrap-material-design) + + + +## About +Material Design for Bootstrap is a Bootstrap V3 compatible theme; it is an easy way to use the new [Material Design guidelines by Google](http://www.google.com/design/spec/material-design/introduction.html) in your Bootstrap 3 based application. +Just include the theme, after the Bootstrap CSS and include the JavaScript at the end of your document (just before the `` tag), and everything will be converted to Material Design (Paper) style. + +**NOTE**: This V3 compatible theme is still in development, it could be used on production websites but I can't guarantee compatibility with previous versions. + +Check out [the demo at this link](http://fezvrasta.github.io/bootstrap-material-design/). + +## V4 Development +The next major Bootstrap V4 compatible release of bootstrap-material-design is [in development](https://github.com/FezVrasta/bootstrap-material-design/tree/v4-dev). Check out the [documentation](http://rosskevin.github.io/bootstrap-material-design/migration/) (temporary site url) for migration, getting started, development, and examples. It has some requested implementations and more to come over V3. There are a lot of great changes in V4, but be warned, both Bootstrap V4 and our own implementation is changing daily. If you want to get involved, please do so by submitting pull requests. Before undertaking any major PR effort, please check the [milestone](https://github.com/FezVrasta/bootstrap-material-design/milestones/V4) for an existing issue. If there isn't one, please file a new issue and `cc: @rosskevin` so we can discuss and assign the work so effort is not duplicated. Thank you! + +Please prefix any issue or pull request title with `V4`. + +Major differences: +- Customized bootstrap build with variables instead of being an addon theme +- ES6 Javascript classes +- SCSS +- New scalable documentation framework that mirrors Bootstrap's own +- Documentation includes Bootstrap reference pages to display default rendering +- New build/documentation process (also mimics Bootstrap's project setup) + +## How to install + +You may install this theme using NPM or Bower: + +- NPM : `npm install bootstrap-material-design` +- Bower : `bower install bootstrap-material-design` + +If you prefer, you can include this framework in your project using our official CDN: + +- [Bootstrap Material Design on CDNJS.com](https://cdnjs.com/libraries/bootstrap-material-design) +- [Bootstrap Material Design on JSDelivr.com](http://www.jsdelivr.com/#!bootstrap.material-design) + + +## Getting started + +Add the necessary links to your `` element for fonts and stylsheets: +```html + + + + + + + + + + +``` + +### Bower + +Many use bower including compiling source for this project. Here are a couple of things to know: + + 1. When using SASS, `@import` directives cannot be interpolated. Given the variety of configurations, the typical `bower_components` directory is occasionally in a different location. Given the options, a `loadPath` was [added to the SASS compiler](https://github.com/FezVrasta/bootstrap-material-design/pull/762/files) + so that bootstrap files could be loaded without specifying the path to the `bower_components` directory. You may similarly need to add a load path to your compiler. It is still debatable if this is for the greater good, but seems like the only + way to accommodate multiple configurations. + 2. This project will install both `bootstrap` and `bootstrap-sass` in `bower_components`. Each is used for the LESS and SASS version compilation respectively. If you are only using one, feel free to [ignore the other bower dependency](http://stackoverflow.com/a/27791606/2363935). + +## Support and Contributions + +All issues filed should be reduced to a [CodePen](http://codepen.io/rosskevin/pen/VvRgrN) test case where possible. Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file. + +If you like this project you may support it by donating via Gittip, starring this repository or reporting issues. + +[![gittip](demo/imgs/gittip-button.jpg)](https://www.gratipay.com/FezVrasta/) +[![issues](demo/imgs/issues-button.jpg)](https://github.com/FezVrasta/bootstrap-material-design/issues) + + +## Development + +We are using Grunt to automate the workflow and build process. Ensure you have nodejs installed and grunt-cli installed globally. +After cloning the repo, run `npm install && bower install` to ensure you have all dev dependencies. + +### Grunt + +- `grunt build` - run the tests and compile the less/sass. See [Gruntfile.js](Gruntfile.js) for details on targets. +- `grunt test` - browser-based Jasmine unit tests. +- `grunt serve` - build and fire up an http server with live-reload and a watch for development purposes. + +### LESS & SASS + +The bootstrap 3.x compatible version (master) is developed using LESS, with an automated conversion to SASS. + +The upcoming 4.x compatible version is being actively developed using SASS on the `v4-dev` branch. + + +## Documentation + +Material Design ([spec](http://www.google.com/design/spec/material-design/introduction.html)) for Bootstrap provides +styles for bootstrap based markup to comply with Material Design concepts. + + +### Customization + +#### Colors + +There are 17 color variations (in addition to the classic 4 variations) described by the Material Design color palette: + +![palette](material-design-color-palette.jpg) + +##### Compile your customized distributable + +If you are using the static css files, you may want to use your own color variation. To do so: + +1. `npm install && bower install` (alternatively you may download the source, but using npm and bower is recommended) +2. Edit the `less/_variables.less` file and alter the color variables. You are most likely interested in altering `@brand-primary`. For a list of material design color palette variables, refer to `less/_colors.less` + + ```less + @brand-primary: @teal; + @brand-success: @green; + @brand-danger: @red; + @brand-warning: @deep-orange; + @brand-info: @light-blue; + ``` +3. Compile and test your distributable css by running `grunt serve`, this will launch your browser to the test site. Peruse and verify your color choices +4. From your application, you may now reference the compiled css files in `dist/css` + +##### Customize via less variables + +If you are referencing source from your own application's less file, you may simply customize the colors by redefining the color variables _after_ including bootstrap-material-design. See above for a description of variables. + +### Forms + +All inputs should be surrounded by a standard `.form-group`, and as such `material.js` will enforce this. The `.form-group` is +used to signal different input styles and variations. See the examples for variations. + +#### Sizing + +In general, it is preferred that sizing be altered with either `.form-group-sm` or `.form-group-lg`. Due to the interconnected +nature of inputs, labels, margins and padding, `material.js` will convert any use of `.input-sm` or `.input-lg` to +`.form-group-sm` or `.form-group-lg` in order to reduce the necessary markup/variations and get a standard sizing with +fewer side effects. + +#### Buttons + +Buttons are flat by default, without shadows. Add `.btn-raised` to a button to add a permanent shadow to it. See the [button examples](http://fezvrasta.github.io/bootstrap-material-design/bootstrap-elements.html#buttons) + +#### Inputs + +##### Labels + +The following classes should be placed on the `.form-group` to indicate the label style: + +- `.label-floating` - renders label as a placeholder, that animates above the field upon focus +- `.label-static` - renders label above the field. `input placeholder` attribute can also be used in conjunction +- `.label-placeholder` - renders a label as a placeholder only +- no label, but use of `input placeholder` attribute - same rendering as `.label-placeholder` + +##### Hints + +Upon focus, a hint can be displayed. Use any `p | span` with `.help-block`. + + +##### Examples + +```html +
+ + +

This is a hint as a p.help-block.hint

+
+ +
+ + + This is a hint as a span.help-block.hint +
+ +
+ + + This is a hint as a span.help-block.hint +
+``` + + +#### Radio, Checkbox, Toggle + +Be sure to inspect the source of the demos to find proper markup examples. Remember to use the proper HTML markup. + +Radio example: + +```html +
+ + +
+
+ +
+
+ +
+
+
+``` + + + +### Icons + +Bootstrap Material Design supports the full range of original Material Design icons! +[See the full set of material design icons at the material icons library.](https://www.google.com/design/icons/) + +It’s easy to incorporate icons into your web page. [Here’s an example](http://fezvrasta.github.io/bootstrap-material-design/bootstrap-elements.html#icon): +``` +face face +``` + +Please be sure that the fonts are properly setup, see [Getting Started](#getting-started). + +### Cards + +A card will expand to fill all of the available width (e.g. column's width). Card's height will be automatically resized to match width. + +Here is an example on how to use it: + +```html +
+ +
+ +
+ +
+ Loading image... +

Lorem Ipsum Dolor

+
+ +
+

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

+
+ +
+ + +
+ +
+ +
+``` + +Cards will adapt to column's width. The card below will have width equal to col-lg-6: + +```html +
+
+ +
+
+ ... +
+
+ +
+
+``` + +## material.js + +`material.js` is a jQuery plugin that adds some magic to your markup and allows Material Design for Bootstrap to style some elements like inputs, checkboxes, radios etc. + +### Functions + +* `$.material.init()` - shortcut to run all the following commands: +* `$.material.ripples()` will apply ripples.js to the default elements. +* `$.material.input()` will enable the MD style to the text inputs, and other kind of inputs (number, email, file etc). +* `$.material.checkbox():` will enable the MD style to the checkboxes (remember to follow the markup guidelines explained in the [Inputs section](#inputs). +* `$.material.radio():` will enable the MD style to the checkboxes (remember to follow the markup guidelines explained in the Inputs section. + +### Apply only to specific elements + +Every function expects an optional value that will be used as a selector for the function; for example, +`$.material.ripples("#selector, #foobar")` will apply Ripples.js only to `#selector` and `#foobar`. +The functions that allows an optional selector are `$.material.ripples`, `$.material.input`, `$.material.checkbox` and `$.material.radio`. + +You can even override the default values using the `$.material.options` function. The default values are: + +```javascript +$.material.options = { + "withRipples": ".btn:not(.btn-link), .card-image, .navbar a:not(.withoutripple), .nav-tabs a:not(.withoutripple), .withripple", + "inputElements": "input.form-control, textarea.form-control, select.form-control", + "checkboxElements": ".checkbox > label > input[type=checkbox]", + "radioElements": ".radio > label > input[type=radio]" +} +``` + +### Arrive.js support + +If you need to dynamically add elements to your DOM then you may need to include `Arrive.js` before `Material.js`. This will automatically apply `material.js` to every new element added via JavaScript. + +## Plugins + +Material Design for Bootstrap comes with styling support for various external scripts: + +### SnackbarJS + +Create snackbars and toasts with the [SnackbarJS plugin](https://github.com/FezVrasta/snackbarjs). The default toast style is the squared one (snackbar style). If you like to use the rounded style (toast style), please add the `toast` class to the `style` option of SnackbarJS. + +### RipplesJS + +This is part of the Material Design for Bootstrap project and is a plain JavaScript script which creates the ripple effect when clicking on the specified elements. +At the moment RipplesJS does not have its own repository but it will probably have one in the future. + +You may want to set a custom color to the ripples of a specific element, to do so write: + +```html + +``` + +### noUiSlider + +Make cross-browser sliders and get them styled with Material Design thanks to the support provided by this theme. +Read more about [noUiSlider here](http://refreshless.com/nouislider/). + +### Dropdown.js + +Finally a dropdown plugin that transforms select inputs in nice dropdowns and does not drive you crazy. +Read more about [Dropdown.js here](https://github.com/FezVrasta/dropdown.js). + +### Selectize.js + +Transform select and multi-select inputs into advanced text inputs. Material Design for BS provides a full replacement of the plugin's CSS, so don't include it. +Read more about [selectize.js](http://brianreavis.github.io/selectize.js/). + +### Bootstrap Material Datepicker + +A Material Design datepicker created to be used with Material Design for Bootstrap. +Read more about [Bootstrap Material Datepicker](https://github.com/T00rk/bootstrap-material-datepicker) + +## Compatibility + +Currently, Material Design for Bootstrap supports Google Chrome (tested v37+), Mozilla Firefox (tested 30+), and Internet Explorer (tested 11+). Mobile browsers are not currently tested but they may work. + + +## License +[MIT License](LICENSE.md) diff --git a/public/assets/vendor/bootstrap-material-design/_config.yml b/public/assets/vendor/bootstrap-material-design/_config.yml new file mode 100644 index 00000000..404a2e20 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/_config.yml @@ -0,0 +1,50 @@ +baseurl: "/bootstrap-material-design" +#url: "http://fezvrasta.github.io" +url: "http://rosskevin.github.io" + +include: + - .nojekyll + +gems: ['jekyll-less'] + +sass: + sass_dir: sass + +# Dependencies +markdown: kramdown +highlighter: rouge + +# Permalinks +permalink: pretty + +# Server +source: docs +destination: _gh_pages +host: 0.0.0.0 +port: 9001 +url: http://fezvrasta.github.io/bootstrap-material-design +encoding: UTF-8 + +# Custom vars +current_version: 0.4.1 +repo: https://github.com/fezvrasta/bootstrap-material-design +#sass_repo: https://github.com/fezvrasta/bootstrap-material-design-sass + +download: + source: https://github.com/fezvrasta/bootstrap-material-design/archive/v0.4.1.zip + dist: https://github.com/fezvrasta/bootstrap-material-design/releases/download/v0.4.1/bootstrap-0.4.1-dist.zip +# sass: https://github.com/fezvrasta/bootstrap-material-design-sass/archive/v0.4.1.tar.gz + +#blog: http://blog.getbootstrap.com +#expo: http://expo.getbootstrap.com +# +#cdn: +# # See https://www.srihash.org for info on how to generate the hashes +# css: https://maxcdn.bootstrapcdn.com/bootstrap/0.4.1/css/bootstrap.min.css +# css_hash: "sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" +# css_theme: https://maxcdn.bootstrapcdn.com/bootstrap/0.4.1/css/bootstrap-theme.min.css +# css_theme_hash: "sha384-aUGj/X2zp5rLCbBxumKTCw2Z50WgIr1vs/PFN4praOTvYXWlVyh2UtNUU0KAUhAX" +# js: https://maxcdn.bootstrapcdn.com/bootstrap/0.4.1/js/bootstrap.min.js +# js_hash: "sha512-K1qjQ+NcF2TYO/eI3M6v8EiNYZfA95pQumfvcVrTHtwQVDG+aHRqLi/ETn2uB+1JqwYqVG3LIvdm9lj6imS/pQ==" + + diff --git a/public/assets/vendor/bootstrap-material-design/bootstrap-elements.html b/public/assets/vendor/bootstrap-material-design/bootstrap-elements.html new file mode 100644 index 00000000..8ee91d34 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/bootstrap-elements.html @@ -0,0 +1,1981 @@ + + + + + + + + + Bootstrap Material + + + + + + + + + + + + + + + + + + + +Fork me on GitHub + +
+ + + + +
+
+
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+ + + +
+ + +
+
+ +

Flat buttons default - no class needed

+

+ btn only + .active + Default + Primary + Success + Info + Warning + Danger + Link +

+ + +

Raised buttons .btn-raised

+

+ .active + Default + Primary + Success + Info + Warning + Danger + Link +

+ + +

Disabled buttons

+ +
+ +

flat - default - no class needed

+

+ btn only + Default + Primary + Success + Info + Warning + Danger + Link +

+ + +

.btn-raised

+

+ Default + Primary + Success + Info + Warning + Danger + Link +

+
+ +

Button sizes

+ +

+ Large button + Default button + Small button + xs button +

+ +

Floating action buttons a.k.a fab

+

+ grade + grade + grade + grade + grade + grade +

+

.btn-group-sm .btn-fab or .btn-fab-mini

+

+ grade + grade + grade + grade + grade + grade +

+ +
+
+

Group variations with .btn-raised

+ +

Button groups

+ + + + +

btn-lg.btn-block.btn-raised

+ + + +
+

btn-group.btn-group-justified.btn-group-raised

+
+ Left + Middle + Right +
+ +

disabled btn-group.btn-group-justified.btn-group-raised

+
+
+ Left + Middle + Right +
+
+
+ +
+

btn-toolbar

+
+
+ 1 + 2 + 3 + 4 +
+ +
+ 5 + 6 + 7 +
+ + +
+
+ +
+

.btn-group-vertical

+ +
+ + +
+
+
+ + +
+
+
+ +
+
+ + + +
+
+
+

Heading 1

+ +

Heading 2

+ +

Heading 3

+

Heading 4

+
Heading 5
+
Heading 6
+ +

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

+
+
+
+
+

Example body text

+ +

Nullam quis risus eget + urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula. +

+ +

+ This line of text is meant to be treated as fine print. +

+

The following snippet of text is rendered as bold text.

+ +

The following snippet of text is rendered as italicized text.

+ +

An abbreviation of the word attribute is attr.

+
+ +
+
+
+

Emphasis classes

+ +

Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

+ +

Nullam id dolor id nibh ultricies vehicula ut id elit.

+ +

Etiam porta sem malesuada magna mollis euismod.

+ +

Donec ullamcorper nulla non metus auctor fringilla.

+ +

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

+ +

Maecenas sed diam eget risus varius blandit sit amet non magna.

+
+ +
+
+ + + +
+
+

Blockquotes

+
+
+
+
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+ Someone famous in Source Title +
+
+
+
+
+
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+ Someone famous in Source Title +
+
+
+
+
+ + +
+ +
+
+ +
+
+
+ + + +
+ +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
+
+
+
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+ Legend +
+ + +
+ +
+
+
+ + +
+ + + +
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ + +
+ + +
+
+
+ + +
+ + A longer block of help text that breaks onto a new line and may extend beyond one line. +
+
+
+ + +
+
+ +
+
+ +
+
+
+
+ + +
+ +
+
+
+ + +
+ +
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+ + +
+ +
+ + +

You should really write something here

+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ $ + + + + +
+
+ +
+
+ $ + + +

The label is inside the input-group so that it is positioned properly as a placeholder.

+ + + +
+
+ +
+ + +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ + +
+ +
+
+
+ + +
+ +
+
+ +
+
+ +
+
+ + +
+ +
+
+

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

+
+
+

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit.

+
+ + +
+
+
+ +
+ + +
+ + + + + +
+ +
+
+ + +
+
+

Pagination

+ +
+ + + + + +
+
+
+

Pager

+ +
+ + + +
+
+
+ +
+
+
+ + +
+ +
+
+ +
+
+ +
+
+

Alerts

+ +
+
+ +

Warning!

+ +

Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, + vel scelerisque nisl consectetur et.

+
+
+
+
+
+
+
+
+ + Oh snap! + Change a few things up and try submitting again. +
+
+
+
+
+
+ + Well done! You successfully read + this important alert message. +
+
+
+
+
+
+ + Heads up! This + alert needs your attention, but it's not super important. +
+
+
+
+
+
+

Labels

+ +
+ Default + Primary + Success + Warning + Danger + Info +
+
+
+

Badges

+ + +
+
+
+ + +
+ +
+
+ + +

Basic

+ +
+
+
+
+
+ +

Contextual alternatives

+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +

Striped

+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +

Animated

+ +
+
+
+
+
+ +

Stacked

+ +
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Read more about noUiSlider here.

+
+
+
+ + +
+ +
+
+ +
+
+

Jumbotron

+ +

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

+ +

Learn more

+
+
+
+
+ + +
+
+

List groups

+
+
+
+
+
+
+
+
+ folder +
+
+
15m
+

Tile with a label

+ +

Donec id elit non mi porta gravida at eget metus.

+
+
+
+
+
+ folder +
+
+
10m
+

Tile with a label

+ +

Maecenas sed diam eget risus varius blandit.

+
+
+
+
+
+ folder +
+
+
8m
+

Tile with a label

+ +

Maecenas sed diam eget risus varius blandit.

+
+
+
+
+
+
+
+
+
+
+
+ folder +
+
+
info
+

Tile with an icon

+ +

Donec id elit non mi porta gravida at eget metus.

+
+
+
+
+
+ folder +
+
+
info
+

Tile with an icon

+ +

Maecenas sed diam eget risus varius blandit.

+
+
+
+
+
+ folder +
+
+
info
+

Tile with an icon

+ +

Maecenas sed diam eget risus varius blandit.

+
+
+
+
+
+
+
+
+
+
+
+ icon +
+
+

Tile with avatar

+ +

Donec id elit non mi porta gravida at eget metus

+
+
+
+
+
+ icon +
+
+

Tile with another avatar

+ +

Maecenas sed diam eget risus varius blandit.

+
+
+
+
+
+ +
+
+

Tile with a checkbox in it

+ +

Donec id elit non mi risus varius blandit.

+
+
+
+
+
+
+
+ + +
+
+

Panels

+
+
+
+
+
+
+
+ Basic panel +
+
+ +
+
Panel heading
+
+ Panel content +
+
+ +
+
+ Panel content +
+ +
+
+
+
+
+
+
+

Panel primary

+
+
+ Panel content +
+
+ +
+
+

Panel success

+
+
+ Panel content +
+
+ +
+
+

Panel warning

+
+
+ Panel content +
+
+
+
+
+
+
+
+

Panel danger

+
+
+ Panel content +
+
+ +
+
+

Panel info

+
+
+ Panel content +
+
+
+
+
+ +
+
+

Wells

+
+
+
+
+
+
+ Look, I'm in a well! +
+
+
+
+
+
+ Look, I'm in a small well! +
+
+
+
+
+
+ Look, I'm in a large well! +
+
+
+
+
+ + +
+ +
+
+ +
+
+
+
+

Modals

+ +
+ +
+
+
+

Popovers

+ +
+ + + + + + + +
+

Tooltips

+ +
+ + + + + + + +
+
+
+
+
+

Snackbars and toasts (with SnackbarJS)

+ +

SnackbarJS is the ad-hoc developed plugin to create snackbars and toasts, read more about it on the + official page of the project.

+ +
+ + + +
+
+
+
+ + +
+
+ + + + + + + + + + + + + diff --git a/public/assets/vendor/bootstrap-material-design/bower.json b/public/assets/vendor/bootstrap-material-design/bower.json new file mode 100644 index 00000000..3cfa7989 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/bower.json @@ -0,0 +1,45 @@ +{ + "name": "bootstrap-material-design", + "homepage": "http://fezvrasta.github.io/bootstrap-material-design", + "authors": [ + "Federico Zivolo " + ], + "description": "Material Design theme for Bootstrap 3", + "main": [ + "dist/css/bootstrap-material-design.css", + "dist/js/material.js", + "dist/css/ripples.css", + "dist/js/ripples.js" + ], + "ignore": [ + "test", + "screenshots", + "demo", + ".editorconfig", + ".gitignore", + ".jshintrc", + ".travis.yml", + "CONTRIBUTING.md", + "Gruntfile.json", + "index.html", + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "keywords": [ + "material", + "design", + "bootstrap", + "theme", + "google", + "android" + ], + "license": "https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md", + "dependencies": { + "jquery": "^2.2", + "bootstrap": "~3.3.6", + "bootstrap-sass": "~3.3.6" + } +} diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css new file mode 100644 index 00000000..2fb4dd54 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css @@ -0,0 +1,3426 @@ +/* + +To get this list of colors inject jQuery at http://www.google.com/design/spec/style/color.html#color-color-palette + +Then, run this script to get the list. + + +(function() { + var colors = {}, main = {}; + $(".color-group").each(function() { + var color = $(this).find(".name").text().trim().toLowerCase().replace(" ", "-"); + colors[color] = {}; + + $(this).find(".color").not(".main-color").each(function() { + var shade = $(this).find(".shade").text().trim(), + hex = $(this).find(".hex").text().trim(); + + colors[color][shade] = hex; + }); + main[color] = color + "-" + $(this).find(".main-color .shade").text().trim(); + + }); + var LESS = ""; + $.each(colors, function(name, shades) { + LESS += "\n\n"; + $.each(shades, function(shade, hex) { + LESS += "@" + name + "-" + shade + ": " + hex + ";\n"; + }); + if (main[name]) { + LESS += "@" + name + ": " + main[name] + ";\n"; + } + }); + console.log(LESS); +})(); + + +*/ +/* ANIMATION */ +/* SHADOWS */ +/* Shadows (from mdl http://www.getmdl.io/) */ +body { + background-color: #EEEEEE; +} +body.inverse { + background: #333333; +} +body.inverse, +body.inverse .form-control { + color: rgba(255,255,255, 0.84); +} +body.inverse .modal, +body.inverse .panel-default, +body.inverse .card, +body.inverse .modal .form-control, +body.inverse .panel-default .form-control, +body.inverse .card .form-control { + background-color: initial; + color: initial; +} +body, +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4 { + font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif; + font-weight: 300; +} +h5, +h6 { + font-weight: 400; +} +a, +a:hover, +a:focus { + color: #009688; +} +a .material-icons, +a:hover .material-icons, +a:focus .material-icons { + vertical-align: middle; +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 0; +} +.form-horizontal .radio { + margin-bottom: 10px; +} +.form-horizontal label { + text-align: right; +} +.form-horizontal label.control-label { + margin: 0; +} +body .container .well.well-sm, +body .container-fluid .well.well-sm { + padding: 10px; +} +body .container .well.well-lg, +body .container-fluid .well.well-lg { + padding: 26px; +} +body .container .well, +body .container-fluid .well, +body .container .jumbotron, +body .container-fluid .jumbotron { + background-color: #fff; + padding: 19px; + margin-bottom: 20px; + -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + border-radius: 2px; + border: 0; +} +body .container .well p, +body .container-fluid .well p, +body .container .jumbotron p, +body .container-fluid .jumbotron p { + font-weight: 300; +} +body .container .well, +body .container-fluid .well, +body .container .jumbotron, +body .container-fluid .jumbotron, +body .container .well-default, +body .container-fluid .well-default, +body .container .jumbotron-default, +body .container-fluid .jumbotron-default { + background-color: #ffffff; +} +body .container .well-inverse, +body .container-fluid .well-inverse, +body .container .jumbotron-inverse, +body .container-fluid .jumbotron-inverse { + background-color: #3f51b5; +} +body .container .well-primary, +body .container-fluid .well-primary, +body .container .jumbotron-primary, +body .container-fluid .jumbotron-primary { + background-color: #009688; +} +body .container .well-success, +body .container-fluid .well-success, +body .container .jumbotron-success, +body .container-fluid .jumbotron-success { + background-color: #4caf50; +} +body .container .well-info, +body .container-fluid .well-info, +body .container .jumbotron-info, +body .container-fluid .jumbotron-info { + background-color: #03a9f4; +} +body .container .well-warning, +body .container-fluid .well-warning, +body .container .jumbotron-warning, +body .container-fluid .jumbotron-warning { + background-color: #ff5722; +} +body .container .well-danger, +body .container-fluid .well-danger, +body .container .jumbotron-danger, +body .container-fluid .jumbotron-danger { + background-color: #f44336; +} +.btn, +.input-group-btn .btn { + border: none; + border-radius: 2px; + position: relative; + padding: 8px 30px; + margin: 10px 1px; + font-size: 14px; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0; + will-change: box-shadow, transform; + -webkit-transition: -webkit-box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); + -o-transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); + transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); + outline: 0; + cursor: pointer; + text-decoration: none; + background: transparent; +} +.btn::-moz-focus-inner, +.input-group-btn .btn::-moz-focus-inner { + border: 0; +} +.btn:not(.btn-raised), +.input-group-btn .btn:not(.btn-raised) { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn:not(.btn-raised), +.input-group-btn .btn:not(.btn-raised), +.btn:not(.btn-raised).btn-default, +.input-group-btn .btn:not(.btn-raised).btn-default { + color: rgba(0,0,0, 0.87); +} +.btn:not(.btn-raised).btn-inverse, +.input-group-btn .btn:not(.btn-raised).btn-inverse { + color: #3f51b5; +} +.btn:not(.btn-raised).btn-primary, +.input-group-btn .btn:not(.btn-raised).btn-primary { + color: #009688; +} +.btn:not(.btn-raised).btn-success, +.input-group-btn .btn:not(.btn-raised).btn-success { + color: #4caf50; +} +.btn:not(.btn-raised).btn-info, +.input-group-btn .btn:not(.btn-raised).btn-info { + color: #03a9f4; +} +.btn:not(.btn-raised).btn-warning, +.input-group-btn .btn:not(.btn-raised).btn-warning { + color: #ff5722; +} +.btn:not(.btn-raised).btn-danger, +.input-group-btn .btn:not(.btn-raised).btn-danger { + color: #f44336; +} +.btn:not(.btn-raised):not(.btn-link):hover, +.input-group-btn .btn:not(.btn-raised):not(.btn-link):hover, +.btn:not(.btn-raised):not(.btn-link):focus, +.input-group-btn .btn:not(.btn-raised):not(.btn-link):focus { + background-color: rgba(153, 153, 153, 0.2); +} +.theme-dark .btn:not(.btn-raised):not(.btn-link):hover, +.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):hover, +.theme-dark .btn:not(.btn-raised):not(.btn-link):focus, +.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):focus { + background-color: rgba(204, 204, 204, 0.15); +} +.btn.btn-raised, +.input-group-btn .btn.btn-raised, +.btn.btn-fab, +.input-group-btn .btn.btn-fab, +.btn-group-raised .btn, +.btn-group-raised .input-group-btn .btn, +.btn.btn-raised.btn-default, +.input-group-btn .btn.btn-raised.btn-default, +.btn.btn-fab.btn-default, +.input-group-btn .btn.btn-fab.btn-default, +.btn-group-raised .btn.btn-default, +.btn-group-raised .input-group-btn .btn.btn-default { + background-color: #EEEEEE; + color: rgba(0,0,0, 0.87); +} +.btn.btn-raised.btn-inverse, +.input-group-btn .btn.btn-raised.btn-inverse, +.btn.btn-fab.btn-inverse, +.input-group-btn .btn.btn-fab.btn-inverse, +.btn-group-raised .btn.btn-inverse, +.btn-group-raised .input-group-btn .btn.btn-inverse { + background-color: #3f51b5; + color: #ffffff; +} +.btn.btn-raised.btn-primary, +.input-group-btn .btn.btn-raised.btn-primary, +.btn.btn-fab.btn-primary, +.input-group-btn .btn.btn-fab.btn-primary, +.btn-group-raised .btn.btn-primary, +.btn-group-raised .input-group-btn .btn.btn-primary { + background-color: #009688; + color: rgba(255,255,255, 0.84); +} +.btn.btn-raised.btn-success, +.input-group-btn .btn.btn-raised.btn-success, +.btn.btn-fab.btn-success, +.input-group-btn .btn.btn-fab.btn-success, +.btn-group-raised .btn.btn-success, +.btn-group-raised .input-group-btn .btn.btn-success { + background-color: #4caf50; + color: rgba(255,255,255, 0.84); +} +.btn.btn-raised.btn-info, +.input-group-btn .btn.btn-raised.btn-info, +.btn.btn-fab.btn-info, +.input-group-btn .btn.btn-fab.btn-info, +.btn-group-raised .btn.btn-info, +.btn-group-raised .input-group-btn .btn.btn-info { + background-color: #03a9f4; + color: rgba(255,255,255, 0.84); +} +.btn.btn-raised.btn-warning, +.input-group-btn .btn.btn-raised.btn-warning, +.btn.btn-fab.btn-warning, +.input-group-btn .btn.btn-fab.btn-warning, +.btn-group-raised .btn.btn-warning, +.btn-group-raised .input-group-btn .btn.btn-warning { + background-color: #ff5722; + color: rgba(255,255,255, 0.84); +} +.btn.btn-raised.btn-danger, +.input-group-btn .btn.btn-raised.btn-danger, +.btn.btn-fab.btn-danger, +.input-group-btn .btn.btn-fab.btn-danger, +.btn-group-raised .btn.btn-danger, +.btn-group-raised .input-group-btn .btn.btn-danger { + background-color: #f44336; + color: rgba(255,255,255, 0.84); +} +.btn.btn-raised:not(.btn-link), +.input-group-btn .btn.btn-raised:not(.btn-link), +.btn-group-raised .btn:not(.btn-link), +.btn-group-raised .input-group-btn .btn:not(.btn-link) { + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} +.btn.btn-raised:not(.btn-link):hover, +.input-group-btn .btn.btn-raised:not(.btn-link):hover, +.btn-group-raised .btn:not(.btn-link):hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover, +.btn.btn-raised:not(.btn-link):focus, +.input-group-btn .btn.btn-raised:not(.btn-link):focus, +.btn-group-raised .btn:not(.btn-link):focus, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus, +.btn.btn-raised:not(.btn-link).active, +.input-group-btn .btn.btn-raised:not(.btn-link).active, +.btn-group-raised .btn:not(.btn-link).active, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active, +.btn.btn-raised:not(.btn-link):active, +.input-group-btn .btn.btn-raised:not(.btn-link):active, +.btn-group-raised .btn:not(.btn-link):active, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active { + outline: 0; +} +.btn.btn-raised:not(.btn-link):hover, +.input-group-btn .btn.btn-raised:not(.btn-link):hover, +.btn-group-raised .btn:not(.btn-link):hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover, +.btn.btn-raised:not(.btn-link):focus, +.input-group-btn .btn.btn-raised:not(.btn-link):focus, +.btn-group-raised .btn:not(.btn-link):focus, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus, +.btn.btn-raised:not(.btn-link).active, +.input-group-btn .btn.btn-raised:not(.btn-link).active, +.btn-group-raised .btn:not(.btn-link).active, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active, +.btn.btn-raised:not(.btn-link):active, +.input-group-btn .btn.btn-raised:not(.btn-link):active, +.btn-group-raised .btn:not(.btn-link):active, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active, +.btn.btn-raised:not(.btn-link):hover.btn-default, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-default, +.btn-group-raised .btn:not(.btn-link):hover.btn-default, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-default, +.btn.btn-raised:not(.btn-link):focus.btn-default, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-default, +.btn-group-raised .btn:not(.btn-link):focus.btn-default, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-default, +.btn.btn-raised:not(.btn-link).active.btn-default, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-default, +.btn-group-raised .btn:not(.btn-link).active.btn-default, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-default, +.btn.btn-raised:not(.btn-link):active.btn-default, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-default, +.btn-group-raised .btn:not(.btn-link):active.btn-default, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-default { + background-color: #e4e4e4; +} +.btn.btn-raised:not(.btn-link):hover.btn-inverse, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-inverse, +.btn-group-raised .btn:not(.btn-link):hover.btn-inverse, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-inverse, +.btn.btn-raised:not(.btn-link):focus.btn-inverse, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-inverse, +.btn-group-raised .btn:not(.btn-link):focus.btn-inverse, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-inverse, +.btn.btn-raised:not(.btn-link).active.btn-inverse, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-inverse, +.btn-group-raised .btn:not(.btn-link).active.btn-inverse, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-inverse, +.btn.btn-raised:not(.btn-link):active.btn-inverse, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-inverse, +.btn-group-raised .btn:not(.btn-link):active.btn-inverse, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-inverse { + background-color: #495bc0; +} +.btn.btn-raised:not(.btn-link):hover.btn-primary, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-primary, +.btn-group-raised .btn:not(.btn-link):hover.btn-primary, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-primary, +.btn.btn-raised:not(.btn-link):focus.btn-primary, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-primary, +.btn-group-raised .btn:not(.btn-link):focus.btn-primary, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-primary, +.btn.btn-raised:not(.btn-link).active.btn-primary, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-primary, +.btn-group-raised .btn:not(.btn-link).active.btn-primary, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-primary, +.btn.btn-raised:not(.btn-link):active.btn-primary, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-primary, +.btn-group-raised .btn:not(.btn-link):active.btn-primary, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-primary { + background-color: #00aa9a; +} +.btn.btn-raised:not(.btn-link):hover.btn-success, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-success, +.btn-group-raised .btn:not(.btn-link):hover.btn-success, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-success, +.btn.btn-raised:not(.btn-link):focus.btn-success, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-success, +.btn-group-raised .btn:not(.btn-link):focus.btn-success, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-success, +.btn.btn-raised:not(.btn-link).active.btn-success, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-success, +.btn-group-raised .btn:not(.btn-link).active.btn-success, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-success, +.btn.btn-raised:not(.btn-link):active.btn-success, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-success, +.btn-group-raised .btn:not(.btn-link):active.btn-success, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-success { + background-color: #59b75c; +} +.btn.btn-raised:not(.btn-link):hover.btn-info, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-info, +.btn-group-raised .btn:not(.btn-link):hover.btn-info, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-info, +.btn.btn-raised:not(.btn-link):focus.btn-info, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-info, +.btn-group-raised .btn:not(.btn-link):focus.btn-info, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-info, +.btn.btn-raised:not(.btn-link).active.btn-info, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-info, +.btn-group-raised .btn:not(.btn-link).active.btn-info, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-info, +.btn.btn-raised:not(.btn-link):active.btn-info, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-info, +.btn-group-raised .btn:not(.btn-link):active.btn-info, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-info { + background-color: #0fb2fc; +} +.btn.btn-raised:not(.btn-link):hover.btn-warning, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-warning, +.btn-group-raised .btn:not(.btn-link):hover.btn-warning, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-warning, +.btn.btn-raised:not(.btn-link):focus.btn-warning, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-warning, +.btn-group-raised .btn:not(.btn-link):focus.btn-warning, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-warning, +.btn.btn-raised:not(.btn-link).active.btn-warning, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-warning, +.btn-group-raised .btn:not(.btn-link).active.btn-warning, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-warning, +.btn.btn-raised:not(.btn-link):active.btn-warning, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-warning, +.btn-group-raised .btn:not(.btn-link):active.btn-warning, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-warning { + background-color: #ff6736; +} +.btn.btn-raised:not(.btn-link):hover.btn-danger, +.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-danger, +.btn-group-raised .btn:not(.btn-link):hover.btn-danger, +.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-danger, +.btn.btn-raised:not(.btn-link):focus.btn-danger, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-danger, +.btn-group-raised .btn:not(.btn-link):focus.btn-danger, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-danger, +.btn.btn-raised:not(.btn-link).active.btn-danger, +.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-danger, +.btn-group-raised .btn:not(.btn-link).active.btn-danger, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-danger, +.btn.btn-raised:not(.btn-link):active.btn-danger, +.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-danger, +.btn-group-raised .btn:not(.btn-link):active.btn-danger, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-danger { + background-color: #f55549; +} +.btn.btn-raised:not(.btn-link).active, +.input-group-btn .btn.btn-raised:not(.btn-link).active, +.btn-group-raised .btn:not(.btn-link).active, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active, +.btn.btn-raised:not(.btn-link):active, +.input-group-btn .btn.btn-raised:not(.btn-link):active, +.btn-group-raised .btn:not(.btn-link):active, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active, +.btn.btn-raised:not(.btn-link).active:hover, +.input-group-btn .btn.btn-raised:not(.btn-link).active:hover, +.btn-group-raised .btn:not(.btn-link).active:hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link).active:hover, +.btn.btn-raised:not(.btn-link):active:hover, +.input-group-btn .btn.btn-raised:not(.btn-link):active:hover, +.btn-group-raised .btn:not(.btn-link):active:hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link):active:hover { + -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); +} +.btn.btn-raised:not(.btn-link):focus, +.input-group-btn .btn.btn-raised:not(.btn-link):focus, +.btn-group-raised .btn:not(.btn-link):focus, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus, +.btn.btn-raised:not(.btn-link):focus.active, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.active, +.btn-group-raised .btn:not(.btn-link):focus.active, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active, +.btn.btn-raised:not(.btn-link):focus:active, +.input-group-btn .btn.btn-raised:not(.btn-link):focus:active, +.btn-group-raised .btn:not(.btn-link):focus:active, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active, +.btn.btn-raised:not(.btn-link):focus:hover, +.input-group-btn .btn.btn-raised:not(.btn-link):focus:hover, +.btn-group-raised .btn:not(.btn-link):focus:hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:hover, +.btn.btn-raised:not(.btn-link):focus.active:hover, +.input-group-btn .btn.btn-raised:not(.btn-link):focus.active:hover, +.btn-group-raised .btn:not(.btn-link):focus.active:hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active:hover, +.btn.btn-raised:not(.btn-link):focus:active:hover, +.input-group-btn .btn.btn-raised:not(.btn-link):focus:active:hover, +.btn-group-raised .btn:not(.btn-link):focus:active:hover, +.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active:hover { + -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); + box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36); +} +.btn.btn-fab, +.input-group-btn .btn.btn-fab { + border-radius: 50%; + font-size: 24px; + height: 56px; + margin: auto; + min-width: 56px; + width: 56px; + padding: 0; + overflow: hidden; + -webkit-box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); + box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); + position: relative; + line-height: normal; +} +.btn.btn-fab .ripple-container, +.input-group-btn .btn.btn-fab .ripple-container { + border-radius: 50%; +} +.btn.btn-fab.btn-fab-mini, +.input-group-btn .btn.btn-fab.btn-fab-mini, +.btn-group-sm .btn.btn-fab, +.btn-group-sm .input-group-btn .btn.btn-fab { + height: 40px; + min-width: 40px; + width: 40px; +} +.btn.btn-fab.btn-fab-mini.material-icons, +.input-group-btn .btn.btn-fab.btn-fab-mini.material-icons, +.btn-group-sm .btn.btn-fab.material-icons, +.btn-group-sm .input-group-btn .btn.btn-fab.material-icons { + top: 0px; + left: 0px; +} +.btn.btn-fab i.material-icons, +.input-group-btn .btn.btn-fab i.material-icons { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-12px, -12px); + -ms-transform: translate(-12px, -12px); + -o-transform: translate(-12px, -12px); + transform: translate(-12px, -12px); + line-height: 24px; + width: 24px; +} +.btn i.material-icons, +.input-group-btn .btn i.material-icons { + vertical-align: middle; +} +.btn.btn-lg, +.input-group-btn .btn.btn-lg, +.btn-group-lg .btn, +.btn-group-lg .input-group-btn .btn { + font-size: 16px; +} +.btn.btn-sm, +.input-group-btn .btn.btn-sm, +.btn-group-sm .btn, +.btn-group-sm .input-group-btn .btn { + padding: 5px 20px; + font-size: 12px; +} +.btn.btn-xs, +.input-group-btn .btn.btn-xs, +.btn-group-xs .btn, +.btn-group-xs .input-group-btn .btn { + padding: 4px 15px; + font-size: 10px; +} +fieldset[disabled][disabled] .btn, +fieldset[disabled][disabled] .input-group-btn .btn, +fieldset[disabled][disabled] .btn-group, +fieldset[disabled][disabled] .btn-group-vertical, +.btn.disabled, +.input-group-btn .btn.disabled, +.btn-group.disabled, +.btn-group-vertical.disabled, +.btn:disabled, +.input-group-btn .btn:disabled, +.btn-group:disabled, +.btn-group-vertical:disabled, +.btn[disabled][disabled], +.input-group-btn .btn[disabled][disabled], +.btn-group[disabled][disabled], +.btn-group-vertical[disabled][disabled] { + color: rgba(0, 0, 0, 0.26); + background: transparent; +} +.theme-dark fieldset[disabled][disabled] .btn, +.theme-dark fieldset[disabled][disabled] .input-group-btn .btn, +.theme-dark fieldset[disabled][disabled] .btn-group, +.theme-dark fieldset[disabled][disabled] .btn-group-vertical, +.theme-dark .btn.disabled, +.theme-dark .input-group-btn .btn.disabled, +.theme-dark .btn-group.disabled, +.theme-dark .btn-group-vertical.disabled, +.theme-dark .btn:disabled, +.theme-dark .input-group-btn .btn:disabled, +.theme-dark .btn-group:disabled, +.theme-dark .btn-group-vertical:disabled, +.theme-dark .btn[disabled][disabled], +.theme-dark .input-group-btn .btn[disabled][disabled], +.theme-dark .btn-group[disabled][disabled], +.theme-dark .btn-group-vertical[disabled][disabled] { + color: rgba(255, 255, 255, 0.3); +} +fieldset[disabled][disabled] .btn.btn-raised, +fieldset[disabled][disabled] .input-group-btn .btn.btn-raised, +fieldset[disabled][disabled] .btn-group.btn-raised, +fieldset[disabled][disabled] .btn-group-vertical.btn-raised, +.btn.disabled.btn-raised, +.input-group-btn .btn.disabled.btn-raised, +.btn-group.disabled.btn-raised, +.btn-group-vertical.disabled.btn-raised, +.btn:disabled.btn-raised, +.input-group-btn .btn:disabled.btn-raised, +.btn-group:disabled.btn-raised, +.btn-group-vertical:disabled.btn-raised, +.btn[disabled][disabled].btn-raised, +.input-group-btn .btn[disabled][disabled].btn-raised, +.btn-group[disabled][disabled].btn-raised, +.btn-group-vertical[disabled][disabled].btn-raised, +fieldset[disabled][disabled] .btn.btn-group-raised, +fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised, +fieldset[disabled][disabled] .btn-group.btn-group-raised, +fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised, +.btn.disabled.btn-group-raised, +.input-group-btn .btn.disabled.btn-group-raised, +.btn-group.disabled.btn-group-raised, +.btn-group-vertical.disabled.btn-group-raised, +.btn:disabled.btn-group-raised, +.input-group-btn .btn:disabled.btn-group-raised, +.btn-group:disabled.btn-group-raised, +.btn-group-vertical:disabled.btn-group-raised, +.btn[disabled][disabled].btn-group-raised, +.input-group-btn .btn[disabled][disabled].btn-group-raised, +.btn-group[disabled][disabled].btn-group-raised, +.btn-group-vertical[disabled][disabled].btn-group-raised, +fieldset[disabled][disabled] .btn.btn-raised.active, +fieldset[disabled][disabled] .input-group-btn .btn.btn-raised.active, +fieldset[disabled][disabled] .btn-group.btn-raised.active, +fieldset[disabled][disabled] .btn-group-vertical.btn-raised.active, +.btn.disabled.btn-raised.active, +.input-group-btn .btn.disabled.btn-raised.active, +.btn-group.disabled.btn-raised.active, +.btn-group-vertical.disabled.btn-raised.active, +.btn:disabled.btn-raised.active, +.input-group-btn .btn:disabled.btn-raised.active, +.btn-group:disabled.btn-raised.active, +.btn-group-vertical:disabled.btn-raised.active, +.btn[disabled][disabled].btn-raised.active, +.input-group-btn .btn[disabled][disabled].btn-raised.active, +.btn-group[disabled][disabled].btn-raised.active, +.btn-group-vertical[disabled][disabled].btn-raised.active, +fieldset[disabled][disabled] .btn.btn-group-raised.active, +fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised.active, +fieldset[disabled][disabled] .btn-group.btn-group-raised.active, +fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised.active, +.btn.disabled.btn-group-raised.active, +.input-group-btn .btn.disabled.btn-group-raised.active, +.btn-group.disabled.btn-group-raised.active, +.btn-group-vertical.disabled.btn-group-raised.active, +.btn:disabled.btn-group-raised.active, +.input-group-btn .btn:disabled.btn-group-raised.active, +.btn-group:disabled.btn-group-raised.active, +.btn-group-vertical:disabled.btn-group-raised.active, +.btn[disabled][disabled].btn-group-raised.active, +.input-group-btn .btn[disabled][disabled].btn-group-raised.active, +.btn-group[disabled][disabled].btn-group-raised.active, +.btn-group-vertical[disabled][disabled].btn-group-raised.active, +fieldset[disabled][disabled] .btn.btn-raised:active, +fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:active, +fieldset[disabled][disabled] .btn-group.btn-raised:active, +fieldset[disabled][disabled] .btn-group-vertical.btn-raised:active, +.btn.disabled.btn-raised:active, +.input-group-btn .btn.disabled.btn-raised:active, +.btn-group.disabled.btn-raised:active, +.btn-group-vertical.disabled.btn-raised:active, +.btn:disabled.btn-raised:active, +.input-group-btn .btn:disabled.btn-raised:active, +.btn-group:disabled.btn-raised:active, +.btn-group-vertical:disabled.btn-raised:active, +.btn[disabled][disabled].btn-raised:active, +.input-group-btn .btn[disabled][disabled].btn-raised:active, +.btn-group[disabled][disabled].btn-raised:active, +.btn-group-vertical[disabled][disabled].btn-raised:active, +fieldset[disabled][disabled] .btn.btn-group-raised:active, +fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:active, +fieldset[disabled][disabled] .btn-group.btn-group-raised:active, +fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:active, +.btn.disabled.btn-group-raised:active, +.input-group-btn .btn.disabled.btn-group-raised:active, +.btn-group.disabled.btn-group-raised:active, +.btn-group-vertical.disabled.btn-group-raised:active, +.btn:disabled.btn-group-raised:active, +.input-group-btn .btn:disabled.btn-group-raised:active, +.btn-group:disabled.btn-group-raised:active, +.btn-group-vertical:disabled.btn-group-raised:active, +.btn[disabled][disabled].btn-group-raised:active, +.input-group-btn .btn[disabled][disabled].btn-group-raised:active, +.btn-group[disabled][disabled].btn-group-raised:active, +.btn-group-vertical[disabled][disabled].btn-group-raised:active, +fieldset[disabled][disabled] .btn.btn-raised:focus:not(:active), +fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:focus:not(:active), +fieldset[disabled][disabled] .btn-group.btn-raised:focus:not(:active), +fieldset[disabled][disabled] .btn-group-vertical.btn-raised:focus:not(:active), +.btn.disabled.btn-raised:focus:not(:active), +.input-group-btn .btn.disabled.btn-raised:focus:not(:active), +.btn-group.disabled.btn-raised:focus:not(:active), +.btn-group-vertical.disabled.btn-raised:focus:not(:active), +.btn:disabled.btn-raised:focus:not(:active), +.input-group-btn .btn:disabled.btn-raised:focus:not(:active), +.btn-group:disabled.btn-raised:focus:not(:active), +.btn-group-vertical:disabled.btn-raised:focus:not(:active), +.btn[disabled][disabled].btn-raised:focus:not(:active), +.input-group-btn .btn[disabled][disabled].btn-raised:focus:not(:active), +.btn-group[disabled][disabled].btn-raised:focus:not(:active), +.btn-group-vertical[disabled][disabled].btn-raised:focus:not(:active), +fieldset[disabled][disabled] .btn.btn-group-raised:focus:not(:active), +fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:focus:not(:active), +fieldset[disabled][disabled] .btn-group.btn-group-raised:focus:not(:active), +fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:focus:not(:active), +.btn.disabled.btn-group-raised:focus:not(:active), +.input-group-btn .btn.disabled.btn-group-raised:focus:not(:active), +.btn-group.disabled.btn-group-raised:focus:not(:active), +.btn-group-vertical.disabled.btn-group-raised:focus:not(:active), +.btn:disabled.btn-group-raised:focus:not(:active), +.input-group-btn .btn:disabled.btn-group-raised:focus:not(:active), +.btn-group:disabled.btn-group-raised:focus:not(:active), +.btn-group-vertical:disabled.btn-group-raised:focus:not(:active), +.btn[disabled][disabled].btn-group-raised:focus:not(:active), +.input-group-btn .btn[disabled][disabled].btn-group-raised:focus:not(:active), +.btn-group[disabled][disabled].btn-group-raised:focus:not(:active), +.btn-group-vertical[disabled][disabled].btn-group-raised:focus:not(:active) { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-group, +.btn-group-vertical { + position: relative; + margin: 10px 1px; +} +.btn-group.open > .dropdown-toggle.btn, +.btn-group-vertical.open > .dropdown-toggle.btn, +.btn-group.open > .dropdown-toggle.btn.btn-default, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-default { + background-color: #EEEEEE; +} +.btn-group.open > .dropdown-toggle.btn.btn-inverse, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-inverse { + background-color: #3f51b5; +} +.btn-group.open > .dropdown-toggle.btn.btn-primary, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-primary { + background-color: #009688; +} +.btn-group.open > .dropdown-toggle.btn.btn-success, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-success { + background-color: #4caf50; +} +.btn-group.open > .dropdown-toggle.btn.btn-info, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-info { + background-color: #03a9f4; +} +.btn-group.open > .dropdown-toggle.btn.btn-warning, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-warning { + background-color: #ff5722; +} +.btn-group.open > .dropdown-toggle.btn.btn-danger, +.btn-group-vertical.open > .dropdown-toggle.btn.btn-danger { + background-color: #f44336; +} +.btn-group .dropdown-menu, +.btn-group-vertical .dropdown-menu { + border-radius: 0 0 2px 2px; +} +.btn-group.btn-group-raised, +.btn-group-vertical.btn-group-raised { + -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} +.btn-group .btn + .btn, +.btn-group-vertical .btn + .btn, +.btn-group .btn, +.btn-group-vertical .btn, +.btn-group .btn:active, +.btn-group-vertical .btn:active, +.btn-group .btn-group, +.btn-group-vertical .btn-group { + margin: 0; +} +.checkbox label, +label.checkbox-inline { + cursor: pointer; + padding-left: 0; + color: rgba(0,0,0, 0.26); +} +.form-group.is-focused .checkbox label, +.form-group.is-focused label.checkbox-inline { + color: rgba(0,0,0, 0.26); +} +.form-group.is-focused .checkbox label:hover, +.form-group.is-focused label.checkbox-inline:hover, +.form-group.is-focused .checkbox label:focus, +.form-group.is-focused label.checkbox-inline:focus { + color: rgba(0,0,0, .54); +} +fieldset[disabled] .form-group.is-focused .checkbox label, +fieldset[disabled] .form-group.is-focused label.checkbox-inline { + color: rgba(0,0,0, 0.26); +} +.checkbox input[type=checkbox], +label.checkbox-inline input[type=checkbox] { + opacity: 0; + position: absolute; + margin: 0; + z-index: -1; + width: 0; + height: 0; + overflow: hidden; + left: 0; + pointer-events: none; +} +.checkbox .checkbox-material, +label.checkbox-inline .checkbox-material { + vertical-align: middle; + position: relative; + top: 3px; +} +.checkbox .checkbox-material:before, +label.checkbox-inline .checkbox-material:before { + display: block; + position: absolute; + top: -5px; + left: 0; + content: ""; + background-color: rgba(0, 0, 0, 0.84); + height: 20px; + width: 20px; + border-radius: 100%; + z-index: 1; + opacity: 0; + margin: 0; + -webkit-transform: scale3d(2.3, 2.3, 1); + transform: scale3d(2.3, 2.3, 1); +} +.checkbox .checkbox-material .check, +label.checkbox-inline .checkbox-material .check { + position: relative; + display: inline-block; + width: 20px; + height: 20px; + border: 2px solid rgba(0,0,0, .54); + border-radius: 2px; + overflow: hidden; + z-index: 1; +} +.checkbox .checkbox-material .check:before, +label.checkbox-inline .checkbox-material .check:before { + position: absolute; + content: ""; + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + display: block; + margin-top: -4px; + margin-left: 6px; + width: 0; + height: 0; + -webkit-box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0 inset; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0 inset; +} +.checkbox input[type=checkbox]:focus + .checkbox-material .check:after, +label.checkbox-inline input[type=checkbox]:focus + .checkbox-material .check:after { + opacity: 0.2; +} +.checkbox input[type=checkbox]:focus:checked + .checkbox-material:before, +label.checkbox-inline input[type=checkbox]:focus:checked + .checkbox-material:before { + -webkit-animation: rippleOn 500ms; + -o-animation: rippleOn 500ms; + animation: rippleOn 500ms; +} +.checkbox input[type=checkbox]:focus:checked + .checkbox-material .check:before, +label.checkbox-inline input[type=checkbox]:focus:checked + .checkbox-material .check:before { + -webkit-animation: checkbox-on 0.3s forwards; + -o-animation: checkbox-on 0.3s forwards; + animation: checkbox-on 0.3s forwards; +} +.checkbox input[type=checkbox]:focus:checked + .checkbox-material .check:after, +label.checkbox-inline input[type=checkbox]:focus:checked + .checkbox-material .check:after { + -webkit-animation: rippleOn 500ms forwards; + -o-animation: rippleOn 500ms forwards; + animation: rippleOn 500ms forwards; +} +.checkbox input[type=checkbox]:focus:not(:checked) + .checkbox-material:before, +label.checkbox-inline input[type=checkbox]:focus:not(:checked) + .checkbox-material:before { + -webkit-animation: rippleOff 500ms; + -o-animation: rippleOff 500ms; + animation: rippleOff 500ms; +} +.checkbox input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:before, +label.checkbox-inline input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:before { + -webkit-animation: checkbox-off 0.3s forwards; + -o-animation: checkbox-off 0.3s forwards; + animation: checkbox-off 0.3s forwards; +} +.checkbox input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:after, +label.checkbox-inline input[type=checkbox]:focus:not(:checked) + .checkbox-material .check:after { + -webkit-animation: rippleOff 500ms forwards; + -o-animation: rippleOff 500ms forwards; + animation: rippleOff 500ms forwards; +} +.checkbox input[type=checkbox]:checked + .checkbox-material .check, +label.checkbox-inline input[type=checkbox]:checked + .checkbox-material .check { + color: #009688; + border-color: #009688; +} +.checkbox input[type=checkbox]:checked + .checkbox-material .check:before, +label.checkbox-inline input[type=checkbox]:checked + .checkbox-material .check:before { + color: #009688; + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; +} +fieldset[disabled] .checkbox, +fieldset[disabled] label.checkbox-inline, +fieldset[disabled] .checkbox input[type=checkbox], +fieldset[disabled] label.checkbox-inline input[type=checkbox], +.checkbox input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check:before, +label.checkbox-inline input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check:before, +.checkbox input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check, +label.checkbox-inline input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check, +.checkbox input[type=checkbox][disabled] + .circle, +label.checkbox-inline input[type=checkbox][disabled] + .circle { + opacity: 0.5; +} +.checkbox input[type=checkbox][disabled] + .checkbox-material .check:after, +label.checkbox-inline input[type=checkbox][disabled] + .checkbox-material .check:after { + background-color: rgba(0,0,0, 0.87); + -webkit-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} +@-webkit-keyframes checkbox-on { + 0% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; + } + 50% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; + } + 100% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; + } +} +@-o-keyframes checkbox-on { + 0% { + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; + } + 50% { + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; + } + 100% { + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; + } +} +@keyframes checkbox-on { + 0% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px; + } + 50% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px 2px 0 11px; + } + 100% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px; + } +} +@-webkit-keyframes checkbox-off { + 0% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + } + 25% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + } + 50% { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + margin-top: -4px; + margin-left: 6px; + width: 0; + height: 0; + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; + } + 51% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + -webkit-box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 10px inset; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 10px inset; + } + 100% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + -webkit-box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 0 inset; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 0 inset; + } +} +@-o-keyframes checkbox-off { + 0% { + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + } + 25% { + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + } + 50% { + -o-transform: rotate(45deg); + transform: rotate(45deg); + margin-top: -4px; + margin-left: 6px; + width: 0; + height: 0; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; + } + 51% { + -o-transform: rotate(0deg); + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 10px inset; + } + 100% { + -o-transform: rotate(0deg); + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 0 inset; + } +} +@keyframes checkbox-off { + 0% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + } + 25% { + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 20px -12px 0 11px, 0 0 0 0 inset; + } + 50% { + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + margin-top: -4px; + margin-left: 6px; + width: 0; + height: 0; + -webkit-box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; + box-shadow: 0 0 0 10px, 10px -10px 0 10px, 32px 0 0 20px, 0px 32px 0 20px, -5px 5px 0 10px, 15px 2px 0 11px, 0 0 0 0 inset; + } + 51% { + -webkit-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + -webkit-box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 10px inset; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 10px inset; + } + 100% { + -webkit-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + -webkit-box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 0 inset; + box-shadow: 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 0 inset; + } +} +@-webkit-keyframes rippleOn { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@-o-keyframes rippleOn { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@keyframes rippleOn { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@-webkit-keyframes rippleOff { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@-o-keyframes rippleOff { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@keyframes rippleOff { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +.togglebutton { + vertical-align: middle; +} +.togglebutton, +.togglebutton label, +.togglebutton input, +.togglebutton .toggle { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.togglebutton label { + cursor: pointer; + color: rgba(0,0,0, 0.26); +} +.form-group.is-focused .togglebutton label { + color: rgba(0,0,0, 0.26); +} +.form-group.is-focused .togglebutton label:hover, +.form-group.is-focused .togglebutton label:focus { + color: rgba(0,0,0, .54); +} +fieldset[disabled] .form-group.is-focused .togglebutton label { + color: rgba(0,0,0, 0.26); +} +.togglebutton label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; +} +.togglebutton label .toggle { + text-align: left; +} +.togglebutton label .toggle, +.togglebutton label input[type=checkbox][disabled] + .toggle { + content: ""; + display: inline-block; + width: 30px; + height: 15px; + background-color: rgba(80, 80, 80, 0.7); + border-radius: 15px; + margin-right: 15px; + -webkit-transition: background 0.3s ease; + -o-transition: background 0.3s ease; + transition: background 0.3s ease; + vertical-align: middle; +} +.togglebutton label .toggle:after { + content: ""; + display: inline-block; + width: 20px; + height: 20px; + background-color: #F1F1F1; + border-radius: 20px; + position: relative; + -webkit-box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + left: -5px; + top: -2px; + -webkit-transition: left 0.3s ease, background 0.3s ease, -webkit-box-shadow 0.1s ease; + -o-transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease; + transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease; +} +.togglebutton label input[type=checkbox][disabled] + .toggle:after, +.togglebutton label input[type=checkbox][disabled]:checked + .toggle:after { + background-color: #BDBDBD; +} +.togglebutton label input[type=checkbox] + .toggle:active:after, +.togglebutton label input[type=checkbox][disabled] + .toggle:active:after { + -webkit-box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.1); +} +.togglebutton label input[type=checkbox]:checked + .toggle:after { + left: 15px; +} +.togglebutton label input[type=checkbox]:checked + .toggle { + background-color: rgba(0, 150, 136, 0.5); +} +.togglebutton label input[type=checkbox]:checked + .toggle:after { + background-color: #009688; +} +.togglebutton label input[type=checkbox]:checked + .toggle:active:after { + -webkit-box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 150, 136, 0.1); + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 150, 136, 0.1); +} +.radio label, +label.radio-inline { + cursor: pointer; + padding-left: 45px; + position: relative; + color: rgba(0,0,0, 0.26); +} +.form-group.is-focused .radio label, +.form-group.is-focused label.radio-inline { + color: rgba(0,0,0, 0.26); +} +.form-group.is-focused .radio label:hover, +.form-group.is-focused label.radio-inline:hover, +.form-group.is-focused .radio label:focus, +.form-group.is-focused label.radio-inline:focus { + color: rgba(0,0,0, .54); +} +fieldset[disabled] .form-group.is-focused .radio label, +fieldset[disabled] .form-group.is-focused label.radio-inline { + color: rgba(0,0,0, 0.26); +} +.radio span, +label.radio-inline span { + display: block; + position: absolute; + left: 10px; + top: 2px; + -webkit-transition-duration: 0.2s; + -o-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.radio .circle, +label.radio-inline .circle { + border: 2px solid rgba(0,0,0, .54); + height: 15px; + width: 15px; + border-radius: 100%; +} +.radio .check, +label.radio-inline .check { + height: 15px; + width: 15px; + border-radius: 100%; + background-color: #009688; + -webkit-transform: scale3d(0, 0, 0); + transform: scale3d(0, 0, 0); +} +.radio .check:after, +label.radio-inline .check:after { + display: block; + position: absolute; + content: ""; + background-color: rgba(0,0,0, 0.87); + left: -18px; + top: -18px; + height: 50px; + width: 50px; + border-radius: 100%; + z-index: 1; + opacity: 0; + margin: 0; + -webkit-transform: scale3d(1.5, 1.5, 1); + transform: scale3d(1.5, 1.5, 1); +} +.radio input[type=radio]:focus:not(:checked) ~ .check:after, +label.radio-inline input[type=radio]:focus:not(:checked) ~ .check:after { + -webkit-animation: rippleOff 500ms; + -o-animation: rippleOff 500ms; + animation: rippleOff 500ms; +} +.radio input[type=radio]:focus:checked ~ .check:after, +label.radio-inline input[type=radio]:focus:checked ~ .check:after { + -webkit-animation: rippleOn 500ms; + -o-animation: rippleOn 500ms; + animation: rippleOn 500ms; +} +.radio input[type=radio], +label.radio-inline input[type=radio] { + opacity: 0; + height: 0; + width: 0; + overflow: hidden; +} +.radio input[type=radio]:checked ~ .check, +label.radio-inline input[type=radio]:checked ~ .check, +.radio input[type=radio]:checked ~ .circle, +label.radio-inline input[type=radio]:checked ~ .circle { + opacity: 1; +} +.radio input[type=radio]:checked ~ .check, +label.radio-inline input[type=radio]:checked ~ .check { + background-color: #009688; +} +.radio input[type=radio]:checked ~ .circle, +label.radio-inline input[type=radio]:checked ~ .circle { + border-color: #009688; +} +.radio input[type=radio]:checked ~ .check, +label.radio-inline input[type=radio]:checked ~ .check { + -webkit-transform: scale3d(0.55, 0.55, 1); + transform: scale3d(0.55, 0.55, 1); +} +.radio input[type=radio][disabled] ~ .check, +label.radio-inline input[type=radio][disabled] ~ .check, +.radio input[type=radio][disabled] ~ .circle, +label.radio-inline input[type=radio][disabled] ~ .circle { + opacity: 0.26; +} +.radio input[type=radio][disabled] ~ .check, +label.radio-inline input[type=radio][disabled] ~ .check { + background-color: #000000; +} +.radio input[type=radio][disabled] ~ .circle, +label.radio-inline input[type=radio][disabled] ~ .circle { + border-color: #000000; +} +.theme-dark .radio input[type=radio][disabled] ~ .check, +.theme-dark label.radio-inline input[type=radio][disabled] ~ .check, +.theme-dark .radio input[type=radio][disabled] ~ .circle, +.theme-dark label.radio-inline input[type=radio][disabled] ~ .circle { + opacity: 0.3; +} +.theme-dark .radio input[type=radio][disabled] ~ .check, +.theme-dark label.radio-inline input[type=radio][disabled] ~ .check { + background-color: #ffffff; +} +.theme-dark .radio input[type=radio][disabled] ~ .circle, +.theme-dark label.radio-inline input[type=radio][disabled] ~ .circle { + border-color: #ffffff; +} +@keyframes rippleOn { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@keyframes rippleOff { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +legend { + margin-bottom: 22px; + font-size: 24px; +} +output { + padding-top: 8px; + font-size: 16px; + line-height: 1.42857143; +} +.form-control { + height: 38px; + padding: 7px 0; + font-size: 16px; + line-height: 1.42857143; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 38px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 24px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 44px; + } +} +.radio label, +.checkbox label { + min-height: 22px; +} +.form-control-static { + padding-top: 8px; + padding-bottom: 8px; + min-height: 38px; +} +.input-sm .input-sm { + height: 24px; + padding: 3px 0; + font-size: 11px; + line-height: 1.5; + border-radius: 0; +} +.input-sm select.input-sm { + height: 24px; + line-height: 24px; +} +.input-sm textarea.input-sm, +.input-sm select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 24px; + padding: 3px 0; + font-size: 11px; + line-height: 1.5; +} +.form-group-sm select.form-control { + height: 24px; + line-height: 24px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 24px; + min-height: 33px; + padding: 4px 0; + font-size: 11px; + line-height: 1.5; +} +.input-lg .input-lg { + height: 44px; + padding: 9px 0; + font-size: 18px; + line-height: 1.3333333; + border-radius: 0; +} +.input-lg select.input-lg { + height: 44px; + line-height: 44px; +} +.input-lg textarea.input-lg, +.input-lg select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 44px; + padding: 9px 0; + font-size: 18px; + line-height: 1.3333333; +} +.form-group-lg select.form-control { + height: 44px; + line-height: 44px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 44px; + min-height: 40px; + padding: 10px 0; + font-size: 18px; + line-height: 1.3333333; +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 8px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 30px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 8px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 12.9999997px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 4px; + font-size: 11px; + } +} +.label { + border-radius: 1px; + padding: .3em .6em; +} +.label, +.label.label-default { + background-color: #9e9e9e; +} +.label.label-inverse { + background-color: #3f51b5; +} +.label.label-primary { + background-color: #009688; +} +.label.label-success { + background-color: #4caf50; +} +.label.label-info { + background-color: #03a9f4; +} +.label.label-warning { + background-color: #ff5722; +} +.label.label-danger { + background-color: #f44336; +} +.form-control, +.form-group .form-control { + border: 0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#009688), to(#009688)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); + background-image: -webkit-linear-gradient(#009688, #009688), -webkit-linear-gradient(#D2D2D2, #D2D2D2); + background-image: -o-linear-gradient(#009688, #009688), -o-linear-gradient(#D2D2D2, #D2D2D2); + background-image: linear-gradient(#009688, #009688), linear-gradient(#D2D2D2, #D2D2D2); + -webkit-background-size: 0 2px, 100% 1px; + background-size: 0 2px, 100% 1px; + background-repeat: no-repeat; + background-position: center bottom, center -webkit-calc(100% - 1px); + background-position: center bottom, center calc(100% - 1px); + background-color: rgba(0, 0, 0, 0); + -webkit-transition: background 0s ease-out; + -o-transition: background 0s ease-out; + transition: background 0s ease-out; + float: none; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.form-control::-moz-placeholder, +.form-group .form-control::-moz-placeholder { + color: #BDBDBD; + font-weight: 400; +} +.form-control:-ms-input-placeholder, +.form-group .form-control:-ms-input-placeholder { + color: #BDBDBD; + font-weight: 400; +} +.form-control::-webkit-input-placeholder, +.form-group .form-control::-webkit-input-placeholder { + color: #BDBDBD; + font-weight: 400; +} +.form-control[readonly], +.form-group .form-control[readonly], +.form-control[disabled], +.form-group .form-control[disabled], +fieldset[disabled] .form-control, +fieldset[disabled] .form-group .form-control { + background-color: rgba(0, 0, 0, 0); +} +.form-control[disabled], +.form-group .form-control[disabled], +fieldset[disabled] .form-control, +fieldset[disabled] .form-group .form-control { + background-image: none; + border-bottom: 1px dotted #D2D2D2; +} +.form-group { + position: relative; +} +.form-group.label-static label.control-label, +.form-group.label-placeholder label.control-label, +.form-group.label-floating label.control-label { + position: absolute; + pointer-events: none; + -webkit-transition: 0.3s ease all; + -o-transition: 0.3s ease all; + transition: 0.3s ease all; +} +.form-group.label-floating label.control-label { + will-change: left, top, contents; +} +.form-group.label-placeholder:not(.is-empty) label.control-label { + display: none; +} +.form-group .help-block { + position: absolute; + display: none; +} +.form-group.is-focused .form-control { + outline: none; + background-image: -webkit-gradient(linear, left top, left bottom, from(#009688), to(#009688)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); + background-image: -webkit-linear-gradient(#009688, #009688), -webkit-linear-gradient(#D2D2D2, #D2D2D2); + background-image: -o-linear-gradient(#009688, #009688), -o-linear-gradient(#D2D2D2, #D2D2D2); + background-image: linear-gradient(#009688, #009688), linear-gradient(#D2D2D2, #D2D2D2); + -webkit-background-size: 100% 2px, 100% 1px; + background-size: 100% 2px, 100% 1px; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition-duration: 0.3s; + -o-transition-duration: 0.3s; + transition-duration: 0.3s; +} +.form-group.is-focused .form-control .material-input:after { + background-color: #009688; +} +.form-group.is-focused label, +.form-group.is-focused label.control-label { + color: #009688; +} +.form-group.is-focused.label-placeholder label, +.form-group.is-focused.label-placeholder label.control-label { + color: #BDBDBD; +} +.form-group.is-focused .help-block { + display: block; +} +.form-group.has-warning .form-control { + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-warning.is-focused .form-control { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ff5722), to(#ff5722)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); + background-image: -webkit-linear-gradient(#ff5722, #ff5722), -webkit-linear-gradient(#D2D2D2, #D2D2D2); + background-image: -o-linear-gradient(#ff5722, #ff5722), -o-linear-gradient(#D2D2D2, #D2D2D2); + background-image: linear-gradient(#ff5722, #ff5722), linear-gradient(#D2D2D2, #D2D2D2); +} +.form-group.has-warning label.control-label, +.form-group.has-warning .help-block { + color: #ff5722; +} +.form-group.has-error .form-control { + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-error.is-focused .form-control { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f44336), to(#f44336)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); + background-image: -webkit-linear-gradient(#f44336, #f44336), -webkit-linear-gradient(#D2D2D2, #D2D2D2); + background-image: -o-linear-gradient(#f44336, #f44336), -o-linear-gradient(#D2D2D2, #D2D2D2); + background-image: linear-gradient(#f44336, #f44336), linear-gradient(#D2D2D2, #D2D2D2); +} +.form-group.has-error label.control-label, +.form-group.has-error .help-block { + color: #f44336; +} +.form-group.has-success .form-control { + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-success.is-focused .form-control { + background-image: -webkit-gradient(linear, left top, left bottom, from(#4caf50), to(#4caf50)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); + background-image: -webkit-linear-gradient(#4caf50, #4caf50), -webkit-linear-gradient(#D2D2D2, #D2D2D2); + background-image: -o-linear-gradient(#4caf50, #4caf50), -o-linear-gradient(#D2D2D2, #D2D2D2); + background-image: linear-gradient(#4caf50, #4caf50), linear-gradient(#D2D2D2, #D2D2D2); +} +.form-group.has-success label.control-label, +.form-group.has-success .help-block { + color: #4caf50; +} +.form-group.has-info .form-control { + -webkit-box-shadow: none; + box-shadow: none; +} +.form-group.has-info.is-focused .form-control { + background-image: -webkit-gradient(linear, left top, left bottom, from(#03a9f4), to(#03a9f4)), -webkit-gradient(linear, left top, left bottom, from(#D2D2D2), to(#D2D2D2)); + background-image: -webkit-linear-gradient(#03a9f4, #03a9f4), -webkit-linear-gradient(#D2D2D2, #D2D2D2); + background-image: -o-linear-gradient(#03a9f4, #03a9f4), -o-linear-gradient(#D2D2D2, #D2D2D2); + background-image: linear-gradient(#03a9f4, #03a9f4), linear-gradient(#D2D2D2, #D2D2D2); +} +.form-group.has-info label.control-label, +.form-group.has-info .help-block { + color: #03a9f4; +} +.form-group textarea { + resize: none; +} +.form-group textarea ~ .form-control-highlight { + margin-top: -11px; +} +.form-group select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-group select ~ .material-input:after { + display: none; +} +.form-control { + margin-bottom: 7px; +} +.form-control::-moz-placeholder { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.form-control:-ms-input-placeholder { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.form-control::-webkit-input-placeholder { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.checkbox label, +.radio label, +label { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +label.control-label { + font-size: 12px; + line-height: 1.07142857; + font-weight: 400; + margin: 16px 0 0 0; +} +.help-block { + margin-top: 0; + font-size: 12px; +} +.form-group { + padding-bottom: 7px; + margin: 28px 0 0 0; +} +.form-group .form-control { + margin-bottom: 7px; +} +.form-group .form-control::-moz-placeholder { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.form-group .form-control:-ms-input-placeholder { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.form-group .form-control::-webkit-input-placeholder { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.form-group .checkbox label, +.form-group .radio label, +.form-group label { + font-size: 16px; + line-height: 1.42857143; + color: #BDBDBD; + font-weight: 400; +} +.form-group label.control-label { + font-size: 12px; + line-height: 1.07142857; + font-weight: 400; + margin: 16px 0 0 0; +} +.form-group .help-block { + margin-top: 0; + font-size: 12px; +} +.form-group.label-floating label.control-label, +.form-group.label-placeholder label.control-label { + top: -7px; + font-size: 16px; + line-height: 1.42857143; +} +.form-group.label-static label.control-label, +.form-group.label-floating.is-focused label.control-label, +.form-group.label-floating:not(.is-empty) label.control-label { + top: -30px; + left: 0; + font-size: 12px; + line-height: 1.07142857; +} +.form-group.label-floating input.form-control:-webkit-autofill ~ label.control-label label.control-label { + top: -30px; + left: 0; + font-size: 12px; + line-height: 1.07142857; +} +.form-group.form-group-sm { + padding-bottom: 3px; + margin: 21px 0 0 0; +} +.form-group.form-group-sm .form-control { + margin-bottom: 3px; +} +.form-group.form-group-sm .form-control::-moz-placeholder { + font-size: 11px; + line-height: 1.5; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-sm .form-control:-ms-input-placeholder { + font-size: 11px; + line-height: 1.5; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-sm .form-control::-webkit-input-placeholder { + font-size: 11px; + line-height: 1.5; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-sm .checkbox label, +.form-group.form-group-sm .radio label, +.form-group.form-group-sm label { + font-size: 11px; + line-height: 1.5; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-sm label.control-label { + font-size: 9px; + line-height: 1.125; + font-weight: 400; + margin: 16px 0 0 0; +} +.form-group.form-group-sm .help-block { + margin-top: 0; + font-size: 9px; +} +.form-group.form-group-sm.label-floating label.control-label, +.form-group.form-group-sm.label-placeholder label.control-label { + top: -11px; + font-size: 11px; + line-height: 1.5; +} +.form-group.form-group-sm.label-static label.control-label, +.form-group.form-group-sm.label-floating.is-focused label.control-label, +.form-group.form-group-sm.label-floating:not(.is-empty) label.control-label { + top: -25px; + left: 0; + font-size: 9px; + line-height: 1.125; +} +.form-group.form-group-sm.label-floating input.form-control:-webkit-autofill ~ label.control-label label.control-label { + top: -25px; + left: 0; + font-size: 9px; + line-height: 1.125; +} +.form-group.form-group-lg { + padding-bottom: 9px; + margin: 30px 0 0 0; +} +.form-group.form-group-lg .form-control { + margin-bottom: 9px; +} +.form-group.form-group-lg .form-control::-moz-placeholder { + font-size: 18px; + line-height: 1.3333333; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-lg .form-control:-ms-input-placeholder { + font-size: 18px; + line-height: 1.3333333; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-lg .form-control::-webkit-input-placeholder { + font-size: 18px; + line-height: 1.3333333; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-lg .checkbox label, +.form-group.form-group-lg .radio label, +.form-group.form-group-lg label { + font-size: 18px; + line-height: 1.3333333; + color: #BDBDBD; + font-weight: 400; +} +.form-group.form-group-lg label.control-label { + font-size: 14px; + line-height: 0.99999998; + font-weight: 400; + margin: 16px 0 0 0; +} +.form-group.form-group-lg .help-block { + margin-top: 0; + font-size: 14px; +} +.form-group.form-group-lg.label-floating label.control-label, +.form-group.form-group-lg.label-placeholder label.control-label { + top: -5px; + font-size: 18px; + line-height: 1.3333333; +} +.form-group.form-group-lg.label-static label.control-label, +.form-group.form-group-lg.label-floating.is-focused label.control-label, +.form-group.form-group-lg.label-floating:not(.is-empty) label.control-label { + top: -32px; + left: 0; + font-size: 14px; + line-height: 0.99999998; +} +.form-group.form-group-lg.label-floating input.form-control:-webkit-autofill ~ label.control-label label.control-label { + top: -32px; + left: 0; + font-size: 14px; + line-height: 0.99999998; +} +select.form-control { + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + border-radius: 0; +} +.form-group.is-focused select.form-control { + -webkit-box-shadow: none; + box-shadow: none; + border-color: #D2D2D2; +} +select.form-control[multiple], +.form-group.is-focused select.form-control[multiple] { + height: 85px; +} +.input-group-btn .btn { + margin: 0 0 7px 0; +} +.form-group.form-group-sm .input-group-btn .btn { + margin: 0 0 3px 0; +} +.form-group.form-group-lg .input-group-btn .btn { + margin: 0 0 9px 0; +} +.input-group .input-group-btn { + padding: 0 12px; +} +.input-group .input-group-addon { + border: 0; + background: transparent; +} +.form-group input[type=file] { + opacity: 0; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; +} +legend { + border-bottom: 0; +} +.list-group { + border-radius: 0; +} +.list-group .list-group-item { + background-color: transparent; + overflow: hidden; + border: 0; + border-radius: 0; + padding: 0 16px; +} +.list-group .list-group-item.baseline { + border-bottom: 1px solid #cecece; +} +.list-group .list-group-item.baseline:last-child { + border-bottom: none; +} +.list-group .list-group-item .row-picture, +.list-group .list-group-item .row-action-primary { + display: inline-block; + padding-right: 16px; +} +.list-group .list-group-item .row-picture img, +.list-group .list-group-item .row-action-primary img, +.list-group .list-group-item .row-picture i, +.list-group .list-group-item .row-action-primary i, +.list-group .list-group-item .row-picture label, +.list-group .list-group-item .row-action-primary label { + display: block; + width: 56px; + height: 56px; +} +.list-group .list-group-item .row-picture img, +.list-group .list-group-item .row-action-primary img { + background: rgba(0, 0, 0, 0.1); + padding: 1px; +} +.list-group .list-group-item .row-picture img.circle, +.list-group .list-group-item .row-action-primary img.circle { + border-radius: 100%; +} +.list-group .list-group-item .row-picture i, +.list-group .list-group-item .row-action-primary i { + background: rgba(0, 0, 0, 0.25); + border-radius: 100%; + text-align: center; + line-height: 56px; + font-size: 20px; + color: white; +} +.list-group .list-group-item .row-picture label, +.list-group .list-group-item .row-action-primary label { + margin-left: 7px; + margin-right: -7px; + margin-top: 5px; + margin-bottom: -5px; +} +.list-group .list-group-item .row-picture label .checkbox-material, +.list-group .list-group-item .row-action-primary label .checkbox-material { + left: -10px; +} +.list-group .list-group-item .row-content { + display: inline-block; + width: -webkit-calc(100% - 92px); + width: calc(100% - 92px); + min-height: 66px; +} +.list-group .list-group-item .row-content .action-secondary { + position: absolute; + right: 16px; + top: 16px; +} +.list-group .list-group-item .row-content .action-secondary i { + font-size: 20px; + color: rgba(0, 0, 0, 0.25); + cursor: pointer; +} +.list-group .list-group-item .row-content .action-secondary ~ * { + max-width: -webkit-calc(100% - 30px); + max-width: calc(100% - 30px); +} +.list-group .list-group-item .row-content .least-content { + position: absolute; + right: 16px; + top: 0; + color: rgba(0, 0, 0, 0.54); + font-size: 14px; +} +.list-group .list-group-item .list-group-item-heading { + color: rgba(0, 0, 0, 0.77); + font-size: 20px; + line-height: 29px; +} +.list-group .list-group-item.active:hover, +.list-group .list-group-item.active:focus { + background: rgba(0, 0, 0, 0.15); + outline: 10px solid rgba(0, 0, 0, 0.15); +} +.list-group .list-group-item.active .list-group-item-heading, +.list-group .list-group-item.active .list-group-item-text { + color: rgba(0,0,0, 0.87); +} +.list-group .list-group-separator { + clear: both; + overflow: hidden; + margin-top: 10px; + margin-bottom: 10px; +} +.list-group .list-group-separator:before { + content: ""; + width: -webkit-calc(100% - 90px); + width: calc(100% - 90px); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + float: right; +} +.navbar { + background-color: #009688; + border: 0; + border-radius: 0; +} +.navbar .navbar-brand { + position: relative; + height: 60px; + line-height: 30px; + color: inherit; +} +.navbar .navbar-brand:hover, +.navbar .navbar-brand:focus { + color: inherit; + background-color: transparent; +} +.navbar .navbar-text { + color: inherit; + margin-top: 20px; + margin-bottom: 20px; +} +.navbar .navbar-nav > li > a { + color: inherit; + padding-top: 20px; + padding-bottom: 20px; +} +.navbar .navbar-nav > li > a:hover, +.navbar .navbar-nav > li > a:focus { + color: inherit; + background-color: transparent; +} +.navbar .navbar-nav > .active > a, +.navbar .navbar-nav > .active > a:hover, +.navbar .navbar-nav > .active > a:focus { + color: inherit; + background-color: rgba(255, 255, 255, 0.1); +} +.navbar .navbar-nav > .disabled > a, +.navbar .navbar-nav > .disabled > a:hover, +.navbar .navbar-nav > .disabled > a:focus { + color: inherit; + background-color: transparent; + opacity: 0.9; +} +.navbar .navbar-toggle { + border: 0; +} +.navbar .navbar-toggle:hover, +.navbar .navbar-toggle:focus { + background-color: transparent; +} +.navbar .navbar-toggle .icon-bar { + background-color: inherit; + border: 1px solid; +} +.navbar .navbar-default .navbar-toggle, +.navbar .navbar-inverse .navbar-toggle { + border-color: transparent; +} +.navbar .navbar-collapse, +.navbar .navbar-form { + border-color: rgba(0, 0, 0, 0.1); +} +.navbar .navbar-nav > .open > a, +.navbar .navbar-nav > .open > a:hover, +.navbar .navbar-nav > .open > a:focus { + background-color: transparent; + color: inherit; +} +@media (max-width: 767px) { + .navbar .navbar-nav .navbar-text { + color: inherit; + margin-top: 15px; + margin-bottom: 15px; + } + .navbar .navbar-nav .open .dropdown-menu > .dropdown-header { + border: 0; + color: inherit; + } + .navbar .navbar-nav .open .dropdown-menu .divider { + border-bottom: 1px solid; + opacity: 0.08; + } + .navbar .navbar-nav .open .dropdown-menu > li > a { + color: inherit; + } + .navbar .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar .navbar-nav .open .dropdown-menu > li > a:focus { + color: inherit; + background-color: transparent; + } + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: inherit; + background-color: transparent; + } + .navbar .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: inherit; + background-color: transparent; + } +} +.navbar .navbar-link { + color: inherit; +} +.navbar .navbar-link:hover { + color: inherit; +} +.navbar .btn-link { + color: inherit; +} +.navbar .btn-link:hover, +.navbar .btn-link:focus { + color: inherit; +} +.navbar .btn-link[disabled]:hover, +fieldset[disabled] .navbar .btn-link:hover, +.navbar .btn-link[disabled]:focus, +fieldset[disabled] .navbar .btn-link:focus { + color: inherit; +} +.navbar .navbar-form { + margin-top: 16px; +} +.navbar .navbar-form .form-group { + margin: 0; + padding: 0; +} +.navbar .navbar-form .form-group .material-input:before, +.navbar .navbar-form .form-group.is-focused .material-input:after { + background-color: inherit; +} +.navbar .navbar-form .form-group .form-control, +.navbar .navbar-form .form-control { + border-color: inherit; + color: inherit; + padding: 0; + margin: 0; + height: 28px; + font-size: 14px; + line-height: 1.42857143; +} +.navbar, +.navbar.navbar-default { + background-color: #009688; + color: rgba(255,255,255, 0.84); +} +.navbar .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-default .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar .navbar-form input.form-control::-moz-placeholder, +.navbar.navbar-default .navbar-form input.form-control::-moz-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-default .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar .navbar-form input.form-control:-ms-input-placeholder, +.navbar.navbar-default .navbar-form input.form-control:-ms-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-default .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar .navbar-form input.form-control::-webkit-input-placeholder, +.navbar.navbar-default .navbar-form input.form-control::-webkit-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar .dropdown-menu, +.navbar.navbar-default .dropdown-menu { + border-radius: 2px; +} +.navbar .dropdown-menu li > a, +.navbar.navbar-default .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar .dropdown-menu li > a:hover, +.navbar.navbar-default .dropdown-menu li > a:hover, +.navbar .dropdown-menu li > a:focus, +.navbar.navbar-default .dropdown-menu li > a:focus { + color: #009688; + background-color: #eeeeee; +} +.navbar .dropdown-menu .active > a, +.navbar.navbar-default .dropdown-menu .active > a { + background-color: #009688; + color: rgba(255,255,255, 0.84); +} +.navbar .dropdown-menu .active > a:hover, +.navbar.navbar-default .dropdown-menu .active > a:hover, +.navbar .dropdown-menu .active > a:focus, +.navbar.navbar-default .dropdown-menu .active > a:focus { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-inverse { + background-color: #3f51b5; + color: #ffffff; +} +.navbar.navbar-inverse .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-inverse .navbar-form input.form-control::-moz-placeholder { + color: #ffffff; +} +.navbar.navbar-inverse .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-inverse .navbar-form input.form-control:-ms-input-placeholder { + color: #ffffff; +} +.navbar.navbar-inverse .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-inverse .navbar-form input.form-control::-webkit-input-placeholder { + color: #ffffff; +} +.navbar.navbar-inverse .dropdown-menu { + border-radius: 2px; +} +.navbar.navbar-inverse .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar.navbar-inverse .dropdown-menu li > a:hover, +.navbar.navbar-inverse .dropdown-menu li > a:focus { + color: #3f51b5; + background-color: #eeeeee; +} +.navbar.navbar-inverse .dropdown-menu .active > a { + background-color: #3f51b5; + color: #ffffff; +} +.navbar.navbar-inverse .dropdown-menu .active > a:hover, +.navbar.navbar-inverse .dropdown-menu .active > a:focus { + color: #ffffff; +} +.navbar.navbar-primary { + background-color: #009688; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-primary .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-primary .navbar-form input.form-control::-moz-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-primary .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-primary .navbar-form input.form-control:-ms-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-primary .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-primary .navbar-form input.form-control::-webkit-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-primary .dropdown-menu { + border-radius: 2px; +} +.navbar.navbar-primary .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar.navbar-primary .dropdown-menu li > a:hover, +.navbar.navbar-primary .dropdown-menu li > a:focus { + color: #009688; + background-color: #eeeeee; +} +.navbar.navbar-primary .dropdown-menu .active > a { + background-color: #009688; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-primary .dropdown-menu .active > a:hover, +.navbar.navbar-primary .dropdown-menu .active > a:focus { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-success { + background-color: #4caf50; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-success .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-success .navbar-form input.form-control::-moz-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-success .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-success .navbar-form input.form-control:-ms-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-success .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-success .navbar-form input.form-control::-webkit-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-success .dropdown-menu { + border-radius: 2px; +} +.navbar.navbar-success .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar.navbar-success .dropdown-menu li > a:hover, +.navbar.navbar-success .dropdown-menu li > a:focus { + color: #4caf50; + background-color: #eeeeee; +} +.navbar.navbar-success .dropdown-menu .active > a { + background-color: #4caf50; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-success .dropdown-menu .active > a:hover, +.navbar.navbar-success .dropdown-menu .active > a:focus { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-info { + background-color: #03a9f4; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-info .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-info .navbar-form input.form-control::-moz-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-info .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-info .navbar-form input.form-control:-ms-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-info .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-info .navbar-form input.form-control::-webkit-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-info .dropdown-menu { + border-radius: 2px; +} +.navbar.navbar-info .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar.navbar-info .dropdown-menu li > a:hover, +.navbar.navbar-info .dropdown-menu li > a:focus { + color: #03a9f4; + background-color: #eeeeee; +} +.navbar.navbar-info .dropdown-menu .active > a { + background-color: #03a9f4; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-info .dropdown-menu .active > a:hover, +.navbar.navbar-info .dropdown-menu .active > a:focus { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-warning { + background-color: #ff5722; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-warning .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-warning .navbar-form input.form-control::-moz-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-warning .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-warning .navbar-form input.form-control:-ms-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-warning .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-warning .navbar-form input.form-control::-webkit-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-warning .dropdown-menu { + border-radius: 2px; +} +.navbar.navbar-warning .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar.navbar-warning .dropdown-menu li > a:hover, +.navbar.navbar-warning .dropdown-menu li > a:focus { + color: #ff5722; + background-color: #eeeeee; +} +.navbar.navbar-warning .dropdown-menu .active > a { + background-color: #ff5722; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-warning .dropdown-menu .active > a:hover, +.navbar.navbar-warning .dropdown-menu .active > a:focus { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-danger { + background-color: #f44336; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-danger .navbar-form .form-group input.form-control::-moz-placeholder, +.navbar.navbar-danger .navbar-form input.form-control::-moz-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-danger .navbar-form .form-group input.form-control:-ms-input-placeholder, +.navbar.navbar-danger .navbar-form input.form-control:-ms-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-danger .navbar-form .form-group input.form-control::-webkit-input-placeholder, +.navbar.navbar-danger .navbar-form input.form-control::-webkit-input-placeholder { + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-danger .dropdown-menu { + border-radius: 2px; +} +.navbar.navbar-danger .dropdown-menu li > a { + font-size: 16px; + padding: 13px 16px; +} +.navbar.navbar-danger .dropdown-menu li > a:hover, +.navbar.navbar-danger .dropdown-menu li > a:focus { + color: #f44336; + background-color: #eeeeee; +} +.navbar.navbar-danger .dropdown-menu .active > a { + background-color: #f44336; + color: rgba(255,255,255, 0.84); +} +.navbar.navbar-danger .dropdown-menu .active > a:hover, +.navbar.navbar-danger .dropdown-menu .active > a:focus { + color: rgba(255,255,255, 0.84); +} +.navbar-inverse { + background-color: #3f51b5; +} +@media (max-width: 1199px) { + .navbar .navbar-brand { + height: 50px; + padding: 10px 15px; + } + .navbar .navbar-form { + margin-top: 10px; + } + .navbar .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.dropdown-menu { + border: 0; + -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); +} +.dropdown-menu .divider { + background-color: rgba(0, 0, 0, 0.12); +} +.dropdown-menu li { + overflow: hidden; + position: relative; +} +.dropdown-menu li a:hover { + background-color: transparent; + color: #009688; +} +.alert { + border: 0; + border-radius: 0; +} +.alert, +.alert.alert-default { + background-color: rgba(255,255,255, 0.84); + color: rgba(255,255,255, 0.84); +} +.alert a, +.alert.alert-default a, +.alert .alert-link, +.alert.alert-default .alert-link { + color: rgba(255,255,255, 0.84); +} +.alert.alert-inverse { + background-color: #3f51b5; + color: #ffffff; +} +.alert.alert-inverse a, +.alert.alert-inverse .alert-link { + color: #ffffff; +} +.alert.alert-primary { + background-color: #009688; + color: rgba(255,255,255, 0.84); +} +.alert.alert-primary a, +.alert.alert-primary .alert-link { + color: rgba(255,255,255, 0.84); +} +.alert.alert-success { + background-color: #4caf50; + color: rgba(255,255,255, 0.84); +} +.alert.alert-success a, +.alert.alert-success .alert-link { + color: rgba(255,255,255, 0.84); +} +.alert.alert-info { + background-color: #03a9f4; + color: rgba(255,255,255, 0.84); +} +.alert.alert-info a, +.alert.alert-info .alert-link { + color: rgba(255,255,255, 0.84); +} +.alert.alert-warning { + background-color: #ff5722; + color: rgba(255,255,255, 0.84); +} +.alert.alert-warning a, +.alert.alert-warning .alert-link { + color: rgba(255,255,255, 0.84); +} +.alert.alert-danger { + background-color: #f44336; + color: rgba(255,255,255, 0.84); +} +.alert.alert-danger a, +.alert.alert-danger .alert-link { + color: rgba(255,255,255, 0.84); +} +.alert-info, +.alert-danger, +.alert-warning, +.alert-success { + color: rgba(255,255,255, 0.84); +} +.alert-default a, +.alert-default .alert-link { + color: rgba(0,0,0, 0.87); +} +.progress { + height: 4px; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: #c8c8c8; +} +.progress .progress-bar { + -webkit-box-shadow: none; + box-shadow: none; +} +.progress .progress-bar, +.progress .progress-bar.progress-bar-default { + background-color: #009688; +} +.progress .progress-bar.progress-bar-inverse { + background-color: #3f51b5; +} +.progress .progress-bar.progress-bar-primary { + background-color: #009688; +} +.progress .progress-bar.progress-bar-success { + background-color: #4caf50; +} +.progress .progress-bar.progress-bar-info { + background-color: #03a9f4; +} +.progress .progress-bar.progress-bar-warning { + background-color: #ff5722; +} +.progress .progress-bar.progress-bar-danger { + background-color: #f44336; +} +.text-warning { + color: #ff5722; +} +.text-primary { + color: #009688; +} +.text-danger { + color: #f44336; +} +.text-success { + color: #4caf50; +} +.text-info { + color: #03a9f4; +} +.nav-tabs { + background: #009688; +} +.nav-tabs > li > a { + color: #FFFFFF; + border: 0; + margin: 0; +} +.nav-tabs > li > a:hover { + background-color: transparent; + border: 0; +} +.nav-tabs > li > a, +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + background-color: transparent !important; + border: 0 !important; + color: #FFFFFF !important; + font-weight: 500; +} +.nav-tabs > li.disabled > a, +.nav-tabs > li.disabled > a:hover { + color: rgba(255, 255, 255, 0.5); +} +.popover, +.tooltip-inner { + color: #ececec; + line-height: 1em; + background: rgba(101, 101, 101, 0.9); + border: none; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); +} +.tooltip, +.tooltip.in { + opacity: 1; +} +.popover .arrow, +.tooltip .arrow, +.popover .tooltip-arrow, +.tooltip .tooltip-arrow { + display: none; +} +.card { + /***** Make height equal to width (http://stackoverflow.com/a/6615994) ****/ + display: inline-block; + position: relative; + width: 100%; + /**************************************************************************/ + border-radius: 2px; + color: rgba(0,0,0, 0.87); + background: #fff; + -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} +.card .card-height-indicator { + margin-top: 100%; +} +.card .card-content { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.card .card-image { + height: 60%; + position: relative; + overflow: hidden; +} +.card .card-image img { + width: 100%; + height: 100%; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + pointer-events: none; +} +.card .card-image .card-image-headline { + position: absolute; + bottom: 16px; + left: 18px; + color: #fff; + font-size: 2em; +} +.card .card-body { + height: 30%; + padding: 18px; +} +.card .card-footer { + height: 10%; + padding: 18px; +} +.card .card-footer button, +.card .card-footer a { + margin: 0 !important; + position: relative; + bottom: 25px; + width: auto; +} +.card .card-footer button:first-child, +.card .card-footer a:first-child { + left: -15px; +} +.modal-content { + -webkit-box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); + border-radius: 2px; + border: none; +} +.modal-content .modal-header { + border-bottom: none; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 0; + padding-left: 24px; +} +.modal-content .modal-body { + padding-top: 24px; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; +} +.modal-content .modal-footer { + border-top: none; + padding: 7px; +} +.modal-content .modal-footer button { + margin: 0; + padding-left: 16px; + padding-right: 16px; + width: auto; +} +.modal-content .modal-footer button.pull-left { + padding-left: 5px; + padding-right: 5px; + position: relative; + left: -5px; +} +.modal-content .modal-footer button + button { + margin-bottom: 16px; +} +.modal-content .modal-body + .modal-footer { + padding-top: 0; +} +.modal-backdrop { + background: rgba(0, 0, 0, 0.3); +} +.panel { + border-radius: 2px; + border: 0; + -webkit-box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); +} +.panel > .panel-heading, +.panel.panel-default > .panel-heading { + background-color: #eeeeee; +} +.panel.panel-inverse > .panel-heading { + background-color: #3f51b5; +} +.panel.panel-primary > .panel-heading { + background-color: #009688; +} +.panel.panel-success > .panel-heading { + background-color: #4caf50; +} +.panel.panel-info > .panel-heading { + background-color: #03a9f4; +} +.panel.panel-warning > .panel-heading { + background-color: #ff5722; +} +.panel.panel-danger > .panel-heading { + background-color: #f44336; +} +[class*="panel-"] > .panel-heading { + color: rgba(255,255,255, 0.84); + border: 0; +} +.panel-default > .panel-heading, +.panel:not([class*="panel-"]) > .panel-heading { + color: rgba(0,0,0, 0.87); +} +.panel-footer { + background-color: #eeeeee; +} +hr.on-dark { + color: #1a1a1a; +} +hr.on-light { + color: #ffffff; +} +@media (-webkit-min-device-pixel-ratio: 0.75), (min--moz-device-pixel-ratio: 0.75), (-o-device-pixel-ratio: 3/4), (min-device-pixel-ratio: 0.75), (-o-min-device-pixel-ratio: 3/4), (min-resolution: 0.75dppx), (-webkit-min-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 5/4), (min-resolution: 120dpi) { + hr { + height: 0.75px; + } +} +@media (-webkit-min-device-pixel-ratio: 1), (min--moz-device-pixel-ratio: 1), (-o-device-pixel-ratio: 1), (min-device-pixel-ratio: 1), (-o-min-device-pixel-ratio: 1/1), (min-resolution: 1dppx), (-webkit-min-device-pixel-ratio: 1.6666666666666667), (-o-min-device-pixel-ratio: 5/3), (min-resolution: 160dpi) { + hr { + height: 1px; + } +} +@media (-webkit-min-device-pixel-ratio: 1.33), (min--moz-device-pixel-ratio: 1.33), (-o-device-pixel-ratio: 133/100), (min-device-pixel-ratio: 1.33), (-o-min-device-pixel-ratio: 133/100), (min-resolution: 1.33dppx), (-webkit-min-device-pixel-ratio: 2.21875), (-o-min-device-pixel-ratio: 71/32), (min-resolution: 213dpi) { + hr { + height: 1.333px; + } +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-device-pixel-ratio: 3/2), (min-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx), (-webkit-min-device-pixel-ratio: 2.5), (-o-min-device-pixel-ratio: 5/2), (min-resolution: 240dpi) { + hr { + height: 1.5px; + } +} +@media (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (-o-device-pixel-ratio: 2/1), (min-device-pixel-ratio: 2), (-o-min-device-pixel-ratio: 2/1), (min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 3.9583333333333335), (-o-min-device-pixel-ratio: 95/24), (min-resolution: 380dpi) { + hr { + height: 2px; + } +} +@media (-webkit-min-device-pixel-ratio: 3), (min--moz-device-pixel-ratio: 3), (-o-device-pixel-ratio: 3/1), (min-device-pixel-ratio: 3), (-o-min-device-pixel-ratio: 3/1), (min-resolution: 3dppx), (-webkit-min-device-pixel-ratio: 5), (-o-min-device-pixel-ratio: 5/1), (min-resolution: 480dpi) { + hr { + height: 3px; + } +} +@media (-webkit-min-device-pixel-ratio: 4), (min--moz-device-pixel-ratio: 4), (-o-device-pixel-ratio: 4/1), (min-device-pixel-ratio: 3), (-o-min-device-pixel-ratio: 4/1), (min-resolution: 4dppx), (-webkit-min-device-pixel-ratio: 6.666666666666667), (-o-min-device-pixel-ratio: 20/3), (min-resolution: 640dpi) { + hr { + height: 4px; + } +} +* { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + -webkit-tap-highlight-color: transparent; +} +*:focus { + outline: 0; +} +.snackbar { + background-color: #323232; + color: rgba(255,255,255, 0.84); + font-size: 14px; + border-radius: 2px; + -webkit-box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12); + height: 0; + -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; + -o-transition: -o-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; + transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; + -webkit-transform: translateY(200%); + -ms-transform: translateY(200%); + -o-transform: translateY(200%); + transform: translateY(200%); +} +.snackbar.snackbar-opened { + padding: 14px 15px; + margin-bottom: 20px; + height: auto; + -webkit-transition: -webkit-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; + -o-transition: -o-transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; + transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; + -webkit-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; +} +.snackbar.toast { + border-radius: 200px; +} +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -ms-touch-action: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-base { + width: 100%; + height: 100%; + position: relative; +} +.noUi-origin { + position: absolute; + right: 0; + top: 0; + left: 0; + bottom: 0; +} +.noUi-handle { + position: relative; + z-index: 1; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.noUi-stacking .noUi-handle { + z-index: 10; +} +.noUi-state-tap .noUi-origin { + -webkit-transition: left 0.3s, top 0.3s; + -o-transition: left 0.3s, top 0.3s; + transition: left 0.3s, top 0.3s; +} +.noUi-state-drag * { + cursor: inherit !important; +} +.noUi-horizontal { + height: 10px; +} +.noUi-handle { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + width: 12px; + height: 12px; + left: -10px; + top: -5px; + cursor: ew-resize; + border-radius: 100%; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + border: 1px solid; +} +.noUi-vertical .noUi-handle { + margin-left: 5px; + cursor: ns-resize; +} +.noUi-horizontal.noUi-extended { + padding: 0 15px; +} +.noUi-horizontal.noUi-extended .noUi-origin { + right: -15px; +} +.noUi-background { + height: 2px; + margin: 20px 0; +} +.noUi-origin { + margin: 0; + border-radius: 0; + height: 2px; + background: #c8c8c8; +} +.noUi-origin[style^="left: 0"] .noUi-handle { + background-color: #fff; + border: 2px solid #c8c8c8; +} +.noUi-origin[style^="left: 0"] .noUi-handle.noUi-active { + border-width: 1px; +} +.noUi-target { + border-radius: 2px; +} +.noUi-horizontal { + height: 2px; + margin: 15px 0; +} +.noUi-vertical { + height: 100%; + width: 2px; + margin: 0 15px; + display: inline-block; +} +.noUi-handle.noUi-active { + -webkit-transform: scale3d(2.5, 2.5, 1); + transform: scale3d(2.5, 2.5, 1); +} +[disabled].noUi-slider { + opacity: 0.5; +} +[disabled] .noUi-handle { + cursor: not-allowed; +} +.slider { + background: #c8c8c8; +} +.slider.noUi-connect, +.slider.slider-default.noUi-connect { + background-color: #009688; +} +.slider.slider-inverse.noUi-connect { + background-color: #3f51b5; +} +.slider.slider-primary.noUi-connect { + background-color: #009688; +} +.slider.slider-success.noUi-connect { + background-color: #4caf50; +} +.slider.slider-info.noUi-connect { + background-color: #03a9f4; +} +.slider.slider-warning.noUi-connect { + background-color: #ff5722; +} +.slider.slider-danger.noUi-connect { + background-color: #f44336; +} +.slider .noUi-connect, +.slider.slider-default .noUi-connect { + background-color: #009688; +} +.slider.slider-inverse .noUi-connect { + background-color: #3f51b5; +} +.slider.slider-primary .noUi-connect { + background-color: #009688; +} +.slider.slider-success .noUi-connect { + background-color: #4caf50; +} +.slider.slider-info .noUi-connect { + background-color: #03a9f4; +} +.slider.slider-warning .noUi-connect { + background-color: #ff5722; +} +.slider.slider-danger .noUi-connect { + background-color: #f44336; +} +.slider .noUi-handle, +.slider.slider-default .noUi-handle { + background-color: #009688; +} +.slider.slider-inverse .noUi-handle { + background-color: #3f51b5; +} +.slider.slider-primary .noUi-handle { + background-color: #009688; +} +.slider.slider-success .noUi-handle { + background-color: #4caf50; +} +.slider.slider-info .noUi-handle { + background-color: #03a9f4; +} +.slider.slider-warning .noUi-handle { + background-color: #ff5722; +} +.slider.slider-danger .noUi-handle { + background-color: #f44336; +} +.slider .noUi-handle, +.slider.slider-default .noUi-handle { + border-color: #009688; +} +.slider.slider-inverse .noUi-handle { + border-color: #3f51b5; +} +.slider.slider-primary .noUi-handle { + border-color: #009688; +} +.slider.slider-success .noUi-handle { + border-color: #4caf50; +} +.slider.slider-info .noUi-handle { + border-color: #03a9f4; +} +.slider.slider-warning .noUi-handle { + border-color: #ff5722; +} +.slider.slider-danger .noUi-handle { + border-color: #f44336; +} +.selectize-control.single, +.selectize-control.multi { + padding: 0; +} +.selectize-control.single .selectize-input, +.selectize-control.multi .selectize-input, +.selectize-control.single .selectize-input.input-active, +.selectize-control.multi .selectize-input.input-active { + cursor: text; + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + border: 0; + padding: 0; + height: 100%; + font-size: 14px; + line-height: 30px; +} +.selectize-control.single .selectize-input .has-items, +.selectize-control.multi .selectize-input .has-items, +.selectize-control.single .selectize-input.input-active .has-items, +.selectize-control.multi .selectize-input.input-active .has-items { + padding: 0; +} +.selectize-control.single .selectize-input:after, +.selectize-control.multi .selectize-input:after, +.selectize-control.single .selectize-input.input-active:after, +.selectize-control.multi .selectize-input.input-active:after { + right: 5px; + position: absolute; + font-size: 25px; + content: "\e5c5"; + font-family: 'Material Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.selectize-control.single .selectize-input input, +.selectize-control.multi .selectize-input input, +.selectize-control.single .selectize-input.input-active input, +.selectize-control.multi .selectize-input.input-active input { + font-size: 14px; + outline: 0; + border: 0; + background: transparent; +} +.selectize-control.single .selectize-input.label-floating-fix input, +.selectize-control.multi .selectize-input.label-floating-fix input, +.selectize-control.single .selectize-input.input-active.label-floating-fix input, +.selectize-control.multi .selectize-input.input-active.label-floating-fix input { + opacity: 0; +} +.selectize-control.single .selectize-input > div, +.selectize-control.multi .selectize-input > div, +.selectize-control.single .selectize-input.input-active > div, +.selectize-control.multi .selectize-input.input-active > div, +.selectize-control.single .selectize-input > .item, +.selectize-control.multi .selectize-input > .item, +.selectize-control.single .selectize-input.input-active > .item, +.selectize-control.multi .selectize-input.input-active > .item { + display: inline-block; + margin: 0 8px 3px 0; + padding: 0; + background: transparent; + border: 0; +} +.selectize-control.single .selectize-input > div:after, +.selectize-control.multi .selectize-input > div:after, +.selectize-control.single .selectize-input.input-active > div:after, +.selectize-control.multi .selectize-input.input-active > div:after, +.selectize-control.single .selectize-input > .item:after, +.selectize-control.multi .selectize-input > .item:after, +.selectize-control.single .selectize-input.input-active > .item:after, +.selectize-control.multi .selectize-input.input-active > .item:after { + content: ","; +} +.selectize-control.single .selectize-input > div:last-of-type:after, +.selectize-control.multi .selectize-input > div:last-of-type:after, +.selectize-control.single .selectize-input.input-active > div:last-of-type:after, +.selectize-control.multi .selectize-input.input-active > div:last-of-type:after, +.selectize-control.single .selectize-input > .item:last-of-type:after, +.selectize-control.multi .selectize-input > .item:last-of-type:after, +.selectize-control.single .selectize-input.input-active > .item:last-of-type:after, +.selectize-control.multi .selectize-input.input-active > .item:last-of-type:after { + content: ""; +} +.selectize-control.single .selectize-input > div.active, +.selectize-control.multi .selectize-input > div.active, +.selectize-control.single .selectize-input.input-active > div.active, +.selectize-control.multi .selectize-input.input-active > div.active, +.selectize-control.single .selectize-input > .item.active, +.selectize-control.multi .selectize-input > .item.active, +.selectize-control.single .selectize-input.input-active > .item.active, +.selectize-control.multi .selectize-input.input-active > .item.active { + font-weight: bold; + background: transparent; + border: 0; +} +.selectize-control.single .selectize-dropdown, +.selectize-control.multi .selectize-dropdown { + position: absolute; + z-index: 1000; + border: 0; + width: 100% !important; + left: 0 !important; + height: auto; + background-color: #FFF; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + border-radius: 2px; + padding: 0; + margin-top: 3px; +} +.selectize-control.single .selectize-dropdown .active, +.selectize-control.multi .selectize-dropdown .active { + background-color: inherit; +} +.selectize-control.single .selectize-dropdown .highlight, +.selectize-control.multi .selectize-dropdown .highlight { + background-color: #d5d8ff; +} +.selectize-control.single .selectize-dropdown .selected, +.selectize-control.multi .selectize-dropdown .selected, +.selectize-control.single .selectize-dropdown .selected.active, +.selectize-control.multi .selectize-dropdown .selected.active { + background-color: #EEEEEE; +} +.selectize-control.single .selectize-dropdown [data-selectable], +.selectize-control.multi .selectize-dropdown [data-selectable], +.selectize-control.single .selectize-dropdown .optgroup-header, +.selectize-control.multi .selectize-dropdown .optgroup-header { + padding: 10px 20px; + cursor: pointer; +} +.selectize-control.single .dropdown-active ~ .selectize-dropdown, +.selectize-control.multi .dropdown-active ~ .selectize-dropdown { + display: block; +} +.dropdownjs::after { + right: 5px; + top: 3px; + font-size: 25px; + position: absolute; + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + content: "\e5c5"; + pointer-events: none; + color: #757575; +} +/*# sourceMappingURL=bootstrap-material-design.css.map */ \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css.map b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css.map new file mode 100644 index 00000000..a93d0d21 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-material-design.css","/less/_core.less","/less/_form.less","/less/_welljumbo.less","/less/_shadows.less","/less/_mixins.less","/less/_buttons.less","/less/_checkboxes.less","/less/_togglebutton.less","/less/_radios.less","/less/_inputs-size.less","/less/_inputs.less","/less/_lists.less","/less/_navbar.less","/less/_alerts.less","/less/_progress.less","/less/_typography.less","/less/_tabs.less","/less/_popups.less","/less/_cards.less","/less/_dialogs.less","/less/_panels.less","/less/_dividers.less","/less/plugins/_plugin-snackbarjs.less","/less/plugins/_plugin-nouislider.less","/less/plugins/_plugin-selectize.less","/less/plugins/_plugin-dropdownjs.less"],"names":[],"mappings":"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E,+BAAA;Cb63DT;AK1hEC;EQsIE,0BAAA;EACA,eAAA;Cbu5DH;AKllEC;;EQgMM,eAAA;Cbs5DP;AKrlEC;;EQ+LM,eAAA;Cb05DP;AKxlEC;;EQ8LM,eAAA;Cb85DP;AK1iEC;EQgJI,mBAAA;Cb65DL;AK7iEC;EQkJM,gBAAA;EACA,mBAAA;Cb85DP;Aa75DO;;EAEE,eAAA;EACA,0BAAA;Cb+5DT;AKtjEC;EQ+JM,0BAAA;EACA,eAAA;Cb05DP;Aa/5DO;;EAEE,eAAA;Cbi6DT;AKxjEC;EQgIE,0BAAA;EACA,+BAAA;Cb27DH;AKtnEC;;EQgMM,+BAAA;Cb07DP;AKznEC;;EQ+LM,+BAAA;Cb87DP;AK5nEC;;EQ8LM,+BAAA;Cbk8DP;AKxkEC;EQ0II,mBAAA;Cbi8DL;AK3kEC;EQ4IM,gBAAA;EACA,mBAAA;Cbk8DP;Aaj8DO;;EAEE,eAAA;EACA,0BAAA;Cbm8DT;AKplEC;EQyJM,0BAAA;EACA,+BAAA;Cb87DP;Aan8DO;;EAEE,+BAAA;Cbq8DT;AKvlEC;EQ2HE,0BAAA;EACA,+BAAA;Cb+9DH;AK1pEC;;EQgMM,+BAAA;Cb89DP;AK7pEC;;EQ+LM,+BAAA;Cbk+DP;AKhqEC;;EQ8LM,+BAAA;Cbs+DP;AKvmEC;EQqII,mBAAA;Cbq+DL;AK1mEC;EQuIM,gBAAA;EACA,mBAAA;Cbs+DP;Aar+DO;;EAEE,eAAA;EACA,0BAAA;Cbu+DT;AKnnEC;EQoJM,0BAAA;EACA,+BAAA;Cbk+DP;Aav+DO;;EAEE,+BAAA;Cby+DT;AKtnEC;EQsHE,0BAAA;EACA,+BAAA;CbmgEH;AK9rEC;;EQgMM,+BAAA;CbkgEP;AKjsEC;;EQ+LM,+BAAA;CbsgEP;AKpsEC;;EQ8LM,+BAAA;Cb0gEP;AKtoEC;EQgII,mBAAA;CbygEL;AKzoEC;EQkIM,gBAAA;EACA,mBAAA;Cb0gEP;AazgEO;;EAEE,eAAA;EACA,0BAAA;Cb2gET;AKlpEC;EQ+IM,0BAAA;EACA,+BAAA;CbsgEP;Aa3gEO;;EAEE,+BAAA;Cb6gET;AKrpEC;EQiHE,0BAAA;EACA,+BAAA;CbuiEH;AKluEC;;EQgMM,+BAAA;CbsiEP;AKruEC;;EQ+LM,+BAAA;Cb0iEP;AKxuEC;;EQ8LM,+BAAA;Cb8iEP;AKrqEC;EQ2HI,mBAAA;Cb6iEL;AKxqEC;EQ6HM,gBAAA;EACA,mBAAA;Cb8iEP;Aa7iEO;;EAEE,eAAA;EACA,0BAAA;Cb+iET;AKjrEC;EQ0IM,0BAAA;EACA,+BAAA;Cb0iEP;Aa/iEO;;EAEE,+BAAA;CbijET;AKprEC;EQ4GE,0BAAA;EACA,+BAAA;Cb2kEH;AKtwEC;;EQgMM,+BAAA;Cb0kEP;AKzwEC;;EQ+LM,+BAAA;Cb8kEP;AK5wEC;;EQ8LM,+BAAA;CbklEP;AKpsEC;EQsHI,mBAAA;CbilEL;AKvsEC;EQwHM,gBAAA;EACA,mBAAA;CbklEP;AajlEO;;EAEE,eAAA;EACA,0BAAA;CbmlET;AKhtEC;EQqIM,0BAAA;EACA,+BAAA;Cb8kEP;AanlEO;;EAEE,+BAAA;CbqlET;Aa7kEC;EACE,0BAAA;Cb+kEH;Aa7jED;EACA;IAbM,aAAA;IACA,mBAAA;Gb6kEH;EajkEH;IATM,iBAAA;Gb6kEH;EapkEH;IALM,kBAAA;IACA,qBAAA;Gb4kEH;CACF;ACnwED;EACE,UAAA;EACA,oDAAA;UAAA,4CAAA;CDqwED;ACvwED;EAII,sCAAA;CDswEH;AC1wED;EAOI,iBAAA;EACA,mBAAA;CDswEH;AC9wED;EAUM,8BAAA;EACA,eAAA;CDuwEL;Acv0ED;EACI,UAAA;EACA,iBAAA;Cdy0EH;AK3xEC;;ES1CM,0CAAA;EACA,+BAAA;Cdy0EP;AKhyEC;;;;EStCU,+BAAA;Cd40EX;AKhyEC;EShDM,0BAAA;EACA,eAAA;Cdm1EP;AKpyEC;;ES5CU,eAAA;Cdo1EX;AKlyEC;EStDM,0BAAA;EACA,+BAAA;Cd21EP;AKtyEC;;ESlDU,+BAAA;Cd41EX;AKryEC;ES3DM,0BAAA;EACA,+BAAA;Cdm2EP;AKzyEC;;ESvDU,+BAAA;Cdo2EX;AKxyEC;EShEM,0BAAA;EACA,+BAAA;Cd22EP;AK5yEC;;ES5DU,+BAAA;Cd42EX;AK3yEC;ESrEM,0BAAA;EACA,+BAAA;Cdm3EP;AK/yEC;;ESjEU,+BAAA;Cdo3EX;AK9yEC;ES1EM,0BAAA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","file":"bootstrap-material-design.css"} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css new file mode 100644 index 00000000..1e72e8f7 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css @@ -0,0 +1,2 @@ +body{background-color:#EEE}body.inverse{background:#333}body.inverse,body.inverse .form-control{color:rgba(255,255,255,.84)}body.inverse .card,body.inverse .card .form-control,body.inverse .modal,body.inverse .modal .form-control,body.inverse .panel-default,body.inverse .panel-default .form-control{background-color:initial;color:initial}.h1,.h2,.h3,.h4,body,h1,h2,h3,h4,h5,h6{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:300}h5,h6{font-weight:400}a,a:focus,a:hover{color:#009688}a .material-icons,a:focus .material-icons,a:hover .material-icons{vertical-align:middle}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:0}.form-horizontal .radio{margin-bottom:10px}.form-horizontal label{text-align:right}.form-horizontal label.control-label{margin:0}body .container .well.well-sm,body .container-fluid .well.well-sm{padding:10px}body .container .well.well-lg,body .container-fluid .well.well-lg{padding:26px}body .container .jumbotron,body .container .well,body .container-fluid .jumbotron,body .container-fluid .well{background-color:#fff;padding:19px;margin-bottom:20px;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:2px;border:0}body .container .jumbotron p,body .container .well p,body .container-fluid .jumbotron p,body .container-fluid .well p{font-weight:300}body .container .jumbotron,body .container .jumbotron-default,body .container .well,body .container .well-default,body .container-fluid .jumbotron,body .container-fluid .jumbotron-default,body .container-fluid .well,body .container-fluid .well-default{background-color:#fff}body .container .jumbotron-inverse,body .container .well-inverse,body .container-fluid .jumbotron-inverse,body .container-fluid .well-inverse{background-color:#3f51b5}body .container .jumbotron-primary,body .container .well-primary,body .container-fluid .jumbotron-primary,body .container-fluid .well-primary{background-color:#009688}body .container .jumbotron-success,body .container .well-success,body .container-fluid .jumbotron-success,body .container-fluid .well-success{background-color:#4caf50}body .container .jumbotron-info,body .container .well-info,body .container-fluid .jumbotron-info,body .container-fluid .well-info{background-color:#03a9f4}body .container .jumbotron-warning,body .container .well-warning,body .container-fluid .jumbotron-warning,body .container-fluid .well-warning{background-color:#ff5722}body .container .jumbotron-danger,body .container .well-danger,body .container-fluid .jumbotron-danger,body .container-fluid .well-danger{background-color:#f44336}.btn,.input-group-btn .btn{border:none;border-radius:2px;position:relative;padding:8px 30px;margin:10px 1px;font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:0;will-change:box-shadow,transform;-webkit-transition:-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);-o-transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);outline:0;cursor:pointer;text-decoration:none;background:0 0}.btn::-moz-focus-inner,.input-group-btn .btn::-moz-focus-inner{border:0}.btn:not(.btn-raised),.input-group-btn .btn:not(.btn-raised){-webkit-box-shadow:none;box-shadow:none}.btn:not(.btn-raised),.btn:not(.btn-raised).btn-default,.input-group-btn .btn:not(.btn-raised),.input-group-btn .btn:not(.btn-raised).btn-default{color:rgba(0,0,0,.87)}.btn:not(.btn-raised).btn-inverse,.input-group-btn .btn:not(.btn-raised).btn-inverse{color:#3f51b5}.btn:not(.btn-raised).btn-primary,.input-group-btn .btn:not(.btn-raised).btn-primary{color:#009688}.btn:not(.btn-raised).btn-success,.input-group-btn .btn:not(.btn-raised).btn-success{color:#4caf50}.btn:not(.btn-raised).btn-info,.input-group-btn .btn:not(.btn-raised).btn-info{color:#03a9f4}.btn:not(.btn-raised).btn-warning,.input-group-btn .btn:not(.btn-raised).btn-warning{color:#ff5722}.btn:not(.btn-raised).btn-danger,.input-group-btn .btn:not(.btn-raised).btn-danger{color:#f44336}.btn:not(.btn-raised):not(.btn-link):focus,.btn:not(.btn-raised):not(.btn-link):hover,.input-group-btn .btn:not(.btn-raised):not(.btn-link):focus,.input-group-btn .btn:not(.btn-raised):not(.btn-link):hover{background-color:rgba(153,153,153,.2)}.theme-dark .btn:not(.btn-raised):not(.btn-link):focus,.theme-dark .btn:not(.btn-raised):not(.btn-link):hover,.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):focus,.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):hover{background-color:rgba(204,204,204,.15)}.btn-group-raised .btn,.btn-group-raised .btn.btn-default,.btn-group-raised .input-group-btn .btn,.btn-group-raised .input-group-btn .btn.btn-default,.btn.btn-fab,.btn.btn-fab.btn-default,.btn.btn-raised,.btn.btn-raised.btn-default,.input-group-btn .btn.btn-fab,.input-group-btn .btn.btn-fab.btn-default,.input-group-btn .btn.btn-raised,.input-group-btn .btn.btn-raised.btn-default{background-color:#EEE;color:rgba(0,0,0,.87)}.btn-group-raised .btn.btn-inverse,.btn-group-raised .input-group-btn .btn.btn-inverse,.btn.btn-fab.btn-inverse,.btn.btn-raised.btn-inverse,.input-group-btn .btn.btn-fab.btn-inverse,.input-group-btn .btn.btn-raised.btn-inverse{background-color:#3f51b5;color:#fff}.btn-group-raised .btn.btn-primary,.btn-group-raised .input-group-btn .btn.btn-primary,.btn.btn-fab.btn-primary,.btn.btn-raised.btn-primary,.input-group-btn .btn.btn-fab.btn-primary,.input-group-btn .btn.btn-raised.btn-primary{background-color:#009688;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-success,.btn-group-raised .input-group-btn .btn.btn-success,.btn.btn-fab.btn-success,.btn.btn-raised.btn-success,.input-group-btn .btn.btn-fab.btn-success,.input-group-btn .btn.btn-raised.btn-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-info,.btn-group-raised .input-group-btn .btn.btn-info,.btn.btn-fab.btn-info,.btn.btn-raised.btn-info,.input-group-btn .btn.btn-fab.btn-info,.input-group-btn .btn.btn-raised.btn-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-warning,.btn-group-raised .input-group-btn .btn.btn-warning,.btn.btn-fab.btn-warning,.btn.btn-raised.btn-warning,.input-group-btn .btn.btn-fab.btn-warning,.input-group-btn .btn.btn-raised.btn-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-danger,.btn-group-raised .input-group-btn .btn.btn-danger,.btn.btn-fab.btn-danger,.btn.btn-raised.btn-danger,.input-group-btn .btn.btn-fab.btn-danger,.input-group-btn .btn.btn-raised.btn-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.btn-group-raised .btn:not(.btn-link),.btn-group-raised .input-group-btn .btn:not(.btn-link),.btn.btn-raised:not(.btn-link),.input-group-btn .btn.btn-raised:not(.btn-link){-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):hover,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):hover,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):hover{outline:0}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link).active.btn-default,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):active.btn-default,.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):focus.btn-default,.btn-group-raised .btn:not(.btn-link):hover,.btn-group-raised .btn:not(.btn-link):hover.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-default,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link).active.btn-default,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):active.btn-default,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):focus.btn-default,.btn.btn-raised:not(.btn-link):hover,.btn.btn-raised:not(.btn-link):hover.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):hover,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-default{background-color:#e4e4e4}.btn-group-raised .btn:not(.btn-link).active.btn-inverse,.btn-group-raised .btn:not(.btn-link):active.btn-inverse,.btn-group-raised .btn:not(.btn-link):focus.btn-inverse,.btn-group-raised .btn:not(.btn-link):hover.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-inverse,.btn.btn-raised:not(.btn-link).active.btn-inverse,.btn.btn-raised:not(.btn-link):active.btn-inverse,.btn.btn-raised:not(.btn-link):focus.btn-inverse,.btn.btn-raised:not(.btn-link):hover.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-inverse{background-color:#495bc0}.btn-group-raised .btn:not(.btn-link).active.btn-primary,.btn-group-raised .btn:not(.btn-link):active.btn-primary,.btn-group-raised .btn:not(.btn-link):focus.btn-primary,.btn-group-raised .btn:not(.btn-link):hover.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-primary,.btn.btn-raised:not(.btn-link).active.btn-primary,.btn.btn-raised:not(.btn-link):active.btn-primary,.btn.btn-raised:not(.btn-link):focus.btn-primary,.btn.btn-raised:not(.btn-link):hover.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-primary{background-color:#00aa9a}.btn-group-raised .btn:not(.btn-link).active.btn-success,.btn-group-raised .btn:not(.btn-link):active.btn-success,.btn-group-raised .btn:not(.btn-link):focus.btn-success,.btn-group-raised .btn:not(.btn-link):hover.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-success,.btn.btn-raised:not(.btn-link).active.btn-success,.btn.btn-raised:not(.btn-link):active.btn-success,.btn.btn-raised:not(.btn-link):focus.btn-success,.btn.btn-raised:not(.btn-link):hover.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-success{background-color:#59b75c}.btn-group-raised .btn:not(.btn-link).active.btn-info,.btn-group-raised .btn:not(.btn-link):active.btn-info,.btn-group-raised .btn:not(.btn-link):focus.btn-info,.btn-group-raised .btn:not(.btn-link):hover.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-info,.btn.btn-raised:not(.btn-link).active.btn-info,.btn.btn-raised:not(.btn-link):active.btn-info,.btn.btn-raised:not(.btn-link):focus.btn-info,.btn.btn-raised:not(.btn-link):hover.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-info{background-color:#0fb2fc}.btn-group-raised .btn:not(.btn-link).active.btn-warning,.btn-group-raised .btn:not(.btn-link):active.btn-warning,.btn-group-raised .btn:not(.btn-link):focus.btn-warning,.btn-group-raised .btn:not(.btn-link):hover.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-warning,.btn.btn-raised:not(.btn-link).active.btn-warning,.btn.btn-raised:not(.btn-link):active.btn-warning,.btn.btn-raised:not(.btn-link):focus.btn-warning,.btn.btn-raised:not(.btn-link):hover.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-warning{background-color:#ff6736}.btn-group-raised .btn:not(.btn-link).active.btn-danger,.btn-group-raised .btn:not(.btn-link):active.btn-danger,.btn-group-raised .btn:not(.btn-link):focus.btn-danger,.btn-group-raised .btn:not(.btn-link):hover.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-danger,.btn.btn-raised:not(.btn-link).active.btn-danger,.btn.btn-raised:not(.btn-link):active.btn-danger,.btn.btn-raised:not(.btn-link):focus.btn-danger,.btn.btn-raised:not(.btn-link):hover.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-danger{background-color:#f55549}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link).active:hover,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link).active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active:hover,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link).active:hover,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):active:hover,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link).active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):active:hover{-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):focus.active,.btn-group-raised .btn:not(.btn-link):focus.active:hover,.btn-group-raised .btn:not(.btn-link):focus:active,.btn-group-raised .btn:not(.btn-link):focus:active:hover,.btn-group-raised .btn:not(.btn-link):focus:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:hover,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):focus.active,.btn.btn-raised:not(.btn-link):focus.active:hover,.btn.btn-raised:not(.btn-link):focus:active,.btn.btn-raised:not(.btn-link):focus:active:hover,.btn.btn-raised:not(.btn-link):focus:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):focus.active,.input-group-btn .btn.btn-raised:not(.btn-link):focus.active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus:active,.input-group-btn .btn.btn-raised:not(.btn-link):focus:active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus:hover{-webkit-box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36)}.btn.btn-fab,.input-group-btn .btn.btn-fab{border-radius:50%;font-size:24px;height:56px;margin:auto;min-width:56px;width:56px;padding:0;overflow:hidden;-webkit-box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);position:relative;line-height:normal}.btn.btn-fab .ripple-container,.input-group-btn .btn.btn-fab .ripple-container{border-radius:50%}.btn-group-sm .btn.btn-fab,.btn-group-sm .input-group-btn .btn.btn-fab,.btn.btn-fab.btn-fab-mini,.input-group-btn .btn.btn-fab.btn-fab-mini{height:40px;min-width:40px;width:40px}.btn-group-sm .btn.btn-fab.material-icons,.btn-group-sm .input-group-btn .btn.btn-fab.material-icons,.btn.btn-fab.btn-fab-mini.material-icons,.input-group-btn .btn.btn-fab.btn-fab-mini.material-icons{top:0;left:0}.btn.btn-fab i.material-icons,.input-group-btn .btn.btn-fab i.material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);-ms-transform:translate(-12px,-12px);-o-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.btn i.material-icons,.input-group-btn .btn i.material-icons{vertical-align:middle}.btn-group-lg .btn,.btn-group-lg .input-group-btn .btn,.btn.btn-lg,.input-group-btn .btn.btn-lg{font-size:16px}.btn-group-sm .btn,.btn-group-sm .input-group-btn .btn,.btn.btn-sm,.input-group-btn .btn.btn-sm{padding:5px 20px;font-size:12px}.btn-group-xs .btn,.btn-group-xs .input-group-btn .btn,.btn.btn-xs,.input-group-btn .btn.btn-xs{padding:4px 15px;font-size:10px}.btn-group-vertical.disabled,.btn-group-vertical:disabled,.btn-group-vertical[disabled][disabled],.btn-group.disabled,.btn-group:disabled,.btn-group[disabled][disabled],.btn.disabled,.btn:disabled,.btn[disabled][disabled],.input-group-btn .btn.disabled,.input-group-btn .btn:disabled,.input-group-btn .btn[disabled][disabled],fieldset[disabled][disabled] .btn,fieldset[disabled][disabled] .btn-group,fieldset[disabled][disabled] .btn-group-vertical,fieldset[disabled][disabled] .input-group-btn .btn{color:rgba(0,0,0,.26);background:0 0}.theme-dark .btn-group-vertical.disabled,.theme-dark .btn-group-vertical:disabled,.theme-dark .btn-group-vertical[disabled][disabled],.theme-dark .btn-group.disabled,.theme-dark .btn-group:disabled,.theme-dark .btn-group[disabled][disabled],.theme-dark .btn.disabled,.theme-dark .btn:disabled,.theme-dark .btn[disabled][disabled],.theme-dark .input-group-btn .btn.disabled,.theme-dark .input-group-btn .btn:disabled,.theme-dark .input-group-btn .btn[disabled][disabled],.theme-dark fieldset[disabled][disabled] .btn,.theme-dark fieldset[disabled][disabled] .btn-group,.theme-dark fieldset[disabled][disabled] .btn-group-vertical,.theme-dark fieldset[disabled][disabled] .input-group-btn .btn{color:rgba(255,255,255,.3)}.btn-group-vertical.disabled.btn-group-raised,.btn-group-vertical.disabled.btn-group-raised.active,.btn-group-vertical.disabled.btn-group-raised:active,.btn-group-vertical.disabled.btn-group-raised:focus:not(:active),.btn-group-vertical.disabled.btn-raised,.btn-group-vertical.disabled.btn-raised.active,.btn-group-vertical.disabled.btn-raised:active,.btn-group-vertical.disabled.btn-raised:focus:not(:active),.btn-group-vertical:disabled.btn-group-raised,.btn-group-vertical:disabled.btn-group-raised.active,.btn-group-vertical:disabled.btn-group-raised:active,.btn-group-vertical:disabled.btn-group-raised:focus:not(:active),.btn-group-vertical:disabled.btn-raised,.btn-group-vertical:disabled.btn-raised.active,.btn-group-vertical:disabled.btn-raised:active,.btn-group-vertical:disabled.btn-raised:focus:not(:active),.btn-group-vertical[disabled][disabled].btn-group-raised,.btn-group-vertical[disabled][disabled].btn-group-raised.active,.btn-group-vertical[disabled][disabled].btn-group-raised:active,.btn-group-vertical[disabled][disabled].btn-group-raised:focus:not(:active),.btn-group-vertical[disabled][disabled].btn-raised,.btn-group-vertical[disabled][disabled].btn-raised.active,.btn-group-vertical[disabled][disabled].btn-raised:active,.btn-group-vertical[disabled][disabled].btn-raised:focus:not(:active),.btn-group.disabled.btn-group-raised,.btn-group.disabled.btn-group-raised.active,.btn-group.disabled.btn-group-raised:active,.btn-group.disabled.btn-group-raised:focus:not(:active),.btn-group.disabled.btn-raised,.btn-group.disabled.btn-raised.active,.btn-group.disabled.btn-raised:active,.btn-group.disabled.btn-raised:focus:not(:active),.btn-group:disabled.btn-group-raised,.btn-group:disabled.btn-group-raised.active,.btn-group:disabled.btn-group-raised:active,.btn-group:disabled.btn-group-raised:focus:not(:active),.btn-group:disabled.btn-raised,.btn-group:disabled.btn-raised.active,.btn-group:disabled.btn-raised:active,.btn-group:disabled.btn-raised:focus:not(:active),.btn-group[disabled][disabled].btn-group-raised,.btn-group[disabled][disabled].btn-group-raised.active,.btn-group[disabled][disabled].btn-group-raised:active,.btn-group[disabled][disabled].btn-group-raised:focus:not(:active),.btn-group[disabled][disabled].btn-raised,.btn-group[disabled][disabled].btn-raised.active,.btn-group[disabled][disabled].btn-raised:active,.btn-group[disabled][disabled].btn-raised:focus:not(:active),.btn.disabled.btn-group-raised,.btn.disabled.btn-group-raised.active,.btn.disabled.btn-group-raised:active,.btn.disabled.btn-group-raised:focus:not(:active),.btn.disabled.btn-raised,.btn.disabled.btn-raised.active,.btn.disabled.btn-raised:active,.btn.disabled.btn-raised:focus:not(:active),.btn:disabled.btn-group-raised,.btn:disabled.btn-group-raised.active,.btn:disabled.btn-group-raised:active,.btn:disabled.btn-group-raised:focus:not(:active),.btn:disabled.btn-raised,.btn:disabled.btn-raised.active,.btn:disabled.btn-raised:active,.btn:disabled.btn-raised:focus:not(:active),.btn[disabled][disabled].btn-group-raised,.btn[disabled][disabled].btn-group-raised.active,.btn[disabled][disabled].btn-group-raised:active,.btn[disabled][disabled].btn-group-raised:focus:not(:active),.btn[disabled][disabled].btn-raised,.btn[disabled][disabled].btn-raised.active,.btn[disabled][disabled].btn-raised:active,.btn[disabled][disabled].btn-raised:focus:not(:active),.input-group-btn .btn.disabled.btn-group-raised,.input-group-btn .btn.disabled.btn-group-raised.active,.input-group-btn .btn.disabled.btn-group-raised:active,.input-group-btn .btn.disabled.btn-group-raised:focus:not(:active),.input-group-btn .btn.disabled.btn-raised,.input-group-btn .btn.disabled.btn-raised.active,.input-group-btn .btn.disabled.btn-raised:active,.input-group-btn .btn.disabled.btn-raised:focus:not(:active),.input-group-btn .btn:disabled.btn-group-raised,.input-group-btn .btn:disabled.btn-group-raised.active,.input-group-btn .btn:disabled.btn-group-raised:active,.input-group-btn .btn:disabled.btn-group-raised:focus:not(:active),.input-group-btn .btn:disabled.btn-raised,.input-group-btn .btn:disabled.btn-raised.active,.input-group-btn .btn:disabled.btn-raised:active,.input-group-btn .btn:disabled.btn-raised:focus:not(:active),.input-group-btn .btn[disabled][disabled].btn-group-raised,.input-group-btn .btn[disabled][disabled].btn-group-raised.active,.input-group-btn .btn[disabled][disabled].btn-group-raised:active,.input-group-btn .btn[disabled][disabled].btn-group-raised:focus:not(:active),.input-group-btn .btn[disabled][disabled].btn-raised,.input-group-btn .btn[disabled][disabled].btn-raised.active,.input-group-btn .btn[disabled][disabled].btn-raised:active,.input-group-btn .btn[disabled][disabled].btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised.active,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:active,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group-vertical.btn-raised,fieldset[disabled][disabled] .btn-group-vertical.btn-raised.active,fieldset[disabled][disabled] .btn-group-vertical.btn-raised:active,fieldset[disabled][disabled] .btn-group-vertical.btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group.btn-group-raised,fieldset[disabled][disabled] .btn-group.btn-group-raised.active,fieldset[disabled][disabled] .btn-group.btn-group-raised:active,fieldset[disabled][disabled] .btn-group.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group.btn-raised,fieldset[disabled][disabled] .btn-group.btn-raised.active,fieldset[disabled][disabled] .btn-group.btn-raised:active,fieldset[disabled][disabled] .btn-group.btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn.btn-group-raised,fieldset[disabled][disabled] .btn.btn-group-raised.active,fieldset[disabled][disabled] .btn.btn-group-raised:active,fieldset[disabled][disabled] .btn.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn.btn-raised,fieldset[disabled][disabled] .btn.btn-raised.active,fieldset[disabled][disabled] .btn.btn-raised:active,fieldset[disabled][disabled] .btn.btn-raised:focus:not(:active),fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised.active,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:active,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .input-group-btn .btn.btn-raised,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised.active,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:active,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:focus:not(:active){-webkit-box-shadow:none;box-shadow:none}.btn-group,.btn-group-vertical{position:relative;margin:10px 1px}.btn-group-vertical.open>.dropdown-toggle.btn,.btn-group-vertical.open>.dropdown-toggle.btn.btn-default,.btn-group.open>.dropdown-toggle.btn,.btn-group.open>.dropdown-toggle.btn.btn-default{background-color:#EEE}.btn-group-vertical.open>.dropdown-toggle.btn.btn-inverse,.btn-group.open>.dropdown-toggle.btn.btn-inverse{background-color:#3f51b5}.btn-group-vertical.open>.dropdown-toggle.btn.btn-primary,.btn-group.open>.dropdown-toggle.btn.btn-primary{background-color:#009688}.btn-group-vertical.open>.dropdown-toggle.btn.btn-success,.btn-group.open>.dropdown-toggle.btn.btn-success{background-color:#4caf50}.btn-group-vertical.open>.dropdown-toggle.btn.btn-info,.btn-group.open>.dropdown-toggle.btn.btn-info{background-color:#03a9f4}.btn-group-vertical.open>.dropdown-toggle.btn.btn-warning,.btn-group.open>.dropdown-toggle.btn.btn-warning{background-color:#ff5722}.btn-group-vertical.open>.dropdown-toggle.btn.btn-danger,.btn-group.open>.dropdown-toggle.btn.btn-danger{background-color:#f44336}.btn-group .dropdown-menu,.btn-group-vertical .dropdown-menu{border-radius:0 0 2px 2px}.btn-group-vertical.btn-group-raised,.btn-group.btn-group-raised{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.btn-group .btn,.btn-group .btn+.btn,.btn-group .btn-group,.btn-group .btn:active,.btn-group-vertical .btn,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn-group,.btn-group-vertical .btn:active{margin:0}.checkbox label,label.checkbox-inline{cursor:pointer;padding-left:0;color:rgba(0,0,0,.26)}.form-group.is-focused .checkbox label,.form-group.is-focused label.checkbox-inline{color:rgba(0,0,0,.26)}.form-group.is-focused .checkbox label:focus,.form-group.is-focused .checkbox label:hover,.form-group.is-focused label.checkbox-inline:focus,.form-group.is-focused label.checkbox-inline:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .checkbox label,fieldset[disabled] .form-group.is-focused label.checkbox-inline{color:rgba(0,0,0,.26)}.checkbox input[type=checkbox],label.checkbox-inline input[type=checkbox]{opacity:0;position:absolute;margin:0;z-index:-1;width:0;height:0;overflow:hidden;left:0;pointer-events:none}.checkbox .checkbox-material,label.checkbox-inline .checkbox-material{vertical-align:middle;position:relative;top:3px}.checkbox .checkbox-material:before,label.checkbox-inline .checkbox-material:before{display:block;position:absolute;top:-5px;left:0;content:"";background-color:rgba(0,0,0,.84);height:20px;width:20px;border-radius:100%;z-index:1;opacity:0;margin:0;-webkit-transform:scale3d(2.3,2.3,1);transform:scale3d(2.3,2.3,1)}.checkbox .checkbox-material .check,label.checkbox-inline .checkbox-material .check{position:relative;display:inline-block;width:20px;height:20px;border:2px solid rgba(0,0,0,.54);border-radius:2px;overflow:hidden;z-index:1}.checkbox .checkbox-material .check:before,label.checkbox-inline .checkbox-material .check:before{position:absolute;content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);display:block;margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}.checkbox input[type=checkbox]:focus+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox]:focus+.checkbox-material .check:after{opacity:.2}.checkbox input[type=checkbox]:focus:checked+.checkbox-material:before,label.checkbox-inline input[type=checkbox]:focus:checked+.checkbox-material:before{-webkit-animation:rippleOn .5s;-o-animation:rippleOn .5s;animation:rippleOn .5s}.checkbox input[type=checkbox]:focus:checked+.checkbox-material .check:before,label.checkbox-inline input[type=checkbox]:focus:checked+.checkbox-material .check:before{-webkit-animation:checkbox-on .3s forwards;-o-animation:checkbox-on .3s forwards;animation:checkbox-on .3s forwards}.checkbox input[type=checkbox]:focus:checked+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox]:focus:checked+.checkbox-material .check:after{-webkit-animation:rippleOn .5s forwards;-o-animation:rippleOn .5s forwards;animation:rippleOn .5s forwards}.checkbox input[type=checkbox]:focus:not(:checked)+.checkbox-material:before,label.checkbox-inline input[type=checkbox]:focus:not(:checked)+.checkbox-material:before{-webkit-animation:rippleOff .5s;-o-animation:rippleOff .5s;animation:rippleOff .5s}.checkbox input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:before,label.checkbox-inline input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:before{-webkit-animation:checkbox-off .3s forwards;-o-animation:checkbox-off .3s forwards;animation:checkbox-off .3s forwards}.checkbox input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox]:focus:not(:checked)+.checkbox-material .check:after{-webkit-animation:rippleOff .5s forwards;-o-animation:rippleOff .5s forwards;animation:rippleOff .5s forwards}.checkbox input[type=checkbox]:checked+.checkbox-material .check,label.checkbox-inline input[type=checkbox]:checked+.checkbox-material .check{color:#009688;border-color:#009688}.checkbox input[type=checkbox]:checked+.checkbox-material .check:before,label.checkbox-inline input[type=checkbox]:checked+.checkbox-material .check:before{color:#009688;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}.checkbox input[type=checkbox][disabled]+.circle,.checkbox input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check,.checkbox input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check:before,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox input[type=checkbox],fieldset[disabled] label.checkbox-inline,fieldset[disabled] label.checkbox-inline input[type=checkbox],label.checkbox-inline input[type=checkbox][disabled]+.circle,label.checkbox-inline input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check,label.checkbox-inline input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check:before{opacity:.5}.checkbox input[type=checkbox][disabled]+.checkbox-material .check:after,label.checkbox-inline input[type=checkbox][disabled]+.checkbox-material .check:after{background-color:rgba(0,0,0,.87);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}@-webkit-keyframes checkbox-on{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@-o-keyframes checkbox-on{0%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@keyframes checkbox-on{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@-webkit-keyframes checkbox-off{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-webkit-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-webkit-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@-o-keyframes checkbox-off{0%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-o-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@keyframes checkbox-off{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@-webkit-keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-o-keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-webkit-keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-o-keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}.togglebutton{vertical-align:middle}.togglebutton,.togglebutton .toggle,.togglebutton input,.togglebutton label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.togglebutton label{cursor:pointer;color:rgba(0,0,0,.26)}.form-group.is-focused .togglebutton label{color:rgba(0,0,0,.26)}.form-group.is-focused .togglebutton label:focus,.form-group.is-focused .togglebutton label:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .togglebutton label{color:rgba(0,0,0,.26)}.togglebutton label input[type=checkbox]{opacity:0;width:0;height:0}.togglebutton label .toggle{text-align:left}.togglebutton label .toggle,.togglebutton label input[type=checkbox][disabled]+.toggle{content:"";display:inline-block;width:30px;height:15px;background-color:rgba(80,80,80,.7);border-radius:15px;margin-right:15px;-webkit-transition:background .3s ease;-o-transition:background .3s ease;transition:background .3s ease;vertical-align:middle}.togglebutton label .toggle:after{content:"";display:inline-block;width:20px;height:20px;background-color:#F1F1F1;border-radius:20px;position:relative;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4);box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-2px;-webkit-transition:left .3s ease,background .3s ease,-webkit-box-shadow .1s ease;-o-transition:left .3s ease,background .3s ease,box-shadow .1s ease;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.togglebutton label input[type=checkbox][disabled]+.toggle:after,.togglebutton label input[type=checkbox][disabled]:checked+.toggle:after{background-color:#BDBDBD}.togglebutton label input[type=checkbox]+.toggle:active:after,.togglebutton label input[type=checkbox][disabled]+.toggle:active:after{-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.1)}.togglebutton label input[type=checkbox]:checked+.toggle:after{left:15px}.togglebutton label input[type=checkbox]:checked+.toggle{background-color:rgba(0,150,136,.5)}.togglebutton label input[type=checkbox]:checked+.toggle:after{background-color:#009688}.togglebutton label input[type=checkbox]:checked+.toggle:active:after{-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,150,136,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,150,136,.1)}.radio label,label.radio-inline{cursor:pointer;padding-left:45px;position:relative;color:rgba(0,0,0,.26)}.form-group.is-focused .radio label,.form-group.is-focused label.radio-inline{color:rgba(0,0,0,.26)}.form-group.is-focused .radio label:focus,.form-group.is-focused .radio label:hover,.form-group.is-focused label.radio-inline:focus,.form-group.is-focused label.radio-inline:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .radio label,fieldset[disabled] .form-group.is-focused label.radio-inline{color:rgba(0,0,0,.26)}.radio span,label.radio-inline span{display:block;position:absolute;left:10px;top:2px;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.radio .circle,label.radio-inline .circle{border:2px solid rgba(0,0,0,.54);height:15px;width:15px;border-radius:100%}.radio .check,label.radio-inline .check{height:15px;width:15px;border-radius:100%;background-color:#009688;-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0)}.radio .check:after,label.radio-inline .check:after{display:block;position:absolute;content:"";background-color:rgba(0,0,0,.87);left:-18px;top:-18px;height:50px;width:50px;border-radius:100%;z-index:1;opacity:0;margin:0;-webkit-transform:scale3d(1.5,1.5,1);transform:scale3d(1.5,1.5,1)}.radio input[type=radio]:focus:not(:checked)~.check:after,label.radio-inline input[type=radio]:focus:not(:checked)~.check:after{-webkit-animation:rippleOff .5s;-o-animation:rippleOff .5s;animation:rippleOff .5s}.radio input[type=radio]:focus:checked~.check:after,label.radio-inline input[type=radio]:focus:checked~.check:after{-webkit-animation:rippleOn .5s;-o-animation:rippleOn .5s;animation:rippleOn .5s}.radio input[type=radio],label.radio-inline input[type=radio]{opacity:0;height:0;width:0;overflow:hidden}.radio input[type=radio]:checked~.check,.radio input[type=radio]:checked~.circle,label.radio-inline input[type=radio]:checked~.check,label.radio-inline input[type=radio]:checked~.circle{opacity:1}.radio input[type=radio]:checked~.check,label.radio-inline input[type=radio]:checked~.check{background-color:#009688}.radio input[type=radio]:checked~.circle,label.radio-inline input[type=radio]:checked~.circle{border-color:#009688}.radio input[type=radio]:checked~.check,label.radio-inline input[type=radio]:checked~.check{-webkit-transform:scale3d(.55,.55,1);transform:scale3d(.55,.55,1)}.radio input[type=radio][disabled]~.check,.radio input[type=radio][disabled]~.circle,label.radio-inline input[type=radio][disabled]~.check,label.radio-inline input[type=radio][disabled]~.circle{opacity:.26}.radio input[type=radio][disabled]~.check,label.radio-inline input[type=radio][disabled]~.check{background-color:#000}.radio input[type=radio][disabled]~.circle,label.radio-inline input[type=radio][disabled]~.circle{border-color:#000}.theme-dark .radio input[type=radio][disabled]~.check,.theme-dark .radio input[type=radio][disabled]~.circle,.theme-dark label.radio-inline input[type=radio][disabled]~.check,.theme-dark label.radio-inline input[type=radio][disabled]~.circle{opacity:.3}.theme-dark .radio input[type=radio][disabled]~.check,.theme-dark label.radio-inline input[type=radio][disabled]~.check{background-color:#fff}.theme-dark .radio input[type=radio][disabled]~.circle,.theme-dark label.radio-inline input[type=radio][disabled]~.circle{border-color:#fff}@keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}legend{margin-bottom:22px;font-size:24px}output{padding-top:8px;font-size:16px;line-height:1.42857143}.form-control{height:38px;padding:7px 0;font-size:16px;line-height:1.42857143}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:38px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:24px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:44px}}.checkbox label,.radio label{min-height:22px}.form-control-static{padding-top:8px;padding-bottom:8px;min-height:38px}.input-sm .input-sm{height:24px;padding:3px 0;font-size:11px;line-height:1.5;border-radius:0}.input-sm select.input-sm{height:24px;line-height:24px}.input-sm select[multiple].input-sm,.input-sm textarea.input-sm{height:auto}.form-group-sm .form-control{height:24px;padding:3px 0;font-size:11px;line-height:1.5}.form-group-sm select.form-control{height:24px;line-height:24px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:24px;min-height:33px;padding:4px 0;font-size:11px;line-height:1.5}.input-lg .input-lg{height:44px;padding:9px 0;font-size:18px;line-height:1.3333333;border-radius:0}.input-lg select.input-lg{height:44px;line-height:44px}.input-lg select[multiple].input-lg,.input-lg textarea.input-lg{height:auto}.form-group-lg .form-control{height:44px;padding:9px 0;font-size:18px;line-height:1.3333333}.form-group-lg select.form-control{height:44px;line-height:44px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:44px;min-height:40px;padding:10px 0;font-size:18px;line-height:1.3333333}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:8px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:30px}@media (min-width:768px){.form-horizontal .control-label{padding-top:8px}}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:13px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:4px;font-size:11px}}.label{border-radius:1px;padding:.3em .6em}.label,.label.label-default{background-color:#9e9e9e}.label.label-inverse{background-color:#3f51b5}.label.label-primary{background-color:#009688}.label.label-success{background-color:#4caf50}.label.label-info{background-color:#03a9f4}.label.label-warning{background-color:#ff5722}.label.label-danger{background-color:#f44336}.form-control,.form-group .form-control{border:0;background-image:-webkit-gradient(linear,left top,left bottom,from(#009688),to(#009688)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#009688,#009688),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#009688,#009688),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#009688,#009688),linear-gradient(#D2D2D2,#D2D2D2);-webkit-background-size:0 2px,100% 1px;background-size:0 2px,100% 1px;background-repeat:no-repeat;background-position:center bottom,center -webkit-calc(100% - 1px);background-position:center bottom,center calc(100% - 1px);background-color:rgba(0,0,0,0);-webkit-transition:background 0s ease-out;-o-transition:background 0s ease-out;transition:background 0s ease-out;float:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.form-control::-moz-placeholder,.form-group .form-control::-moz-placeholder{color:#BDBDBD;font-weight:400}.form-control:-ms-input-placeholder,.form-group .form-control:-ms-input-placeholder{color:#BDBDBD;font-weight:400}.form-control::-webkit-input-placeholder,.form-group .form-control::-webkit-input-placeholder{color:#BDBDBD;font-weight:400}.form-control[disabled],.form-control[readonly],.form-group .form-control[disabled],.form-group .form-control[readonly],fieldset[disabled] .form-control,fieldset[disabled] .form-group .form-control{background-color:rgba(0,0,0,0)}.form-control[disabled],.form-group .form-control[disabled],fieldset[disabled] .form-control,fieldset[disabled] .form-group .form-control{background-image:none;border-bottom:1px dotted #D2D2D2}.form-group{position:relative}.form-group.label-floating label.control-label,.form-group.label-placeholder label.control-label,.form-group.label-static label.control-label{position:absolute;pointer-events:none;-webkit-transition:.3s ease all;-o-transition:.3s ease all;transition:.3s ease all}.form-group.label-floating label.control-label{will-change:left,top,contents}.form-group.label-placeholder:not(.is-empty) label.control-label{display:none}.form-group .help-block{position:absolute;display:none}.form-group.is-focused .form-control{outline:0;background-image:-webkit-gradient(linear,left top,left bottom,from(#009688),to(#009688)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#009688,#009688),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#009688,#009688),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#009688,#009688),linear-gradient(#D2D2D2,#D2D2D2);-webkit-background-size:100% 2px,100% 1px;background-size:100% 2px,100% 1px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.form-group.is-focused .form-control .material-input:after{background-color:#009688}.form-group.is-focused label,.form-group.is-focused label.control-label{color:#009688}.form-group.is-focused.label-placeholder label,.form-group.is-focused.label-placeholder label.control-label{color:#BDBDBD}.form-group.is-focused .help-block{display:block}.form-group.has-warning .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-warning.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#ff5722),to(#ff5722)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#ff5722,#ff5722),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#ff5722,#ff5722),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#ff5722,#ff5722),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-warning .help-block,.form-group.has-warning label.control-label{color:#ff5722}.form-group.has-error .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-error.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#f44336),to(#f44336)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#f44336,#f44336),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#f44336,#f44336),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#f44336,#f44336),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-error .help-block,.form-group.has-error label.control-label{color:#f44336}.form-group.has-success .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-success.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#4caf50),to(#4caf50)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#4caf50,#4caf50),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#4caf50,#4caf50),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#4caf50,#4caf50),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-success .help-block,.form-group.has-success label.control-label{color:#4caf50}.form-group.has-info .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-info.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#03a9f4),to(#03a9f4)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#03a9f4,#03a9f4),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#03a9f4,#03a9f4),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#03a9f4,#03a9f4),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-info .help-block,.form-group.has-info label.control-label{color:#03a9f4}.form-group textarea{resize:none}.form-group textarea~.form-control-highlight{margin-top:-11px}.form-group select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group select~.material-input:after{display:none}.form-control{margin-bottom:7px}.form-control::-moz-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-control:-ms-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-control::-webkit-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.checkbox label,.radio label,label{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}label.control-label{font-size:12px;line-height:1.07142857;font-weight:400;margin:16px 0 0 0}.help-block{margin-top:0;font-size:12px}.form-group{padding-bottom:7px;margin:28px 0 0 0}.form-group .form-control{margin-bottom:7px}.form-group .form-control::-moz-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .form-control:-ms-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .form-control::-webkit-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .checkbox label,.form-group .radio label,.form-group label{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group label.control-label{font-size:12px;line-height:1.07142857;font-weight:400;margin:16px 0 0 0}.form-group .help-block{margin-top:0;font-size:12px}.form-group.label-floating label.control-label,.form-group.label-placeholder label.control-label{top:-7px;font-size:16px;line-height:1.42857143}.form-group.label-floating.is-focused label.control-label,.form-group.label-floating:not(.is-empty) label.control-label,.form-group.label-static label.control-label{top:-30px;left:0;font-size:12px;line-height:1.07142857}.form-group.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-30px;left:0;font-size:12px;line-height:1.07142857}.form-group.form-group-sm{padding-bottom:3px;margin:21px 0 0 0}.form-group.form-group-sm .form-control{margin-bottom:3px}.form-group.form-group-sm .form-control::-moz-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .form-control:-ms-input-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .form-control::-webkit-input-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .checkbox label,.form-group.form-group-sm .radio label,.form-group.form-group-sm label{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm label.control-label{font-size:9px;line-height:1.125;font-weight:400;margin:16px 0 0 0}.form-group.form-group-sm .help-block{margin-top:0;font-size:9px}.form-group.form-group-sm.label-floating label.control-label,.form-group.form-group-sm.label-placeholder label.control-label{top:-11px;font-size:11px;line-height:1.5}.form-group.form-group-sm.label-floating.is-focused label.control-label,.form-group.form-group-sm.label-floating:not(.is-empty) label.control-label,.form-group.form-group-sm.label-static label.control-label{top:-25px;left:0;font-size:9px;line-height:1.125}.form-group.form-group-sm.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-25px;left:0;font-size:9px;line-height:1.125}.form-group.form-group-lg{padding-bottom:9px;margin:30px 0 0 0}.form-group.form-group-lg .form-control{margin-bottom:9px}.form-group.form-group-lg .form-control::-moz-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .form-control:-ms-input-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .form-control::-webkit-input-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .checkbox label,.form-group.form-group-lg .radio label,.form-group.form-group-lg label{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg label.control-label{font-size:14px;line-height:.99999998;font-weight:400;margin:16px 0 0 0}.form-group.form-group-lg .help-block{margin-top:0;font-size:14px}.form-group.form-group-lg.label-floating label.control-label,.form-group.form-group-lg.label-placeholder label.control-label{top:-5px;font-size:18px;line-height:1.3333333}.form-group.form-group-lg.label-floating.is-focused label.control-label,.form-group.form-group-lg.label-floating:not(.is-empty) label.control-label,.form-group.form-group-lg.label-static label.control-label{top:-32px;left:0;font-size:14px;line-height:.99999998}.form-group.form-group-lg.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-32px;left:0;font-size:14px;line-height:.99999998}select.form-control{border:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.form-group.is-focused select.form-control{-webkit-box-shadow:none;box-shadow:none;border-color:#D2D2D2}.form-group.is-focused select.form-control[multiple],select.form-control[multiple]{height:85px}.input-group-btn .btn{margin:0 0 7px 0}.form-group.form-group-sm .input-group-btn .btn{margin:0 0 3px 0}.form-group.form-group-lg .input-group-btn .btn{margin:0 0 9px 0}.input-group .input-group-btn{padding:0 12px}.input-group .input-group-addon{border:0;background:0 0}.form-group input[type=file]{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}legend{border-bottom:0}.list-group{border-radius:0}.list-group .list-group-item{background-color:transparent;overflow:hidden;border:0;border-radius:0;padding:0 16px}.list-group .list-group-item.baseline{border-bottom:1px solid #cecece}.list-group .list-group-item.baseline:last-child{border-bottom:none}.list-group .list-group-item .row-action-primary,.list-group .list-group-item .row-picture{display:inline-block;padding-right:16px}.list-group .list-group-item .row-action-primary i,.list-group .list-group-item .row-action-primary img,.list-group .list-group-item .row-action-primary label,.list-group .list-group-item .row-picture i,.list-group .list-group-item .row-picture img,.list-group .list-group-item .row-picture label{display:block;width:56px;height:56px}.list-group .list-group-item .row-action-primary img,.list-group .list-group-item .row-picture img{background:rgba(0,0,0,.1);padding:1px}.list-group .list-group-item .row-action-primary img.circle,.list-group .list-group-item .row-picture img.circle{border-radius:100%}.list-group .list-group-item .row-action-primary i,.list-group .list-group-item .row-picture i{background:rgba(0,0,0,.25);border-radius:100%;text-align:center;line-height:56px;font-size:20px;color:#fff}.list-group .list-group-item .row-action-primary label,.list-group .list-group-item .row-picture label{margin-left:7px;margin-right:-7px;margin-top:5px;margin-bottom:-5px}.list-group .list-group-item .row-action-primary label .checkbox-material,.list-group .list-group-item .row-picture label .checkbox-material{left:-10px}.list-group .list-group-item .row-content{display:inline-block;width:-webkit-calc(100% - 92px);width:calc(100% - 92px);min-height:66px}.list-group .list-group-item .row-content .action-secondary{position:absolute;right:16px;top:16px}.list-group .list-group-item .row-content .action-secondary i{font-size:20px;color:rgba(0,0,0,.25);cursor:pointer}.list-group .list-group-item .row-content .action-secondary~*{max-width:-webkit-calc(100% - 30px);max-width:calc(100% - 30px)}.list-group .list-group-item .row-content .least-content{position:absolute;right:16px;top:0;color:rgba(0,0,0,.54);font-size:14px}.list-group .list-group-item .list-group-item-heading{color:rgba(0,0,0,.77);font-size:20px;line-height:29px}.list-group .list-group-item.active:focus,.list-group .list-group-item.active:hover{background:rgba(0,0,0,.15);outline:10px solid rgba(0,0,0,.15)}.list-group .list-group-item.active .list-group-item-heading,.list-group .list-group-item.active .list-group-item-text{color:rgba(0,0,0,.87)}.list-group .list-group-separator{clear:both;overflow:hidden;margin-top:10px;margin-bottom:10px}.list-group .list-group-separator:before{content:"";width:-webkit-calc(100% - 90px);width:calc(100% - 90px);border-bottom:1px solid rgba(0,0,0,.1);float:right}.navbar{background-color:#009688;border:0;border-radius:0}.navbar .navbar-brand{position:relative;height:60px;line-height:30px;color:inherit}.navbar .navbar-brand:focus,.navbar .navbar-brand:hover{color:inherit;background-color:transparent}.navbar .navbar-text{color:inherit;margin-top:20px;margin-bottom:20px}.navbar .navbar-nav>li>a{color:inherit;padding-top:20px;padding-bottom:20px}.navbar .navbar-nav>li>a:focus,.navbar .navbar-nav>li>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav>.active>a,.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{color:inherit;background-color:rgba(255,255,255,.1)}.navbar .navbar-nav>.disabled>a,.navbar .navbar-nav>.disabled>a:focus,.navbar .navbar-nav>.disabled>a:hover{color:inherit;background-color:transparent;opacity:.9}.navbar .navbar-toggle{border:0}.navbar .navbar-toggle:focus,.navbar .navbar-toggle:hover{background-color:transparent}.navbar .navbar-toggle .icon-bar{background-color:inherit;border:1px solid}.navbar .navbar-default .navbar-toggle,.navbar .navbar-inverse .navbar-toggle{border-color:transparent}.navbar .navbar-collapse,.navbar .navbar-form{border-color:rgba(0,0,0,.1)}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:transparent;color:inherit}@media (max-width:767px){.navbar .navbar-nav .navbar-text{color:inherit;margin-top:15px;margin-bottom:15px}.navbar .navbar-nav .open .dropdown-menu>.dropdown-header{border:0;color:inherit}.navbar .navbar-nav .open .dropdown-menu .divider{border-bottom:1px solid;opacity:.08}.navbar .navbar-nav .open .dropdown-menu>li>a{color:inherit}.navbar .navbar-nav .open .dropdown-menu>li>a:focus,.navbar .navbar-nav .open .dropdown-menu>li>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav .open .dropdown-menu>.disabled>a,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:inherit;background-color:transparent}}.navbar .navbar-link{color:inherit}.navbar .navbar-link:hover{color:inherit}.navbar .btn-link{color:inherit}.navbar .btn-link:focus,.navbar .btn-link:hover{color:inherit}.navbar .btn-link[disabled]:focus,.navbar .btn-link[disabled]:hover,fieldset[disabled] .navbar .btn-link:focus,fieldset[disabled] .navbar .btn-link:hover{color:inherit}.navbar .navbar-form{margin-top:16px}.navbar .navbar-form .form-group{margin:0;padding:0}.navbar .navbar-form .form-group .material-input:before,.navbar .navbar-form .form-group.is-focused .material-input:after{background-color:inherit}.navbar .navbar-form .form-control,.navbar .navbar-form .form-group .form-control{border-color:inherit;color:inherit;padding:0;margin:0;height:28px;font-size:14px;line-height:1.42857143}.navbar,.navbar.navbar-default{background-color:#009688;color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control::-moz-placeholder,.navbar .navbar-form input.form-control::-moz-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-default .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar .navbar-form input.form-control:-ms-input-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-default .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar .navbar-form input.form-control::-webkit-input-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-default .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar .dropdown-menu,.navbar.navbar-default .dropdown-menu{border-radius:2px}.navbar .dropdown-menu li>a,.navbar.navbar-default .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar .dropdown-menu li>a:focus,.navbar .dropdown-menu li>a:hover,.navbar.navbar-default .dropdown-menu li>a:focus,.navbar.navbar-default .dropdown-menu li>a:hover{color:#009688;background-color:#eee}.navbar .dropdown-menu .active>a,.navbar.navbar-default .dropdown-menu .active>a{background-color:#009688;color:rgba(255,255,255,.84)}.navbar .dropdown-menu .active>a:focus,.navbar .dropdown-menu .active>a:hover,.navbar.navbar-default .dropdown-menu .active>a:focus,.navbar.navbar-default .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-inverse{background-color:#3f51b5;color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-inverse .navbar-form input.form-control::-moz-placeholder{color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-inverse .navbar-form input.form-control:-ms-input-placeholder{color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-inverse .navbar-form input.form-control::-webkit-input-placeholder{color:#fff}.navbar.navbar-inverse .dropdown-menu{border-radius:2px}.navbar.navbar-inverse .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-inverse .dropdown-menu li>a:focus,.navbar.navbar-inverse .dropdown-menu li>a:hover{color:#3f51b5;background-color:#eee}.navbar.navbar-inverse .dropdown-menu .active>a{background-color:#3f51b5;color:#fff}.navbar.navbar-inverse .dropdown-menu .active>a:focus,.navbar.navbar-inverse .dropdown-menu .active>a:hover{color:#fff}.navbar.navbar-primary{background-color:#009688;color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-primary .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-primary .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-primary .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .dropdown-menu{border-radius:2px}.navbar.navbar-primary .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-primary .dropdown-menu li>a:focus,.navbar.navbar-primary .dropdown-menu li>a:hover{color:#009688;background-color:#eee}.navbar.navbar-primary .dropdown-menu .active>a{background-color:#009688;color:rgba(255,255,255,.84)}.navbar.navbar-primary .dropdown-menu .active>a:focus,.navbar.navbar-primary .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-success .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-success .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-success .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .dropdown-menu{border-radius:2px}.navbar.navbar-success .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-success .dropdown-menu li>a:focus,.navbar.navbar-success .dropdown-menu li>a:hover{color:#4caf50;background-color:#eee}.navbar.navbar-success .dropdown-menu .active>a{background-color:#4caf50;color:rgba(255,255,255,.84)}.navbar.navbar-success .dropdown-menu .active>a:focus,.navbar.navbar-success .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-info .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-info .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-info .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .dropdown-menu{border-radius:2px}.navbar.navbar-info .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-info .dropdown-menu li>a:focus,.navbar.navbar-info .dropdown-menu li>a:hover{color:#03a9f4;background-color:#eee}.navbar.navbar-info .dropdown-menu .active>a{background-color:#03a9f4;color:rgba(255,255,255,.84)}.navbar.navbar-info .dropdown-menu .active>a:focus,.navbar.navbar-info .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-warning .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-warning .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-warning .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .dropdown-menu{border-radius:2px}.navbar.navbar-warning .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-warning .dropdown-menu li>a:focus,.navbar.navbar-warning .dropdown-menu li>a:hover{color:#ff5722;background-color:#eee}.navbar.navbar-warning .dropdown-menu .active>a{background-color:#ff5722;color:rgba(255,255,255,.84)}.navbar.navbar-warning .dropdown-menu .active>a:focus,.navbar.navbar-warning .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-danger .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-danger .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-danger .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .dropdown-menu{border-radius:2px}.navbar.navbar-danger .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-danger .dropdown-menu li>a:focus,.navbar.navbar-danger .dropdown-menu li>a:hover{color:#f44336;background-color:#eee}.navbar.navbar-danger .dropdown-menu .active>a{background-color:#f44336;color:rgba(255,255,255,.84)}.navbar.navbar-danger .dropdown-menu .active>a:focus,.navbar.navbar-danger .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar-inverse{background-color:#3f51b5}@media (max-width:1199px){.navbar .navbar-brand{height:50px;padding:10px 15px}.navbar .navbar-form{margin-top:10px}.navbar .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.dropdown-menu{border:0;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.dropdown-menu .divider{background-color:rgba(0,0,0,.12)}.dropdown-menu li{overflow:hidden;position:relative}.dropdown-menu li a:hover{background-color:transparent;color:#009688}.alert{border:0;border-radius:0}.alert,.alert.alert-default{background-color:rgba(255,255,255,.84);color:rgba(255,255,255,.84)}.alert .alert-link,.alert a,.alert.alert-default .alert-link,.alert.alert-default a{color:rgba(255,255,255,.84)}.alert.alert-inverse{background-color:#3f51b5;color:#fff}.alert.alert-inverse .alert-link,.alert.alert-inverse a{color:#fff}.alert.alert-primary{background-color:#009688;color:rgba(255,255,255,.84)}.alert.alert-primary .alert-link,.alert.alert-primary a{color:rgba(255,255,255,.84)}.alert.alert-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.alert.alert-success .alert-link,.alert.alert-success a{color:rgba(255,255,255,.84)}.alert.alert-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.alert.alert-info .alert-link,.alert.alert-info a{color:rgba(255,255,255,.84)}.alert.alert-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.alert.alert-warning .alert-link,.alert.alert-warning a{color:rgba(255,255,255,.84)}.alert.alert-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.alert.alert-danger .alert-link,.alert.alert-danger a{color:rgba(255,255,255,.84)}.alert-danger,.alert-info,.alert-success,.alert-warning{color:rgba(255,255,255,.84)}.alert-default .alert-link,.alert-default a{color:rgba(0,0,0,.87)}.progress{height:4px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:#c8c8c8}.progress .progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar,.progress .progress-bar.progress-bar-default{background-color:#009688}.progress .progress-bar.progress-bar-inverse{background-color:#3f51b5}.progress .progress-bar.progress-bar-primary{background-color:#009688}.progress .progress-bar.progress-bar-success{background-color:#4caf50}.progress .progress-bar.progress-bar-info{background-color:#03a9f4}.progress .progress-bar.progress-bar-warning{background-color:#ff5722}.progress .progress-bar.progress-bar-danger{background-color:#f44336}.text-warning{color:#ff5722}.text-primary{color:#009688}.text-danger{color:#f44336}.text-success{color:#4caf50}.text-info{color:#03a9f4}.nav-tabs{background:#009688}.nav-tabs>li>a{color:#FFF;border:0;margin:0}.nav-tabs>li>a:hover{background-color:transparent;border:0}.nav-tabs>li>a,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background-color:transparent!important;border:0!important;color:#FFF!important;font-weight:500}.nav-tabs>li.disabled>a,.nav-tabs>li.disabled>a:hover{color:rgba(255,255,255,.5)}.popover,.tooltip-inner{color:#ececec;line-height:1em;background:rgba(101,101,101,.9);border:none;border-radius:2px;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12)}.tooltip,.tooltip.in{opacity:1}.popover .arrow,.popover .tooltip-arrow,.tooltip .arrow,.tooltip .tooltip-arrow{display:none}.card{display:inline-block;position:relative;width:100%;border-radius:2px;color:rgba(0,0,0,.87);background:#fff;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.card .card-height-indicator{margin-top:100%}.card .card-content{position:absolute;top:0;bottom:0;left:0;right:0}.card .card-image{height:60%;position:relative;overflow:hidden}.card .card-image img{width:100%;height:100%;border-top-left-radius:2px;border-top-right-radius:2px;pointer-events:none}.card .card-image .card-image-headline{position:absolute;bottom:16px;left:18px;color:#fff;font-size:2em}.card .card-body{height:30%;padding:18px}.card .card-footer{height:10%;padding:18px}.card .card-footer a,.card .card-footer button{margin:0!important;position:relative;bottom:25px;width:auto}.card .card-footer a:first-child,.card .card-footer button:first-child{left:-15px}.modal-content{-webkit-box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22);box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22);border-radius:2px;border:none}.modal-content .modal-header{border-bottom:none;padding-top:24px;padding-right:24px;padding-bottom:0;padding-left:24px}.modal-content .modal-body{padding-top:24px;padding-right:24px;padding-bottom:16px;padding-left:24px}.modal-content .modal-footer{border-top:none;padding:7px}.modal-content .modal-footer button{margin:0;padding-left:16px;padding-right:16px;width:auto}.modal-content .modal-footer button.pull-left{padding-left:5px;padding-right:5px;position:relative;left:-5px}.modal-content .modal-footer button+button{margin-bottom:16px}.modal-content .modal-body+.modal-footer{padding-top:0}.modal-backdrop{background:rgba(0,0,0,.3)}.panel{border-radius:2px;border:0;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12)}.panel.panel-default>.panel-heading,.panel>.panel-heading{background-color:#eee}.panel.panel-inverse>.panel-heading{background-color:#3f51b5}.panel.panel-primary>.panel-heading{background-color:#009688}.panel.panel-success>.panel-heading{background-color:#4caf50}.panel.panel-info>.panel-heading{background-color:#03a9f4}.panel.panel-warning>.panel-heading{background-color:#ff5722}.panel.panel-danger>.panel-heading{background-color:#f44336}[class*=panel-]>.panel-heading{color:rgba(255,255,255,.84);border:0}.panel-default>.panel-heading,.panel:not([class*=panel-])>.panel-heading{color:rgba(0,0,0,.87)}.panel-footer{background-color:#eee}hr.on-dark{color:#1a1a1a}hr.on-light{color:#fff}@media (-webkit-min-device-pixel-ratio:0.75),(min--moz-device-pixel-ratio:0.75),(-o-device-pixel-ratio:3/4),(min-device-pixel-ratio:0.75),(-o-min-device-pixel-ratio:3/4),(min-resolution:0.75dppx),(-webkit-min-device-pixel-ratio:1.25),(-o-min-device-pixel-ratio:5/4),(min-resolution:120dpi){hr{height:.75px}}@media (-webkit-min-device-pixel-ratio:1),(min--moz-device-pixel-ratio:1),(-o-device-pixel-ratio:1),(min-device-pixel-ratio:1),(-o-min-device-pixel-ratio:1/1),(min-resolution:1dppx),(-webkit-min-device-pixel-ratio:1.6666666666666667),(-o-min-device-pixel-ratio:5/3),(min-resolution:160dpi){hr{height:1px}}@media (-webkit-min-device-pixel-ratio:1.33),(min--moz-device-pixel-ratio:1.33),(-o-device-pixel-ratio:133/100),(min-device-pixel-ratio:1.33),(-o-min-device-pixel-ratio:133/100),(min-resolution:1.33dppx),(-webkit-min-device-pixel-ratio:2.21875),(-o-min-device-pixel-ratio:71/32),(min-resolution:213dpi){hr{height:1.33px}}@media (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-device-pixel-ratio:3/2),(min-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:3/2),(min-resolution:1.5dppx),(-webkit-min-device-pixel-ratio:2.5),(-o-min-device-pixel-ratio:5/2),(min-resolution:240dpi){hr{height:1.5px}}@media (-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(-o-device-pixel-ratio:2/1),(min-device-pixel-ratio:2),(-o-min-device-pixel-ratio:2/1),(min-resolution:2dppx),(-webkit-min-device-pixel-ratio:3.9583333333333335),(-o-min-device-pixel-ratio:95/24),(min-resolution:380dpi){hr{height:2px}}@media (-webkit-min-device-pixel-ratio:3),(min--moz-device-pixel-ratio:3),(-o-device-pixel-ratio:3/1),(min-device-pixel-ratio:3),(-o-min-device-pixel-ratio:3/1),(min-resolution:3dppx),(-webkit-min-device-pixel-ratio:5),(-o-min-device-pixel-ratio:5/1),(min-resolution:480dpi){hr{height:3px}}@media (-webkit-min-device-pixel-ratio:4),(min--moz-device-pixel-ratio:4),(-o-device-pixel-ratio:4/1),(min-device-pixel-ratio:3),(-o-min-device-pixel-ratio:4/1),(min-resolution:4dppx),(-webkit-min-device-pixel-ratio:6.666666666666667),(-o-min-device-pixel-ratio:20/3),(min-resolution:640dpi){hr{height:4px}}*{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}:focus{outline:0}.snackbar{background-color:#323232;color:rgba(255,255,255,.84);font-size:14px;border-radius:2px;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);height:0;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;transition:transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;-webkit-transform:translateY(200%);-ms-transform:translateY(200%);-o-transform:translateY(200%);transform:translateY(200%)}.snackbar.snackbar-opened{padding:14px 15px;margin-bottom:20px;height:auto;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;transition:transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;-webkit-transform:none;-ms-transform:none;-o-transform:none;transform:none}.snackbar.toast{border-radius:200px}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-ms-touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;-o-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:10px}.noUi-handle{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:12px;height:12px;left:-10px;top:-5px;cursor:ew-resize;border-radius:100%;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;border:1px solid}.noUi-vertical .noUi-handle{margin-left:5px;cursor:ns-resize}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-background{height:2px;margin:20px 0}.noUi-origin{margin:0;border-radius:0;height:2px;background:#c8c8c8}.noUi-origin[style^="left: 0"] .noUi-handle{background-color:#fff;border:2px solid #c8c8c8}.noUi-origin[style^="left: 0"] .noUi-handle.noUi-active{border-width:1px}.noUi-target{border-radius:2px}.noUi-horizontal{height:2px;margin:15px 0}.noUi-vertical{height:100%;width:2px;margin:0 15px;display:inline-block}.noUi-handle.noUi-active{-webkit-transform:scale3d(2.5,2.5,1);transform:scale3d(2.5,2.5,1)}[disabled].noUi-slider{opacity:.5}[disabled] .noUi-handle{cursor:not-allowed}.slider{background:#c8c8c8}.slider.noUi-connect,.slider.slider-default.noUi-connect{background-color:#009688}.slider.slider-inverse.noUi-connect{background-color:#3f51b5}.slider.slider-primary.noUi-connect{background-color:#009688}.slider.slider-success.noUi-connect{background-color:#4caf50}.slider.slider-info.noUi-connect{background-color:#03a9f4}.slider.slider-warning.noUi-connect{background-color:#ff5722}.slider.slider-danger.noUi-connect{background-color:#f44336}.slider .noUi-connect,.slider.slider-default .noUi-connect{background-color:#009688}.slider.slider-inverse .noUi-connect{background-color:#3f51b5}.slider.slider-primary .noUi-connect{background-color:#009688}.slider.slider-success .noUi-connect{background-color:#4caf50}.slider.slider-info .noUi-connect{background-color:#03a9f4}.slider.slider-warning .noUi-connect{background-color:#ff5722}.slider.slider-danger .noUi-connect{background-color:#f44336}.slider .noUi-handle,.slider.slider-default .noUi-handle{background-color:#009688}.slider.slider-inverse .noUi-handle{background-color:#3f51b5}.slider.slider-primary .noUi-handle{background-color:#009688}.slider.slider-success .noUi-handle{background-color:#4caf50}.slider.slider-info .noUi-handle{background-color:#03a9f4}.slider.slider-warning .noUi-handle{background-color:#ff5722}.slider.slider-danger .noUi-handle{background-color:#f44336}.slider .noUi-handle,.slider.slider-default .noUi-handle{border-color:#009688}.slider.slider-inverse .noUi-handle{border-color:#3f51b5}.slider.slider-primary .noUi-handle{border-color:#009688}.slider.slider-success .noUi-handle{border-color:#4caf50}.slider.slider-info .noUi-handle{border-color:#03a9f4}.slider.slider-warning .noUi-handle{border-color:#ff5722}.slider.slider-danger .noUi-handle{border-color:#f44336}.selectize-control.multi,.selectize-control.single{padding:0}.selectize-control.multi .selectize-input,.selectize-control.multi .selectize-input.input-active,.selectize-control.single .selectize-input,.selectize-control.single .selectize-input.input-active{cursor:text;background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;padding:0;height:100%;font-size:14px;line-height:30px}.selectize-control.multi .selectize-input .has-items,.selectize-control.multi .selectize-input.input-active .has-items,.selectize-control.single .selectize-input .has-items,.selectize-control.single .selectize-input.input-active .has-items{padding:0}.selectize-control.multi .selectize-input.input-active:after,.selectize-control.multi .selectize-input:after,.selectize-control.single .selectize-input.input-active:after,.selectize-control.single .selectize-input:after{right:5px;position:absolute;font-size:25px;content:"\e5c5";font-family:'Material Icons';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.selectize-control.multi .selectize-input input,.selectize-control.multi .selectize-input.input-active input,.selectize-control.single .selectize-input input,.selectize-control.single .selectize-input.input-active input{font-size:14px;outline:0;border:0;background:0 0}.selectize-control.multi .selectize-input.input-active.label-floating-fix input,.selectize-control.multi .selectize-input.label-floating-fix input,.selectize-control.single .selectize-input.input-active.label-floating-fix input,.selectize-control.single .selectize-input.label-floating-fix input{opacity:0}.selectize-control.multi .selectize-input.input-active>.item,.selectize-control.multi .selectize-input.input-active>div,.selectize-control.multi .selectize-input>.item,.selectize-control.multi .selectize-input>div,.selectize-control.single .selectize-input.input-active>.item,.selectize-control.single .selectize-input.input-active>div,.selectize-control.single .selectize-input>.item,.selectize-control.single .selectize-input>div{display:inline-block;margin:0 8px 3px 0;padding:0;background:0 0;border:0}.selectize-control.multi .selectize-input.input-active>.item:after,.selectize-control.multi .selectize-input.input-active>div:after,.selectize-control.multi .selectize-input>.item:after,.selectize-control.multi .selectize-input>div:after,.selectize-control.single .selectize-input.input-active>.item:after,.selectize-control.single .selectize-input.input-active>div:after,.selectize-control.single .selectize-input>.item:after,.selectize-control.single .selectize-input>div:after{content:","}.selectize-control.multi .selectize-input.input-active>.item:last-of-type:after,.selectize-control.multi .selectize-input.input-active>div:last-of-type:after,.selectize-control.multi .selectize-input>.item:last-of-type:after,.selectize-control.multi .selectize-input>div:last-of-type:after,.selectize-control.single .selectize-input.input-active>.item:last-of-type:after,.selectize-control.single .selectize-input.input-active>div:last-of-type:after,.selectize-control.single .selectize-input>.item:last-of-type:after,.selectize-control.single .selectize-input>div:last-of-type:after{content:""}.selectize-control.multi .selectize-input.input-active>.item.active,.selectize-control.multi .selectize-input.input-active>div.active,.selectize-control.multi .selectize-input>.item.active,.selectize-control.multi .selectize-input>div.active,.selectize-control.single .selectize-input.input-active>.item.active,.selectize-control.single .selectize-input.input-active>div.active,.selectize-control.single .selectize-input>.item.active,.selectize-control.single .selectize-input>div.active{font-weight:700;background:0 0;border:0}.selectize-control.multi .selectize-dropdown,.selectize-control.single .selectize-dropdown{position:absolute;z-index:1000;border:0;width:100%!important;left:0!important;height:auto;background-color:#FFF;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);border-radius:2px;padding:0;margin-top:3px}.selectize-control.multi .selectize-dropdown .active,.selectize-control.single .selectize-dropdown .active{background-color:inherit}.selectize-control.multi .selectize-dropdown .highlight,.selectize-control.single .selectize-dropdown .highlight{background-color:#d5d8ff}.selectize-control.multi .selectize-dropdown .selected,.selectize-control.multi .selectize-dropdown .selected.active,.selectize-control.single .selectize-dropdown .selected,.selectize-control.single .selectize-dropdown .selected.active{background-color:#EEE}.selectize-control.multi .selectize-dropdown .optgroup-header,.selectize-control.multi .selectize-dropdown [data-selectable],.selectize-control.single .selectize-dropdown .optgroup-header,.selectize-control.single .selectize-dropdown [data-selectable]{padding:10px 20px;cursor:pointer}.selectize-control.multi .dropdown-active~.selectize-dropdown,.selectize-control.single .dropdown-active~.selectize-dropdown{display:block}.dropdownjs::after{right:5px;top:3px;font-size:25px;position:absolute;font-family:'Material Icons';font-style:normal;font-weight:400;content:"\e5c5";pointer-events:none;color:#757575} +/*# sourceMappingURL=bootstrap-material-design.min.css.map */ \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css.map b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css.map new file mode 100644 index 00000000..93c75513 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/bootstrap-material-design.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/_core.less","less/_form.less","less/_welljumbo.less","less/_shadows.less","less/_mixins.less","less/_buttons.less","less/_checkboxes.less","dist/css/bootstrap-material-design.css","bootstrap-material-design.css","less/_togglebutton.less","less/_radios.less","less/_inputs-size.less","less/_inputs.less","less/_lists.less","less/_navbar.less","less/_alerts.less","less/_progress.less","less/_typography.less","less/_tabs.less","less/_popups.less","less/_cards.less","less/_dialogs.less","less/_panels.less","less/_dividers.less","less/plugins/_plugin-snackbarjs.less","less/plugins/_plugin-nouislider.less","less/plugins/_plugin-selectize.less"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/ripples.css b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.css new file mode 100644 index 00000000..cc88c40f --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.css @@ -0,0 +1,47 @@ +.withripple { + position: relative; +} +.ripple-container { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: inherit; + pointer-events: none; +} +.ripple { + position: absolute; + width: 20px; + height: 20px; + margin-left: -10px; + margin-top: -10px; + border-radius: 100%; + background-color: #000; + background-color: rgba(0, 0, 0, 0.05); + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: 50%; + -ms-transform-origin: 50%; + -o-transform-origin: 50%; + transform-origin: 50%; + opacity: 0; + pointer-events: none; +} +.ripple.ripple-on { + -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + -o-transition: opacity 0.15s ease-in 0s, -o-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + opacity: 0.1; +} +.ripple.ripple-out { + -webkit-transition: opacity 0.1s linear 0s !important; + -o-transition: opacity 0.1s linear 0s !important; + transition: opacity 0.1s linear 0s !important; + opacity: 0; +} +/*# sourceMappingURL=ripples.css.map */ \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/ripples.css.map b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.css.map new file mode 100644 index 00000000..e52d9785 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["/less/ripples.less","ripples.css"],"names":[],"mappings":"AAAA;EACI,mBAAA;CCCH;ADCD;EACI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;EACA,uBAAA;EACA,qBAAA;CCCH;ADCD;EACI,mBAAA;EACA,YAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,oBAAA;EACA,uBAAA;EACA,sCAAA;EACA,4BAAA;MAAA,wBAAA;OAAA,uBAAA;UAAA,oBAAA;EACA,8BAAA;MAAA,0BAAA;OAAA,yBAAA;UAAA,sBAAA;EACA,WAAA;EACA,qBAAA;CCCH;ADCD;EACI,uGAAA;OAAA,6FAAA;UAAA,uFAAA;EACA,aAAA;CCCH;ADCD;EACI,sDAAA;OAAA,iDAAA;UAAA,8CAAA;EACA,WAAA;CCCH","file":"ripples.css","sourcesContent":[".withripple {\n position: relative;\n}\n.ripple-container {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n pointer-events: none;\n}\n.ripple {\n position: absolute;\n width: 20px;\n height: 20px;\n margin-left: -10px;\n margin-top: -10px;\n border-radius: 100%;\n background-color: #000; // fallback color\n background-color: rgba(0,0,0,0.05);\n transform: scale(1);\n transform-origin: 50%;\n opacity: 0;\n pointer-events: none;\n}\n.ripple.ripple-on {\n transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;\n opacity: 0.1;\n}\n.ripple.ripple-out {\n transition: opacity 0.1s linear 0s !important;\n opacity: 0;\n}\n",".withripple {\n position: relative;\n}\n.ripple-container {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n pointer-events: none;\n}\n.ripple {\n position: absolute;\n width: 20px;\n height: 20px;\n margin-left: -10px;\n margin-top: -10px;\n border-radius: 100%;\n background-color: #000;\n background-color: rgba(0, 0, 0, 0.05);\n transform: scale(1);\n transform-origin: 50%;\n opacity: 0;\n pointer-events: none;\n}\n.ripple.ripple-on {\n transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;\n opacity: 0.1;\n}\n.ripple.ripple-out {\n transition: opacity 0.1s linear 0s !important;\n opacity: 0;\n}\n/*# sourceMappingURL=ripples.css.map */"]} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css new file mode 100644 index 00000000..80151ded --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css @@ -0,0 +1,2 @@ +.withripple{position:relative}.ripple-container{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;overflow:hidden;border-radius:inherit;pointer-events:none}.ripple{position:absolute;width:20px;height:20px;margin-left:-10px;margin-top:-10px;border-radius:100%;background-color:#000;background-color:rgba(0,0,0,.05);-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transform-origin:50%;-ms-transform-origin:50%;-o-transform-origin:50%;transform-origin:50%;opacity:0;pointer-events:none}.ripple.ripple-on{-webkit-transition:opacity .15s ease-in 0s,-webkit-transform .5s cubic-bezier(.4,0,.2,1) .1s;-o-transition:opacity .15s ease-in 0s,-o-transform .5s cubic-bezier(.4,0,.2,1) .1s;transition:opacity .15s ease-in 0s,transform .5s cubic-bezier(.4,0,.2,1) .1s;opacity:.1}.ripple.ripple-out{-webkit-transition:opacity .1s linear 0s!important;-o-transition:opacity .1s linear 0s!important;transition:opacity .1s linear 0s!important;opacity:0} +/*# sourceMappingURL=ripples.min.css.map */ \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css.map b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css.map new file mode 100644 index 00000000..43b7a707 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/css/ripples.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/ripples.less"],"names":[],"mappings":"AAAA,YACI,SAAA,SAEJ,kBACI,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,EACA,MAAA,KACA,OAAA,KACA,SAAA,OACA,cAAA,QACA,eAAA,KAEJ,QACI,SAAA,SACA,MAAA,KACA,OAAA,KACA,YAAA,MACA,WAAA,MACA,cAAA,KACA,iBAAA,KACA,iBAAA,gBACA,kBAAA,SAAA,cAAA,SAAA,aAAA,SAAA,UAAA,SACA,yBAAA,IAAA,qBAAA,IAAA,oBAAA,IAAA,iBAAA,IACA,QAAA,EACA,eAAA,KAEJ,kBACI,mBAAA,QAAA,KAAA,QAAA,GAAA,kBAAA,IAAA,wBAAA,IAAA,cAAA,QAAA,KAAA,QAAA,GAAA,aAAA,IAAA,wBAAA,IAAA,WAAA,QAAA,KAAA,QAAA,GAAA,UAAA,IAAA,wBAAA,IACA,QAAA,GAEJ,mBACI,mBAAA,QAAA,IAAA,OAAA,aAAA,cAAA,QAAA,IAAA,OAAA,aAAA,WAAA,QAAA,IAAA,OAAA,aACA,QAAA"} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/js/material.js b/public/assets/vendor/bootstrap-material-design/dist/js/material.js new file mode 100644 index 00000000..819152e1 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/js/material.js @@ -0,0 +1,352 @@ +/* globals jQuery */ + +(function ($) { + // Selector to select only not already processed elements + $.expr[":"].notmdproc = function (obj) { + if ($(obj).data("mdproc")) { + return false; + } else { + return true; + } + }; + + function _isChar(evt) { + if (typeof evt.which == "undefined") { + return true; + } else if (typeof evt.which == "number" && evt.which > 0) { + return ( + !evt.ctrlKey + && !evt.metaKey + && !evt.altKey + && evt.which != 8 // backspace + && evt.which != 9 // tab + && evt.which != 13 // enter + && evt.which != 16 // shift + && evt.which != 17 // ctrl + && evt.which != 20 // caps lock + && evt.which != 27 // escape + ); + } + return false; + } + + function _addFormGroupFocus(element) { + var $element = $(element); + if (!$element.prop('disabled')) { // this is showing as undefined on chrome but works fine on firefox?? + $element.closest(".form-group").addClass("is-focused"); + } + } + + function _toggleDisabledState($element, state) { + var $target; + if ($element.hasClass('checkbox-inline') || $element.hasClass('radio-inline')) { + $target = $element; + } else { + $target = $element.closest('.checkbox').length ? $element.closest('.checkbox') : $element.closest('.radio'); + } + return $target.toggleClass('disabled', state); + } + + function _toggleTypeFocus($input) { + var disabledToggleType = false; + if ($input.is($.material.options.checkboxElements) || $input.is($.material.options.radioElements)) { + disabledToggleType = true; + } + $input.closest('label').hover(function () { + var $i = $(this).find('input'); + var isDisabled = $i.prop('disabled'); // hack because the _addFormGroupFocus() wasn't identifying the property on chrome + if (disabledToggleType) { + _toggleDisabledState($(this), isDisabled); + } + if (!isDisabled) { + _addFormGroupFocus($i); // need to find the input so we can check disablement + } + }, + function () { + _removeFormGroupFocus($(this).find('input')); + }); + } + + function _removeFormGroupFocus(element) { + $(element).closest(".form-group").removeClass("is-focused"); // remove class from form-group + } + + $.material = { + "options": { + // These options set what will be started by $.material.init() + "validate": true, + "input": true, + "ripples": true, + "checkbox": true, + "togglebutton": true, + "radio": true, + "arrive": true, + "autofill": false, + + "withRipples": [ + ".btn:not(.btn-link)", + ".card-image", + ".navbar a:not(.withoutripple)", + ".dropdown-menu a", + ".nav-tabs a:not(.withoutripple)", + ".withripple", + ".pagination li:not(.active):not(.disabled) a:not(.withoutripple)" + ].join(","), + "inputElements": "input.form-control, textarea.form-control, select.form-control", + "checkboxElements": ".checkbox > label > input[type=checkbox], label.checkbox-inline > input[type=checkbox]", + "togglebuttonElements": ".togglebutton > label > input[type=checkbox]", + "radioElements": ".radio > label > input[type=radio], label.radio-inline > input[type=radio]" + }, + "checkbox": function (selector) { + // Add fake-checkbox to material checkboxes + var $input = $((selector) ? selector : this.options.checkboxElements) + .filter(":notmdproc") + .data("mdproc", true) + .after(""); + + _toggleTypeFocus($input); + }, + "togglebutton": function (selector) { + // Add fake-checkbox to material checkboxes + var $input = $((selector) ? selector : this.options.togglebuttonElements) + .filter(":notmdproc") + .data("mdproc", true) + .after(""); + + _toggleTypeFocus($input); + }, + "radio": function (selector) { + // Add fake-radio to material radios + var $input = $((selector) ? selector : this.options.radioElements) + .filter(":notmdproc") + .data("mdproc", true) + .after(""); + + _toggleTypeFocus($input); + }, + "input": function (selector) { + $((selector) ? selector : this.options.inputElements) + .filter(":notmdproc") + .data("mdproc", true) + .each(function () { + var $input = $(this); + + // Requires form-group standard markup (will add it if necessary) + var $formGroup = $input.closest(".form-group"); // note that form-group may be grandparent in the case of an input-group + if ($formGroup.length === 0 && $input.attr('type') !== "hidden" && !$input.attr('hidden')) { + $input.wrap("
"); + $formGroup = $input.closest(".form-group"); // find node after attached (otherwise additional attachments don't work) + } + + // Legacy - Add hint label if using the old shorthand data-hint attribute on the input + if ($input.attr("data-hint")) { + $input.after("

" + $input.attr("data-hint") + "

"); + $input.removeAttr("data-hint"); + } + + // Legacy - Change input-sm/lg to form-group-sm/lg instead (preferred standard and simpler css/less variants) + var legacySizes = { + "input-lg": "form-group-lg", + "input-sm": "form-group-sm" + }; + $.each(legacySizes, function (legacySize, standardSize) { + if ($input.hasClass(legacySize)) { + $input.removeClass(legacySize); + $formGroup.addClass(standardSize); + } + }); + + // Legacy - Add label-floating if using old shorthand + if ($input.hasClass("floating-label")) { + var placeholder = $input.attr("placeholder"); + $input.attr("placeholder", null).removeClass("floating-label"); + var id = $input.attr("id"); + var forAttribute = ""; + if (id) { + forAttribute = "for='" + id + "'"; + } + $formGroup.addClass("label-floating"); + $input.after(""); + } + + // Set as empty if is empty (damn I must improve this...) + if ($input.val() === null || $input.val() == "undefined" || $input.val() === "") { + $formGroup.addClass("is-empty"); + } + + // Support for file input + if ($formGroup.find("input[type=file]").length > 0) { + $formGroup.addClass("is-fileinput"); + } + }); + }, + "attachInputEventHandlers": function () { + var validate = this.options.validate; + + $(document) + .on("keydown paste", ".form-control", function (e) { + if (_isChar(e)) { + $(this).closest(".form-group").removeClass("is-empty"); + } + }) + .on("keyup change", ".form-control", function () { + var $input = $(this); + var $formGroup = $input.closest(".form-group"); + var isValid = (typeof $input[0].checkValidity === "undefined" || $input[0].checkValidity()); + + if ($input.val() === "") { + $formGroup.addClass("is-empty"); + } + else { + $formGroup.removeClass("is-empty"); + } + + // Validation events do not bubble, so they must be attached directly to the input: http://jsfiddle.net/PEpRM/1/ + // Further, even the bind method is being caught, but since we are already calling #checkValidity here, just alter + // the form-group on change. + // + // NOTE: I'm not sure we should be intervening regarding validation, this seems better as a README and snippet of code. + // BUT, I've left it here for backwards compatibility. + if (validate) { + if (isValid) { + $formGroup.removeClass("has-error"); + } + else { + $formGroup.addClass("has-error"); + } + } + }) + .on("focus", ".form-control, .form-group.is-fileinput", function () { + _addFormGroupFocus(this); + }) + .on("blur", ".form-control, .form-group.is-fileinput", function () { + _removeFormGroupFocus(this); + }) + // make sure empty is added back when there is a programmatic value change. + // NOTE: programmatic changing of value using $.val() must trigger the change event i.e. $.val('x').trigger('change') + .on("change", ".form-group input", function () { + var $input = $(this); + if ($input.attr("type") == "file") { + return; + } + + var $formGroup = $input.closest(".form-group"); + var value = $input.val(); + if (value) { + $formGroup.removeClass("is-empty"); + } else { + $formGroup.addClass("is-empty"); + } + }) + // set the fileinput readonly field with the name of the file + .on("change", ".form-group.is-fileinput input[type='file']", function () { + var $input = $(this); + var $formGroup = $input.closest(".form-group"); + var value = ""; + $.each(this.files, function (i, file) { + value += file.name + ", "; + }); + value = value.substring(0, value.length - 2); + if (value) { + $formGroup.removeClass("is-empty"); + } else { + $formGroup.addClass("is-empty"); + } + $formGroup.find("input.form-control[readonly]").val(value); + }); + }, + "ripples": function (selector) { + $((selector) ? selector : this.options.withRipples).ripples(); + }, + "autofill": function () { + // This part of code will detect autofill when the page is loading (username and password inputs for example) + var loading = setInterval(function () { + $("input[type!=checkbox]").each(function () { + var $this = $(this); + if ($this.val() && $this.val() !== $this.attr("value")) { + $this.trigger("change"); + } + }); + }, 100); + + // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them + setTimeout(function () { + clearInterval(loading); + }, 10000); + }, + "attachAutofillEventHandlers": function () { + // Listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus) + var focused; + $(document) + .on("focus", "input", function () { + var $inputs = $(this).parents("form").find("input").not("[type=file]"); + focused = setInterval(function () { + $inputs.each(function () { + var $this = $(this); + if ($this.val() !== $this.attr("value")) { + $this.trigger("change"); + } + }); + }, 100); + }) + .on("blur", ".form-group input", function () { + clearInterval(focused); + }); + }, + "init": function (options) { + this.options = $.extend({}, this.options, options); + var $document = $(document); + + if ($.fn.ripples && this.options.ripples) { + this.ripples(); + } + if (this.options.input) { + this.input(); + this.attachInputEventHandlers(); + } + if (this.options.checkbox) { + this.checkbox(); + } + if (this.options.togglebutton) { + this.togglebutton(); + } + if (this.options.radio) { + this.radio(); + } + if (this.options.autofill) { + this.autofill(); + this.attachAutofillEventHandlers(); + } + + if (document.arrive && this.options.arrive) { + if ($.fn.ripples && this.options.ripples) { + $document.arrive(this.options.withRipples, function () { + $.material.ripples($(this)); + }); + } + if (this.options.input) { + $document.arrive(this.options.inputElements, function () { + $.material.input($(this)); + }); + } + if (this.options.checkbox) { + $document.arrive(this.options.checkboxElements, function () { + $.material.checkbox($(this)); + }); + } + if (this.options.radio) { + $document.arrive(this.options.radioElements, function () { + $.material.radio($(this)); + }); + } + if (this.options.togglebutton) { + $document.arrive(this.options.togglebuttonElements, function () { + $.material.togglebutton($(this)); + }); + } + + } + } + }; + +})(jQuery); diff --git a/public/assets/vendor/bootstrap-material-design/dist/js/material.min.js b/public/assets/vendor/bootstrap-material-design/dist/js/material.min.js new file mode 100644 index 00000000..774bf8dd --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/js/material.min.js @@ -0,0 +1,2 @@ +!function(a){function b(a){return"undefined"==typeof a.which?!0:"number"==typeof a.which&&a.which>0?!a.ctrlKey&&!a.metaKey&&!a.altKey&&8!=a.which&&9!=a.which&&13!=a.which&&16!=a.which&&17!=a.which&&20!=a.which&&27!=a.which:!1}function c(b){var c=a(b);c.prop("disabled")||c.closest(".form-group").addClass("is-focused")}function d(a,b){var c;return c=a.hasClass("checkbox-inline")||a.hasClass("radio-inline")?a:a.closest(".checkbox").length?a.closest(".checkbox"):a.closest(".radio"),c.toggleClass("disabled",b)}function e(b){var e=!1;(b.is(a.material.options.checkboxElements)||b.is(a.material.options.radioElements))&&(e=!0),b.closest("label").hover(function(){var b=a(this).find("input"),f=b.prop("disabled");e&&d(a(this),f),f||c(b)},function(){f(a(this).find("input"))})}function f(b){a(b).closest(".form-group").removeClass("is-focused")}a.expr[":"].notmdproc=function(b){return a(b).data("mdproc")?!1:!0},a.material={options:{validate:!0,input:!0,ripples:!0,checkbox:!0,togglebutton:!0,radio:!0,arrive:!0,autofill:!1,withRipples:[".btn:not(.btn-link)",".card-image",".navbar a:not(.withoutripple)",".dropdown-menu a",".nav-tabs a:not(.withoutripple)",".withripple",".pagination li:not(.active):not(.disabled) a:not(.withoutripple)"].join(","),inputElements:"input.form-control, textarea.form-control, select.form-control",checkboxElements:".checkbox > label > input[type=checkbox], label.checkbox-inline > input[type=checkbox]",togglebuttonElements:".togglebutton > label > input[type=checkbox]",radioElements:".radio > label > input[type=radio], label.radio-inline > input[type=radio]"},checkbox:function(b){var c=a(b?b:this.options.checkboxElements).filter(":notmdproc").data("mdproc",!0).after("");e(c)},togglebutton:function(b){var c=a(b?b:this.options.togglebuttonElements).filter(":notmdproc").data("mdproc",!0).after("");e(c)},radio:function(b){var c=a(b?b:this.options.radioElements).filter(":notmdproc").data("mdproc",!0).after("");e(c)},input:function(b){a(b?b:this.options.inputElements).filter(":notmdproc").data("mdproc",!0).each(function(){var b=a(this),c=b.closest(".form-group");0!==c.length||"hidden"===b.attr("type")||b.attr("hidden")||(b.wrap("
"),c=b.closest(".form-group")),b.attr("data-hint")&&(b.after("

"+b.attr("data-hint")+"

"),b.removeAttr("data-hint"));var d={"input-lg":"form-group-lg","input-sm":"form-group-sm"};if(a.each(d,function(a,d){b.hasClass(a)&&(b.removeClass(a),c.addClass(d))}),b.hasClass("floating-label")){var e=b.attr("placeholder");b.attr("placeholder",null).removeClass("floating-label");var f=b.attr("id"),g="";f&&(g="for='"+f+"'"),c.addClass("label-floating"),b.after("")}(null===b.val()||"undefined"==b.val()||""===b.val())&&c.addClass("is-empty"),c.find("input[type=file]").length>0&&c.addClass("is-fileinput")})},attachInputEventHandlers:function(){var d=this.options.validate;a(document).on("keydown paste",".form-control",function(c){b(c)&&a(this).closest(".form-group").removeClass("is-empty")}).on("keyup change",".form-control",function(){var b=a(this),c=b.closest(".form-group"),e="undefined"==typeof b[0].checkValidity||b[0].checkValidity();""===b.val()?c.addClass("is-empty"):c.removeClass("is-empty"),d&&(e?c.removeClass("has-error"):c.addClass("has-error"))}).on("focus",".form-control, .form-group.is-fileinput",function(){c(this)}).on("blur",".form-control, .form-group.is-fileinput",function(){f(this)}).on("change",".form-group input",function(){var b=a(this);if("file"!=b.attr("type")){var c=b.closest(".form-group"),d=b.val();d?c.removeClass("is-empty"):c.addClass("is-empty")}}).on("change",".form-group.is-fileinput input[type='file']",function(){var b=a(this),c=b.closest(".form-group"),d="";a.each(this.files,function(a,b){d+=b.name+", "}),d=d.substring(0,d.length-2),d?c.removeClass("is-empty"):c.addClass("is-empty"),c.find("input.form-control[readonly]").val(d)})},ripples:function(b){a(b?b:this.options.withRipples).ripples()},autofill:function(){var b=setInterval(function(){a("input[type!=checkbox]").each(function(){var b=a(this);b.val()&&b.val()!==b.attr("value")&&b.trigger("change")})},100);setTimeout(function(){clearInterval(b)},1e4)},attachAutofillEventHandlers:function(){var b;a(document).on("focus","input",function(){var c=a(this).parents("form").find("input").not("[type=file]");b=setInterval(function(){c.each(function(){var b=a(this);b.val()!==b.attr("value")&&b.trigger("change")})},100)}).on("blur",".form-group input",function(){clearInterval(b)})},init:function(b){this.options=a.extend({},this.options,b);var c=a(document);a.fn.ripples&&this.options.ripples&&this.ripples(),this.options.input&&(this.input(),this.attachInputEventHandlers()),this.options.checkbox&&this.checkbox(),this.options.togglebutton&&this.togglebutton(),this.options.radio&&this.radio(),this.options.autofill&&(this.autofill(),this.attachAutofillEventHandlers()),document.arrive&&this.options.arrive&&(a.fn.ripples&&this.options.ripples&&c.arrive(this.options.withRipples,function(){a.material.ripples(a(this))}),this.options.input&&c.arrive(this.options.inputElements,function(){a.material.input(a(this))}),this.options.checkbox&&c.arrive(this.options.checkboxElements,function(){a.material.checkbox(a(this))}),this.options.radio&&c.arrive(this.options.radioElements,function(){a.material.radio(a(this))}),this.options.togglebutton&&c.arrive(this.options.togglebuttonElements,function(){a.material.togglebutton(a(this))}))}}}(jQuery); +//# sourceMappingURL=material.min.js.map \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/js/material.min.js.map b/public/assets/vendor/bootstrap-material-design/dist/js/material.min.js.map new file mode 100644 index 00000000..5134776c --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/js/material.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["material.js"],"names":["$","_isChar","evt","which","ctrlKey","metaKey","altKey","_addFormGroupFocus","element","$element","prop","closest","addClass","_toggleDisabledState","state","$target","hasClass","length","toggleClass","_toggleTypeFocus","$input","disabledToggleType","is","material","options","checkboxElements","radioElements","hover","$i","this","find","isDisabled","_removeFormGroupFocus","removeClass","expr","notmdproc","obj","data","validate","input","ripples","checkbox","togglebutton","radio","arrive","autofill","withRipples","join","inputElements","togglebuttonElements","selector","filter","after","each","$formGroup","attr","wrap","removeAttr","legacySizes","input-lg","input-sm","legacySize","standardSize","placeholder","id","forAttribute","val","attachInputEventHandlers","document","on","e","isValid","checkValidity","value","files","i","file","name","substring","loading","setInterval","$this","trigger","setTimeout","clearInterval","attachAutofillEventHandlers","focused","$inputs","parents","not","init","extend","$document","fn","jQuery"],"mappings":"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","file":"material.min.js"} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/js/ripples.js b/public/assets/vendor/bootstrap-material-design/dist/js/ripples.js new file mode 100644 index 00000000..82b67884 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/js/ripples.js @@ -0,0 +1,324 @@ +/* Copyright 2014+, Federico Zivolo, LICENSE at https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md */ +/* globals jQuery, navigator */ + +(function($, window, document, undefined) { + + "use strict"; + + /** + * Define the name of the plugin + */ + var ripples = "ripples"; + + + /** + * Get an instance of the plugin + */ + var self = null; + + + /** + * Define the defaults of the plugin + */ + var defaults = {}; + + + /** + * Create the main plugin function + */ + function Ripples(element, options) { + self = this; + + this.element = $(element); + + this.options = $.extend({}, defaults, options); + + this._defaults = defaults; + this._name = ripples; + + this.init(); + } + + + /** + * Initialize the plugin + */ + Ripples.prototype.init = function() { + var $element = this.element; + + $element.on("mousedown touchstart", function(event) { + /** + * Verify if the user is just touching on a device and return if so + */ + if(self.isTouch() && event.type === "mousedown") { + return; + } + + + /** + * Verify if the current element already has a ripple wrapper element and + * creates if it doesn't + */ + if(!($element.find(".ripple-container").length)) { + $element.append("
"); + } + + + /** + * Find the ripple wrapper + */ + var $wrapper = $element.children(".ripple-container"); + + + /** + * Get relY and relX positions + */ + var relY = self.getRelY($wrapper, event); + var relX = self.getRelX($wrapper, event); + + + /** + * If relY and/or relX are false, return the event + */ + if(!relY && !relX) { + return; + } + + + /** + * Get the ripple color + */ + var rippleColor = self.getRipplesColor($element); + + + /** + * Create the ripple element + */ + var $ripple = $("
"); + + $ripple + .addClass("ripple") + .css({ + "left": relX, + "top": relY, + "background-color": rippleColor + }); + + + /** + * Append the ripple to the wrapper + */ + $wrapper.append($ripple); + + + /** + * Make sure the ripple has the styles applied (ugly hack but it works) + */ + (function() { return window.getComputedStyle($ripple[0]).opacity; })(); + + + /** + * Turn on the ripple animation + */ + self.rippleOn($element, $ripple); + + + /** + * Call the rippleEnd function when the transition "on" ends + */ + setTimeout(function() { + self.rippleEnd($ripple); + }, 500); + + + /** + * Detect when the user leaves the element + */ + $element.on("mouseup mouseleave touchend", function() { + $ripple.data("mousedown", "off"); + + if($ripple.data("animating") === "off") { + self.rippleOut($ripple); + } + }); + + }); + }; + + + /** + * Get the new size based on the element height/width and the ripple width + */ + Ripples.prototype.getNewSize = function($element, $ripple) { + + return (Math.max($element.outerWidth(), $element.outerHeight()) / $ripple.outerWidth()) * 2.5; + }; + + + /** + * Get the relX + */ + Ripples.prototype.getRelX = function($wrapper, event) { + var wrapperOffset = $wrapper.offset(); + + if(!self.isTouch()) { + /** + * Get the mouse position relative to the ripple wrapper + */ + return event.pageX - wrapperOffset.left; + } else { + /** + * Make sure the user is using only one finger and then get the touch + * position relative to the ripple wrapper + */ + event = event.originalEvent; + + if(event.touches.length === 1) { + return event.touches[0].pageX - wrapperOffset.left; + } + + return false; + } + }; + + + /** + * Get the relY + */ + Ripples.prototype.getRelY = function($wrapper, event) { + var wrapperOffset = $wrapper.offset(); + + if(!self.isTouch()) { + /** + * Get the mouse position relative to the ripple wrapper + */ + return event.pageY - wrapperOffset.top; + } else { + /** + * Make sure the user is using only one finger and then get the touch + * position relative to the ripple wrapper + */ + event = event.originalEvent; + + if(event.touches.length === 1) { + return event.touches[0].pageY - wrapperOffset.top; + } + + return false; + } + }; + + + /** + * Get the ripple color + */ + Ripples.prototype.getRipplesColor = function($element) { + + var color = $element.data("ripple-color") ? $element.data("ripple-color") : window.getComputedStyle($element[0]).color; + + return color; + }; + + + /** + * Verify if the client browser has transistion support + */ + Ripples.prototype.hasTransitionSupport = function() { + var thisBody = document.body || document.documentElement; + var thisStyle = thisBody.style; + + var support = ( + thisStyle.transition !== undefined || + thisStyle.WebkitTransition !== undefined || + thisStyle.MozTransition !== undefined || + thisStyle.MsTransition !== undefined || + thisStyle.OTransition !== undefined + ); + + return support; + }; + + + /** + * Verify if the client is using a mobile device + */ + Ripples.prototype.isTouch = function() { + return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + }; + + + /** + * End the animation of the ripple + */ + Ripples.prototype.rippleEnd = function($ripple) { + $ripple.data("animating", "off"); + + if($ripple.data("mousedown") === "off") { + self.rippleOut($ripple); + } + }; + + + /** + * Turn off the ripple effect + */ + Ripples.prototype.rippleOut = function($ripple) { + $ripple.off(); + + if(self.hasTransitionSupport()) { + $ripple.addClass("ripple-out"); + } else { + $ripple.animate({"opacity": 0}, 100, function() { + $ripple.trigger("transitionend"); + }); + } + + $ripple.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function() { + $ripple.remove(); + }); + }; + + + /** + * Turn on the ripple effect + */ + Ripples.prototype.rippleOn = function($element, $ripple) { + var size = self.getNewSize($element, $ripple); + + if(self.hasTransitionSupport()) { + $ripple + .css({ + "-ms-transform": "scale(" + size + ")", + "-moz-transform": "scale(" + size + ")", + "-webkit-transform": "scale(" + size + ")", + "transform": "scale(" + size + ")" + }) + .addClass("ripple-on") + .data("animating", "on") + .data("mousedown", "on"); + } else { + $ripple.animate({ + "width": Math.max($element.outerWidth(), $element.outerHeight()) * 2, + "height": Math.max($element.outerWidth(), $element.outerHeight()) * 2, + "margin-left": Math.max($element.outerWidth(), $element.outerHeight()) * (-1), + "margin-top": Math.max($element.outerWidth(), $element.outerHeight()) * (-1), + "opacity": 0.2 + }, 500, function() { + $ripple.trigger("transitionend"); + }); + } + }; + + + /** + * Create the jquery plugin function + */ + $.fn.ripples = function(options) { + return this.each(function() { + if(!$.data(this, "plugin_" + ripples)) { + $.data(this, "plugin_" + ripples, new Ripples(this, options)); + } + }); + }; + +})(jQuery, window, document); diff --git a/public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js b/public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js new file mode 100644 index 00000000..5c01e4c1 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js @@ -0,0 +1,2 @@ +!function(a,b,c,d){"use strict";function e(b,c){g=this,this.element=a(b),this.options=a.extend({},h,c),this._defaults=h,this._name=f,this.init()}var f="ripples",g=null,h={};e.prototype.init=function(){var c=this.element;c.on("mousedown touchstart",function(d){if(!g.isTouch()||"mousedown"!==d.type){c.find(".ripple-container").length||c.append('
');var e=c.children(".ripple-container"),f=g.getRelY(e,d),h=g.getRelX(e,d);if(f||h){var i=g.getRipplesColor(c),j=a("
");j.addClass("ripple").css({left:h,top:f,"background-color":i}),e.append(j),function(){return b.getComputedStyle(j[0]).opacity}(),g.rippleOn(c,j),setTimeout(function(){g.rippleEnd(j)},500),c.on("mouseup mouseleave touchend",function(){j.data("mousedown","off"),"off"===j.data("animating")&&g.rippleOut(j)})}}})},e.prototype.getNewSize=function(a,b){return Math.max(a.outerWidth(),a.outerHeight())/b.outerWidth()*2.5},e.prototype.getRelX=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1===b.touches.length?b.touches[0].pageX-c.left:!1):b.pageX-c.left},e.prototype.getRelY=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1===b.touches.length?b.touches[0].pageY-c.top:!1):b.pageY-c.top},e.prototype.getRipplesColor=function(a){var c=a.data("ripple-color")?a.data("ripple-color"):b.getComputedStyle(a[0]).color;return c},e.prototype.hasTransitionSupport=function(){var a=c.body||c.documentElement,b=a.style,e=b.transition!==d||b.WebkitTransition!==d||b.MozTransition!==d||b.MsTransition!==d||b.OTransition!==d;return e},e.prototype.isTouch=function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},e.prototype.rippleEnd=function(a){a.data("animating","off"),"off"===a.data("mousedown")&&g.rippleOut(a)},e.prototype.rippleOut=function(a){a.off(),g.hasTransitionSupport()?a.addClass("ripple-out"):a.animate({opacity:0},100,function(){a.trigger("transitionend")}),a.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){a.remove()})},e.prototype.rippleOn=function(a,b){var c=g.getNewSize(a,b);g.hasTransitionSupport()?b.css({"-ms-transform":"scale("+c+")","-moz-transform":"scale("+c+")","-webkit-transform":"scale("+c+")",transform:"scale("+c+")"}).addClass("ripple-on").data("animating","on").data("mousedown","on"):b.animate({width:2*Math.max(a.outerWidth(),a.outerHeight()),height:2*Math.max(a.outerWidth(),a.outerHeight()),"margin-left":-1*Math.max(a.outerWidth(),a.outerHeight()),"margin-top":-1*Math.max(a.outerWidth(),a.outerHeight()),opacity:.2},500,function(){b.trigger("transitionend")})},a.fn.ripples=function(b){return this.each(function(){a.data(this,"plugin_"+f)||a.data(this,"plugin_"+f,new e(this,b))})}}(jQuery,window,document); +//# sourceMappingURL=ripples.min.js.map \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js.map b/public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js.map new file mode 100644 index 00000000..90f64363 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/dist/js/ripples.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["ripples.js"],"names":["$","window","document","undefined","Ripples","element","options","self","this","extend","defaults","_defaults","_name","ripples","init","prototype","$element","on","event","isTouch","type","find","append","$wrapper","children","relY","getRelY","relX","getRelX","rippleColor","getRipplesColor","$ripple","addClass","css","left","top","background-color","getComputedStyle","opacity","rippleOn","setTimeout","rippleEnd","data","rippleOut","getNewSize","Math","max","outerWidth","outerHeight","wrapperOffset","offset","originalEvent","touches","length","pageX","pageY","color","hasTransitionSupport","thisBody","body","documentElement","thisStyle","style","support","transition","WebkitTransition","MozTransition","MsTransition","OTransition","test","navigator","userAgent","off","animate","trigger","remove","size","-ms-transform","-moz-transform","-webkit-transform","transform","width","height","margin-left","margin-top","fn","each","jQuery"],"mappings":"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","file":"ripples.min.js"} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/grunt/configBridge.json b/public/assets/vendor/bootstrap-material-design/grunt/configBridge.json new file mode 100644 index 00000000..cb49a3dc --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/grunt/configBridge.json @@ -0,0 +1,28 @@ +{ + "config": { + "autoprefixerBrowsers": [ + "Android 2.3", + "Android >= 4", + "Chrome >= 20", + "Firefox >= 24", + "Explorer >= 8", + "iOS >= 6", + "Opera >= 12", + "Safari >= 6" + ], + "jqueryCheck": [ + "if (typeof jQuery === 'undefined') {", + " throw new Error('Bootstrap Material Design\\'s JavaScript requires jQuery')", + "}\n" + ], + "jqueryVersionCheck": [ + "+function ($) {", + " 'use strict';", + " var version = $.fn.jquery.split(' ')[0].split('.')", + " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {", + " throw new Error('Bootstrap Material Design\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')", + " }", + "}(jQuery);\n\n" + ] + } +} diff --git a/public/assets/vendor/bootstrap-material-design/index.css b/public/assets/vendor/bootstrap-material-design/index.css new file mode 100644 index 00000000..148566d3 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/index.css @@ -0,0 +1,360 @@ +* { + box-sizing: border-box; +} + +.header-panel { + background-color: #009587; + height: 144px; + position: relative; + z-index: 3; +} + +.header-panel div { + position: relative; + height: 100%; +} + +.header-panel h1 { + color: #FFF; + /*font-size: 20px;*/ + /*font-weight: 400;*/ + position: absolute; + bottom: 10px; + padding-left: 35px; +} + +.menu { + overflow: auto; + padding: 0; +} + +.menu, .menu * { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.menu ul { + padding: 0; + margin: 7px 0; +} + +.menu ul li { + list-style: none; + padding: 20px 0 20px 50px; + font-size: 15px; + font-weight: normal; + cursor: pointer; +} + +.menu ul li.active { + background-color: #dedede; + position: relative; +} + +.menu ul li a { + color: rgb(51, 51, 51); + text-decoration: none; +} + +.pages { + position: absolute; + top: 0; + right: 0; + z-index: 4; + padding: 0; + overflow: auto; +} + +.pages > div { + padding: 0 5px; + padding-top: 64px; +} + +.pages .header { + color: rgb(82, 101, 162); + /*font-size: 24px;*/ + /*font-weight: normal;*/ + /*margin-top: 5px;*/ + /*margin-bottom: 60px;*/ + /*letter-spacing: 1.20000004768372px;*/ +} + +.page { + transform: translateY(1080px); + transition: transform 0 linear; + display: none; + opacity: 0; + font-size: 16px; +} + +.page.active { + transform: translateY(0px); + transition: all 0.3s ease-out; + display: block; + opacity: 1; +} + +.opensource { + color: rgba(0, 0, 0, 0.62); + position: fixed; + margin-top: 50px; + margin-left: 50px; + z-index: 100; +} + +#source-modal h4 { + color: black; +} + +#paypal .btn { + padding: 5px 30px 6px 30px; +} + +#paypal input { + background: transparent; + border: 0; +} + +.cbwrapper div { + display: none; +} + +.cbwrapper div:nth-child(2) { + display: block; +} + +#carbonads, #fakecb { + border: 1px solid #d5d5d5; + font-size: 11px; + line-height: 15px; + overflow: hidden; + width: 340px; + padding: 20px; + margin: auto; + height: 142px; + border-radius: 2px; +} + +#carbonads .carbon-img { + float: left; + display: block; +} + +#carbonads .carbon-text, #carbonads .carbon-poweredby { + float: left; + width: 150px; + padding: 0 10px 10px 10px; +} + +#carbonads .carbon-text:hover, #carbonads .carbon-poweredby:hover { + text-decoration: none; +} + +#carbonads .carbon-poweredby { + color: #9D9D9D; +} + +/*#checkbox .sample1 label {*/ + /*font-weight: bold;*/ +/*}*/ + +/*#checkbox .hint {*/ + /*padding-left: 45px;*/ + /*padding-top: 20px;*/ + /*font-weight: 400;*/ +/*}*/ + +/*#checkbox .sample1 {*/ + /*padding-bottom: 20px;*/ +/*}*/ + +/*#checkbox h2 {*/ + /*font-size: 18.7199993133545px;*/ + /*font-weight: bold;*/ + /*margin-bottom: 30px;*/ +/*}*/ + +/*#checkbox .sample2 {*/ + /*width: 300px;*/ + /*clear: both;*/ + /*font-weight: 400;*/ +/*}*/ + +/*#checkbox .sample2 {*/ + /*padding: 10px 0;*/ +/*}*/ + +/*#checkbox .sample2 .text {*/ + /*display: inline-block;*/ +/*}*/ + +/*#checkbox .sample2 .checkbox {*/ + /*float: right;*/ + /*margin: 0;*/ +/*}*/ + +/*#progress-bar h2 {*/ + /*font-size: 18.7199993133545px;*/ + /*font-weight: bold;*/ + /*margin-bottom: 30px;*/ +/*}*/ + +/*#dialog h2 {*/ + /*padding: 14px;*/ + /*margin: 0;*/ + /*font-size: 16px;*/ + /*font-weight: 400;*/ +/*}*/ + +/*#shadow h2 {*/ +/*padding: 14px;*/ +/*margin: 0;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +#shadow .sample { + width: 100px; + height: 100px; + margin: 16px; + padding: 16px; + display: inline-block; +} + +#shadow-sample2 { + display: inline-block; + width: 100px; + height: 100px; + margin: 16px; + padding: 16px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + +} + +#shadow-sample3 { + display: inline-block; + width: 100px; + height: 100px; + margin: 16px; + padding: 16px; + border-radius: 100px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +/*#radio-button h2 {*/ + /*font-size: 18.7199993133545px;*/ + /*font-weight: bold;*/ + /*margin-bottom: 30px;*/ + /*margin-top: 50px;*/ +/*}*/ + +/*#radio-button .radio {*/ + /*margin: 20px 10px;*/ +/*}*/ + +/*#input h2 {*/ +/*padding: 14px;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +#input .inputs { + width: 80%; +} + +/*#input .form-group {*/ + /*margin: 30px 0;*/ +/*}*/ + +/*#slider .sample1, #slider .sample2 {*/ + /*padding: 20px 0;*/ + /*background-color: #f0f0f0;*/ + /*margin-bottom: 20px;*/ +/*}*/ + +#slider .sample2 { + height: 150px; +} + +/*#slider .sample2 .slider {*/ + /*margin: 0 40px;*/ +/*}*/ + +/*#slider h2 {*/ +/*padding: 14px;*/ +/*margin: 0;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +/*#slider .slider {*/ + /*margin: 15px;*/ +/*}*/ + +/*#button h2 {*/ +/*padding: 14px;*/ +/*margin: 0;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +/*#floating-action-button .btn {*/ + /*margin: 20px;*/ +/*}*/ + +/*#floating-action-button h2 {*/ +/*padding: 14px;*/ +/*margin: 0;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +/*#dropdown h2 {*/ +/*padding: 14px;*/ +/*margin: 0;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +/*#dropdown .dropdown {*/ + /*font-size: 30px;*/ + /*padding: 20px;*/ +/*}*/ + +/*#dropdown-menu h2 {*/ +/*padding: 14px;*/ +/*margin: 0;*/ +/*font-size: 16px;*/ +/*font-weight: 400;*/ +/*}*/ + +/*#dropdown-menu .sample {*/ + /*width: 200px;*/ +/*}*/ + +/*#dropdown-menu .form-group {*/ + /*margin: 30px 0;*/ +/*}*/ + +/*#toggle-button h2 {*/ + /*font-size: 18.7199993133545px;*/ + /*font-weight: bold;*/ + /*margin-bottom: 30px;*/ + /*margin-top: 50px;*/ +/*}*/ + +/*#toggle-button .togglebutton label {*/ + /*margin: 20px 10px;*/ + /*width: 200px;*/ +/*}*/ + +/*#toggle-button .togglebutton .toggle {*/ + /*float: right;*/ +/*}*/ diff --git a/public/assets/vendor/bootstrap-material-design/less/_alerts.less b/public/assets/vendor/bootstrap-material-design/less/_alerts.less new file mode 100755 index 00000000..e010b743 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_alerts.less @@ -0,0 +1,24 @@ +.alert { + border: 0; + border-radius: 0; + + // SASS conversion note: please mirror any content change in _mixins-shared.scss alert-variations-content + .generic-variations(~".alert", ~"", @mdb-text-color-light, { + background-color: @variation-color; + color: @variation-color-text; + + a, .alert-link { + color: @variation-color-text; + } + }); + + &-info, &-danger, &-warning, &-success { + color: @mdb-text-color-light; + } + + &-default { + a, .alert-link { + color: @mdb-text-color-primary; + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_buttons.less b/public/assets/vendor/bootstrap-material-design/less/_buttons.less new file mode 100644 index 00000000..bd191662 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_buttons.less @@ -0,0 +1,246 @@ +// specification: https://www.google.com/design/spec/components/buttons.html + +.typo-button(@colorContrast: false) { + font-size: @mdb-btn-font-size-base; + font-weight: 500; + text-transform: uppercase; + //line-height: 1; + letter-spacing: 0; + + & when (@colorContrast) { + opacity: 0.87; + } +} + +// mdb default buttons are flat by default +// synchronized with mdl 11/23/15 +.btn, +.input-group-btn .btn { + border: none; + border-radius: @border-radius-base; + position: relative; + padding: 8px 30px; + margin: 10px 1px; + .typo-button(); + will-change: box-shadow, transform; + transition: box-shadow 0.2s @mdb-animation-curve-fast-out-linear-in, + background-color 0.2s @mdb-animation-curve-default, + color 0.2s @mdb-animation-curve-default; + outline: 0; + cursor: pointer; + text-decoration: none; + + &::-moz-focus-inner { + border: 0; + } + + //--- + // btn-flat + background: transparent; + &:not(.btn-raised) { + .variations(~".btn", ~"", color, @mdb-text-color-primary); + box-shadow: none; + + &:not(.btn-link) { + &:hover, + &:focus { + // spec: flat/light bg Hover: 20% #999999 + background-color: fade(#999999, 20%); + + .theme-dark & { + // spec: dark bg Hover: 15% #CCCCCC + background-color: fade(#CCCCCC, 15%); + } + } + } + } + + //-- + // color variations + &.btn-raised, + &.btn-fab, + .btn-group-raised & { + .background-variations(~".btn", ~"", @mdb-btn-background-color); + } + + //--- + // btn-raised + &.btn-raised, + .btn-group-raised & { + &:not(.btn-link) { + .shadow-2dp(); + + // colors on hover, focus, active + &:hover, + &:focus, + &.active, + &:active { + + outline: 0; + + // FIXME: SPEC - this should be the 600 color, how can we get that programmatically if at all? Or are we limited to the color palette only? + // SASS conversion note: please mirror any content change in _mixins-shared.scss button-variations-content + .generic-variations(~".btn", ~"", @mdb-btn-background-color, { + background-color: contrast(@variation-color, darken(@variation-color, 4%), lighten(@variation-color, 4%), @contrast-factor); + }); + + // Spec: + // - Raised Light/Light theme no hover. + // - Raised Dark/Dark theme Hover color: 600 + .theme-dark & { + } + } + + // shadow on active + &.active, + &:active { + &, + &:hover { + .shadow-4dp(); + } + } + + // shadow on focus + // Focus should take precedence over active, so specificity is needed + &:focus { + &, + &.active, + &:active { + &, + &:hover { + .focus-shadow(); + } + } + } + } + } + + &.btn-fab { + // see above for color variations + border-radius: 50%; + font-size: @mdb-btn-fab-font-size; + height: @mdb-btn-fab-size; + margin: auto; + min-width: @mdb-btn-fab-size; + width: @mdb-btn-fab-size; + padding: 0; + overflow: hidden; + box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24); + position: relative; + line-height: normal; + + .ripple-container { + border-radius: 50%; + } + + &.btn-fab-mini, + .btn-group-sm & { + height: @mdb-btn-fab-size-mini; + min-width: @mdb-btn-fab-size-mini; + width: @mdb-btn-fab-size-mini; + + &.material-icons { + top: (@mdb-btn-icon-size-mini - @mdb-btn-fab-font-size) / 2; + left: (@mdb-btn-icon-size-mini - @mdb-btn-fab-font-size) / 2; + } + } + + i.material-icons { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-(@mdb-btn-fab-font-size / 2), -(@mdb-btn-fab-font-size / 2)); + line-height: @mdb-btn-fab-font-size; + width: @mdb-btn-fab-font-size; + } + } + + // Align icons inside buttons with text + i.material-icons { + vertical-align: middle; + } + + // Size variations + &.btn-lg, + .btn-group-lg & { + font-size: @mdb-btn-font-size-lg; + } + &.btn-sm, + .btn-group-sm & { + padding: 5px 20px; + font-size: @mdb-btn-font-size-sm; + } + &.btn-xs, + .btn-group-xs & { + padding: 4px 15px; + font-size: @mdb-btn-font-size-xs; + } +} + +// Disabled buttons and button groups +.btn, +.input-group-btn .btn, +.btn-group, +.btn-group-vertical { + // have to ratchet up the specificity to kill drop shadows on disabled raised buttons + fieldset[disabled][disabled] &, + &.disabled, + &:disabled, + &[disabled][disabled] { + // spec: light theme: Disabled text: 26% #000000 + color: fade(#000000, 26%); + .theme-dark & { + // spec: dark theme: Disabled text: 30% #FFFFFF + color: fade(#FFFFFF, 30%); + } + + // flat buttons lose transparency + background: transparent; + + // no box-shadow on raised - need specificity + &.btn-raised, + &.btn-group-raised { + &, + &.active, + &:active, + &:focus:not(:active) { + box-shadow: none; + } + } + } +} + +// btn-group variations +.btn-group, +.btn-group-vertical { + + position: relative; + //border-radius: 2px; + margin: 10px 1px; + + // spec: https://www.google.com/design/spec/components/buttons.html#buttons-toggle-buttons + &.open { + .dropdown-toggle { + //box-shadow: none; + } + + & > .dropdown-toggle.btn { + .variations(~".btn", ~"", background-color, @mdb-btn-background-color); + } + } + + .dropdown-menu { + border-radius: 0 0 @border-radius-base @border-radius-base; + } + + &.btn-group-raised { + .shadow-2dp(); + } + + & .btn + .btn, + .btn, + .btn:active, + .btn-group { + margin: 0; + } +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_cards.less b/public/assets/vendor/bootstrap-material-design/less/_cards.less new file mode 100644 index 00000000..52c4853e --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_cards.less @@ -0,0 +1,66 @@ +.card { + + /***** Make height equal to width (http://stackoverflow.com/a/6615994) ****/ + + display: inline-block; + position: relative; + width: 100%; + .card-height-indicator { + margin-top: 100%; + } + .card-content { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + + /**************************************************************************/ + + + border-radius: @border-radius-base; + color: @mdb-card-body-text; + background: @mdb-card-body-background; + + .shadow-z-2(); + + .card-image { + height: 60%; + position: relative; + overflow: hidden; + img { + width: 100%; + height: 100%; + border-top-left-radius: 2px; + border-top-right-radius: 2px; + pointer-events: none; + } + .card-image-headline { + position: absolute; + bottom: 16px; + left: 18px; + color: @mdb-card-image-headline; + font-size: 2em; + } + } + + .card-body { + height: 30%; + padding: 18px; + } + + .card-footer { + height: 10%; + padding: 18px; + button, a { + margin: 0 !important; + position: relative; + bottom: 25px; + width: auto; + &:first-child { + left: -15px; + } + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_checkboxes.less b/public/assets/vendor/bootstrap-material-design/less/_checkboxes.less new file mode 100644 index 00000000..9c45fc3e --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_checkboxes.less @@ -0,0 +1,270 @@ +// http://www.google.com/design/spec/components/selection-controls.html#selection-controls-checkbox + +.checkbox label, +label.checkbox-inline { + cursor: pointer; + padding-left: 0; // Reset for Bootstrap rule + color: @mdb-checkbox-label-color; + .mdb-label-color-toggle-focus(); +} + +.checkbox, +label.checkbox-inline { + // Hide native checkbox + input[type=checkbox] { + opacity: 0; + position: absolute; + margin: 0; + z-index: -1; + width: 0; + height: 0; + overflow: hidden; + left: 0; + pointer-events: none; + } + + .checkbox-material { + vertical-align: middle; + position: relative; + top: 3px; + &:before { // FIXME: document why this is necessary (doesn't seem to be on chrome) + display: block; + position: absolute; + top:-5px; + left: 0; + content: ""; + background-color: rgba(0, 0, 0, .84); + height: @mdb-checkbox-size; + width: @mdb-checkbox-size; + border-radius: 100%; + z-index: 1; + opacity: 0; + margin: 0; + transform: scale3d(2.3, 2.3, 1); + } + + .check { + position: relative; + display: inline-block; + width: @mdb-checkbox-size; + height: @mdb-checkbox-size; + border: @mdb-checkbox-border-size solid @mdb-checkbox-border-color; + border-radius: @border-radius-base; + overflow: hidden; + z-index: 1; + } + .check:before { + position: absolute; + content: ""; + transform: rotate(45deg); + display: block; + margin-top: -4px; + margin-left: 6px; + width: 0; + height: 0; + box-shadow: + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0 inset; + } + } + + input[type=checkbox] { + + &:focus + .checkbox-material .check:after { + opacity: 0.2; + } + + &:focus{ + + &:checked{ + & + .checkbox-material:before { + animation: rippleOn 500ms; + } + & + .checkbox-material .check:before { + animation: checkbox-on @mdb-checkbox-animation-check forwards; + } + & + .checkbox-material .check:after { + animation: rippleOn @mdb-checkbox-animation-ripple forwards; // Ripple effect on check + } + } + + &:not(:checked) { + & + .checkbox-material:before { + animation: rippleOff 500ms; + } + & + .checkbox-material .check:before { + animation: checkbox-off @mdb-checkbox-animation-check forwards; + } + & + .checkbox-material .check:after { + animation: rippleOff @mdb-checkbox-animation-ripple forwards; // Ripple effect on uncheck + } + } + + } + + + &:checked { + + // FIXME: once working - combine further to reduce code + & + .checkbox-material .check { + color: @mdb-checkbox-checked-color; + border-color: @mdb-checkbox-checked-color; + } + + & + .checkbox-material .check:before { + color: @mdb-checkbox-checked-color; + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 20px -12px 0 11px; + } + + & + .checkbox-material .check:after { + //background-color: @brand-success; // FIXME: seems like tho wrong color, test and make sure it can be removed + } + } + } + + // Style for disabled inputs + fieldset[disabled] &, + fieldset[disabled] & input[type=checkbox], + input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check:before, + input[type=checkbox][disabled]:not(:checked) ~ .checkbox-material .check, + input[type=checkbox][disabled] + .circle { + opacity: 0.5; + } + input[type=checkbox][disabled] + .checkbox-material .check:after { + background-color: @mdb-text-color-primary; + transform: rotate(-45deg); + } +} + +@keyframes checkbox-on { + 0% { + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 15px 2px 0 11px; + } + 50% { + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 20px 2px 0 11px; + } + 100% { + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 20px -12px 0 11px; + } +} + +@keyframes checkbox-off { + 0% { + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 20px -12px 0 11px, + 0 0 0 0 inset; + } + 25% { + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 20px -12px 0 11px, + 0 0 0 0 inset; + } + 50% { + transform: rotate(45deg); + margin-top: -4px; + margin-left: 6px; + width: 0; + height: 0; + box-shadow: + 0 0 0 10px, + 10px -10px 0 10px, + 32px 0 0 20px, + 0px 32px 0 20px, + -5px 5px 0 10px, + 15px 2px 0 11px, + 0 0 0 0 inset; + } + 51% { + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + box-shadow: + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 10px inset; + } + 100% { + transform: rotate(0deg); + margin-top: -2px; + margin-left: -2px; + width: 20px; + height: 20px; + box-shadow: + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0 0 0 0, + 0px 0 0 0 inset; + } +} + +@keyframes rippleOn { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} + +@keyframes rippleOff { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_colors.less b/public/assets/vendor/bootstrap-material-design/less/_colors.less new file mode 100644 index 00000000..e562cdf2 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_colors.less @@ -0,0 +1,362 @@ +/* + +To get this list of colors inject jQuery at http://www.google.com/design/spec/style/color.html#color-color-palette + +Then, run this script to get the list. + + +(function() { + var colors = {}, main = {}; + $(".color-group").each(function() { + var color = $(this).find(".name").text().trim().toLowerCase().replace(" ", "-"); + colors[color] = {}; + + $(this).find(".color").not(".main-color").each(function() { + var shade = $(this).find(".shade").text().trim(), + hex = $(this).find(".hex").text().trim(); + + colors[color][shade] = hex; + }); + main[color] = color + "-" + $(this).find(".main-color .shade").text().trim(); + + }); + var LESS = ""; + $.each(colors, function(name, shades) { + LESS += "\n\n"; + $.each(shades, function(shade, hex) { + LESS += "@" + name + "-" + shade + ": " + hex + ";\n"; + }); + if (main[name]) { + LESS += "@" + name + ": " + main[name] + ";\n"; + } + }); + console.log(LESS); +})(); + + +*/ +@red-50: #ffebee; +@red-100: #ffcdd2; +@red-200: #ef9a9a; +@red-300: #e57373; +@red-400: #ef5350; +@red-500: #f44336; +@red-600: #e53935; +@red-700: #d32f2f; +@red-800: #c62828; +@red-900: #b71c1c; +@red-A100: #ff8a80; +@red-A200: #ff5252; +@red-A400: #ff1744; +@red-A700: #d50000; +@red: @red-500; + + +@pink-50: #fce4ec; +@pink-100: #f8bbd0; +@pink-200: #f48fb1; +@pink-300: #f06292; +@pink-400: #ec407a; +@pink-500: #e91e63; +@pink-600: #d81b60; +@pink-700: #c2185b; +@pink-800: #ad1457; +@pink-900: #880e4f; +@pink-A100: #ff80ab; +@pink-A200: #ff4081; +@pink-A400: #f50057; +@pink-A700: #c51162; +@pink: @pink-500; + + +@purple-50: #f3e5f5; +@purple-100: #e1bee7; +@purple-200: #ce93d8; +@purple-300: #ba68c8; +@purple-400: #ab47bc; +@purple-500: #9c27b0; +@purple-600: #8e24aa; +@purple-700: #7b1fa2; +@purple-800: #6a1b9a; +@purple-900: #4a148c; +@purple-A100: #ea80fc; +@purple-A200: #e040fb; +@purple-A400: #d500f9; +@purple-A700: #aa00ff; +@purple: @purple-500; + + +@deep-purple-50: #ede7f6; +@deep-purple-100: #d1c4e9; +@deep-purple-200: #b39ddb; +@deep-purple-300: #9575cd; +@deep-purple-400: #7e57c2; +@deep-purple-500: #673ab7; +@deep-purple-600: #5e35b1; +@deep-purple-700: #512da8; +@deep-purple-800: #4527a0; +@deep-purple-900: #311b92; +@deep-purple-A100: #b388ff; +@deep-purple-A200: #7c4dff; +@deep-purple-A400: #651fff; +@deep-purple-A700: #6200ea; +@deep-purple: @deep-purple-500; + + +@indigo-50: #e8eaf6; +@indigo-100: #c5cae9; +@indigo-200: #9fa8da; +@indigo-300: #7986cb; +@indigo-400: #5c6bc0; +@indigo-500: #3f51b5; +@indigo-600: #3949ab; +@indigo-700: #303f9f; +@indigo-800: #283593; +@indigo-900: #1a237e; +@indigo-A100: #8c9eff; +@indigo-A200: #536dfe; +@indigo-A400: #3d5afe; +@indigo-A700: #304ffe; +@indigo: @indigo-500; + + +@blue-50: #e3f2fd; +@blue-100: #bbdefb; +@blue-200: #90caf9; +@blue-300: #64b5f6; +@blue-400: #42a5f5; +@blue-500: #2196f3; +@blue-600: #1e88e5; +@blue-700: #1976d2; +@blue-800: #1565c0; +@blue-900: #0d47a1; +@blue-A100: #82b1ff; +@blue-A200: #448aff; +@blue-A400: #2979ff; +@blue-A700: #2962ff; +@blue: @blue-500; + + +@light-blue-50: #e1f5fe; +@light-blue-100: #b3e5fc; +@light-blue-200: #81d4fa; +@light-blue-300: #4fc3f7; +@light-blue-400: #29b6f6; +@light-blue-500: #03a9f4; +@light-blue-600: #039be5; +@light-blue-700: #0288d1; +@light-blue-800: #0277bd; +@light-blue-900: #01579b; +@light-blue-A100: #80d8ff; +@light-blue-A200: #40c4ff; +@light-blue-A400: #00b0ff; +@light-blue-A700: #0091ea; +@light-blue: @light-blue-500; + + +@cyan-50: #e0f7fa; +@cyan-100: #b2ebf2; +@cyan-200: #80deea; +@cyan-300: #4dd0e1; +@cyan-400: #26c6da; +@cyan-500: #00bcd4; +@cyan-600: #00acc1; +@cyan-700: #0097a7; +@cyan-800: #00838f; +@cyan-900: #006064; +@cyan-A100: #84ffff; +@cyan-A200: #18ffff; +@cyan-A400: #00e5ff; +@cyan-A700: #00b8d4; +@cyan: @cyan-500; + + +@teal-50: #e0f2f1; +@teal-100: #b2dfdb; +@teal-200: #80cbc4; +@teal-300: #4db6ac; +@teal-400: #26a69a; +@teal-500: #009688; +@teal-600: #00897b; +@teal-700: #00796b; +@teal-800: #00695c; +@teal-900: #004d40; +@teal-A100: #a7ffeb; +@teal-A200: #64ffda; +@teal-A400: #1de9b6; +@teal-A700: #00bfa5; +@teal: @teal-500; + + +@green-50: #e8f5e9; +@green-100: #c8e6c9; +@green-200: #a5d6a7; +@green-300: #81c784; +@green-400: #66bb6a; +@green-500: #4caf50; +@green-600: #43a047; +@green-700: #388e3c; +@green-800: #2e7d32; +@green-900: #1b5e20; +@green-A100: #b9f6ca; +@green-A200: #69f0ae; +@green-A400: #00e676; +@green-A700: #00c853; +@green: @green-500; + + +@light-green-50: #f1f8e9; +@light-green-100: #dcedc8; +@light-green-200: #c5e1a5; +@light-green-300: #aed581; +@light-green-400: #9ccc65; +@light-green-500: #8bc34a; +@light-green-600: #7cb342; +@light-green-700: #689f38; +@light-green-800: #558b2f; +@light-green-900: #33691e; +@light-green-A100: #ccff90; +@light-green-A200: #b2ff59; +@light-green-A400: #76ff03; +@light-green-A700: #64dd17; +@light-green: @light-green-500; + + +@lime-50: #f9fbe7; +@lime-100: #f0f4c3; +@lime-200: #e6ee9c; +@lime-300: #dce775; +@lime-400: #d4e157; +@lime-500: #cddc39; +@lime-600: #c0ca33; +@lime-700: #afb42b; +@lime-800: #9e9d24; +@lime-900: #827717; +@lime-A100: #f4ff81; +@lime-A200: #eeff41; +@lime-A400: #c6ff00; +@lime-A700: #aeea00; +@lime: @lime-500; + + +@yellow-50: #fffde7; +@yellow-100: #fff9c4; +@yellow-200: #fff59d; +@yellow-300: #fff176; +@yellow-400: #ffee58; +@yellow-500: #ffeb3b; +@yellow-600: #fdd835; +@yellow-700: #fbc02d; +@yellow-800: #f9a825; +@yellow-900: #f57f17; +@yellow-A100: #ffff8d; +@yellow-A200: #ffff00; +@yellow-A400: #ffea00; +@yellow-A700: #ffd600; +@yellow: @yellow-500; + + +@amber-50: #fff8e1; +@amber-100: #ffecb3; +@amber-200: #ffe082; +@amber-300: #ffd54f; +@amber-400: #ffca28; +@amber-500: #ffc107; +@amber-600: #ffb300; +@amber-700: #ffa000; +@amber-800: #ff8f00; +@amber-900: #ff6f00; +@amber-A100: #ffe57f; +@amber-A200: #ffd740; +@amber-A400: #ffc400; +@amber-A700: #ffab00; +@amber: @amber-500; + + +@orange-50: #fff3e0; +@orange-100: #ffe0b2; +@orange-200: #ffcc80; +@orange-300: #ffb74d; +@orange-400: #ffa726; +@orange-500: #ff9800; +@orange-600: #fb8c00; +@orange-700: #f57c00; +@orange-800: #ef6c00; +@orange-900: #e65100; +@orange-A100: #ffd180; +@orange-A200: #ffab40; +@orange-A400: #ff9100; +@orange-A700: #ff6d00; +@orange: @orange-500; + + +@deep-orange-50: #fbe9e7; +@deep-orange-100: #ffccbc; +@deep-orange-200: #ffab91; +@deep-orange-300: #ff8a65; +@deep-orange-400: #ff7043; +@deep-orange-500: #ff5722; +@deep-orange-600: #f4511e; +@deep-orange-700: #e64a19; +@deep-orange-800: #d84315; +@deep-orange-900: #bf360c; +@deep-orange-A100: #ff9e80; +@deep-orange-A200: #ff6e40; +@deep-orange-A400: #ff3d00; +@deep-orange-A700: #dd2c00; +@deep-orange: @deep-orange-500; + + +@brown-50: #efebe9; +@brown-100: #d7ccc8; +@brown-200: #bcaaa4; +@brown-300: #a1887f; +@brown-400: #8d6e63; +@brown-500: #795548; +@brown-600: #6d4c41; +@brown-700: #5d4037; +@brown-800: #4e342e; +@brown-900: #3e2723; +@brown-A100: #d7ccc8; +@brown-A200: #bcaaa4; +@brown-A400: #8d6e63; +@brown-A700: #5d4037; +@brown: @brown-500; + + +@grey-50: #fafafa; +@grey-100: #f5f5f5; +@grey-200: #eeeeee; +@grey-300: #e0e0e0; +@grey-400: #bdbdbd; +@grey-500: #9e9e9e; @rgb-grey-500: "158, 158, 158"; +@grey-600: #757575; +@grey-700: #616161; +@grey-800: #424242; +@grey-900: #212121; +@grey-A100: #f5f5f5; +@grey-A200: #eeeeee; +@grey-A400: #bdbdbd; +@grey-A700: #616161; +@grey: @grey-500; + + +@blue-grey-50: #eceff1; +@blue-grey-100: #cfd8dc; +@blue-grey-200: #b0bec5; +@blue-grey-300: #90a4ae; +@blue-grey-400: #78909c; +@blue-grey-500: #607d8b; +@blue-grey-600: #546e7a; +@blue-grey-700: #455a64; +@blue-grey-800: #37474f; +@blue-grey-900: #263238; +@blue-grey-A100: #cfd8dc; +@blue-grey-A200: #b0bec5; +@blue-grey-A400: #78909c; +@blue-grey-A700: #455a64; +@blue-grey: @blue-grey-500; + + +@black: #000000; @rgb-black: "0,0,0"; +@white: #ffffff; @rgb-white: "255,255,255"; diff --git a/public/assets/vendor/bootstrap-material-design/less/_core.less b/public/assets/vendor/bootstrap-material-design/less/_core.less new file mode 100644 index 00000000..68a85d77 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_core.less @@ -0,0 +1,93 @@ +body { + background-color: @body-bg; + &.inverse { + background: #333333; + &, .form-control { + color: @mdb-text-color-light; + } + .modal, + .panel-default, + .card { + &, + .form-control { + background-color: initial; + color: initial; + } + } + + } +} + + +body, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4 { + font-family: @font-family-sans-serif; + font-weight: 300; +} + +h5, h6{ + font-weight: 400; +} + +a, a:hover, a:focus { + color: @link-color; + + & .material-icons { + vertical-align: middle; + } +} + +@import "_form.less"; +@import "_welljumbo.less"; +@import "_buttons.less"; +@import "_checkboxes.less"; +@import "_togglebutton.less"; +@import "_radios.less"; +@import "_inputs.less"; + +legend { + border-bottom: 0; +} + +@import "_lists.less"; +@import "_navbar.less"; + +.dropdown-menu { + border: 0; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); + .divider { + background-color: rgba(0, 0, 0, .12); + } + li { + overflow: hidden; + position: relative; + a:hover { + background-color: transparent; + color: @brand-primary; + } + } +} + +@import "_alerts.less"; +@import "_progress.less"; +@import "_typography.less"; +@import "_tabs.less"; +@import "_popups.less"; +@import "_cards.less"; +@import "_dialogs.less"; +@import "_panels.less"; +@import "_dividers.less"; + +// Prevent highlight on mobile +* { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + -webkit-tap-highlight-color: transparent; + &:focus { + outline: 0; + } +} + + +@import "_themes.less"; + +// External plugins +@import "_plugins.less"; diff --git a/public/assets/vendor/bootstrap-material-design/less/_dialogs.less b/public/assets/vendor/bootstrap-material-design/less/_dialogs.less new file mode 100644 index 00000000..9c83d6f6 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_dialogs.less @@ -0,0 +1,52 @@ +// +// Modals +// Material Design element Dialogs +// -------------------------------------------------- +.modal-content { + .shadow-z-5(); + border-radius: @border-radius-base; + border: none; + // Modal header + // Top section of the modal w/ title and dismiss + .modal-header { + border-bottom: none; + padding-top: 24px; + padding-right: 24px; + padding-bottom: 0; + padding-left: 24px; + } + // Modal body + // Where all modal content resides (sibling of .modal-header and .modal-footer) + .modal-body { + padding-top: 24px; + padding-right: 24px; + padding-bottom: 16px; + padding-left: 24px; + } + // Footer (for actions) + .modal-footer { + border-top: none; + padding: 7px; + button { + margin: 0; + padding-left: 16px; + padding-right: 16px; + width: auto; + &.pull-left { + padding-left: 5px; + padding-right: 5px; + position: relative; + left: -5px; + } + } + button+button { + margin-bottom: 16px; + } + } + .modal-body + .modal-footer { + padding-top: 0; + } +} +.modal-backdrop { + background: rgba(0,0,0,0.3); +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_dividers.less b/public/assets/vendor/bootstrap-material-design/less/_dividers.less new file mode 100644 index 00000000..7631a0a5 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_dividers.less @@ -0,0 +1,71 @@ +hr { + &.on-dark { + color: lighten(@black, 10%); + } + + &.on-light { + color: lighten(@white, 10%); + } + + @media (-webkit-min-device-pixel-ratio: 0.75), + (min--moz-device-pixel-ratio: 0.75), + (-o-device-pixel-ratio: 3/4), + (min-device-pixel-ratio: 0.75), + (min-resolution: 0.75dppx), + (min-resolution: 120dpi) { + height:0.75px; + } + + @media (-webkit-min-device-pixel-ratio: 1), + (min--moz-device-pixel-ratio: 1), + (-o-device-pixel-ratio: 1), + (min-device-pixel-ratio: 1), + (min-resolution: 1dppx), + (min-resolution: 160dpi) { + height:1px; + } + @media (-webkit-min-device-pixel-ratio: 1.33), + (min--moz-device-pixel-ratio: 1.33), + (-o-device-pixel-ratio: 133/100), + (min-device-pixel-ratio: 1.33), + (min-resolution: 1.33dppx), + (min-resolution: 213dpi) { + height:1.333px; + } + @media (-webkit-min-device-pixel-ratio: 1.5), + (min--moz-device-pixel-ratio: 1.5), + (-o-device-pixel-ratio: 3/2), + (min-device-pixel-ratio: 1.5), + (min-resolution: 1.5dppx), + (min-resolution: 240dpi) { + height:1.5px; + } + + @media (-webkit-min-device-pixel-ratio: 2), + (min--moz-device-pixel-ratio: 2), + (-o-device-pixel-ratio: 2/1), + (min-device-pixel-ratio: 2), + (min-resolution: 2dppx), + (min-resolution: 380dpi) { + height:2px; + } + + @media (-webkit-min-device-pixel-ratio: 3), + (min--moz-device-pixel-ratio: 3), + (-o-device-pixel-ratio: 3/1), + (min-device-pixel-ratio: 3), + (min-resolution: 3dppx), + (min-resolution: 480dpi) { + height:3px; + } + + @media (-webkit-min-device-pixel-ratio: 4), + (min--moz-device-pixel-ratio: 4), + (-o-device-pixel-ratio: 4/1), + (min-device-pixel-ratio: 3), + (min-resolution: 4dppx), + (min-resolution: 640dpi) { + height:4px; + } + +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_form.less b/public/assets/vendor/bootstrap-material-design/less/_form.less new file mode 100644 index 00000000..76431012 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_form.less @@ -0,0 +1,40 @@ +.mdb-label-color-toggle-focus() { + // override bootstrap focus and keep all the standard color (could be multiple radios in the form group) + .form-group.is-focused & { + color: @mdb-label-color; + + // on focus just darken the specific labels, do not turn them to the brand-primary + &:hover, + &:focus { + color: @mdb-label-color-toggle-focus; + } + + // correct the above focus color for disabled items + fieldset[disabled] & { + color: @mdb-label-color; + } + } +} + +.form-horizontal { + + // Consistent vertical alignment of radios and checkboxes + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + padding-top: 0; + } + + .radio { + margin-bottom: 10px; + } + + label { + text-align: right; + } + + label.control-label { + margin: 0; + } +} diff --git a/public/assets/vendor/bootstrap-material-design/less/_import-bs-less.less b/public/assets/vendor/bootstrap-material-design/less/_import-bs-less.less new file mode 100644 index 00000000..52e9f35d --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_import-bs-less.less @@ -0,0 +1,2 @@ +@import (optional) "../../bootstrap/less/variables.less"; +@import (optional) "../bower_components/bootstrap/less/variables.less"; diff --git a/public/assets/vendor/bootstrap-material-design/less/_import-bs-sass.less b/public/assets/vendor/bootstrap-material-design/less/_import-bs-sass.less new file mode 100644 index 00000000..0857e612 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_import-bs-sass.less @@ -0,0 +1,4 @@ +// hack due to differences between sass and less variable loading +// Less lazy loads, Sass doesn't. http://lesscss.org/features/#variables-feature-lazy-loading + +// do nothing here for less. diff --git a/public/assets/vendor/bootstrap-material-design/less/_inputs-size.less b/public/assets/vendor/bootstrap-material-design/less/_inputs-size.less new file mode 100644 index 00000000..63d65949 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/less/_inputs-size.less @@ -0,0 +1,221 @@ +// +// Forms - sizing - material - mirrors bootstrap/forms.less with custom sizing +// +// LEAVE THIS IDENTICAL TO THE BOOTSTRAP FILE - DO NOT CUSTOMIZE HERE. +// +// NOTE: this is intentionally kept structurally _identical_ to the bootstrap/forms.less file to make it easier +// to identify differences in sizing approaches to form inputs. +// -------------------------------------------------- + +legend { + margin-bottom: @mdb-input-line-height-computed; + font-size: (@mdb-input-font-size-base * 1.5); +} + +// Adjust output element +output { + padding-top: (@mdb-input-padding-base-vertical + 1); + font-size: @mdb-input-font-size-base; + line-height: @mdb-input-line-height-base; +} + +.form-control { + height: @mdb-input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: @mdb-input-padding-base-vertical @mdb-input-padding-base-horizontal; + font-size: @mdb-input-font-size-base; + line-height: @mdb-input-line-height-base; +} + +// Special styles for iOS temporal inputs +// +// In Mobile Safari, setting `display: block` on temporal inputs causes the +// text within the input to become vertically misaligned. As a workaround, we +// set a pixel line-height that matches the given height of the input, but only +// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 +// +// Note that as of 8.3, iOS doesn't support `datetime` or `week`. + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + &.form-control { + line-height: @mdb-input-height-base; + } + + &.input-sm, + .input-group-sm & { + line-height: @mdb-input-height-small; + } + + &.input-lg, + .input-group-lg & { + line-height: @mdb-input-height-large; + } + } +} + +.radio, +.checkbox { + + label { + min-height: @mdb-input-line-height-computed; // Ensure the input doesn't jump when there is no text + } +} + + +// Static form control text +// +// Apply class to a `p` element to make any string of text align with labels in +// a horizontal form layout. + +.form-control-static { + // Size it appropriately next to real form controls + padding-top: (@mdb-input-padding-base-vertical + 1); + padding-bottom: (@mdb-input-padding-base-vertical + 1); + min-height: (@mdb-input-line-height-computed + @mdb-input-font-size-base); +} + + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `` +// element gets special love because it's special, and that's a fact! + +// mixin pulled from bootstrap and altered for less/sass compatibility with sass parent hack. +// bootstrap-sass has this one, but we would have to then convert it back to less. chicken meet egg. +@mixin input-size($parent, $mdb-input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius){ + + #{$parent} { + height: $mdb-input-height; + padding: $padding-vertical $padding-horizontal; + font-size: $font-size; + line-height: $line-height; + border-radius: $border-radius; + } + + select#{$parent} { + height: $mdb-input-height; + line-height: $mdb-input-height; + } + + textarea#{$parent}, + select[multiple]#{$parent} { + height: auto; + } +} + + + +// Form control sizing +// +// Build on `.form-control` with modifier classes to decrease or increase the +// height and font-size of form controls. +// +// The `.form-group-* form-control` variations are sadly duplicated to avoid the +// issue documented in https://github.com/twbs/bootstrap/issues/15074. +.input-sm { + @include input-size(unquote(".input-sm"), $mdb-input-height-small, $mdb-input-padding-small-vertical, $mdb-input-padding-small-horizontal, $mdb-input-font-size-small, $mdb-input-line-height-small, $mdb-input-border-radius-small); +} +.form-group-sm { + .form-control { + height: $mdb-input-height-small; + padding: $mdb-input-padding-small-vertical $mdb-input-padding-small-horizontal; + font-size: $mdb-input-font-size-small; + line-height: $mdb-input-line-height-small; + } + select.form-control { + height: $mdb-input-height-small; + line-height: $mdb-input-height-small; + } + textarea.form-control, + select[multiple].form-control { + height: auto; + } + .form-control-static { + height: $mdb-input-height-small; + min-height: ($mdb-input-line-height-computed + $mdb-input-font-size-small); + padding: ($mdb-input-padding-small-vertical + 1) $mdb-input-padding-small-horizontal; + font-size: $mdb-input-font-size-small; + line-height: $mdb-input-line-height-small; + } +} + +.input-lg { + @include input-size(unquote(".input-lg"), $mdb-input-height-large, $mdb-input-padding-large-vertical, $mdb-input-padding-large-horizontal, $mdb-input-font-size-large, $mdb-input-line-height-large, $mdb-input-border-radius-large); +} +.form-group-lg { + .form-control { + height: $mdb-input-height-large; + padding: $mdb-input-padding-large-vertical $mdb-input-padding-large-horizontal; + font-size: $mdb-input-font-size-large; + line-height: $mdb-input-line-height-large; + } + select.form-control { + height: $mdb-input-height-large; + line-height: $mdb-input-height-large; + } + textarea.form-control, + select[multiple].form-control { + height: auto; + } + .form-control-static { + height: $mdb-input-height-large; + min-height: ($mdb-input-line-height-computed + $mdb-input-font-size-large); + padding: ($mdb-input-padding-large-vertical + 1) $mdb-input-padding-large-horizontal; + font-size: $mdb-input-font-size-large; + line-height: $mdb-input-line-height-large; + } +} + + +.form-horizontal { + + // Consistent vertical alignment of radios and checkboxes + // + // Labels also get some reset styles, but that is scoped to a media query below. + .radio, + .checkbox, + .radio-inline, + .checkbox-inline { + padding-top: ($mdb-input-padding-base-vertical + 1); // Default padding plus a border + } + // Account for padding we're adding to ensure the alignment and of help text + // and other content below items + .radio, + .checkbox { + min-height: ($mdb-input-line-height-computed + ($mdb-input-padding-base-vertical + 1)); + } + + // Reset spacing and right align labels, but scope to media queries so that + // labels on narrow viewports stack the same as a default form example. + @media (min-width: $screen-sm-min) { + .control-label { + padding-top: ($mdb-input-padding-base-vertical + 1); // Default padding plus a border + } + } + + + // Form group sizes + // + // Quick utility class for applying `.input-lg` and `.input-sm` styles to the + // inputs and labels within a `.form-group`. + .form-group-lg { + @media (min-width: $screen-sm-min) { + .control-label { + padding-top: (($mdb-input-padding-large-vertical * $mdb-input-line-height-large) + 1); + font-size: $mdb-input-font-size-large; + } + } + } + .form-group-sm { + @media (min-width: $screen-sm-min) { + .control-label { + padding-top: ($mdb-input-padding-small-vertical + 1); + font-size: $mdb-input-font-size-small; + } + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_inputs.scss b/public/assets/vendor/bootstrap-material-design/sass/_inputs.scss new file mode 100644 index 00000000..c35ec767 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_inputs.scss @@ -0,0 +1,355 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +@import '_inputs-size'; + +// label variations +.label { + border-radius: $border-radius-small; + @include variations(unquote(".label"), unquote(""), background-color, $grey); + padding: .3em .6em; // Make top & bottom .label padding the same: https://github.com/twbs/bootstrap/pull/19631 +} + +// must be broken out for reuse - webkit selector breaks firefox +@mixin label-static($label-top, $static-font-size, $static-line-height){ + label.control-label { + top: $label-top; + //left: 0; + @include left(0); + // must repeat because the selector above is more specific than the general label sizing + font-size: $static-font-size; + line-height: $static-line-height; + } +} + +@mixin label-size-variant($placeholder-font-size, $vertical-padding, $line-height, $static-font-size, $static-line-height, $help-block-font-size){ + .form-control { + @include material-placeholder { + font-size: $placeholder-font-size; + line-height: $line-height; + color: $mdb-input-placeholder-color; + font-weight: 400; + +} + // margin-bottom must be specified to give help-block vertical space. + // $see also form-group padding-bottom (and size variants) re: collapsible margins. These work together. + margin-bottom: $vertical-padding; + } + + // generic labels used anywhere in the form (not control-label) + .checkbox label, + .radio label, + label { + font-size: $placeholder-font-size; + line-height: $line-height; + color: $mdb-input-placeholder-color; + font-weight: 400; + } + + // smaller focused or static size + label.control-label { + font-size: $static-font-size; + line-height: $static-line-height; + font-weight: 400; + margin: 16px 0 0 0; // std and lg + } + + .help-block { + margin-top: 0; // allow the input margin to set-off the top of the help-block + font-size: $help-block-font-size; + } +} + +@mixin form-group-validation-state($name, $color){ + + &.#{$name} { // e.g. has-error + .form-control { + box-shadow: none; + } + &.is-focused .form-control { + background-image: linear-gradient($color, $color), linear-gradient($mdb-input-underline-color, $mdb-input-underline-color); + } + label.control-label, + .help-block { + color: $color; + } + } +} + +@mixin form-group-size-variant($parent, $placeholder-font-size, $label-top-margin, $vertical-padding, $line-height, $label-as-placeholder-shim){ + $static-font-size: ceil(($mdb-label-static-size-ratio * $placeholder-font-size)) !default; + $static-line-height: ($mdb-label-static-size-ratio * $line-height) !default; + + $label-as-placeholder-top: -1 * ($vertical-padding + $label-as-placeholder-shim) !default; + $label-top: $label-as-placeholder-top - ($placeholder-font-size + $vertical-padding) !default; + + $help-block-font-size: ceil(($mdb-help-block-size-ratio * $placeholder-font-size)) !default; + $help-block-line-height: ($mdb-help-block-size-ratio * $line-height) !default; + + // this is outside a form-group + @if not $parent { + @include label-size-variant($placeholder-font-size, $vertical-padding, $line-height, $static-font-size, $static-line-height, $help-block-font-size); + } + + // this is inside a form-group, may be .form-group.form-group-sm or .form-group.form-group-lg + @else { + #{$parent} { + @include label-size-variant($placeholder-font-size, $vertical-padding, $line-height, $static-font-size, $static-line-height, $help-block-font-size); + + // form-group padding-bottom + // upon collapsing margins, the largest margin is honored which collapses the form-control margin-bottom, + // so the form-control margin-bottom must also be expressed as form-group padding + padding-bottom: $vertical-padding; + + // form-group margin-top must be large enough for the label and the label's top padding since label is absolutely positioned + margin: ($label-top-margin + $static-font-size) 0 0 0; + + // larger labels as placeholders + &.label-floating, + &.label-placeholder { + label.control-label { + top: $label-as-placeholder-top; // place the floating label to look like a placeholder with input padding + font-size: $placeholder-font-size; + line-height: $line-height; + } + } + + // static, focused, or autofill floating labels + &.label-static, + &.label-floating.is-focused, + &.label-floating:not(.is-empty) { + @include label-static($label-top, $static-font-size, $static-line-height); + } + // #559 Fix for webkit/chrome autofill - rule must be separate because it breaks firefox otherwise #731 + &.label-floating input.form-control:-webkit-autofill ~ label.control-label { + @include label-static($label-top, $static-font-size, $static-line-height); + } + } + } +} + +// ----- +// Inputs +// +// Reference http://www.google.com/design/spec/components/text-fields.html +// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section +.form-control, +.form-group .form-control { + border: 0; + background-image: linear-gradient($brand-primary, $brand-primary), linear-gradient($mdb-input-underline-color, $mdb-input-underline-color); + background-size: 0 2px, 100% 1px; + background-repeat: no-repeat; + background-position: center bottom, center calc(100% - 1px); + background-color: rgba(0, 0, 0, 0); + transition: background 0s ease-out; + float: none; + box-shadow: none; + border-radius: 0; + + // Placeholders and and labels-as-placeholders should look the same + @include material-placeholder { + color: $mdb-input-placeholder-color; + font-weight: 400; + +} + + + //&:textarea { // appears to be an invalid selector + // height: 40px; + //} + + &[readonly], + &[disabled], + fieldset[disabled] & { + background-color: rgba(0, 0, 0, 0); + } + + &[disabled], + fieldset[disabled] & { + background-image: none; + border-bottom: 1px dotted $mdb-input-underline-color; + } +} + +// ----- +// Labels with form-group signalled state +// +// Reference http://www.google.com/design/spec/components/text-fields.html +// MDL implementation: http://www.getmdl.io/components/index.html#textfields-section +//.variations(unquote(" label.control-label"), color, $mdb-input-placeholder-color); // default label color variations + +.form-group { + position: relative; + + // ----- + // Labels with form-group signalled state + // + // Reference http://www.google.com/design/spec/components/text-fields.html + // MDL implementation: http://www.getmdl.io/components/index.html#textfields-section + &.label-static, + &.label-placeholder, + &.label-floating { + label.control-label { + position: absolute; + pointer-events: none; + transition: 0.3s ease all; + } + } + + // hint to browser for optimization + // TODO: evaluate effectiveness - looking for community feedback + &.label-floating label.control-label { + will-change: left, top, contents; + } + + // hide label-placeholders when the field is not empty + &.label-placeholder:not(.is-empty){ + label.control-label{ + display: none; + } + } + + // Help blocks - position: absolute approach - uses no vertical space, text wrapping - not so good. + .help-block { + position: absolute; // do not use position: absolute because width/wrapping isn't automatic and overflows occur + display: none; + } + + // form-group is-focused display + &.is-focused { + .form-control { + outline: none; + background-image: linear-gradient($brand-primary, $brand-primary), linear-gradient($mdb-input-underline-color, $mdb-input-underline-color); + background-size: 100% 2px, 100% 1px; + box-shadow: none; + transition-duration: 0.3s; + + .material-input:after { + background-color: $brand-primary; + } + } + + //.variations(unquote(".is-focused label.control-label"), color, $brand-primary); // focused label color variations + label, + label.control-label { + color: $brand-primary; + } + + //.variations(unquote(".is-focused.label-placeholder label.control-label"), color, $mdb-input-placeholder-color); // default label color variations + &.label-placeholder { + label, + label.control-label { + color: $mdb-input-placeholder-color; + } + } + + .help-block { + display: block; + } + } + + @include form-group-validation-state(has-warning, $brand-warning); + @include form-group-validation-state(has-error, $brand-danger); + @include form-group-validation-state(has-success, $brand-success); + @include form-group-validation-state(has-info, $brand-info); + + textarea { + resize: none; + & ~ .form-control-highlight { + margin-top: -11px; + } + } + + select { + appearance: none; // Fix for OS X + + & ~ .material-input:after { + display: none; + } + } +} + +// default floating size/location without a form-group (will skip form-group styles, and just render default sizing variation) +@include form-group-size-variant(null, $mdb-input-font-size-base, $mdb-label-top-margin-base, $mdb-input-padding-base-vertical, $mdb-input-line-height-base, $mdb-label-as-placeholder-shim-base); + +// default floating size/location with a form-group (need margin etc from a default form-group) +@include form-group-size-variant(unquote(".form-group"), $mdb-input-font-size-base, $mdb-label-top-margin-base, $mdb-input-padding-base-vertical, $mdb-input-line-height-base, $mdb-label-as-placeholder-shim-base); + +// sm floating size/location +@include form-group-size-variant(unquote(".form-group.form-group-sm"), $mdb-input-font-size-small, $mdb-label-top-margin-small, $mdb-input-padding-small-vertical, $mdb-input-line-height-small, $mdb-label-as-placeholder-shim-small); + +// lg floating size/location +@include form-group-size-variant(unquote(".form-group.form-group-lg"), $mdb-input-font-size-large, $mdb-label-top-margin-large, $mdb-input-padding-large-vertical, $mdb-input-line-height-large, $mdb-label-as-placeholder-shim-large); + + +select.form-control { + + border: 0; + box-shadow: none; + border-radius: 0; + + .form-group.is-focused & { + box-shadow: none; + border-color: $mdb-input-underline-color; + } + + &[multiple] { + &, + .form-group.is-focused & { + height: 85px; + } + } +} + +@mixin input-group-button-variation($vertical-padding){ + .input-group-btn { + .btn { + margin: 0 0 $vertical-padding 0; + } + } +} + +// ---------------- +// input group/addon related styles + +// default margin - no form-group required +@include input-group-button-variation($mdb-input-padding-base-vertical); + +.form-group { + //.form-control { + // float: none; + //} + + // sm margin + &.form-group-sm { + @include input-group-button-variation($mdb-input-padding-small-vertical); + } + + // lg margin + &.form-group-lg { + @include input-group-button-variation($mdb-input-padding-large-vertical); + } +} + +.input-group { // may be in or outside of form-group + .input-group-btn { + padding: 0 12px; // match addon spacing + } + + .input-group-addon { + border: 0; + background: transparent; + } +} + +// Input files - hide actual input - requires specific markup in the sample. +.form-group input[type=file] { + opacity: 0; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 100; +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_labels.scss b/public/assets/vendor/bootstrap-material-design/sass/_labels.scss new file mode 100644 index 00000000..40cb9c71 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_labels.scss @@ -0,0 +1,6 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.label { + border-radius: 1px; + @include variations(unquote(""), background-color, $grey); +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_lists.scss b/public/assets/vendor/bootstrap-material-design/sass/_lists.scss new file mode 100644 index 00000000..fd643bd3 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_lists.scss @@ -0,0 +1,111 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.list-group { + border-radius: 0; + .list-group-item { + background-color: transparent; + overflow: hidden; + border: 0; + border-radius: 0; + padding: 0 16px; + &.baseline { + border-bottom: 1px solid #cecece; + &:last-child { + border-bottom: none; + } + } + .row-picture, .row-action-primary { + //float: left; WARNING: float can't be used with display: inline-block. Certain properties shouldn't be used with certain display property values. (display-property-grouping) Browsers: All + display: inline-block; + //padding-right: 16px; + @include padding-right(16px); + img, i, label { + display: block; + width: 56px; + height: 56px; + } + img { + background: rgba(0,0,0,0.1); + padding: 1px; + &.circle { + border-radius: 100%; + } + } + i { + background: rgba(0,0,0,0.25); + border-radius: 100%; + text-align: center; + line-height: 56px; + font-size: 20px; + color: white; + } + label { + //margin-left: 7px; + @include margin-left(7px); + //margin-right: -7px; + @include margin-right(-7px); + margin-top: 5px; + margin-bottom: -5px; + .checkbox-material { + //left: -10px; + @include left(-10px); + } + } + } + .row-content { + display: inline-block; + width: unquote("calc(100% - 92px)"); + min-height: 66px; + .action-secondary { + position: absolute; + //right: 16px; + @include right(16px); + top: 16px; + i { + font-size: 20px; + color: rgba(0,0,0,0.25); + cursor: pointer; + } + } + .action-secondary ~ * { + max-width: unquote("calc(100% - 30px)"); + } + .least-content { + position: absolute; + //right: 16px; + @include right(16px); + top: 0; + color: rgba(0,0,0,0.54); + font-size: 14px; + } + } + .list-group-item-heading { + color: rgba(0, 0, 0, 0.77); + font-size: 20px; + line-height: 29px; + } + } + .list-group-item.active { + &:hover, &:focus { + background: rgba(0,0,0,.15); + outline: 10px solid rgba(0,0,0,.15); + } + .list-group-item-heading, .list-group-item-text { + color: $mdb-text-color-primary; + } + + } + .list-group-separator { + clear: both; + overflow: hidden; + margin-top: 10px; + margin-bottom: 10px; + &:before { + content: ""; + width: unquote("calc(100% - 90px)"); + border-bottom: 1px solid rgba(0,0,0,0.1); + //float: right; + @include float(right); + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_mixins-utilities.scss b/public/assets/vendor/bootstrap-material-design/sass/_mixins-utilities.scss new file mode 100644 index 00000000..6463812c --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_mixins-utilities.scss @@ -0,0 +1,31 @@ +// This file is here to emulate the less #contrast function + +// TODO: this may be useful for the inverse theme, but if not, remove (it is unused after the removal of fullpalette) + +// contrast-color and brightness borrowed from compass +// Copyright (c) 2009-2014 Christopher M. Eppstein +// Complies with license: https://github.com/Compass/compass/blob/stable/LICENSE.markdown +@function contrast-color($color, $dark: $contrasted-dark-default, $light: $contrasted-light-default, $threshold: null) { + @if $threshold { + // Deprecated in Compass 0.13 + @warn "The $threshold argment to contrast-color is no longer needed and will be removed in the next release."; + } + @if $color == null { + @return null; + } + @else { + $color-brightness: brightness($color); + $dark-text-brightness: brightness($dark); + $light-text-brightness: brightness($light); + @return if(abs($color-brightness - $light-text-brightness) > abs($color-brightness - $dark-text-brightness), $light, $dark); + } +} + +@function brightness($color) { + @if type-of($color) == color { + @return (red($color) * 0.299 + green($color) * 0.587 + blue($color) * 0.114) / 255 * 100%; + } + @else { + @return unquote("brightness(#{$color})"); + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_mixins.scss b/public/assets/vendor/bootstrap-material-design/sass/_mixins.scss new file mode 100644 index 00000000..2cc2d0c7 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_mixins.scss @@ -0,0 +1,242 @@ +// This file is NOT automatically converted and must be manually merged +@import "mixins-utilities"; + +// Placeholder text +@mixin material-placeholder() { + &::-moz-placeholder {@content; } // Firefox + &:-ms-input-placeholder {@content; } // Internet Explorer 10+ + &::-webkit-input-placeholder {@content; } // Safari and Chrome +} + + +// variations(unquote(""), background-color, #FFF); +@mixin variations($component, $selector-suffix, $mdb-param-1, $color-default) { + @include generic-variations($component, $selector-suffix, $color-default, "variations-content", $mdb-param-1); +} + +@mixin variations-content($args) { + //@debug "#{map-get($args, mixin-name)}{ #{map-get($args, material-param-1)}: #{map-get($args, variation-color)}; }"; + //@debug "#{inspect($args)}"; + //@error "break here"; + #{map-get($args, material-param-1)}: map-get($args, variation-color); +} + +@mixin background-variations($component, $selector-suffix, $color-default) { + @include generic-variations($component, $selector-suffix, $color-default, "background-variations-content", null); +} + +@mixin background-variations-content($args) { + background-color: map-get($args, variation-color); + @if (map-get($args, variation-color) == $mdb-btn-background-color) { + color: $mdb-text-color-primary; + } @else { + color: map-get($args, variation-color-text); + } +} + +//@mixin text-variations($component, $selector-suffix, $color-default) { +// @include generic-variations($component, $selector-suffix, $color-default, "text-variations-content", null); +//} +// +//@mixin text-variations-content($args) { +// color: map-get($args, variation-color); +//} + +@mixin button-variations($component, $selector-suffix, $color-default) { + @include generic-variations($component, $selector-suffix, $color-default, "button-variations-content", 4%); +} + +@mixin button-variations-content($args) { + //@debug "#{inspect($args)}"; + $variation-color: map-get($args, variation-color); + $mdb-param-1: map-get($args, material-param-1); + background-color: contrast-color($variation-color, + darken($variation-color, $mdb-param-1), + lighten($variation-color, $mdb-param-1)); +} + +//@mixin bg-color-variations($component, $selector-suffix, $color-default, $mdb-param-1) { +// @include generic-variations($component, $selector-suffix, $color-default, "bg-color-variations-content", $mdb-param-1); +//} +// +//@mixin bg-color-variations-content($args) { +// background-color: rgba(map-get($args, variation-color), map-get($args, material-param-1)); +//} +// +//// bg-box-shadow-variations(" label input[type=checkbox]:checked + .toggle:active:after", $brand-primary +//@mixin bg-box-shadow-variations($component, $selector-suffix, $color-default) { +// @include generic-variations($component, $selector-suffix, $color-default, "bg-box-shadow-variations-content", null); +//} +// +//@mixin bg-box-shadow-variations-content($args){ +// $variation-color: map-get($args, variation-color); +// box-shadow: 0 1px 3px 1px rgba(0,0,0,0.4), 0 0 0 15px rgba($variation-color, (10/100)); +//} +// +//// bg-img-variations(" label input[type=checkbox]:checked + .toggle:active:after", $brand-primary +//@mixin bg-img-variations($component, $selector-suffix, $color-default) { +// @include generic-variations($component, $selector-suffix, $color-default, "bg-img-variations-content", null); +//} +// +//@mixin bg-img-variations-content($args){ +// $variation-color: map-get($args, variation-color); +// //@debug "bg-img-variations-content called for #{map-get($args, extra)} #{map-get($args, default)} #{map-get($args, variation-color-name)} #{map-get($args, variation-color)}"; //#{inspect($args)}"; +// background-image: linear-gradient($variation-color, $variation-color), linear-gradient($mdb-input-underline-color, $mdb-input-underline-color); +//} + +// navbar-variations(" label input[type=checkbox]:checked + .toggle:active:after", $brand-primary +@mixin navbar-variations($component, $selector-suffix, $color-default) { + @include generic-variations($component, $selector-suffix, $color-default, "navbar-variations-content", null); +} + +@mixin navbar-variations-content($args){ + $variation-color: map-get($args, variation-color); + $variation-color-text: map-get($args, variation-color-text); + + background-color: $variation-color; + color: $variation-color-text; + // deeply defined to override welljumbo class without !impotant need + .navbar-form .form-group input.form-control, + .navbar-form input.form-control { + @include material-placeholder { + color: $variation-color-text; + } + } + .dropdown-menu { + border-radius: $border-radius-base; + li > a { + font-size: $mdb-dropdown-font-size; + padding: 13px 16px; + &:hover, + &:focus { + color: $variation-color; + background-color: $grey-200; + } + } + .active > a { + &:hover, + &:focus { + color: $variation-color-text; + } + background-color: $variation-color; + color: $variation-color-text; + } + } +} + +// alert-variations("", $brand-primary) +@mixin alert-variations($component, $selector-suffix, $color-default) { + @include generic-variations($component, $selector-suffix, $color-default, "alert-variations-content", null); +} + +@mixin alert-variations-content($args){ + $variation-color: map-get($args, variation-color); + $variation-color-text: map-get($args, variation-color-text); + + background-color: $variation-color; + color: $variation-color-text; + + a, .alert-link { + color: $variation-color-text; + } +} + +// interpolation of mixin-name is not allowed evidently, so we statically include based on the mixin-name given +@mixin call-variations-content-mixin($args) { + $mixin-name: map-get($args, mixin-name); + @if $mixin-name == variations-content { + @include variations-content($args); + } @else if $mixin-name == background-variations-content { + @include background-variations-content($args); + } @else if $mixin-name == text-variations-content { + @include text-variations-content($args); + } @else if $mixin-name == button-variations-content { + @include button-variations-content($args); + } @else if $mixin-name == bg-color-variations-content { + @include bg-color-variations-content($args); + } @else if $mixin-name == bg-box-shadow-variations-content { + @include bg-box-shadow-variations-content($args); + } @else if $mixin-name == bg-img-variations-content { + @include bg-img-variations-content($args); + } @else if $mixin-name == navbar-variations-content { + @include navbar-variations-content($args); + }@else if $mixin-name == alert-variations-content { + @include alert-variations-content($args); + } @else { + @error "Unknown mixin: #{$mixin-name}" + } +} + +// +// To use this mixin you should pass a function as final parameter to define +// the style. In that definition you can use the following variables to define it. +// +// $variation-color-name ---> "red", "green", "indigo" ... +// $variation-color-full-name ---> "red", "green-50", "indigo-400" ... +// $variation-color ---> #f44336, #e8f5e9, #5c6bc0 ... +// $variation-color-text ---> rgba(255,255,255,0.84), rgba(0,0,0,0.84), rgba(255,255,255,0.84) ... +// + +@mixin generic-variations($component, $selector-suffix, $color-default, $mixin-name, $mdb-param-1) { + + //setup map to pass parameters (instead of the incredibly long-error-prone list for each and every @include) + $args: ( + //extra: $selector-suffix, + //default: $color-default, + mixin-name: $mixin-name, + material-param-1: $mdb-param-1 + ); + + // bootstrap styles + &#{$selector-suffix}, + &#{$component}-default#{$selector-suffix} { + + $args-extra: map-merge($args, ( + variation-color: $color-default, + variation-color-text: $mdb-text-color-light + )); + @include call-variations-content-mixin($args-extra); + } + &#{$component}-inverse#{$selector-suffix} { + $args-inverse: map-merge($args, ( + variation-color: $mdb-brand-inverse, + variation-color-text: contrast-color($mdb-brand-inverse, $mdb-text-color-primary-hex, $mdb-text-color-light-hex) + )); + @include call-variations-content-mixin($args-inverse); + } + &#{$component}-primary#{$selector-suffix} { + $args-primary: map-merge($args, ( + variation-color: $brand-primary, + variation-color-text: $mdb-text-color-light + )); + @include call-variations-content-mixin($args-primary); + } + &#{$component}-success#{$selector-suffix} { + $args-success: map-merge($args, ( + variation-color: $brand-success, + variation-color-text: $mdb-text-color-light + )); + @include call-variations-content-mixin($args-success); + } + &#{$component}-info#{$selector-suffix} { + $args-info: map-merge($args, ( + variation-color: $brand-info, + variation-color-text: $mdb-text-color-light + )); + @include call-variations-content-mixin($args-info); + } + &#{$component}-warning#{$selector-suffix} { + $args-warning: map-merge($args, ( + variation-color: $brand-warning, + variation-color-text: $mdb-text-color-light + )); + @include call-variations-content-mixin($args-warning); + } + &#{$component}-danger#{$selector-suffix} { + $args-danger: map-merge($args, ( + variation-color: $brand-danger, + variation-color-text: $mdb-text-color-light + )); + @include call-variations-content-mixin($args-danger); + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_navbar.scss b/public/assets/vendor/bootstrap-material-design/sass/_navbar.scss new file mode 100644 index 00000000..d88c3f36 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_navbar.scss @@ -0,0 +1,212 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.navbar { + background-color: $brand-primary; + border: 0; + border-radius: 0; + + .navbar-brand { + position: relative; + height: 60px; + line-height: 30px; + color: inherit; + &:hover, + &:focus { + color: inherit; + background-color: transparent; + } + } + + .navbar-text { + color: inherit; + margin-top: 20px; + margin-bottom: 20px; + } + + .navbar-nav { + > li > a { + color: inherit; + padding-top: 20px; + padding-bottom: 20px; + + &:hover, + &:focus { + color: inherit; + background-color: transparent; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: inherit; + background-color: rgba(255, 255, 255, 0.1); + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: inherit; + background-color: transparent; + opacity: 0.9; + } + } + } + + // Darken the responsive nav toggle + .navbar-toggle { + border: 0; + &:hover, + &:focus { + background-color: transparent; + } + .icon-bar { + background-color: inherit; + border: 1px solid; + } + } + + .navbar-default .navbar-toggle, + .navbar-inverse .navbar-toggle { + border-color: transparent; + } + + .navbar-collapse, + .navbar-form { + border-color: rgba(0,0,0,0.1); + } + + // Dropdowns + .navbar-nav { + > .open > a { + &, + &:hover, + &:focus { + background-color: transparent; + color: inherit; + } + } + + @media (max-width: $grid-float-breakpoint-max) { + .navbar-text { + color: inherit; + margin-top: 15px; + margin-bottom: 15px; + } + + // Dropdowns get custom display + .open .dropdown-menu { + > .dropdown-header { + border: 0; + color: inherit; + } + .divider { + border-bottom: 1px solid; + opacity: 0.08; + } + > li > a { + color: inherit; + &:hover, + &:focus { + color: inherit; + background-color: transparent; + } + } + > .active > a { + &, + &:hover, + &:focus { + color: inherit; + background-color: transparent; + } + } + > .disabled > a { + &, + &:hover, + &:focus { + color: inherit; + background-color: transparent; + } + } + } + } + } + + .navbar-link { + color: inherit; + &:hover { + color: inherit; + } + } + + .btn-link { + color: inherit; + &:hover, + &:focus { + color: inherit; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: inherit; + } + } + } + + .navbar-form { + margin-top: 16px; + .form-group { + margin: 0; + padding: 0; + + .material-input:before, + &.is-focused .material-input:after { + background-color: inherit; + } + } + + .form-group .form-control, + .form-control { + border-color: inherit; + color: inherit; + padding: 0; + margin: 0; + + // re-normalize inputs in a navbar the size of standard bootstrap since our normal inputs are larger by spec than bootstrap + //--- + //height: $mdb-input-height-base; + $bs-line-height-base: 1.428571429 !default; + $bs-line-height-computed: floor(($font-size-base * $bs-line-height-base)) !default; // ~20px + height: ($bs-line-height-computed + 8px); + font-size: $font-size-base; + line-height: $bs-line-height-base; + //--- + } + } + + // SASS conversion note: please mirror any content change in _mixins-shared.scss navbar-variations-content + @include navbar-variations(unquote(".navbar"), unquote(""), $brand-primary); + + + &-inverse { + background-color: $indigo; + } + + @media (max-width: $screen-md-max) { + + .navbar-brand { + height: 50px; + padding: 10px 15px; + } + .navbar-form { + margin-top: 10px; + } + + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_panels.scss b/public/assets/vendor/bootstrap-material-design/sass/_panels.scss new file mode 100644 index 00000000..d918110a --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_panels.scss @@ -0,0 +1,23 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.panel { + border-radius: 2px; + border: 0; + + @include variations(unquote(".panel"), unquote(" > .panel-heading"), background-color, $grey-200); + @include shadow-z-1; +} + + +[class*="panel-"] > .panel-heading { + color: $mdb-text-color-light; + border: 0; +} +.panel-default, .panel:not([class*="panel-"]) { + > .panel-heading { + color: $mdb-text-color-primary; + } +} +.panel-footer { + background-color: $grey-200; +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_plugins.scss b/public/assets/vendor/bootstrap-material-design/sass/_plugins.scss new file mode 100644 index 00000000..7eb29660 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_plugins.scss @@ -0,0 +1,7 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +// External plugins +@import 'plugins/_plugin-snackbarjs'; +@import 'plugins/_plugin-nouislider'; +@import 'plugins/_plugin-selectize'; +@import 'plugins/_plugin-dropdownjs'; diff --git a/public/assets/vendor/bootstrap-material-design/sass/_popups.scss b/public/assets/vendor/bootstrap-material-design/sass/_popups.scss new file mode 100644 index 00000000..325c9bfc --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_popups.scss @@ -0,0 +1,20 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.popover, .tooltip-inner { + color: $mdb-popover-color; + line-height: 1em; + background: $mdb-popover-background; + border: none; + border-radius: $border-radius-base; + @include shadow-z-1(); +} + +.tooltip, .tooltip.in { + opacity: 1; +} + +.popover, .tooltip { + .arrow, .tooltip-arrow { + display: none; + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_progress.scss b/public/assets/vendor/bootstrap-material-design/sass/_progress.scss new file mode 100644 index 00000000..fe1a9d97 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_progress.scss @@ -0,0 +1,12 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.progress { + height: 4px; + border-radius: 0; + box-shadow: none; + background: #c8c8c8; + .progress-bar { + box-shadow: none; + @include variations(unquote(".progress-bar"), unquote(""), background-color, $brand-primary); + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_radios.scss b/public/assets/vendor/bootstrap-material-design/sass/_radios.scss new file mode 100644 index 00000000..5946a000 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_radios.scss @@ -0,0 +1,119 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +@mixin radio-color($color, $opacity){ + & ~ .check, + & ~ .circle { + opacity: $opacity; + } + + & ~ .check { + background-color: $color; + } + + & ~ .circle { + border-color: $color; + } +} + +.radio label, label.radio-inline { + cursor: pointer; + //padding-left: 45px; + @include padding-left(45px); + position: relative; + color: $mdb-radio-label-color; + @include mdb-label-color-toggle-focus(); +} + +.radio, label.radio-inline { + span { + display: block; + position: absolute; + @include left(10px); + top: 2px; + transition-duration: 0.2s; + } + .circle { + border: 2px solid $mdb-radio-color-off; + height: 15px; + width: 15px; + border-radius: 100%; + } + .check { + height: 15px; + width: 15px; + border-radius: 100%; + background-color: $mdb-radio-color-on; + transform: scale3d(0, 0, 0); + } + .check:after { + display: block; + position: absolute; + content: ""; + background-color: $mdb-text-color-primary; + //left: -18px; + @include left(-18px); + top: -18px; + height: 50px; + width: 50px; + border-radius: 100%; + z-index: 1; + opacity: 0; + margin: 0; + transform: scale3d(1.5, 1.5, 1); + } + + input[type=radio]:focus:not(:checked) ~ .check:after { + animation: rippleOff 500ms; + } + input[type=radio]:focus:checked ~ .check:after { + animation: rippleOn 500ms; + } + + input[type=radio] { + opacity: 0; + height: 0; + width: 0; + overflow: hidden; + + &:checked { + @include radio-color($mdb-radio-color-on, 1); + } + &:checked ~ .check { + transform: scale3d(0.55, 0.55, 1); + } + } + + input[type=radio][disabled] { + + // light theme spec: Disabled: #000000, Opacity 26% + @include radio-color($black, 0.26); + + // dark theme spec: Disabled: #FFFFFF, Opacity 30% + .theme-dark & { + @include radio-color($white, 0.30); + } + } +} + +@keyframes rippleOn { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} +@keyframes rippleOff { + 0% { + opacity: 0; + } + 50% { + opacity: 0.2; + } + 100% { + opacity: 0; + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_shadows.scss b/public/assets/vendor/bootstrap-material-design/sass/_shadows.scss new file mode 100644 index 00000000..691d2e92 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_shadows.scss @@ -0,0 +1,84 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +@mixin shadow-z-1(){ + box-shadow: + 0 1px 6px 0 rgba(0, 0, 0, 0.12), + 0 1px 6px 0 rgba(0, 0, 0, 0.12); +} + +@mixin shadow-z-1-hover(){ + box-shadow: + 0 5px 11px 0 rgba(0, 0, 0, 0.18), + 0 4px 15px 0 rgba(0, 0, 0, 0.15); +} + +@mixin shadow-z-2(){ + box-shadow: + 0 8px 17px 0 rgba(0, 0, 0, 0.2), + 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +@mixin shadow-z-3(){ + box-shadow: + 0 12px 15px 0 rgba(0, 0, 0, 0.24), + 0 17px 50px 0 rgba(0, 0, 0, 0.19); +} + +@mixin shadow-z-4(){ + box-shadow: + 0 16px 28px 0 rgba(0, 0, 0, 0.22), + 0 25px 55px 0 rgba(0, 0, 0, 0.21); +} + +@mixin shadow-z-5(){ + box-shadow: + 0 27px 24px 0 rgba(0, 0, 0, 0.2), + 0 40px 77px 0 rgba(0, 0, 0, 0.22); +} + + +/* Shadows (from mdl http://www.getmdl.io/) */ + +// Focus shadow mixin. +@mixin focus-shadow(){ + box-shadow: 0 0 8px rgba(0,0,0,.18), + 0 8px 16px rgba(0,0,0,.36); +} + +@mixin shadow-2dp(){ + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 3px 1px -2px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity), + 0 1px 5px 0 rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity); +} +@mixin shadow-3dp(){ + box-shadow: 0 3px 4px 0 rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 3px 3px -2px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity), + 0 1px 8px 0 rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity); +} +@mixin shadow-4dp(){ + box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 1px 10px 0 rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity), + 0 2px 4px -1px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity); +} +@mixin shadow-6dp(){ + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 1px 18px 0 rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity), + 0 3px 5px -1px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity); +} +@mixin shadow-8dp(){ + box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 3px 14px 2px rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity), + 0 5px 5px -3px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity); +} + +@mixin shadow-16dp(){ + box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 6px 30px 5px rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity), + 0 8px 10px -5px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity); +} + +@mixin shadow-24dp(){ + box-shadow: 0 9px 46px 8px rgba(0, 0, 0, $mdb-shadow-key-penumbra-opacity), + 0 11px 15px -7px rgba(0, 0, 0, $mdb-shadow-ambient-shadow-opacity), + 0 24px 38px 3px rgba(0, 0, 0, $mdb-shadow-key-umbra-opacity); +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_tabs.scss b/public/assets/vendor/bootstrap-material-design/sass/_tabs.scss new file mode 100644 index 00000000..a7bd60ff --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_tabs.scss @@ -0,0 +1,26 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.nav-tabs { + background: $brand-primary; + > li { + > a { + color: #FFFFFF; + border: 0; + margin: 0; + &:hover { + background-color: transparent; + border: 0; + } + } + & > a, & > a:hover, & > a:focus { + background-color: transparent !important; + border: 0 !important; + color: #FFFFFF !important; + font-weight: 500; + } + &.disabled > a, &.disabled > a:hover { + color: rgba(255,255,255,0.5); + } + } + +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_themes.scss b/public/assets/vendor/bootstrap-material-design/sass/_themes.scss new file mode 100644 index 00000000..57ebe0fa --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_themes.scss @@ -0,0 +1,8 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +// by default, assume light-theme, no need for a marker class. + +// this is mostly a marker class, add it to something like the body or container. Subordinates will look for this marker - see buttons +.theme-dark { + +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_togglebutton.scss b/public/assets/vendor/bootstrap-material-design/sass/_togglebutton.scss new file mode 100644 index 00000000..473113c4 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_togglebutton.scss @@ -0,0 +1,88 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.togglebutton { + vertical-align: middle; + &, label, input, .toggle { + user-select: none; + } + label { + cursor: pointer; + color: $mdb-toggle-label-color; + @include mdb-label-color-toggle-focus(); + + // Hide original checkbox + input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; + } + + .toggle { + text-align: left; // Issue #737 horizontal form + } + // Switch bg off and disabled + .toggle, + input[type=checkbox][disabled] + .toggle { + content: ""; + display: inline-block; + width: 30px; + height: 15px; + background-color: rgba(80, 80, 80, 0.7); + border-radius: 15px; + //margin-right: 15px; + @include margin-right(15px); + transition: background 0.3s ease; + vertical-align: middle; + } + // Handle off + .toggle:after { + content: ""; + display: inline-block; + width: 20px; + height: 20px; + background-color: #F1F1F1; + border-radius: 20px; + position: relative; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + //left: -5px; + @include left(-5px); + top: -2px; + transition: left 0.3s ease, background 0.3s ease, box-shadow 0.1s ease; + } + input[type=checkbox] { + // Handle disabled + &[disabled] { + & + .toggle:after, + &:checked + .toggle:after { + background-color: #BDBDBD; + } + } + + & + .toggle:active:after, + &[disabled] + .toggle:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.1); + } + + // Ripple off and disabled + &:checked + .toggle:after { + //left: 15px; + @include left(15px); + } + } + + // set bg when checked + input[type=checkbox]:checked { + + .toggle { + background-color: rgba($brand-primary, (50/100)); // Switch bg on + } + + + .toggle:after { + background-color: $brand-primary; // Handle on + } + + + .toggle:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba($brand-primary, (10/100)); // Ripple on + } + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_typography.scss b/public/assets/vendor/bootstrap-material-design/sass/_typography.scss new file mode 100644 index 00000000..0a79bc09 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_typography.scss @@ -0,0 +1,17 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.text-warning { + color: $brand-warning; +} +.text-primary { + color: $brand-primary; +} +.text-danger { + color: $brand-danger; +} +.text-success { + color: $brand-success; +} +.text-info { + color: $brand-info; +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/_variables.scss b/public/assets/vendor/bootstrap-material-design/sass/_variables.scss new file mode 100644 index 00000000..25e9c7a9 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_variables.scss @@ -0,0 +1,174 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +@import '_colors'; + +// Typography elements +$mdb-font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif !default; +$mdb-text-color-light: unquote("rgba(#{$rgb-white}, 0.84)") !default; +$mdb-text-color-light-hex: $white !default; // for contrast function in inverse +$mdb-text-color-primary: unquote("rgba(#{$rgb-black}, 0.87)") !default; +$mdb-text-color-primary-hex: $black !default; // for contrast function in inverse +$icon-color: rgba(0,0,0,0.5) !default; + + +$mdb-label-color: unquote("rgba(#{$rgb-black}, 0.26)") !default; +$mdb-label-color-toggle-focus: unquote("rgba(#{$rgb-black}, .54)") !default; + + +// import bs variables for less, last declared wins. +@import '_import-bs-less'; + +//--- +// Converted bs variables + +// Bootstrap brand color customization +$brand-primary: $teal !default; +$brand-success: $green !default; +$brand-danger: $red !default; +$brand-warning: $deep-orange !default; +$brand-info: $light-blue !default; + +$border-radius-base: 2px !default; +$border-radius-small: 1px !default; + +// Typography +$font-family-sans-serif: 'Roboto', 'Helvetica', 'Arial', sans-serif !default; +$headings-font-weight: 300 !default; + +$body-bg: #EEEEEE !default; +//--- + +// import bs variables for sass, first declared wins. +@import '_import-bs-sass'; + +// Bootstrap Material Design variables start with mdb- +$mdb-brand-inverse: $indigo !default; + + +/* ANIMATION */ +$mdb-animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1) !default; +$mdb-animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1) !default; +$mdb-animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1) !default; +$mdb-animation-curve-default: $mdb-animation-curve-fast-out-slow-in !default; + + +//--- +// FIXME: Similar but not quite the same as Bootstrap variables +// FIXME: these need to either a) be converted to $mdb- or b) converted to bs variables +$contrast-factor: 40% !default; +//--- + + + + +// -------------------- +// inputs +$mdb-input-placeholder-color: #BDBDBD !default; +$mdb-input-underline-color: #D2D2D2 !default; +$mdb-label-static-size-ratio: 75 / 100 !default; +$mdb-help-block-size-ratio: 75 / 100 !default; + +$mdb-input-font-size-base: 16px !default; +$mdb-input-font-size-large: ceil(($font-size-base * 1.25)) !default; // ~20px +$mdb-input-font-size-small: ceil(($font-size-base * 0.75)) !default; // ~12px + +// FIXME: with #733 customization of bootstrap, consider how these could be based on the original bs customized variables +//** Unit-less `line-height` for use in components like buttons. +$mdb-input-line-height-base: $line-height-base; //1.428571429 !default; // 20/14 +//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc. +$mdb-input-line-height-computed: floor(($mdb-input-font-size-base * $mdb-input-line-height-base)) !default; // ~20px +$mdb-input-line-height-large: 1.3333333 !default; // extra decimals for Win 8.1 Chrome +$mdb-input-line-height-small: 1.5 !default; + +//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). +$mdb-input-padding-base-vertical: 8px - 1px !default; // was 6. +$mdb-input-padding-base-horizontal: 0 !default; // was 12. +$mdb-label-as-placeholder-shim-base: 0 !default; // manual adjustment of label top when positioned as placeholder +$mdb-label-top-margin-base: 16px !default; + +$mdb-input-padding-large-vertical: 10px - 1px !default; // 10 +$mdb-input-padding-large-horizontal: 0 !default; // 16 +$mdb-label-as-placeholder-shim-large: -4px !default; // manual adjustment of label top when positioned as placeholder +$mdb-label-top-margin-large: 16px !default; + +$mdb-input-padding-small-vertical: 4px - 1px !default; // 5 +$mdb-input-padding-small-horizontal: 0 !default; // 10 +$mdb-label-as-placeholder-shim-small: 8px !default; // manual adjustment of label top when positioned as placeholder +$mdb-label-top-margin-small: 12px !default; + +$mdb-input-padding-xs-vertical: 2px !default; // 1 +$mdb-input-padding-xs-horizontal: 0 !default; // 5 + +$mdb-input-border-radius-base: 0 !default; +$mdb-input-border-radius-large: 0 !default; +$mdb-input-border-radius-small: 0 !default; + + +//** Default `.form-control` height +$mdb-input-height-base: ($mdb-input-line-height-computed + ($mdb-input-padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$mdb-input-height-large: (ceil($mdb-input-font-size-large * $mdb-input-line-height-large) + ($mdb-input-padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$mdb-input-height-small: (floor($mdb-input-font-size-small * $mdb-input-line-height-small) + ($mdb-input-padding-small-vertical * 2) + 2) !default; + + + + +// Card +$mdb-card-body-text: $mdb-text-color-primary !default; +$mdb-card-body-background: #fff !default; +$mdb-card-image-headline: #fff !default; + +$text-disabled: #a8a8a8 !default; +$background-disabled: #eaeaea !default; + +// Checkboxes +$mdb-checkbox-size: 20px !default; +$mdb-checkbox-animation-ripple: 500ms !default; +$mdb-checkbox-animation-check: 0.3s !default; +$mdb-checkbox-checked-color: $brand-primary !default; + +$mdb-checkbox-border-size: 2px !default; +$mdb-checkbox-label-color: $mdb-label-color !default; +$mdb-checkbox-border-color: $mdb-label-color-toggle-focus !default; + +// Popovers and Popups +$mdb-popover-background: rgba(101, 101, 101, 0.9) !default; +$mdb-popover-color: #ececec !default; + +// Dropdown Menu +$mdb-dropdown-font-size: 16px !default; + +// Toggle +$mdb-toggle-label-color: $mdb-label-color !default; + +// Radio: +$mdb-radio-label-color: $mdb-label-color !default; +$mdb-radio-color-off: $mdb-label-color-toggle-focus !default; +$mdb-radio-color-on: $brand-primary !default; + +// Buttons: +$mdb-btn-font-size-base: 14px !default; +$mdb-btn-font-size-lg: 16px !default; +$mdb-btn-font-size-sm: 12px !default; +$mdb-btn-font-size-xs: 10px !default; + + +$mdb-btn-background-color: $body-bg; //transparent !default; +$mdb-btn-background-color-text: $mdb-text-color-primary !default; + + +$mdl-btn-border-radus: 2px !default; +//$mdb-btn-primary-color: unquote("rgba(#{$rgb-grey-500}, 0.20)") !default; + +$mdb-btn-fab-size: 56px !default; +$mdb-btn-fab-size-mini: 40px !default; +$mdb-btn-fab-font-size: 24px !default; + +$mdb-btn-icon-size: 32px !default; +$mdb-btn-icon-size-mini: 24px !default; + +/* SHADOWS */ +$mdb-shadow-key-umbra-opacity: 0.2 !default; +$mdb-shadow-key-penumbra-opacity: 0.14 !default; +$mdb-shadow-ambient-shadow-opacity: 0.12 !default; diff --git a/public/assets/vendor/bootstrap-material-design/sass/_welljumbo.scss b/public/assets/vendor/bootstrap-material-design/sass/_welljumbo.scss new file mode 100644 index 00000000..a28ff06b --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/_welljumbo.scss @@ -0,0 +1,28 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +body { + .container, + .container-fluid { + + .well.well-sm { + padding: 10px; + } + .well.well-lg { + padding: 26px; + } + .well, + .jumbotron { + + background-color: #fff; + padding: 19px; + margin-bottom: 20px; + @include shadow-z-2(); + border-radius: $border-radius-base; + border: 0; + p { + font-weight: 300; + } + @include variations(unquote(""), unquote(""), background-color, $white); + } + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/bootstrap-material-design.scss b/public/assets/vendor/bootstrap-material-design/sass/bootstrap-material-design.scss new file mode 100644 index 00000000..c4e1e41e --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/bootstrap-material-design.scss @@ -0,0 +1,6 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +@import '_variables'; +@import '_mixins'; +@import '_shadows'; +@import '_core'; diff --git a/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-dropdownjs.scss b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-dropdownjs.scss new file mode 100644 index 00000000..b5c25377 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-dropdownjs.scss @@ -0,0 +1,18 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.dropdownjs::after { + //right: 5px; + @include right(5px); + top: 3px; + font-size: 25px; + position: absolute; + + // bring in the material icon font and icon by code + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + content: "\e5c5"; // found here: https://github.com/google/material-design-icons/search?utf8=%E2%9C%93&q=arrow_drop_down + + pointer-events: none; + color: #757575; +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-nouislider.scss b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-nouislider.scss new file mode 100644 index 00000000..2ceeccac --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-nouislider.scss @@ -0,0 +1,115 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -ms-touch-action: none; + user-select: none; + box-sizing: border-box; +} +.noUi-base { + width: 100%; + height: 100%; + position: relative; +} +.noUi-origin { + position: absolute; + right: 0; + top: 0; + left: 0; + bottom: 0; +} +.noUi-handle { + position: relative; + z-index: 1; + box-sizing: border-box; +} +.noUi-stacking .noUi-handle { + z-index: 10; +} +//.noUi-stacking + .noUi-origin { +// *z-index: -1; +//} WARNING: Property with star prefix found. Checks for the star property hack (targets IE6/7) (star-property-hack) Browsers: All +.noUi-state-tap .noUi-origin { + transition: left 0.3s, top 0.3s; +} +.noUi-state-drag * { + cursor: inherit !important; +} +.noUi-horizontal { + height: 10px; +} +.noUi-handle { + box-sizing: border-box; + width: 12px; + height: 12px; + //left: -10px; + @include left(-10px); + top: -5px; + cursor: ew-resize; + border-radius: 100%; + transition: all 0.2s ease-out; + border: 1px solid; +} +.noUi-vertical .noUi-handle { + //margin-left: 5px; + @include margin-left(5px); + cursor: ns-resize; +} +.noUi-horizontal.noUi-extended { + padding: 0 15px; +} +.noUi-horizontal.noUi-extended .noUi-origin { + //right: -15px; + @include right(-15px); +} +.noUi-background { + height: 2px; + margin: 20px 0; +} +.noUi-origin { + margin: 0; + border-radius: 0; + height: 2px; + background: #c8c8c8; + &[style^="left: 0"] .noUi-handle { + background-color: #fff; + border: 2px solid #c8c8c8; + &.noUi-active { + border-width: 1px; + } + } +} +.noUi-target { + border-radius: $border-radius-base; +} +.noUi-horizontal { + height: 2px; + margin: 15px 0; +} +.noUi-vertical { + height: 100%; + width: 2px; + margin: 0 15px; + display: inline-block; +} +.noUi-handle.noUi-active { + transform: scale3d(2.5, 2.5, 1); +} +[disabled].noUi-slider{ + opacity: 0.5; +} +[disabled] .noUi-handle { + cursor: not-allowed; +} + +.slider { + background: #c8c8c8; +} + +.slider { + @include variations(unquote(".slider"), unquote(".noUi-connect"), background-color, $brand-primary); + @include variations(unquote(".slider"), unquote(" .noUi-connect"), background-color, $brand-primary); + @include variations(unquote(".slider"), unquote(" .noUi-handle"), background-color, $brand-primary); + @include variations(unquote(".slider"), unquote(" .noUi-handle"), border-color, $brand-primary); +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-selectize.scss b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-selectize.scss new file mode 100644 index 00000000..edd543fe --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-selectize.scss @@ -0,0 +1,95 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +// Support for Selectize plugin +// http://brianreavis.github.io/selectize.js/ + +.selectize-control.single, .selectize-control.multi { + padding: 0; + .selectize-input, .selectize-input.input-active { + + cursor: text; + background: transparent; + box-shadow: none; + border: 0; + padding: 0; + height: 100%; + font-size: 14px; + line-height: 30px; + .has-items { + padding: 0; + } + &:after { + //right: 5px; + @include right(5px); + position: absolute; + font-size: 25px; + content: "\e5c5"; + font-family: 'Material Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + input { + font-size: 14px; + outline: 0; + border: 0; + background: transparent; + } + &.label-floating-fix input { + opacity: 0; + } + > div, > .item { + display: inline-block; + //margin: 0 8px 3px 0; + @include margin(0,8px,3px,0); + padding: 0; + background: transparent; + border: 0; + &:after { + content: ","; + } + &:last-of-type:after { + content: ""; + } + &.active { + font-weight: bold; + background: transparent; + border: 0; + } + } + } + .selectize-dropdown { + position: absolute; + z-index: 1000; + border: 0; + width: 100% !important; + left: 0 !important; + height: auto; + background-color: #FFF; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); + border-radius: $border-radius-base; + padding: 0; + margin-top: 3px; + .active { + background-color: inherit; + } + .highlight { + background-color: #d5d8ff; + } + .selected, .selected.active { + background-color: #EEEEEE; + } + [data-selectable], .optgroup-header { + padding: 10px 20px; + cursor: pointer; + } + } + .dropdown-active ~ .selectize-dropdown { + display: block; + } +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-snackbarjs.scss b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-snackbarjs.scss new file mode 100644 index 00000000..e8f5bad5 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/plugins/_plugin-snackbarjs.scss @@ -0,0 +1,34 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +// Support for SnackbarJS plugin +// https://github.com/FezVrasta/snackbarjs + +.snackbar { + // Style + background-color: #323232; + color: $mdb-text-color-light; + font-size: 14px; + border-radius: $border-radius-base; + @include shadow-z-1; + + // Animation + height: 0; + transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, padding 0s linear 0.2s, height 0s linear 0.2s; + transform: translateY(200%); +} + +.snackbar.snackbar-opened { + // Style + padding: 14px 15px; + margin-bottom: 20px; + + // Animation + height: auto; + transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0s linear 0.2s, height 0s linear 0.2s; + transform: none; +} + +// Variations +.snackbar.toast { + border-radius: 200px; +} diff --git a/public/assets/vendor/bootstrap-material-design/sass/ripples.scss b/public/assets/vendor/bootstrap-material-design/sass/ripples.scss new file mode 100644 index 00000000..97581d8b --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/sass/ripples.scss @@ -0,0 +1,40 @@ +// This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. + +.withripple { + position: relative; +} +.ripple-container { + position: absolute; + top: 0; + //left: 0; + @include left(0); + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: inherit; + pointer-events: none; +} +.ripple { + position: absolute; + width: 20px; + height: 20px; + //margin-left: -10px; + @include margin-left(-10px); + margin-top: -10px; + border-radius: 100%; + background-color: #000; // fallback color + background-color: rgba(0,0,0,0.05); + transform: scale(1); + transform-origin: 50%; + opacity: 0; + pointer-events: none; +} +.ripple.ripple-on { + transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + opacity: 0.1; +} +.ripple.ripple-out { + transition: opacity 0.1s linear 0s !important; + opacity: 0; +} diff --git a/public/assets/vendor/bootstrap-material-design/scripts/index.js b/public/assets/vendor/bootstrap-material-design/scripts/index.js new file mode 100644 index 00000000..46102ca0 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/scripts/index.js @@ -0,0 +1,2 @@ +require("./material.js"); +require("./ripples.js"); \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-material-design/scripts/material.js b/public/assets/vendor/bootstrap-material-design/scripts/material.js new file mode 100644 index 00000000..819152e1 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/scripts/material.js @@ -0,0 +1,352 @@ +/* globals jQuery */ + +(function ($) { + // Selector to select only not already processed elements + $.expr[":"].notmdproc = function (obj) { + if ($(obj).data("mdproc")) { + return false; + } else { + return true; + } + }; + + function _isChar(evt) { + if (typeof evt.which == "undefined") { + return true; + } else if (typeof evt.which == "number" && evt.which > 0) { + return ( + !evt.ctrlKey + && !evt.metaKey + && !evt.altKey + && evt.which != 8 // backspace + && evt.which != 9 // tab + && evt.which != 13 // enter + && evt.which != 16 // shift + && evt.which != 17 // ctrl + && evt.which != 20 // caps lock + && evt.which != 27 // escape + ); + } + return false; + } + + function _addFormGroupFocus(element) { + var $element = $(element); + if (!$element.prop('disabled')) { // this is showing as undefined on chrome but works fine on firefox?? + $element.closest(".form-group").addClass("is-focused"); + } + } + + function _toggleDisabledState($element, state) { + var $target; + if ($element.hasClass('checkbox-inline') || $element.hasClass('radio-inline')) { + $target = $element; + } else { + $target = $element.closest('.checkbox').length ? $element.closest('.checkbox') : $element.closest('.radio'); + } + return $target.toggleClass('disabled', state); + } + + function _toggleTypeFocus($input) { + var disabledToggleType = false; + if ($input.is($.material.options.checkboxElements) || $input.is($.material.options.radioElements)) { + disabledToggleType = true; + } + $input.closest('label').hover(function () { + var $i = $(this).find('input'); + var isDisabled = $i.prop('disabled'); // hack because the _addFormGroupFocus() wasn't identifying the property on chrome + if (disabledToggleType) { + _toggleDisabledState($(this), isDisabled); + } + if (!isDisabled) { + _addFormGroupFocus($i); // need to find the input so we can check disablement + } + }, + function () { + _removeFormGroupFocus($(this).find('input')); + }); + } + + function _removeFormGroupFocus(element) { + $(element).closest(".form-group").removeClass("is-focused"); // remove class from form-group + } + + $.material = { + "options": { + // These options set what will be started by $.material.init() + "validate": true, + "input": true, + "ripples": true, + "checkbox": true, + "togglebutton": true, + "radio": true, + "arrive": true, + "autofill": false, + + "withRipples": [ + ".btn:not(.btn-link)", + ".card-image", + ".navbar a:not(.withoutripple)", + ".dropdown-menu a", + ".nav-tabs a:not(.withoutripple)", + ".withripple", + ".pagination li:not(.active):not(.disabled) a:not(.withoutripple)" + ].join(","), + "inputElements": "input.form-control, textarea.form-control, select.form-control", + "checkboxElements": ".checkbox > label > input[type=checkbox], label.checkbox-inline > input[type=checkbox]", + "togglebuttonElements": ".togglebutton > label > input[type=checkbox]", + "radioElements": ".radio > label > input[type=radio], label.radio-inline > input[type=radio]" + }, + "checkbox": function (selector) { + // Add fake-checkbox to material checkboxes + var $input = $((selector) ? selector : this.options.checkboxElements) + .filter(":notmdproc") + .data("mdproc", true) + .after(""); + + _toggleTypeFocus($input); + }, + "togglebutton": function (selector) { + // Add fake-checkbox to material checkboxes + var $input = $((selector) ? selector : this.options.togglebuttonElements) + .filter(":notmdproc") + .data("mdproc", true) + .after(""); + + _toggleTypeFocus($input); + }, + "radio": function (selector) { + // Add fake-radio to material radios + var $input = $((selector) ? selector : this.options.radioElements) + .filter(":notmdproc") + .data("mdproc", true) + .after(""); + + _toggleTypeFocus($input); + }, + "input": function (selector) { + $((selector) ? selector : this.options.inputElements) + .filter(":notmdproc") + .data("mdproc", true) + .each(function () { + var $input = $(this); + + // Requires form-group standard markup (will add it if necessary) + var $formGroup = $input.closest(".form-group"); // note that form-group may be grandparent in the case of an input-group + if ($formGroup.length === 0 && $input.attr('type') !== "hidden" && !$input.attr('hidden')) { + $input.wrap("
"); + $formGroup = $input.closest(".form-group"); // find node after attached (otherwise additional attachments don't work) + } + + // Legacy - Add hint label if using the old shorthand data-hint attribute on the input + if ($input.attr("data-hint")) { + $input.after("

" + $input.attr("data-hint") + "

"); + $input.removeAttr("data-hint"); + } + + // Legacy - Change input-sm/lg to form-group-sm/lg instead (preferred standard and simpler css/less variants) + var legacySizes = { + "input-lg": "form-group-lg", + "input-sm": "form-group-sm" + }; + $.each(legacySizes, function (legacySize, standardSize) { + if ($input.hasClass(legacySize)) { + $input.removeClass(legacySize); + $formGroup.addClass(standardSize); + } + }); + + // Legacy - Add label-floating if using old shorthand + if ($input.hasClass("floating-label")) { + var placeholder = $input.attr("placeholder"); + $input.attr("placeholder", null).removeClass("floating-label"); + var id = $input.attr("id"); + var forAttribute = ""; + if (id) { + forAttribute = "for='" + id + "'"; + } + $formGroup.addClass("label-floating"); + $input.after(""); + } + + // Set as empty if is empty (damn I must improve this...) + if ($input.val() === null || $input.val() == "undefined" || $input.val() === "") { + $formGroup.addClass("is-empty"); + } + + // Support for file input + if ($formGroup.find("input[type=file]").length > 0) { + $formGroup.addClass("is-fileinput"); + } + }); + }, + "attachInputEventHandlers": function () { + var validate = this.options.validate; + + $(document) + .on("keydown paste", ".form-control", function (e) { + if (_isChar(e)) { + $(this).closest(".form-group").removeClass("is-empty"); + } + }) + .on("keyup change", ".form-control", function () { + var $input = $(this); + var $formGroup = $input.closest(".form-group"); + var isValid = (typeof $input[0].checkValidity === "undefined" || $input[0].checkValidity()); + + if ($input.val() === "") { + $formGroup.addClass("is-empty"); + } + else { + $formGroup.removeClass("is-empty"); + } + + // Validation events do not bubble, so they must be attached directly to the input: http://jsfiddle.net/PEpRM/1/ + // Further, even the bind method is being caught, but since we are already calling #checkValidity here, just alter + // the form-group on change. + // + // NOTE: I'm not sure we should be intervening regarding validation, this seems better as a README and snippet of code. + // BUT, I've left it here for backwards compatibility. + if (validate) { + if (isValid) { + $formGroup.removeClass("has-error"); + } + else { + $formGroup.addClass("has-error"); + } + } + }) + .on("focus", ".form-control, .form-group.is-fileinput", function () { + _addFormGroupFocus(this); + }) + .on("blur", ".form-control, .form-group.is-fileinput", function () { + _removeFormGroupFocus(this); + }) + // make sure empty is added back when there is a programmatic value change. + // NOTE: programmatic changing of value using $.val() must trigger the change event i.e. $.val('x').trigger('change') + .on("change", ".form-group input", function () { + var $input = $(this); + if ($input.attr("type") == "file") { + return; + } + + var $formGroup = $input.closest(".form-group"); + var value = $input.val(); + if (value) { + $formGroup.removeClass("is-empty"); + } else { + $formGroup.addClass("is-empty"); + } + }) + // set the fileinput readonly field with the name of the file + .on("change", ".form-group.is-fileinput input[type='file']", function () { + var $input = $(this); + var $formGroup = $input.closest(".form-group"); + var value = ""; + $.each(this.files, function (i, file) { + value += file.name + ", "; + }); + value = value.substring(0, value.length - 2); + if (value) { + $formGroup.removeClass("is-empty"); + } else { + $formGroup.addClass("is-empty"); + } + $formGroup.find("input.form-control[readonly]").val(value); + }); + }, + "ripples": function (selector) { + $((selector) ? selector : this.options.withRipples).ripples(); + }, + "autofill": function () { + // This part of code will detect autofill when the page is loading (username and password inputs for example) + var loading = setInterval(function () { + $("input[type!=checkbox]").each(function () { + var $this = $(this); + if ($this.val() && $this.val() !== $this.attr("value")) { + $this.trigger("change"); + } + }); + }, 100); + + // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them + setTimeout(function () { + clearInterval(loading); + }, 10000); + }, + "attachAutofillEventHandlers": function () { + // Listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus) + var focused; + $(document) + .on("focus", "input", function () { + var $inputs = $(this).parents("form").find("input").not("[type=file]"); + focused = setInterval(function () { + $inputs.each(function () { + var $this = $(this); + if ($this.val() !== $this.attr("value")) { + $this.trigger("change"); + } + }); + }, 100); + }) + .on("blur", ".form-group input", function () { + clearInterval(focused); + }); + }, + "init": function (options) { + this.options = $.extend({}, this.options, options); + var $document = $(document); + + if ($.fn.ripples && this.options.ripples) { + this.ripples(); + } + if (this.options.input) { + this.input(); + this.attachInputEventHandlers(); + } + if (this.options.checkbox) { + this.checkbox(); + } + if (this.options.togglebutton) { + this.togglebutton(); + } + if (this.options.radio) { + this.radio(); + } + if (this.options.autofill) { + this.autofill(); + this.attachAutofillEventHandlers(); + } + + if (document.arrive && this.options.arrive) { + if ($.fn.ripples && this.options.ripples) { + $document.arrive(this.options.withRipples, function () { + $.material.ripples($(this)); + }); + } + if (this.options.input) { + $document.arrive(this.options.inputElements, function () { + $.material.input($(this)); + }); + } + if (this.options.checkbox) { + $document.arrive(this.options.checkboxElements, function () { + $.material.checkbox($(this)); + }); + } + if (this.options.radio) { + $document.arrive(this.options.radioElements, function () { + $.material.radio($(this)); + }); + } + if (this.options.togglebutton) { + $document.arrive(this.options.togglebuttonElements, function () { + $.material.togglebutton($(this)); + }); + } + + } + } + }; + +})(jQuery); diff --git a/public/assets/vendor/bootstrap-material-design/scripts/ripples.js b/public/assets/vendor/bootstrap-material-design/scripts/ripples.js new file mode 100644 index 00000000..82b67884 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/scripts/ripples.js @@ -0,0 +1,324 @@ +/* Copyright 2014+, Federico Zivolo, LICENSE at https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md */ +/* globals jQuery, navigator */ + +(function($, window, document, undefined) { + + "use strict"; + + /** + * Define the name of the plugin + */ + var ripples = "ripples"; + + + /** + * Get an instance of the plugin + */ + var self = null; + + + /** + * Define the defaults of the plugin + */ + var defaults = {}; + + + /** + * Create the main plugin function + */ + function Ripples(element, options) { + self = this; + + this.element = $(element); + + this.options = $.extend({}, defaults, options); + + this._defaults = defaults; + this._name = ripples; + + this.init(); + } + + + /** + * Initialize the plugin + */ + Ripples.prototype.init = function() { + var $element = this.element; + + $element.on("mousedown touchstart", function(event) { + /** + * Verify if the user is just touching on a device and return if so + */ + if(self.isTouch() && event.type === "mousedown") { + return; + } + + + /** + * Verify if the current element already has a ripple wrapper element and + * creates if it doesn't + */ + if(!($element.find(".ripple-container").length)) { + $element.append("
"); + } + + + /** + * Find the ripple wrapper + */ + var $wrapper = $element.children(".ripple-container"); + + + /** + * Get relY and relX positions + */ + var relY = self.getRelY($wrapper, event); + var relX = self.getRelX($wrapper, event); + + + /** + * If relY and/or relX are false, return the event + */ + if(!relY && !relX) { + return; + } + + + /** + * Get the ripple color + */ + var rippleColor = self.getRipplesColor($element); + + + /** + * Create the ripple element + */ + var $ripple = $("
"); + + $ripple + .addClass("ripple") + .css({ + "left": relX, + "top": relY, + "background-color": rippleColor + }); + + + /** + * Append the ripple to the wrapper + */ + $wrapper.append($ripple); + + + /** + * Make sure the ripple has the styles applied (ugly hack but it works) + */ + (function() { return window.getComputedStyle($ripple[0]).opacity; })(); + + + /** + * Turn on the ripple animation + */ + self.rippleOn($element, $ripple); + + + /** + * Call the rippleEnd function when the transition "on" ends + */ + setTimeout(function() { + self.rippleEnd($ripple); + }, 500); + + + /** + * Detect when the user leaves the element + */ + $element.on("mouseup mouseleave touchend", function() { + $ripple.data("mousedown", "off"); + + if($ripple.data("animating") === "off") { + self.rippleOut($ripple); + } + }); + + }); + }; + + + /** + * Get the new size based on the element height/width and the ripple width + */ + Ripples.prototype.getNewSize = function($element, $ripple) { + + return (Math.max($element.outerWidth(), $element.outerHeight()) / $ripple.outerWidth()) * 2.5; + }; + + + /** + * Get the relX + */ + Ripples.prototype.getRelX = function($wrapper, event) { + var wrapperOffset = $wrapper.offset(); + + if(!self.isTouch()) { + /** + * Get the mouse position relative to the ripple wrapper + */ + return event.pageX - wrapperOffset.left; + } else { + /** + * Make sure the user is using only one finger and then get the touch + * position relative to the ripple wrapper + */ + event = event.originalEvent; + + if(event.touches.length === 1) { + return event.touches[0].pageX - wrapperOffset.left; + } + + return false; + } + }; + + + /** + * Get the relY + */ + Ripples.prototype.getRelY = function($wrapper, event) { + var wrapperOffset = $wrapper.offset(); + + if(!self.isTouch()) { + /** + * Get the mouse position relative to the ripple wrapper + */ + return event.pageY - wrapperOffset.top; + } else { + /** + * Make sure the user is using only one finger and then get the touch + * position relative to the ripple wrapper + */ + event = event.originalEvent; + + if(event.touches.length === 1) { + return event.touches[0].pageY - wrapperOffset.top; + } + + return false; + } + }; + + + /** + * Get the ripple color + */ + Ripples.prototype.getRipplesColor = function($element) { + + var color = $element.data("ripple-color") ? $element.data("ripple-color") : window.getComputedStyle($element[0]).color; + + return color; + }; + + + /** + * Verify if the client browser has transistion support + */ + Ripples.prototype.hasTransitionSupport = function() { + var thisBody = document.body || document.documentElement; + var thisStyle = thisBody.style; + + var support = ( + thisStyle.transition !== undefined || + thisStyle.WebkitTransition !== undefined || + thisStyle.MozTransition !== undefined || + thisStyle.MsTransition !== undefined || + thisStyle.OTransition !== undefined + ); + + return support; + }; + + + /** + * Verify if the client is using a mobile device + */ + Ripples.prototype.isTouch = function() { + return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); + }; + + + /** + * End the animation of the ripple + */ + Ripples.prototype.rippleEnd = function($ripple) { + $ripple.data("animating", "off"); + + if($ripple.data("mousedown") === "off") { + self.rippleOut($ripple); + } + }; + + + /** + * Turn off the ripple effect + */ + Ripples.prototype.rippleOut = function($ripple) { + $ripple.off(); + + if(self.hasTransitionSupport()) { + $ripple.addClass("ripple-out"); + } else { + $ripple.animate({"opacity": 0}, 100, function() { + $ripple.trigger("transitionend"); + }); + } + + $ripple.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function() { + $ripple.remove(); + }); + }; + + + /** + * Turn on the ripple effect + */ + Ripples.prototype.rippleOn = function($element, $ripple) { + var size = self.getNewSize($element, $ripple); + + if(self.hasTransitionSupport()) { + $ripple + .css({ + "-ms-transform": "scale(" + size + ")", + "-moz-transform": "scale(" + size + ")", + "-webkit-transform": "scale(" + size + ")", + "transform": "scale(" + size + ")" + }) + .addClass("ripple-on") + .data("animating", "on") + .data("mousedown", "on"); + } else { + $ripple.animate({ + "width": Math.max($element.outerWidth(), $element.outerHeight()) * 2, + "height": Math.max($element.outerWidth(), $element.outerHeight()) * 2, + "margin-left": Math.max($element.outerWidth(), $element.outerHeight()) * (-1), + "margin-top": Math.max($element.outerWidth(), $element.outerHeight()) * (-1), + "opacity": 0.2 + }, 500, function() { + $ripple.trigger("transitionend"); + }); + } + }; + + + /** + * Create the jquery plugin function + */ + $.fn.ripples = function(options) { + return this.each(function() { + if(!$.data(this, "plugin_" + ripples)) { + $.data(this, "plugin_" + ripples, new Ripples(this, options)); + } + }); + }; + +})(jQuery, window, document); diff --git a/public/assets/vendor/bootstrap-material-design/testcase.html b/public/assets/vendor/bootstrap-material-design/testcase.html new file mode 100644 index 00000000..457bdd30 --- /dev/null +++ b/public/assets/vendor/bootstrap-material-design/testcase.html @@ -0,0 +1,96 @@ + + + + + + Material Design for Bootstrap temporary development test case + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ .btn-group-raised +
+ + + +
+ .btn.btn-raised +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + diff --git a/public/assets/vendor/bootstrap-sass/.bower.json b/public/assets/vendor/bootstrap-sass/.bower.json new file mode 100644 index 00000000..5df369db --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/.bower.json @@ -0,0 +1,45 @@ +{ + "name": "bootstrap-sass", + "homepage": "https://github.com/twbs/bootstrap-sass", + "authors": [ + "Thomas McDonald", + "Tristan Harward", + "Peter Gumeson", + "Gleb Mazovetskiy" + ], + "description": "bootstrap-sass is a Sass-powered version of Bootstrap 3, ready to drop right into your Sass powered applications.", + "moduleType": "globals", + "main": [ + "assets/stylesheets/_bootstrap.scss", + "assets/javascripts/bootstrap.js" + ], + "keywords": [ + "twbs", + "bootstrap", + "sass" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "lib", + "tasks", + "templates", + "test", + "*.gemspec", + "Rakefile", + "Gemfile" + ], + "dependencies": { + "jquery": "1.9.1 - 3" + }, + "version": "3.3.7", + "_release": "3.3.7", + "_resolution": { + "type": "version", + "tag": "v3.3.7", + "commit": "6620202b137a877dc614dd87bf7f81f895af8024" + }, + "_source": "https://github.com/twbs/bootstrap-sass.git", + "_target": "~3.3.6", + "_originalSource": "bootstrap-sass" +} \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-sass/CHANGELOG.md b/public/assets/vendor/bootstrap-sass/CHANGELOG.md new file mode 100644 index 00000000..a18bae06 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/CHANGELOG.md @@ -0,0 +1,210 @@ +# Changelog + +## 3.3.7 + +* Allows jQuery 3.x in bower.json. [#1048](https://github.com/twbs/bootstrap-sass/issues/1048) +* Adds the `style` and `sass` fields to package.json. [#1045](https://github.com/twbs/bootstrap-sass/issues/1045) +* Adds Eyeglass support. [#1007](https://github.com/twbs/bootstrap-sass/pull/1007) + +## 3.3.6 + +* Bumps Sass dependency to 3.3.4+ to avoid compatibility issues with @at-root. +* Bumps node-sass dependency to ~3.4.2 for Node.js v5 compatibility. [#986](https://github.com/twbs/bootstrap-sass/issues/986) +* Fixes breadcrumb content issues on libsass. [#919](https://github.com/twbs/bootstrap-sass/issues/919) +* Fixes a Rails 5 compatibility issue. [#965](https://github.com/twbs/bootstrap-sass/pull/965) + +Framework version: Bootstrap **v3.3.6** + +## 3.3.5 + +Fix for standalone Compass extension compatibility. [#914](https://github.com/twbs/bootstrap-sass/issues/914) + +Framework version: Bootstrap **v3.3.5** + +## 3.3.4 + +No Sass-specific changes. + +Framework version: Bootstrap **v3.3.4** + +## 3.3.3 + +This is a re-packaged release of 3.3.2.1 (v3.3.2+1). + +Versions are now strictly semver. +The PATCH version may be ahead of the upstream. + +Framework version: Bootstrap **v3.3.2**. + +## 3.3.2.1 + +* Fix glyphicons regression (revert 443d5b49eac84aec1cb2f8ea173554327bfc8c14) + +## 3.3.2.0 + +* Autoprefixer is now required, and `autoprefixer-rails` is now a dependency for the ruby gem. [#824](https://github.com/twbs/bootstrap-sass/issues/824) +* Minimum precision reduced from 10 to 8 [#821](https://github.com/twbs/bootstrap-sass/issues/821) +* Requiring bootstrap JS from npm now works [#812](https://github.com/twbs/bootstrap-sass/issues/812) +* Fix Sass 3.4.x + IE10 compatibility issue [#803](https://github.com/twbs/bootstrap-sass/issues/803) +* Provide minified JS bundle [#777](https://github.com/twbs/bootstrap-sass/issues/777) +* Bower package is now at bootstrap-sass [#813](https://github.com/twbs/bootstrap-sass/issues/813) + + +## 3.3.1.0 + +* Variables override template at templates/project/_bootstrap-variables.sass +* Readme: Bower + Rails configuration + +## 3.3.0.1 + +* Fix loading issue with the ruby gem version + +## 3.3.0 + +* Improve libsass compatibility +* Support using Bower package with Rails + +## 3.2.0.2 + +Main bootstrap file is now a partial (_bootstrap.scss), for compatibility with Compass 1+. + +Fixed a number of bugs. [Issues closed in v3.2.0.2](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.2). + +## 3.2.0.1 + +Fixed a number of bugs: [Issues closed in v3.2.0.1](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.1). + +## 3.2.0.0 + +- Assets (Sass, JS, fonts) moved from `vendor/assets` to `assets`. `bootstrap.js` now contains concatenated JS. +- Compass generator now copies JS and fonts, and provides a better default `styles.sass`. +- Compass, Sprockets, and Mincer asset path helpers are now provided in pure Sass: `bootstrap-compass`, `bootstrap-sprockets`, and `bootstrap-mincer`. +Asset path helpers must be imported before `bootstrap`, more in Readme. +- Sprockets / Mincer JS manifest has been moved to `bootstrap-sprockets.js`. +It can be required without adding Bootstrap JS directory to load path, as it now uses relative paths. +- Sprockets: `depend_on_asset` (`glyphicons.scss`) has been changed to `depend_on` to work around an issue with `depend_on_asset`. +[More information](https://github.com/twbs/bootstrap-sass/issues/592#issuecomment-46570286). + +## 3.1.1.0 + +- Updated Bower docs + +## 3.1.0.2 + +- #523: Rails 3.2 compatibility +- Bugfixes from upstream up to 7eb532262fbd1112215b5a547b9285794b5360ab. + +## 3.1.0.1 + +- #518: `scale` mixin Sass compatibility issue + +## 3.1.0.0 + +* compiles with libsass master + +## 3.0.2.1 + +* fix vendor paths for compass + +## 3.0.0.0 + +* Fully automated (lots of string juggling) LESS -> Sass conversion. - *Gleb Mazovetskiy* +* Ported rake task from vwall/compass-twitter-bootstrap to convert Bootstrap upstream - *Peter Gumeson* +* Moved javascripts to us `bootstrap-component.js` to `bootstrap/component.js` - *Peter Gumeson* + +## 2.3.2.2 + +* Allow sass-rails `>= 3.2` - *Thomas McDonald* + +## 2.3.2.1 + +## 2.3.2.0 + +* Update to Bootstrap 2.3.2 - *Dan Allen* + +## 2.3.1.3 + +* Find the correct Sprockets context for the `image_path` function - *Tristan Harward, Gleb Mazovetskiy* + +## 2.3.1.2 + +* Fix changes to image url - *Gleb Mazovetskiy* +* Copy _variables into project on Compass install - *Phil Thompson* +* Add `bootstrap-affix` to the Compass template file - *brief* + +## 2.3.1.1 (yanked) + +* Change how image_url is handled internally - *Tristan Harward* +* Fix some font variables not having `!default` - *Thomas McDonald* + +## 2.3.0.0 +* [#290] Update to Bootstrap 2.3.0 - *Tristan Harward* +* Fix `rake:debug` with new file locations - *Thomas McDonald* +* Add draft contributing document - *Thomas McDonald* +* [#260] Add our load path to the global Sass load path - *Tristan Harward* +* [#275] Use GitHub notation in Sass head testing gemfile - *Timo Schilling* +* [#279, #283] Readme improvements - *theverything, Philip Arndt* + +## 2.2.2.0 +* [#270] Update to Bootstrap 2.2.2 - *Tristan Harward* +* [#266] Add license to gemspec - *Peter Marsh* + +## 2.2.1.1 +* [#258] Use `bootstrap` prefix for `@import`ing files in `bootstrap/bootstrap.scss` - *Umair Siddique* + +## 2.2.1.0 +* [#246] Update to Bootstrap 2.2.1 - *Tristan Harward* +* [#246] Pull Bootstrap updates from jlong/sass-twitter-bootstrap - *Tristan Harward* + +## 2.1.1.0 +* Update to Bootstrap 2.1.1 +* [#222] Remove 100% multiplier in vertical-three-colours +* [#227] Fix IE component animation collapse +* [#228] Fix variables documentation link +* [#231] Made .input-block-level a class as well as mixin + +## 2.1.0.1 +* [#219] Fix expected a color. Got: transparent. +* [#207] Add missing warning style for table row highlighting +* [#208] Use grid-input-span for input spans + +## 2.1.0.0 +* Updated to Bootstrap 2.1 +* Changed some mixin names to be more consistent. Nested mixins in Less are separated by a `-` when they are flattened in Sass. + +## 2.0.4.1 +* Fix `.row-fluid > spanX` nesting +* Small Javascript fixes for those staying on the 2.0.4 release +* Add `!default` to z-index variables. + +## 2.0.4.0 +* Updated to Bootstrap 2.0.4 +* Switched to Bootstrap 2.0.3+'s method of separating responsive files +* [#149, #150] Fix off by one error introduced with manual revert of media query breakpoints +* `rake debug` and `rake test` both compile bootstrap & bootstrap-responsive + +## 2.0.3.1 +* [#145, #146] Fix button alignment in collapsing navbar as a result of an incorrect variable + +## 2.0.3 +* Updated to Bootstrap 2.0.3 +* [#106] Support for Rails < 3.1 through Compass +* [#132] Add CI testing +* [#106] Support Rails w/Compass +* [#134] Fix support for Rails w/Compass + +## 2.0.2 +* [#86] Updated to Bootstrap 2.0.2 +Things of note: static navbars now have full width. (to be fixed in 2.0.3) `.navbar-inner > .container { width:940px; }` seems to work in the meanwhile +* [#62] Fixed asset compilation taking a *very* long time. +* [#69, #79, #80] \(Hopefully) clarified README. Now with less cat humour. +* [#91] Removed doubled up Sass extensions for Rails. +* [#63, #73] Allow for overriding of image-path +* [[SO](http://stackoverflow.com/a/9909626/241212)] Added makeFluidColumn mixin for defining fluid columns. Fluid rows must use `@extend .row-fluid`, and any column inside it can use `@include makeFluidColumn(num)`, where `num` is the number of columns. Unfortunately, there is a rather major limitation to this: margins on first-child elements must be overriden. See the attached Stack Overflow answer for more information. + +## 2.0.1 +* Updated to Bootstrap 2.0.1 +* Modified `@mixin opacity()` to take an argument `0...1` rather than `0...100` to be consistent with Compass. + +## 2.0.0 +* Updated to Bootstrap 2.0.0 diff --git a/public/assets/vendor/bootstrap-sass/CONTRIBUTING.md b/public/assets/vendor/bootstrap-sass/CONTRIBUTING.md new file mode 100644 index 00000000..246b96df --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/CONTRIBUTING.md @@ -0,0 +1,86 @@ +# Contributing to bootstrap-sass + +## Asset Changes + +Any changes to `bootstrap-sass` assets (scss, javascripts, fonts) should be checked against the `convert` rake task. +For usage instructions, see the [README](/README.md). + +If something is broken in the converter, it's preferable to update the converter along with the asset itself. + + +## Bugs + +A bug is a _demonstrable problem_ that is caused by the code in the +repository. Good bug reports are extremely helpful - thank you! + +Guidelines for bug reports: + +1. **Does it belong here?** — is this a problem with bootstrap-sass, or + it an issue with [twbs/bootstrap](https://github.com/twbs/bootstrap)? + We only distribute a direct port and will not modify files if they're not + changed upstream. + +2. **Use the GitHub issue search** — check if the issue has already been + reported. + +3. **Isolate the problem** — ideally create a [reduced test + case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. + +A good bug report shouldn't leave others needing to chase you up for more +information. Please try to be as detailed as possible in your report. What is +your environment? What steps will reproduce the issue? What browser(s) and OS +experience the problem? What would you expect to be the outcome? All these +details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If +> suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` (a link to the reduced test case) +> +> Any other information you want to share that is relevant to the issue being +> reported. This might include the lines of code that you have identified as +> causing the bug, and potential solutions (and your opinions on their +> merits). + +**[File a bug report](https://github.com/twbs/bootstrap-sass/issues/)** + + +## Pull requests + +**We will not accept pull requests that modify the SCSS beyond fixing bugs caused by *our* code!** + +We use a [converter script][converter-readme] to automatically convert upstream bootstrap, written in LESS, to Sass. + +Issues related to styles or javascript but unrelated to the conversion process should go to [twbs/bootstrap][upstream]. + +Pull requests that fix bugs caused by our code should not modify the SCSS directly, but should patch the converter instead. + +Good pull requests - patches, improvements, new features - are a fantastic +help. They should remain focused in scope and avoid containing unrelated +commits. If your contribution involves a significant amount of work or substantial +changes to any part of the project, please open an issue to discuss it first. + +Make sure to adhere to the coding conventions used throughout a project +(indentation, accurate comments, etc.). Please update any documentation that is +relevant to the change you're making. + +## Do not… + +Please **do not** use the issue tracker for personal support requests (use +[Stack Overflow](http://stackoverflow.com/)). + +Please **do not** derail or troll issues. Keep the +discussion on topic and respect the opinions of others. + +*props [html5-boilerplate](https://github.com/h5bp/html5-boilerplate/blob/master/CONTRIBUTING.md)* + +[upstream]: https://github.com/twbs/bootstrap +[converter-readme]: https://github.com/twbs/bootstrap-sass/blob/master/README.md#upstream-converter diff --git a/public/assets/vendor/bootstrap-sass/LICENSE b/public/assets/vendor/bootstrap-sass/LICENSE new file mode 100644 index 00000000..a3827b59 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2011-2016 Twitter, Inc +Copyright (c) 2011-2016 The Bootstrap Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/public/assets/vendor/bootstrap-sass/README.md b/public/assets/vendor/bootstrap-sass/README.md new file mode 100644 index 00000000..685a7da5 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/README.md @@ -0,0 +1,390 @@ +# Bootstrap for Sass +[![Gem Version](https://badge.fury.io/rb/bootstrap-sass.svg)](http://badge.fury.io/rb/bootstrap-sass) +[![npm version](https://img.shields.io/npm/v/bootstrap-sass.svg?style=flat)](https://www.npmjs.com/package/bootstrap-sass) +[![Bower Version](https://badge.fury.io/bo/bootstrap-sass.svg)](http://badge.fury.io/bo/bootstrap-sass) +[![Build Status](https://img.shields.io/travis/twbs/bootstrap-sass.svg)](https://travis-ci.org/twbs/bootstrap-sass) + +`bootstrap-sass` is a Sass-powered version of [Bootstrap](https://github.com/twbs/bootstrap) 3, ready to drop right into your Sass powered applications. + +This is Bootstrap 3. For Bootstrap 4 use the [Bootstrap Ruby gem](http://github.com/twbs/bootstrap-rubygem) if you use Ruby, and the [main repo](http://github.com/twbs/bootstrap) otherwise. + +## Installation + +Please see the appropriate guide for your environment of choice: + +* [Ruby on Rails](#a-ruby-on-rails). +* [Compass](#b-compass-without-rails) not on Rails. +* [Bower](#c-bower). +* [npm / Node.js](#d-npm--nodejs). + +### a. Ruby on Rails + +`bootstrap-sass` is easy to drop into Rails with the asset pipeline. + +In your Gemfile you need to add the `bootstrap-sass` gem, and ensure that the `sass-rails` gem is present - it is added to new Rails applications by default. + +```ruby +gem 'bootstrap-sass', '~> 3.3.6' +gem 'sass-rails', '>= 3.2' +``` + +`bundle install` and restart your server to make the files available through the pipeline. + +Import Bootstrap styles in `app/assets/stylesheets/application.scss`: + +```scss +// "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables" +@import "bootstrap-sprockets"; +@import "bootstrap"; +``` + +`bootstrap-sprockets` must be imported before `bootstrap` for the icon fonts to work. + +Make sure the file has `.scss` extension (or `.sass` for Sass syntax). If you have just generated a new Rails app, +it may come with a `.css` file instead. If this file exists, it will be served instead of Sass, so rename it: + +```console +$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss +``` + +Then, remove all the `*= require_self` and `*= require_tree .` statements from the sass file. Instead, use `@import` to import Sass files. + +Do not use `*= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables. + +Require Bootstrap Javascripts in `app/assets/javascripts/application.js`: + +```js +//= require jquery +//= require bootstrap-sprockets +``` + +`bootstrap-sprockets` and `bootstrap` [should not both be included](https://github.com/twbs/bootstrap-sass/issues/829#issuecomment-75153827) in `application.js`. + +`bootstrap-sprockets` provides individual Bootstrap Javascript files (`alert.js` or `dropdown.js`, for example), while +`bootstrap` provides a concatenated file containing all Bootstrap Javascripts. + +#### Bower with Rails + +When using [bootstrap-sass Bower package](#c-bower) instead of the gem in Rails, configure assets in `config/application.rb`: + +```ruby +# Bower asset paths +root.join('vendor', 'assets', 'bower_components').to_s.tap do |bower_path| + config.sass.load_paths << bower_path + config.assets.paths << bower_path +end +# Precompile Bootstrap fonts +config.assets.precompile << %r(bootstrap-sass/assets/fonts/bootstrap/[\w-]+\.(?:eot|svg|ttf|woff2?)$) +# Minimum Sass number precision required by bootstrap-sass +::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max +``` + +Replace Bootstrap `@import` statements in `application.scss` with: + +```scss +$icon-font-path: "bootstrap-sass/assets/fonts/bootstrap/"; +@import "bootstrap-sass/assets/stylesheets/bootstrap-sprockets"; +@import "bootstrap-sass/assets/stylesheets/bootstrap"; +``` + +Replace Bootstrap `require` directive in `application.js` with: + +```js +//= require bootstrap-sass/assets/javascripts/bootstrap-sprockets +``` + +#### Rails 4.x + +Please make sure `sprockets-rails` is at least v2.1.4. + +#### Rails 3.2.x + +bootstrap-sass is no longer compatible with Rails 3. The latest version of bootstrap-sass compatible with Rails 3.2 is v3.1.1.0. + +### b. Compass without Rails + +Install the gem: + +```console +$ gem install bootstrap-sass +``` + +If you have an existing Compass project: + +1. Require `bootstrap-sass` in `config.rb`: + + ```ruby + require 'bootstrap-sass' + ``` + +2. Install Bootstrap with: + + ```console + $ bundle exec compass install bootstrap -r bootstrap-sass + ``` + +If you are creating a new Compass project, you can generate it with bootstrap-sass support: + +```console +$ bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap +``` + +or, alternatively, if you're not using a Gemfile for your dependencies: + +```console +$ compass create my-new-project -r bootstrap-sass --using bootstrap +``` + +This will create a new Compass project with the following files in it: + +* [styles.sass](/templates/project/styles.sass) - main project Sass file, imports Bootstrap and variables. +* [_bootstrap-variables.sass](/templates/project/_bootstrap-variables.sass) - all of Bootstrap variables, override them here. + +Some bootstrap-sass mixins may conflict with the Compass ones. +If this happens, change the import order so that Compass mixins are loaded later. + +### c. Bower + +bootstrap-sass Bower package is compatible with node-sass 3.2.0+. You can install it with: + +```console +$ bower install bootstrap-sass +``` + +Sass, JS, and all other assets are located at [assets](/assets). + +By default, `bower.json` main field list only the main `_bootstrap.scss` and all the static assets (fonts and JS). +This is compatible by default with asset managers such as [wiredep](https://github.com/taptapship/wiredep). + +#### Node.js Mincer + +If you use [mincer][mincer] with node-sass, import Bootstrap like so: + +In `application.css.ejs.scss` (NB **.css.ejs.scss**): + +```scss +// Import mincer asset paths helper integration +@import "bootstrap-mincer"; +@import "bootstrap"; +``` + +In `application.js`: + +```js +//= require bootstrap-sprockets +``` + +See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer. + +### d. npm / Node.js +```console +$ npm install bootstrap-sass +``` + + +## Configuration + +### Sass + +By default all of Bootstrap is imported. + +You can also import components explicitly. To start with a full list of modules copy +[`_bootstrap.scss`](assets/stylesheets/_bootstrap.scss) file into your assets as `_bootstrap-custom.scss`. +Then comment out components you do not want from `_bootstrap-custom`. +In the application Sass file, replace `@import 'bootstrap'` with: + +```scss +@import 'bootstrap-custom'; +``` + +### Sass: Number Precision + +bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 8 (default is 5). + +Precision is set for Rails and Compass automatically. +When using Ruby Sass compiler standalone or with the Bower version you can set it with: + +```ruby +::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max +``` + +### Sass: Autoprefixer + +Bootstrap requires the use of [Autoprefixer][autoprefixer]. +[Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](http://caniuse.com/). + +To match [upstream Bootstrap's level of browser compatibility](http://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to: +```json +[ + "Android 2.3", + "Android >= 4", + "Chrome >= 20", + "Firefox >= 24", + "Explorer >= 8", + "iOS >= 6", + "Opera >= 12", + "Safari >= 6" +] +``` + +### JavaScript + +[`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap's JavaScript, +concatenated in the [correct order](/assets/javascripts/bootstrap-sprockets.js). + + +#### JavaScript with Sprockets or Mincer + +If you use Sprockets or Mincer, you can require `bootstrap-sprockets` instead to load the individual modules: + +```js +// Load all Bootstrap JavaScript +//= require bootstrap-sprockets +``` + +You can also load individual modules, provided you also require any dependencies. +You can check dependencies in the [Bootstrap JS documentation][jsdocs]. + +```js +//= require bootstrap/scrollspy +//= require bootstrap/modal +//= require bootstrap/dropdown +``` + +### Fonts + +The fonts are referenced as: + +```scss +"#{$icon-font-path}#{$icon-font-name}.eot" +``` + +`$icon-font-path` defaults to `bootstrap/` if asset path helpers are used, and `../fonts/bootstrap/` otherwise. + +When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** import the relevant path helpers before Bootstrap itself, for example: + +```scss +@import "bootstrap-compass"; +@import "bootstrap"; +``` + +## Usage + +### Sass + +Import Bootstrap into a Sass file (for example, `application.scss`) to get all of Bootstrap's styles, mixins and variables! + +```scss +@import "bootstrap"; +``` + +You can also include optional Bootstrap theme: + +```scss +@import "bootstrap/theme"; +``` + +The full list of Bootstrap variables can be found [here](http://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.: + +```scss +$navbar-default-bg: #312312; +$light-orange: #ff8c00; +$navbar-default-color: $light-orange; + +@import "bootstrap"; +``` + +### Eyeglass + +Bootstrap is available as an [Eyeglass](https://github.com/sass-eyeglass/eyeglass) module. After installing Bootstrap via NPM you can import the Bootstrap library via: + +```scss +@import "bootstrap-sass/bootstrap" +``` + +or import only the parts of Bootstrap you need: + +```scss +@import "bootstrap-sass/bootstrap/variables"; +@import "bootstrap-sass/bootstrap/mixins"; +@import "bootstrap-sass/bootstrap/carousel"; +``` + +## Version + +Bootstrap for Sass version may differ from the upstream version in the last number, known as +[PATCH](http://semver.org/spec/v2.0.0.html). The patch version may be ahead of the corresponding upstream minor. +This happens when we need to release Sass-specific changes. + +Before v3.3.2, Bootstrap for Sass version used to reflect the upstream version, with an additional number for +Sass-specific changes. This was changed due to Bower and npm compatibility issues. + +The upstream versions vs the Bootstrap for Sass versions are: + +| Upstream | Sass | +|---------:|--------:| +| 3.3.4+ | same | +| 3.3.2 | 3.3.3 | +| <= 3.3.1 | 3.3.1.x | + +Always refer to [CHANGELOG.md](/CHANGELOG.md) when upgrading. + +--- + +## Development and Contributing + +If you'd like to help with the development of bootstrap-sass itself, read this section. + +### Upstream Converter + +Keeping bootstrap-sass in sync with upstream changes from Bootstrap used to be an error prone and time consuming manual process. With Bootstrap 3 we have introduced a converter that automates this. + +**Note: if you're just looking to *use* Bootstrap 3, see the [installation](#installation) section above.** + +Upstream changes to the Bootstrap project can now be pulled in using the `convert` rake task. + +Here's an example run that would pull down the master branch from the main [twbs/bootstrap](https://github.com/twbs/bootstrap) repo: + + rake convert + +This will convert the latest LESS to Sass and update to the latest JS. +To convert a specific branch or version, pass the branch name or the commit hash as the first task argument: + + rake convert[e8a1df5f060bf7e6631554648e0abde150aedbe4] + +The latest converter script is located [here][converter] and does the following: + +* Converts upstream Bootstrap LESS files to its matching SCSS file. +* Copies all upstream JavaScript into `assets/javascripts/bootstrap`, a Sprockets manifest at `assets/javascripts/bootstrap-sprockets.js`, and a concatenation at `assets/javascripts/bootstrap.js`. +* Copies all upstream font files into `assets/fonts/bootstrap`. +* Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha. + +This converter fully converts original LESS to SCSS. Conversion is automatic but requires instructions for certain transformations (see converter output). +Please submit GitHub issues tagged with `conversion`. + +## Credits + +bootstrap-sass has a number of major contributors: + + +* [Thomas McDonald](https://twitter.com/thomasmcdonald_) +* [Tristan Harward](http://www.trisweb.com) +* Peter Gumeson +* [Gleb Mazovetskiy](https://github.com/glebm) + +and a [significant number of other contributors][contrib]. + +## You're in good company +bootstrap-sass is used to build some awesome projects all over the web, including +[Diaspora](https://diasporafoundation.org/), [rails_admin](https://github.com/sferik/rails_admin), +Michael Hartl's [Rails Tutorial](https://www.railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and +[kandan](http://getkandan.com/). + +[converter]: https://github.com/twbs/bootstrap-sass/blob/master/tasks/converter/less_conversion.rb +[version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb +[contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors +[antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595 +[jsdocs]: http://getbootstrap.com/javascript/#transitions +[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Value/Number.html#precision%3D-class_method +[mincer]: https://github.com/nodeca/mincer +[autoprefixer]: https://github.com/postcss/autoprefixer diff --git a/public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/public/assets/vendor/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js new file mode 100644 index 00000000..fb01d63f --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js @@ -0,0 +1,12 @@ +//= require ./bootstrap/transition +//= require ./bootstrap/alert +//= require ./bootstrap/button +//= require ./bootstrap/carousel +//= require ./bootstrap/collapse +//= require ./bootstrap/dropdown +//= require ./bootstrap/modal +//= require ./bootstrap/tab +//= require ./bootstrap/affix +//= require ./bootstrap/scrollspy +//= require ./bootstrap/tooltip +//= require ./bootstrap/popover diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.js new file mode 100644 index 00000000..8a2e99a5 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.js @@ -0,0 +1,2377 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.7' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.min.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.min.js new file mode 100644 index 00000000..9bcd2fcc --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/affix.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/affix.js new file mode 100644 index 00000000..7f651681 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/affix.js @@ -0,0 +1,162 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/alert.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/alert.js new file mode 100644 index 00000000..db97f3b0 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/alert.js @@ -0,0 +1,94 @@ +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/button.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/button.js new file mode 100644 index 00000000..843b39c9 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/button.js @@ -0,0 +1,125 @@ +/* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.7' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/carousel.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/carousel.js new file mode 100644 index 00000000..6ff954c9 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/carousel.js @@ -0,0 +1,237 @@ +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/collapse.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/collapse.js new file mode 100644 index 00000000..12038693 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/collapse.js @@ -0,0 +1,212 @@ +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js new file mode 100644 index 00000000..04e9c2de --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js @@ -0,0 +1,165 @@ +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/modal.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/modal.js new file mode 100644 index 00000000..f84142d8 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/modal.js @@ -0,0 +1,339 @@ +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/popover.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/popover.js new file mode 100644 index 00000000..efe19567 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/popover.js @@ -0,0 +1,108 @@ +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js new file mode 100644 index 00000000..fe198095 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js @@ -0,0 +1,172 @@ +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tab.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tab.js new file mode 100644 index 00000000..c4a86354 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tab.js @@ -0,0 +1,155 @@ +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js new file mode 100644 index 00000000..e35d9c7c --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js @@ -0,0 +1,520 @@ +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/transition.js b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/transition.js new file mode 100644 index 00000000..db76596e --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/javascripts/bootstrap/transition.js @@ -0,0 +1,59 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss new file mode 100644 index 00000000..8fbc3cda --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-url($path, true); +} + +@function twbs-image-path($path) { + @return image-url($path, true); +} + +$bootstrap-sass-asset-helper: true; diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss new file mode 100644 index 00000000..0c4655e3 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss @@ -0,0 +1,19 @@ +// Mincer asset helper functions +// +// This must be imported into a .css.ejs.scss file. +// Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. + + +@function twbs-font-path($path) { + // do something like following + // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" + // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" + // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" + @return "<%- asset_path("#{$path}".replace(/[#?].*$/, '')) + "#{$path}".replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; +} + +@function twbs-image-path($file) { + @return "<%- asset_path("#{$file}") %>"; +} + +$bootstrap-sass-asset-helper: true; diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss new file mode 100644 index 00000000..9fffc1eb --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-path($path); +} + +@function twbs-image-path($path) { + @return image-path($path); +} + +$bootstrap-sass-asset-helper: true; diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap.scss new file mode 100644 index 00000000..e72d1def --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/_bootstrap.scss @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss new file mode 100644 index 00000000..7d1e1fdd --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss @@ -0,0 +1,73 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing $headings-color + color: inherit; + } + + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} + +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} + +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} + +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss new file mode 100644 index 00000000..70002e08 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss @@ -0,0 +1,68 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + color: $badge-color; + line-height: $badge-line-height; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // [converter] extracted a& to a.badge + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: $badge-active-color; + background-color: $badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss new file mode 100644 index 00000000..b61f0c73 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss @@ -0,0 +1,28 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + + > li { + display: inline-block; + + + li:before { + // [converter] Workaround for https://github.com/sass/libsass/issues/1115 + $nbsp: "\00a0"; + content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: $breadcrumb-color; + } + } + + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss new file mode 100644 index 00000000..4b385f56 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss @@ -0,0 +1,244 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + @include clearfix; + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { @extend .btn-xs; } +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix; + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + @include border-top-radius($btn-border-radius-base); + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + @include border-top-radius(0); + @include border-bottom-radius($btn-border-radius-base); + } +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss new file mode 100644 index 00000000..6452b709 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss @@ -0,0 +1,168 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: $btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); + @include user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + @include tab-focus; + } + } + + &:hover, + &:focus, + &.focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + @include opacity(.65); + @include box-shadow(none); + } + + // [converter] extracted a& to a.btn +} + +a.btn { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: $link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss new file mode 100644 index 00000000..753d881f --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss @@ -0,0 +1,270 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive; + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000px); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: $carousel-control-width; + @include opacity($carousel-control-opacity); + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: $carousel-control-color; + text-decoration: none; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: ($carousel-control-font-size * 1.5); + height: ($carousel-control-font-size * 1.5); + margin-top: ($carousel-control-font-size / -2); + font-size: ($carousel-control-font-size * 1.5); + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: ($carousel-control-font-size / -2); + } + .glyphicon-chevron-right, + .icon-next { + margin-right: ($carousel-control-font-size / -2); + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss new file mode 100644 index 00000000..3b74d8a9 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss @@ -0,0 +1,36 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss new file mode 100644 index 00000000..caa5f063 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss @@ -0,0 +1,69 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + border-radius: $border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: $kbd-color; + background-color: $kbd-bg; + border-radius: $border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: (($line-height-computed - 1) / 2); + margin: 0 0 ($line-height-computed / 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + word-break: break-all; + word-wrap: break-word; + color: $pre-color; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss new file mode 100644 index 00000000..ca3b43ca --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss @@ -0,0 +1,37 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + // [converter] extracted tr&.in to tr.collapse.in + // [converter] extracted tbody&.in to tbody.collapse.in +} + +tr.collapse.in { display: table-row; } + +tbody.collapse.in { display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss new file mode 100644 index 00000000..aac84597 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss @@ -0,0 +1,216 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base dashed; + border-top: $caret-width-base solid \9; // IE8 + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: $font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: $dropdown-bg; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: $dropdown-link-hover-color; + background-color: $dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: $dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter; + cursor: $cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: ($zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: $caret-width-base dashed; + border-bottom: $caret-width-base solid \9; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; left: auto; + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + left: 0; right: auto; + } + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss new file mode 100644 index 00000000..ac26a6ad --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss @@ -0,0 +1,617 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + @include box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus; +} + +// Adjust output element +output { + display: block; + padding-top: ($padding-base-vertical + 1); + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; + background-color: $input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid $input-border; + border-radius: $input-border-radius; // Note: This has no effect on s in CSS. + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); + + // Customize the `:focus` state to imitate native WebKit styles. + @include form-control-focus; + + // Placeholder + @include placeholder; + + // Unstyle the caret on `` background color +$input-bg: #fff !default; +//** `` background color +$input-bg-disabled: $gray-lighter !default; + +//** Text color for ``s +$input-color: $gray !default; +//** `` border color +$input-border: #ccc !default; + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +$input-border-radius: $border-radius-base !default; +//** Large `.form-control` border radius +$input-border-radius-large: $border-radius-large !default; +//** Small `.form-control` border radius +$input-border-radius-small: $border-radius-small !default; + +//** Border color for inputs on focus +$input-border-focus: #66afe9 !default; + +//** Placeholder text color +$input-color-placeholder: #999 !default; + +//** Default `.form-control` height +$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; + +//** `.form-group` margin +$form-group-margin-bottom: 15px !default; + +$legend-color: $gray-dark !default; +$legend-border-color: #e5e5e5 !default; + +//** Background color for textual input addons +$input-group-addon-bg: $gray-lighter !default; +//** Border color for textual input addons +$input-group-addon-border-color: $input-border !default; + +//** Disabled cursor for form controls and buttons. +$cursor-disabled: not-allowed !default; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +$dropdown-bg: #fff !default; +//** Dropdown menu `border-color`. +$dropdown-border: rgba(0,0,0,.15) !default; +//** Dropdown menu `border-color` **for IE8**. +$dropdown-fallback-border: #ccc !default; +//** Divider color for between dropdown items. +$dropdown-divider-bg: #e5e5e5 !default; + +//** Dropdown link text color. +$dropdown-link-color: $gray-dark !default; +//** Hover color for dropdown links. +$dropdown-link-hover-color: darken($gray-dark, 5%) !default; +//** Hover background for dropdown links. +$dropdown-link-hover-bg: #f5f5f5 !default; + +//** Active dropdown menu item text color. +$dropdown-link-active-color: $component-active-color !default; +//** Active dropdown menu item background color. +$dropdown-link-active-bg: $component-active-bg !default; + +//** Disabled dropdown menu item background color. +$dropdown-link-disabled-color: $gray-light !default; + +//** Text color for headers within dropdown menus. +$dropdown-header-color: $gray-light !default; + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +$dropdown-caret-color: #000 !default; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +$zindex-navbar: 1000 !default; +$zindex-dropdown: 1000 !default; +$zindex-popover: 1060 !default; +$zindex-tooltip: 1070 !default; +$zindex-navbar-fixed: 1030 !default; +$zindex-modal-background: 1040 !default; +$zindex-modal: 1050 !default; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +$screen-xs: 480px !default; +//** Deprecated `$screen-xs-min` as of v3.2.0 +$screen-xs-min: $screen-xs !default; +//** Deprecated `$screen-phone` as of v3.0.1 +$screen-phone: $screen-xs-min !default; + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +$screen-sm: 768px !default; +$screen-sm-min: $screen-sm !default; +//** Deprecated `$screen-tablet` as of v3.0.1 +$screen-tablet: $screen-sm-min !default; + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +$screen-md: 992px !default; +$screen-md-min: $screen-md !default; +//** Deprecated `$screen-desktop` as of v3.0.1 +$screen-desktop: $screen-md-min !default; + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +$screen-lg: 1200px !default; +$screen-lg-min: $screen-lg !default; +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +$screen-lg-desktop: $screen-lg-min !default; + +// So media queries don't overlap when required, provide a maximum +$screen-xs-max: ($screen-sm-min - 1) !default; +$screen-sm-max: ($screen-md-min - 1) !default; +$screen-md-max: ($screen-lg-min - 1) !default; + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +$grid-columns: 12 !default; +//** Padding between columns. Gets divided in half for the left and right. +$grid-gutter-width: 30px !default; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +$grid-float-breakpoint: $screen-sm-min !default; +//** Point at which the navbar begins collapsing. +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +$container-tablet: (720px + $grid-gutter-width) !default; +//** For `$screen-sm-min` and up. +$container-sm: $container-tablet !default; + +// Medium screen / desktop +$container-desktop: (940px + $grid-gutter-width) !default; +//** For `$screen-md-min` and up. +$container-md: $container-desktop !default; + +// Large screen / wide desktop +$container-large-desktop: (1140px + $grid-gutter-width) !default; +//** For `$screen-lg-min` and up. +$container-lg: $container-large-desktop !default; + + +//== Navbar +// +//## + +// Basics of a navbar +$navbar-height: 50px !default; +$navbar-margin-bottom: $line-height-computed !default; +$navbar-border-radius: $border-radius-base !default; +$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default; +$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default; +$navbar-collapse-max-height: 340px !default; + +$navbar-default-color: #777 !default; +$navbar-default-bg: #f8f8f8 !default; +$navbar-default-border: darken($navbar-default-bg, 6.5%) !default; + +// Navbar links +$navbar-default-link-color: #777 !default; +$navbar-default-link-hover-color: #333 !default; +$navbar-default-link-hover-bg: transparent !default; +$navbar-default-link-active-color: #555 !default; +$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; +$navbar-default-link-disabled-color: #ccc !default; +$navbar-default-link-disabled-bg: transparent !default; + +// Navbar brand label +$navbar-default-brand-color: $navbar-default-link-color !default; +$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default; +$navbar-default-brand-hover-bg: transparent !default; + +// Navbar toggle +$navbar-default-toggle-hover-bg: #ddd !default; +$navbar-default-toggle-icon-bar-bg: #888 !default; +$navbar-default-toggle-border-color: #ddd !default; + + +//=== Inverted navbar +// Reset inverted navbar basics +$navbar-inverse-color: lighten($gray-light, 15%) !default; +$navbar-inverse-bg: #222 !default; +$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default; + +// Inverted navbar links +$navbar-inverse-link-color: lighten($gray-light, 15%) !default; +$navbar-inverse-link-hover-color: #fff !default; +$navbar-inverse-link-hover-bg: transparent !default; +$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; +$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; +$navbar-inverse-link-disabled-color: #444 !default; +$navbar-inverse-link-disabled-bg: transparent !default; + +// Inverted navbar brand label +$navbar-inverse-brand-color: $navbar-inverse-link-color !default; +$navbar-inverse-brand-hover-color: #fff !default; +$navbar-inverse-brand-hover-bg: transparent !default; + +// Inverted navbar toggle +$navbar-inverse-toggle-hover-bg: #333 !default; +$navbar-inverse-toggle-icon-bar-bg: #fff !default; +$navbar-inverse-toggle-border-color: #333 !default; + + +//== Navs +// +//## + +//=== Shared nav styles +$nav-link-padding: 10px 15px !default; +$nav-link-hover-bg: $gray-lighter !default; + +$nav-disabled-link-color: $gray-light !default; +$nav-disabled-link-hover-color: $gray-light !default; + +//== Tabs +$nav-tabs-border-color: #ddd !default; + +$nav-tabs-link-hover-border-color: $gray-lighter !default; + +$nav-tabs-active-link-hover-bg: $body-bg !default; +$nav-tabs-active-link-hover-color: $gray !default; +$nav-tabs-active-link-hover-border-color: #ddd !default; + +$nav-tabs-justified-link-border-color: #ddd !default; +$nav-tabs-justified-active-link-border-color: $body-bg !default; + +//== Pills +$nav-pills-border-radius: $border-radius-base !default; +$nav-pills-active-link-hover-bg: $component-active-bg !default; +$nav-pills-active-link-hover-color: $component-active-color !default; + + +//== Pagination +// +//## + +$pagination-color: $link-color !default; +$pagination-bg: #fff !default; +$pagination-border: #ddd !default; + +$pagination-hover-color: $link-hover-color !default; +$pagination-hover-bg: $gray-lighter !default; +$pagination-hover-border: #ddd !default; + +$pagination-active-color: #fff !default; +$pagination-active-bg: $brand-primary !default; +$pagination-active-border: $brand-primary !default; + +$pagination-disabled-color: $gray-light !default; +$pagination-disabled-bg: #fff !default; +$pagination-disabled-border: #ddd !default; + + +//== Pager +// +//## + +$pager-bg: $pagination-bg !default; +$pager-border: $pagination-border !default; +$pager-border-radius: 15px !default; + +$pager-hover-bg: $pagination-hover-bg !default; + +$pager-active-bg: $pagination-active-bg !default; +$pager-active-color: $pagination-active-color !default; + +$pager-disabled-color: $pagination-disabled-color !default; + + +//== Jumbotron +// +//## + +$jumbotron-padding: 30px !default; +$jumbotron-color: inherit !default; +$jumbotron-bg: $gray-lighter !default; +$jumbotron-heading-color: inherit !default; +$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; +$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default; + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +$state-success-text: #3c763d !default; +$state-success-bg: #dff0d8 !default; +$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; + +$state-info-text: #31708f !default; +$state-info-bg: #d9edf7 !default; +$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; + +$state-warning-text: #8a6d3b !default; +$state-warning-bg: #fcf8e3 !default; +$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; + +$state-danger-text: #a94442 !default; +$state-danger-bg: #f2dede !default; +$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; + + +//== Tooltips +// +//## + +//** Tooltip max width +$tooltip-max-width: 200px !default; +//** Tooltip text color +$tooltip-color: #fff !default; +//** Tooltip background color +$tooltip-bg: #000 !default; +$tooltip-opacity: .9 !default; + +//** Tooltip arrow width +$tooltip-arrow-width: 5px !default; +//** Tooltip arrow color +$tooltip-arrow-color: $tooltip-bg !default; + + +//== Popovers +// +//## + +//** Popover body background color +$popover-bg: #fff !default; +//** Popover maximum width +$popover-max-width: 276px !default; +//** Popover border color +$popover-border-color: rgba(0,0,0,.2) !default; +//** Popover fallback border color +$popover-fallback-border-color: #ccc !default; + +//** Popover title background color +$popover-title-bg: darken($popover-bg, 3%) !default; + +//** Popover arrow width +$popover-arrow-width: 10px !default; +//** Popover arrow color +$popover-arrow-color: $popover-bg !default; + +//** Popover outer arrow width +$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; +//** Popover outer arrow color +$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default; +//** Popover outer arrow fallback color +$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; + + +//== Labels +// +//## + +//** Default label background color +$label-default-bg: $gray-light !default; +//** Primary label background color +$label-primary-bg: $brand-primary !default; +//** Success label background color +$label-success-bg: $brand-success !default; +//** Info label background color +$label-info-bg: $brand-info !default; +//** Warning label background color +$label-warning-bg: $brand-warning !default; +//** Danger label background color +$label-danger-bg: $brand-danger !default; + +//** Default label text color +$label-color: #fff !default; +//** Default text color of a linked label +$label-link-hover-color: #fff !default; + + +//== Modals +// +//## + +//** Padding applied to the modal body +$modal-inner-padding: 15px !default; + +//** Padding applied to the modal title +$modal-title-padding: 15px !default; +//** Modal title line-height +$modal-title-line-height: $line-height-base !default; + +//** Background color of modal content area +$modal-content-bg: #fff !default; +//** Modal content border color +$modal-content-border-color: rgba(0,0,0,.2) !default; +//** Modal content border color **for IE8** +$modal-content-fallback-border-color: #999 !default; + +//** Modal backdrop background color +$modal-backdrop-bg: #000 !default; +//** Modal backdrop opacity +$modal-backdrop-opacity: .5 !default; +//** Modal header border color +$modal-header-border-color: #e5e5e5 !default; +//** Modal footer border color +$modal-footer-border-color: $modal-header-border-color !default; + +$modal-lg: 900px !default; +$modal-md: 600px !default; +$modal-sm: 300px !default; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +$alert-padding: 15px !default; +$alert-border-radius: $border-radius-base !default; +$alert-link-font-weight: bold !default; + +$alert-success-bg: $state-success-bg !default; +$alert-success-text: $state-success-text !default; +$alert-success-border: $state-success-border !default; + +$alert-info-bg: $state-info-bg !default; +$alert-info-text: $state-info-text !default; +$alert-info-border: $state-info-border !default; + +$alert-warning-bg: $state-warning-bg !default; +$alert-warning-text: $state-warning-text !default; +$alert-warning-border: $state-warning-border !default; + +$alert-danger-bg: $state-danger-bg !default; +$alert-danger-text: $state-danger-text !default; +$alert-danger-border: $state-danger-border !default; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +$progress-bg: #f5f5f5 !default; +//** Progress bar text color +$progress-bar-color: #fff !default; +//** Variable for setting rounded corners on progress bar. +$progress-border-radius: $border-radius-base !default; + +//** Default progress bar color +$progress-bar-bg: $brand-primary !default; +//** Success progress bar color +$progress-bar-success-bg: $brand-success !default; +//** Warning progress bar color +$progress-bar-warning-bg: $brand-warning !default; +//** Danger progress bar color +$progress-bar-danger-bg: $brand-danger !default; +//** Info progress bar color +$progress-bar-info-bg: $brand-info !default; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +$list-group-bg: #fff !default; +//** `.list-group-item` border color +$list-group-border: #ddd !default; +//** List group border radius +$list-group-border-radius: $border-radius-base !default; + +//** Background color of single list items on hover +$list-group-hover-bg: #f5f5f5 !default; +//** Text color of active list items +$list-group-active-color: $component-active-color !default; +//** Background color of active list items +$list-group-active-bg: $component-active-bg !default; +//** Border color of active list elements +$list-group-active-border: $list-group-active-bg !default; +//** Text color for content within active list items +$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; + +//** Text color of disabled list items +$list-group-disabled-color: $gray-light !default; +//** Background color of disabled list items +$list-group-disabled-bg: $gray-lighter !default; +//** Text color for content within disabled list items +$list-group-disabled-text-color: $list-group-disabled-color !default; + +$list-group-link-color: #555 !default; +$list-group-link-hover-color: $list-group-link-color !default; +$list-group-link-heading-color: #333 !default; + + +//== Panels +// +//## + +$panel-bg: #fff !default; +$panel-body-padding: 15px !default; +$panel-heading-padding: 10px 15px !default; +$panel-footer-padding: $panel-heading-padding !default; +$panel-border-radius: $border-radius-base !default; + +//** Border color for elements within panels +$panel-inner-border: #ddd !default; +$panel-footer-bg: #f5f5f5 !default; + +$panel-default-text: $gray-dark !default; +$panel-default-border: #ddd !default; +$panel-default-heading-bg: #f5f5f5 !default; + +$panel-primary-text: #fff !default; +$panel-primary-border: $brand-primary !default; +$panel-primary-heading-bg: $brand-primary !default; + +$panel-success-text: $state-success-text !default; +$panel-success-border: $state-success-border !default; +$panel-success-heading-bg: $state-success-bg !default; + +$panel-info-text: $state-info-text !default; +$panel-info-border: $state-info-border !default; +$panel-info-heading-bg: $state-info-bg !default; + +$panel-warning-text: $state-warning-text !default; +$panel-warning-border: $state-warning-border !default; +$panel-warning-heading-bg: $state-warning-bg !default; + +$panel-danger-text: $state-danger-text !default; +$panel-danger-border: $state-danger-border !default; +$panel-danger-heading-bg: $state-danger-bg !default; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +$thumbnail-padding: 4px !default; +//** Thumbnail background color +$thumbnail-bg: $body-bg !default; +//** Thumbnail border color +$thumbnail-border: #ddd !default; +//** Thumbnail border radius +$thumbnail-border-radius: $border-radius-base !default; + +//** Custom text color for thumbnail captions +$thumbnail-caption-color: $text-color !default; +//** Padding around the thumbnail caption +$thumbnail-caption-padding: 9px !default; + + +//== Wells +// +//## + +$well-bg: #f5f5f5 !default; +$well-border: darken($well-bg, 7%) !default; + + +//== Badges +// +//## + +$badge-color: #fff !default; +//** Linked badge text color on hover +$badge-link-hover-color: #fff !default; +$badge-bg: $gray-light !default; + +//** Badge text color in active nav link +$badge-active-color: $link-color !default; +//** Badge background color in active nav link +$badge-active-bg: #fff !default; + +$badge-font-weight: bold !default; +$badge-line-height: 1 !default; +$badge-border-radius: 10px !default; + + +//== Breadcrumbs +// +//## + +$breadcrumb-padding-vertical: 8px !default; +$breadcrumb-padding-horizontal: 15px !default; +//** Breadcrumb background color +$breadcrumb-bg: #f5f5f5 !default; +//** Breadcrumb text color +$breadcrumb-color: #ccc !default; +//** Text color of current page in the breadcrumb +$breadcrumb-active-color: $gray-light !default; +//** Textual separator for between breadcrumb elements +$breadcrumb-separator: "/" !default; + + +//== Carousel +// +//## + +$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; + +$carousel-control-color: #fff !default; +$carousel-control-width: 15% !default; +$carousel-control-opacity: .5 !default; +$carousel-control-font-size: 20px !default; + +$carousel-indicator-active-bg: #fff !default; +$carousel-indicator-border-color: #fff !default; + +$carousel-caption-color: #fff !default; + + +//== Close +// +//## + +$close-font-weight: bold !default; +$close-color: #000 !default; +$close-text-shadow: 0 1px 0 #fff !default; + + +//== Code +// +//## + +$code-color: #c7254e !default; +$code-bg: #f9f2f4 !default; + +$kbd-color: #fff !default; +$kbd-bg: #333 !default; + +$pre-bg: #f5f5f5 !default; +$pre-color: $gray-dark !default; +$pre-border-color: #ccc !default; +$pre-scrollable-max-height: 340px !default; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +$component-offset-horizontal: 180px !default; +//** Text muted color +$text-muted: $gray-light !default; +//** Abbreviations and acronyms border color +$abbr-border-color: $gray-light !default; +//** Headings small color +$headings-small-color: $gray-light !default; +//** Blockquote small color +$blockquote-small-color: $gray-light !default; +//** Blockquote font size +$blockquote-font-size: ($font-size-base * 1.25) !default; +//** Blockquote border color +$blockquote-border-color: $gray-lighter !default; +//** Page header border color +$page-header-border-color: $gray-lighter !default; +//** Width of horizontal description list titles +$dl-horizontal-offset: $component-offset-horizontal !default; +//** Point at which .dl-horizontal becomes horizontal +$dl-horizontal-breakpoint: $grid-float-breakpoint !default; +//** Horizontal line color. +$hr-border: $gray-lighter !default; diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss new file mode 100644 index 00000000..b8657118 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: $well-bg; + border: 1px solid $well-border; + border-radius: $border-radius-base; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-lg { + padding: 24px; + border-radius: $border-radius-large; +} +.well-sm { + padding: 9px; + border-radius: $border-radius-small; +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss new file mode 100644 index 00000000..3faf0b5a --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss @@ -0,0 +1,14 @@ +// Alerts + +@mixin alert-variant($background, $border, $text-color) { + background-color: $background; + border-color: $border; + color: $text-color; + + hr { + border-top-color: darken($border, 5%); + } + .alert-link { + color: darken($text-color, 10%); + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss new file mode 100644 index 00000000..4c7769e1 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss @@ -0,0 +1,12 @@ +// Contextual backgrounds + +// [converter] $parent hack +@mixin bg-variant($parent, $color) { + #{$parent} { + background-color: $color; + } + a#{$parent}:hover, + a#{$parent}:focus { + background-color: darken($color, 10%); + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss new file mode 100644 index 00000000..ce194998 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss @@ -0,0 +1,18 @@ +// Single side border-radius + +@mixin border-top-radius($radius) { + border-top-right-radius: $radius; + border-top-left-radius: $radius; +} +@mixin border-right-radius($radius) { + border-bottom-right-radius: $radius; + border-top-right-radius: $radius; +} +@mixin border-bottom-radius($radius) { + border-bottom-right-radius: $radius; + border-bottom-left-radius: $radius; +} +@mixin border-left-radius($radius) { + border-bottom-left-radius: $radius; + border-top-left-radius: $radius; +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss new file mode 100644 index 00000000..b93f84b2 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss @@ -0,0 +1,65 @@ +// Button variants +// +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons + +@mixin button-variant($color, $background, $border) { + color: $color; + background-color: $background; + border-color: $border; + + &:focus, + &.focus { + color: $color; + background-color: darken($background, 10%); + border-color: darken($border, 25%); + } + &:hover { + color: $color; + background-color: darken($background, 10%); + border-color: darken($border, 12%); + } + &:active, + &.active, + .open > &.dropdown-toggle { + color: $color; + background-color: darken($background, 10%); + border-color: darken($border, 12%); + + &:hover, + &:focus, + &.focus { + color: $color; + background-color: darken($background, 17%); + border-color: darken($border, 25%); + } + } + &:active, + &.active, + .open > &.dropdown-toggle { + background-image: none; + } + &.disabled, + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus, + &.focus { + background-color: $background; + border-color: $border; + } + } + + .badge { + color: $background; + background-color: $color; + } +} + +// Button sizes +@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { + padding: $padding-vertical $padding-horizontal; + font-size: $font-size; + line-height: $line-height; + border-radius: $border-radius; +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss new file mode 100644 index 00000000..e06fb5e2 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss @@ -0,0 +1,7 @@ +// Center-align a block level element + +@mixin center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss new file mode 100644 index 00000000..dc3e2ab4 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss @@ -0,0 +1,22 @@ +// Clearfix +// +// For modern browsers +// 1. The space content is one way to avoid an Opera bug when the +// contenteditable attribute is included anywhere else in the document. +// Otherwise it causes space to appear at the top and bottom of elements +// that are clearfixed. +// 2. The use of `table` rather than `block` is only necessary if using +// `:before` to contain the top-margins of child elements. +// +// Source: http://nicolasgallagher.com/micro-clearfix-hack/ + +@mixin clearfix() { + &:before, + &:after { + content: " "; // 1 + display: table; // 2 + } + &:after { + clear: both; + } +} diff --git a/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss new file mode 100644 index 00000000..277aa5f8 --- /dev/null +++ b/public/assets/vendor/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss @@ -0,0 +1,88 @@ +// Form validation states +// +// Used in forms.less to generate the form validation CSS for warnings, errors, +// and successes. + +@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { + // Color the label and help text + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label { + color: $text-color; + } + // Set the border and box shadow on specific inputs to match + .form-control { + border-color: $border-color; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken($border-color, 10%); + $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%); + @include box-shadow($shadow); + } + } + // Set validation states also for addons + .input-group-addon { + color: $text-color; + border-color: $border-color; + background-color: $background-color; + } + // Optional feedback icon + .form-control-feedback { + color: $text-color; + } +} + + +// Form control focus state +// +// Generate a customized focus state and for any input with the specified color, +// which defaults to the `$input-border-focus` variable. +// +// We highly encourage you to not customize the default value, but instead use +// this to tweak colors on an as-needed basis. This aesthetic change is based on +// WebKit's default styles, but applicable to a wider range of browsers. Its +// usability and accessibility should be taken into account with any change. +// +// Example usage: change the default blue border and shadow to white for better +// contrast against a dark gray background. +@mixin form-control-focus($color: $input-border-focus) { + $color-rgba: rgba(red($color), green($color), blue($color), .6); + &:focus { + border-color: $color; + outline: 0; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); + } +} + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `s in some browsers, due to the limited stylability of `s in IE10+.\n &::-ms-expand {\n border: 0;\n background-color: transparent;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 9.3, iOS doesn't support `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because Star + +// Import the fonts +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('@{icon-font-path}@{icon-font-name}.eot'); + src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'), + url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'), + url('@{icon-font-path}@{icon-font-name}.woff') format('woff'), + url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'), + url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg'); +} + +// Catchall baseclass +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +// Individual icons +.glyphicon-asterisk { &:before { content: "\002a"; } } +.glyphicon-plus { &:before { content: "\002b"; } } +.glyphicon-euro, +.glyphicon-eur { &:before { content: "\20ac"; } } +.glyphicon-minus { &:before { content: "\2212"; } } +.glyphicon-cloud { &:before { content: "\2601"; } } +.glyphicon-envelope { &:before { content: "\2709"; } } +.glyphicon-pencil { &:before { content: "\270f"; } } +.glyphicon-glass { &:before { content: "\e001"; } } +.glyphicon-music { &:before { content: "\e002"; } } +.glyphicon-search { &:before { content: "\e003"; } } +.glyphicon-heart { &:before { content: "\e005"; } } +.glyphicon-star { &:before { content: "\e006"; } } +.glyphicon-star-empty { &:before { content: "\e007"; } } +.glyphicon-user { &:before { content: "\e008"; } } +.glyphicon-film { &:before { content: "\e009"; } } +.glyphicon-th-large { &:before { content: "\e010"; } } +.glyphicon-th { &:before { content: "\e011"; } } +.glyphicon-th-list { &:before { content: "\e012"; } } +.glyphicon-ok { &:before { content: "\e013"; } } +.glyphicon-remove { &:before { content: "\e014"; } } +.glyphicon-zoom-in { &:before { content: "\e015"; } } +.glyphicon-zoom-out { &:before { content: "\e016"; } } +.glyphicon-off { &:before { content: "\e017"; } } +.glyphicon-signal { &:before { content: "\e018"; } } +.glyphicon-cog { &:before { content: "\e019"; } } +.glyphicon-trash { &:before { content: "\e020"; } } +.glyphicon-home { &:before { content: "\e021"; } } +.glyphicon-file { &:before { content: "\e022"; } } +.glyphicon-time { &:before { content: "\e023"; } } +.glyphicon-road { &:before { content: "\e024"; } } +.glyphicon-download-alt { &:before { content: "\e025"; } } +.glyphicon-download { &:before { content: "\e026"; } } +.glyphicon-upload { &:before { content: "\e027"; } } +.glyphicon-inbox { &:before { content: "\e028"; } } +.glyphicon-play-circle { &:before { content: "\e029"; } } +.glyphicon-repeat { &:before { content: "\e030"; } } +.glyphicon-refresh { &:before { content: "\e031"; } } +.glyphicon-list-alt { &:before { content: "\e032"; } } +.glyphicon-lock { &:before { content: "\e033"; } } +.glyphicon-flag { &:before { content: "\e034"; } } +.glyphicon-headphones { &:before { content: "\e035"; } } +.glyphicon-volume-off { &:before { content: "\e036"; } } +.glyphicon-volume-down { &:before { content: "\e037"; } } +.glyphicon-volume-up { &:before { content: "\e038"; } } +.glyphicon-qrcode { &:before { content: "\e039"; } } +.glyphicon-barcode { &:before { content: "\e040"; } } +.glyphicon-tag { &:before { content: "\e041"; } } +.glyphicon-tags { &:before { content: "\e042"; } } +.glyphicon-book { &:before { content: "\e043"; } } +.glyphicon-bookmark { &:before { content: "\e044"; } } +.glyphicon-print { &:before { content: "\e045"; } } +.glyphicon-camera { &:before { content: "\e046"; } } +.glyphicon-font { &:before { content: "\e047"; } } +.glyphicon-bold { &:before { content: "\e048"; } } +.glyphicon-italic { &:before { content: "\e049"; } } +.glyphicon-text-height { &:before { content: "\e050"; } } +.glyphicon-text-width { &:before { content: "\e051"; } } +.glyphicon-align-left { &:before { content: "\e052"; } } +.glyphicon-align-center { &:before { content: "\e053"; } } +.glyphicon-align-right { &:before { content: "\e054"; } } +.glyphicon-align-justify { &:before { content: "\e055"; } } +.glyphicon-list { &:before { content: "\e056"; } } +.glyphicon-indent-left { &:before { content: "\e057"; } } +.glyphicon-indent-right { &:before { content: "\e058"; } } +.glyphicon-facetime-video { &:before { content: "\e059"; } } +.glyphicon-picture { &:before { content: "\e060"; } } +.glyphicon-map-marker { &:before { content: "\e062"; } } +.glyphicon-adjust { &:before { content: "\e063"; } } +.glyphicon-tint { &:before { content: "\e064"; } } +.glyphicon-edit { &:before { content: "\e065"; } } +.glyphicon-share { &:before { content: "\e066"; } } +.glyphicon-check { &:before { content: "\e067"; } } +.glyphicon-move { &:before { content: "\e068"; } } +.glyphicon-step-backward { &:before { content: "\e069"; } } +.glyphicon-fast-backward { &:before { content: "\e070"; } } +.glyphicon-backward { &:before { content: "\e071"; } } +.glyphicon-play { &:before { content: "\e072"; } } +.glyphicon-pause { &:before { content: "\e073"; } } +.glyphicon-stop { &:before { content: "\e074"; } } +.glyphicon-forward { &:before { content: "\e075"; } } +.glyphicon-fast-forward { &:before { content: "\e076"; } } +.glyphicon-step-forward { &:before { content: "\e077"; } } +.glyphicon-eject { &:before { content: "\e078"; } } +.glyphicon-chevron-left { &:before { content: "\e079"; } } +.glyphicon-chevron-right { &:before { content: "\e080"; } } +.glyphicon-plus-sign { &:before { content: "\e081"; } } +.glyphicon-minus-sign { &:before { content: "\e082"; } } +.glyphicon-remove-sign { &:before { content: "\e083"; } } +.glyphicon-ok-sign { &:before { content: "\e084"; } } +.glyphicon-question-sign { &:before { content: "\e085"; } } +.glyphicon-info-sign { &:before { content: "\e086"; } } +.glyphicon-screenshot { &:before { content: "\e087"; } } +.glyphicon-remove-circle { &:before { content: "\e088"; } } +.glyphicon-ok-circle { &:before { content: "\e089"; } } +.glyphicon-ban-circle { &:before { content: "\e090"; } } +.glyphicon-arrow-left { &:before { content: "\e091"; } } +.glyphicon-arrow-right { &:before { content: "\e092"; } } +.glyphicon-arrow-up { &:before { content: "\e093"; } } +.glyphicon-arrow-down { &:before { content: "\e094"; } } +.glyphicon-share-alt { &:before { content: "\e095"; } } +.glyphicon-resize-full { &:before { content: "\e096"; } } +.glyphicon-resize-small { &:before { content: "\e097"; } } +.glyphicon-exclamation-sign { &:before { content: "\e101"; } } +.glyphicon-gift { &:before { content: "\e102"; } } +.glyphicon-leaf { &:before { content: "\e103"; } } +.glyphicon-fire { &:before { content: "\e104"; } } +.glyphicon-eye-open { &:before { content: "\e105"; } } +.glyphicon-eye-close { &:before { content: "\e106"; } } +.glyphicon-warning-sign { &:before { content: "\e107"; } } +.glyphicon-plane { &:before { content: "\e108"; } } +.glyphicon-calendar { &:before { content: "\e109"; } } +.glyphicon-random { &:before { content: "\e110"; } } +.glyphicon-comment { &:before { content: "\e111"; } } +.glyphicon-magnet { &:before { content: "\e112"; } } +.glyphicon-chevron-up { &:before { content: "\e113"; } } +.glyphicon-chevron-down { &:before { content: "\e114"; } } +.glyphicon-retweet { &:before { content: "\e115"; } } +.glyphicon-shopping-cart { &:before { content: "\e116"; } } +.glyphicon-folder-close { &:before { content: "\e117"; } } +.glyphicon-folder-open { &:before { content: "\e118"; } } +.glyphicon-resize-vertical { &:before { content: "\e119"; } } +.glyphicon-resize-horizontal { &:before { content: "\e120"; } } +.glyphicon-hdd { &:before { content: "\e121"; } } +.glyphicon-bullhorn { &:before { content: "\e122"; } } +.glyphicon-bell { &:before { content: "\e123"; } } +.glyphicon-certificate { &:before { content: "\e124"; } } +.glyphicon-thumbs-up { &:before { content: "\e125"; } } +.glyphicon-thumbs-down { &:before { content: "\e126"; } } +.glyphicon-hand-right { &:before { content: "\e127"; } } +.glyphicon-hand-left { &:before { content: "\e128"; } } +.glyphicon-hand-up { &:before { content: "\e129"; } } +.glyphicon-hand-down { &:before { content: "\e130"; } } +.glyphicon-circle-arrow-right { &:before { content: "\e131"; } } +.glyphicon-circle-arrow-left { &:before { content: "\e132"; } } +.glyphicon-circle-arrow-up { &:before { content: "\e133"; } } +.glyphicon-circle-arrow-down { &:before { content: "\e134"; } } +.glyphicon-globe { &:before { content: "\e135"; } } +.glyphicon-wrench { &:before { content: "\e136"; } } +.glyphicon-tasks { &:before { content: "\e137"; } } +.glyphicon-filter { &:before { content: "\e138"; } } +.glyphicon-briefcase { &:before { content: "\e139"; } } +.glyphicon-fullscreen { &:before { content: "\e140"; } } +.glyphicon-dashboard { &:before { content: "\e141"; } } +.glyphicon-paperclip { &:before { content: "\e142"; } } +.glyphicon-heart-empty { &:before { content: "\e143"; } } +.glyphicon-link { &:before { content: "\e144"; } } +.glyphicon-phone { &:before { content: "\e145"; } } +.glyphicon-pushpin { &:before { content: "\e146"; } } +.glyphicon-usd { &:before { content: "\e148"; } } +.glyphicon-gbp { &:before { content: "\e149"; } } +.glyphicon-sort { &:before { content: "\e150"; } } +.glyphicon-sort-by-alphabet { &:before { content: "\e151"; } } +.glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } } +.glyphicon-sort-by-order { &:before { content: "\e153"; } } +.glyphicon-sort-by-order-alt { &:before { content: "\e154"; } } +.glyphicon-sort-by-attributes { &:before { content: "\e155"; } } +.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } } +.glyphicon-unchecked { &:before { content: "\e157"; } } +.glyphicon-expand { &:before { content: "\e158"; } } +.glyphicon-collapse-down { &:before { content: "\e159"; } } +.glyphicon-collapse-up { &:before { content: "\e160"; } } +.glyphicon-log-in { &:before { content: "\e161"; } } +.glyphicon-flash { &:before { content: "\e162"; } } +.glyphicon-log-out { &:before { content: "\e163"; } } +.glyphicon-new-window { &:before { content: "\e164"; } } +.glyphicon-record { &:before { content: "\e165"; } } +.glyphicon-save { &:before { content: "\e166"; } } +.glyphicon-open { &:before { content: "\e167"; } } +.glyphicon-saved { &:before { content: "\e168"; } } +.glyphicon-import { &:before { content: "\e169"; } } +.glyphicon-export { &:before { content: "\e170"; } } +.glyphicon-send { &:before { content: "\e171"; } } +.glyphicon-floppy-disk { &:before { content: "\e172"; } } +.glyphicon-floppy-saved { &:before { content: "\e173"; } } +.glyphicon-floppy-remove { &:before { content: "\e174"; } } +.glyphicon-floppy-save { &:before { content: "\e175"; } } +.glyphicon-floppy-open { &:before { content: "\e176"; } } +.glyphicon-credit-card { &:before { content: "\e177"; } } +.glyphicon-transfer { &:before { content: "\e178"; } } +.glyphicon-cutlery { &:before { content: "\e179"; } } +.glyphicon-header { &:before { content: "\e180"; } } +.glyphicon-compressed { &:before { content: "\e181"; } } +.glyphicon-earphone { &:before { content: "\e182"; } } +.glyphicon-phone-alt { &:before { content: "\e183"; } } +.glyphicon-tower { &:before { content: "\e184"; } } +.glyphicon-stats { &:before { content: "\e185"; } } +.glyphicon-sd-video { &:before { content: "\e186"; } } +.glyphicon-hd-video { &:before { content: "\e187"; } } +.glyphicon-subtitles { &:before { content: "\e188"; } } +.glyphicon-sound-stereo { &:before { content: "\e189"; } } +.glyphicon-sound-dolby { &:before { content: "\e190"; } } +.glyphicon-sound-5-1 { &:before { content: "\e191"; } } +.glyphicon-sound-6-1 { &:before { content: "\e192"; } } +.glyphicon-sound-7-1 { &:before { content: "\e193"; } } +.glyphicon-copyright-mark { &:before { content: "\e194"; } } +.glyphicon-registration-mark { &:before { content: "\e195"; } } +.glyphicon-cloud-download { &:before { content: "\e197"; } } +.glyphicon-cloud-upload { &:before { content: "\e198"; } } +.glyphicon-tree-conifer { &:before { content: "\e199"; } } +.glyphicon-tree-deciduous { &:before { content: "\e200"; } } +.glyphicon-cd { &:before { content: "\e201"; } } +.glyphicon-save-file { &:before { content: "\e202"; } } +.glyphicon-open-file { &:before { content: "\e203"; } } +.glyphicon-level-up { &:before { content: "\e204"; } } +.glyphicon-copy { &:before { content: "\e205"; } } +.glyphicon-paste { &:before { content: "\e206"; } } +// The following 2 Glyphicons are omitted for the time being because +// they currently use Unicode codepoints that are outside the +// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle +// non-BMP codepoints in CSS string escapes, and thus can't display these two icons. +// Notably, the bug affects some older versions of the Android Browser. +// More info: https://github.com/twbs/bootstrap/issues/10106 +// .glyphicon-door { &:before { content: "\1f6aa"; } } +// .glyphicon-key { &:before { content: "\1f511"; } } +.glyphicon-alert { &:before { content: "\e209"; } } +.glyphicon-equalizer { &:before { content: "\e210"; } } +.glyphicon-king { &:before { content: "\e211"; } } +.glyphicon-queen { &:before { content: "\e212"; } } +.glyphicon-pawn { &:before { content: "\e213"; } } +.glyphicon-bishop { &:before { content: "\e214"; } } +.glyphicon-knight { &:before { content: "\e215"; } } +.glyphicon-baby-formula { &:before { content: "\e216"; } } +.glyphicon-tent { &:before { content: "\26fa"; } } +.glyphicon-blackboard { &:before { content: "\e218"; } } +.glyphicon-bed { &:before { content: "\e219"; } } +.glyphicon-apple { &:before { content: "\f8ff"; } } +.glyphicon-erase { &:before { content: "\e221"; } } +.glyphicon-hourglass { &:before { content: "\231b"; } } +.glyphicon-lamp { &:before { content: "\e223"; } } +.glyphicon-duplicate { &:before { content: "\e224"; } } +.glyphicon-piggy-bank { &:before { content: "\e225"; } } +.glyphicon-scissors { &:before { content: "\e226"; } } +.glyphicon-bitcoin { &:before { content: "\e227"; } } +.glyphicon-btc { &:before { content: "\e227"; } } +.glyphicon-xbt { &:before { content: "\e227"; } } +.glyphicon-yen { &:before { content: "\00a5"; } } +.glyphicon-jpy { &:before { content: "\00a5"; } } +.glyphicon-ruble { &:before { content: "\20bd"; } } +.glyphicon-rub { &:before { content: "\20bd"; } } +.glyphicon-scale { &:before { content: "\e230"; } } +.glyphicon-ice-lolly { &:before { content: "\e231"; } } +.glyphicon-ice-lolly-tasted { &:before { content: "\e232"; } } +.glyphicon-education { &:before { content: "\e233"; } } +.glyphicon-option-horizontal { &:before { content: "\e234"; } } +.glyphicon-option-vertical { &:before { content: "\e235"; } } +.glyphicon-menu-hamburger { &:before { content: "\e236"; } } +.glyphicon-modal-window { &:before { content: "\e237"; } } +.glyphicon-oil { &:before { content: "\e238"; } } +.glyphicon-grain { &:before { content: "\e239"; } } +.glyphicon-sunglasses { &:before { content: "\e240"; } } +.glyphicon-text-size { &:before { content: "\e241"; } } +.glyphicon-text-color { &:before { content: "\e242"; } } +.glyphicon-text-background { &:before { content: "\e243"; } } +.glyphicon-object-align-top { &:before { content: "\e244"; } } +.glyphicon-object-align-bottom { &:before { content: "\e245"; } } +.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } } +.glyphicon-object-align-left { &:before { content: "\e247"; } } +.glyphicon-object-align-vertical { &:before { content: "\e248"; } } +.glyphicon-object-align-right { &:before { content: "\e249"; } } +.glyphicon-triangle-right { &:before { content: "\e250"; } } +.glyphicon-triangle-left { &:before { content: "\e251"; } } +.glyphicon-triangle-bottom { &:before { content: "\e252"; } } +.glyphicon-triangle-top { &:before { content: "\e253"; } } +.glyphicon-console { &:before { content: "\e254"; } } +.glyphicon-superscript { &:before { content: "\e255"; } } +.glyphicon-subscript { &:before { content: "\e256"; } } +.glyphicon-menu-left { &:before { content: "\e257"; } } +.glyphicon-menu-right { &:before { content: "\e258"; } } +.glyphicon-menu-down { &:before { content: "\e259"; } } +.glyphicon-menu-up { &:before { content: "\e260"; } } diff --git a/public/assets/vendor/bootstrap/less/grid.less b/public/assets/vendor/bootstrap/less/grid.less new file mode 100644 index 00000000..e100655b --- /dev/null +++ b/public/assets/vendor/bootstrap/less/grid.less @@ -0,0 +1,84 @@ +// +// Grid system +// -------------------------------------------------- + + +// Container widths +// +// Set the container width, and override it for fixed navbars in media queries. + +.container { + .container-fixed(); + + @media (min-width: @screen-sm-min) { + width: @container-sm; + } + @media (min-width: @screen-md-min) { + width: @container-md; + } + @media (min-width: @screen-lg-min) { + width: @container-lg; + } +} + + +// Fluid container +// +// Utilizes the mixin meant for fixed width containers, but without any defined +// width for fluid, full width layouts. + +.container-fluid { + .container-fixed(); +} + + +// Row +// +// Rows contain and clear the floats of your columns. + +.row { + .make-row(); +} + + +// Columns +// +// Common styles for small and large grid columns + +.make-grid-columns(); + + +// Extra small grid +// +// Columns, offsets, pushes, and pulls for extra small devices like +// smartphones. + +.make-grid(xs); + + +// Small grid +// +// Columns, offsets, pushes, and pulls for the small device range, from phones +// to tablets. + +@media (min-width: @screen-sm-min) { + .make-grid(sm); +} + + +// Medium grid +// +// Columns, offsets, pushes, and pulls for the desktop device range. + +@media (min-width: @screen-md-min) { + .make-grid(md); +} + + +// Large grid +// +// Columns, offsets, pushes, and pulls for the large desktop device range. + +@media (min-width: @screen-lg-min) { + .make-grid(lg); +} diff --git a/public/assets/vendor/bootstrap/less/input-groups.less b/public/assets/vendor/bootstrap/less/input-groups.less new file mode 100644 index 00000000..d0763db7 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/input-groups.less @@ -0,0 +1,171 @@ +// +// Input groups +// -------------------------------------------------- + +// Base styles +// ------------------------- +.input-group { + position: relative; // For dropdowns + display: table; + border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table + + // Undo padding and float of grid classes + &[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; + } + + .form-control { + // Ensure that the input is always above the *appended* addon button for + // proper border colors. + position: relative; + z-index: 2; + + // IE9 fubars the placeholder attribute in text inputs and the arrows on + // select elements in input groups. To fix it, we float the input. Details: + // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 + float: left; + + width: 100%; + margin-bottom: 0; + + &:focus { + z-index: 3; + } + } +} + +// Sizing options +// +// Remix the default form control sizing classes into new ones for easier +// manipulation. + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + .input-lg(); +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + .input-sm(); +} + + +// Display as table-cell +// ------------------------- +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; + + &:not(:first-child):not(:last-child) { + border-radius: 0; + } +} +// Addon and addon wrapper for buttons +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; // Match the inputs +} + +// Text input groups +// ------------------------- +.input-group-addon { + padding: @padding-base-vertical @padding-base-horizontal; + font-size: @font-size-base; + font-weight: normal; + line-height: 1; + color: @input-color; + text-align: center; + background-color: @input-group-addon-bg; + border: 1px solid @input-group-addon-border-color; + border-radius: @input-border-radius; + + // Sizing + &.input-sm { + padding: @padding-small-vertical @padding-small-horizontal; + font-size: @font-size-small; + border-radius: @input-border-radius-small; + } + &.input-lg { + padding: @padding-large-vertical @padding-large-horizontal; + font-size: @font-size-large; + border-radius: @input-border-radius-large; + } + + // Nuke default margins from checkboxes and radios to vertically center within. + input[type="radio"], + input[type="checkbox"] { + margin-top: 0; + } +} + +// Reset rounded corners +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + .border-right-radius(0); +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + .border-left-radius(0); +} +.input-group-addon:last-child { + border-left: 0; +} + +// Button input groups +// ------------------------- +.input-group-btn { + position: relative; + // Jankily prevent input button groups from wrapping with `white-space` and + // `font-size` in combination with `inline-block` on buttons. + font-size: 0; + white-space: nowrap; + + // Negative margin for spacing, position for bringing hovered/focused/actived + // element above the siblings. + > .btn { + position: relative; + + .btn { + margin-left: -1px; + } + // Bring the "active" button to the front + &:hover, + &:focus, + &:active { + z-index: 2; + } + } + + // Negative margin to only have a 1px border between the two + &:first-child { + > .btn, + > .btn-group { + margin-right: -1px; + } + } + &:last-child { + > .btn, + > .btn-group { + z-index: 2; + margin-left: -1px; + } + } +} diff --git a/public/assets/vendor/bootstrap/less/jumbotron.less b/public/assets/vendor/bootstrap/less/jumbotron.less new file mode 100644 index 00000000..1d9b515b --- /dev/null +++ b/public/assets/vendor/bootstrap/less/jumbotron.less @@ -0,0 +1,54 @@ +// +// Jumbotron +// -------------------------------------------------- + + +.jumbotron { + padding-top: @jumbotron-padding; + padding-bottom: @jumbotron-padding; + margin-bottom: @jumbotron-padding; + color: @jumbotron-color; + background-color: @jumbotron-bg; + + h1, + .h1 { + color: @jumbotron-heading-color; + } + + p { + margin-bottom: (@jumbotron-padding / 2); + font-size: @jumbotron-font-size; + font-weight: 200; + } + + > hr { + border-top-color: darken(@jumbotron-bg, 10%); + } + + .container &, + .container-fluid & { + border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container + padding-left: (@grid-gutter-width / 2); + padding-right: (@grid-gutter-width / 2); + } + + .container { + max-width: 100%; + } + + @media screen and (min-width: @screen-sm-min) { + padding-top: (@jumbotron-padding * 1.6); + padding-bottom: (@jumbotron-padding * 1.6); + + .container &, + .container-fluid & { + padding-left: (@jumbotron-padding * 2); + padding-right: (@jumbotron-padding * 2); + } + + h1, + .h1 { + font-size: @jumbotron-heading-font-size; + } + } +} diff --git a/public/assets/vendor/bootstrap/less/labels.less b/public/assets/vendor/bootstrap/less/labels.less new file mode 100644 index 00000000..9a5a2700 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/labels.less @@ -0,0 +1,64 @@ +// +// Labels +// -------------------------------------------------- + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: @label-color; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + + // Add hover effects, but only for links + a& { + &:hover, + &:focus { + color: @label-link-hover-color; + text-decoration: none; + cursor: pointer; + } + } + + // Empty labels collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for labels in buttons + .btn & { + position: relative; + top: -1px; + } +} + +// Colors +// Contextual variations (linked labels get darker on :hover) + +.label-default { + .label-variant(@label-default-bg); +} + +.label-primary { + .label-variant(@label-primary-bg); +} + +.label-success { + .label-variant(@label-success-bg); +} + +.label-info { + .label-variant(@label-info-bg); +} + +.label-warning { + .label-variant(@label-warning-bg); +} + +.label-danger { + .label-variant(@label-danger-bg); +} diff --git a/public/assets/vendor/bootstrap/less/list-group.less b/public/assets/vendor/bootstrap/less/list-group.less new file mode 100644 index 00000000..216b9123 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/list-group.less @@ -0,0 +1,130 @@ +// +// List groups +// -------------------------------------------------- + + +// Base class +// +// Easily usable on
    ,
      , or
      . + +.list-group { + // No need to set list-style: none; since .list-group-item is block level + margin-bottom: 20px; + padding-left: 0; // reset padding because ul and ol +} + + +// Individual list items +// +// Use on `li`s or `div`s within the `.list-group` parent. + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + // Place the border on the list items and negative margin up for better styling + margin-bottom: -1px; + background-color: @list-group-bg; + border: 1px solid @list-group-border; + + // Round the first and last items + &:first-child { + .border-top-radius(@list-group-border-radius); + } + &:last-child { + margin-bottom: 0; + .border-bottom-radius(@list-group-border-radius); + } +} + + +// Interactive list items +// +// Use anchor or button elements instead of `li`s or `div`s to create interactive items. +// Includes an extra `.active` modifier class for showing selected items. + +a.list-group-item, +button.list-group-item { + color: @list-group-link-color; + + .list-group-item-heading { + color: @list-group-link-heading-color; + } + + // Hover state + &:hover, + &:focus { + text-decoration: none; + color: @list-group-link-hover-color; + background-color: @list-group-hover-bg; + } +} + +button.list-group-item { + width: 100%; + text-align: left; +} + +.list-group-item { + // Disabled state + &.disabled, + &.disabled:hover, + &.disabled:focus { + background-color: @list-group-disabled-bg; + color: @list-group-disabled-color; + cursor: @cursor-disabled; + + // Force color to inherit for custom content + .list-group-item-heading { + color: inherit; + } + .list-group-item-text { + color: @list-group-disabled-text-color; + } + } + + // Active class on item itself, not parent + &.active, + &.active:hover, + &.active:focus { + z-index: 2; // Place active items above their siblings for proper border styling + color: @list-group-active-color; + background-color: @list-group-active-bg; + border-color: @list-group-active-border; + + // Force color to inherit for custom content + .list-group-item-heading, + .list-group-item-heading > small, + .list-group-item-heading > .small { + color: inherit; + } + .list-group-item-text { + color: @list-group-active-text-color; + } + } +} + + +// Contextual variants +// +// Add modifier classes to change text and background color on individual items. +// Organizationally, this must come after the `:hover` states. + +.list-group-item-variant(success; @state-success-bg; @state-success-text); +.list-group-item-variant(info; @state-info-bg; @state-info-text); +.list-group-item-variant(warning; @state-warning-bg; @state-warning-text); +.list-group-item-variant(danger; @state-danger-bg; @state-danger-text); + + +// Custom content options +// +// Extra classes for creating well-formatted content within `.list-group-item`s. + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} diff --git a/public/assets/vendor/bootstrap/less/media.less b/public/assets/vendor/bootstrap/less/media.less new file mode 100644 index 00000000..8c835e86 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/media.less @@ -0,0 +1,66 @@ +.media { + // Proper spacing between instances of .media + margin-top: 15px; + + &:first-child { + margin-top: 0; + } +} + +.media, +.media-body { + zoom: 1; + overflow: hidden; +} + +.media-body { + width: 10000px; +} + +.media-object { + display: block; + + // Fix collapse in webkit from max-width: 100% and display: table-cell. + &.img-thumbnail { + max-width: none; + } +} + +.media-right, +.media > .pull-right { + padding-left: 10px; +} + +.media-left, +.media > .pull-left { + padding-right: 10px; +} + +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} + +.media-middle { + vertical-align: middle; +} + +.media-bottom { + vertical-align: bottom; +} + +// Reset margins on headings for tighter default spacing +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} + +// Media list variation +// +// Undo default ul/ol styles +.media-list { + padding-left: 0; + list-style: none; +} diff --git a/public/assets/vendor/bootstrap/less/mixins.less b/public/assets/vendor/bootstrap/less/mixins.less new file mode 100644 index 00000000..e6f9fe68 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins.less @@ -0,0 +1,40 @@ +// Mixins +// -------------------------------------------------- + +// Utilities +@import "mixins/hide-text.less"; +@import "mixins/opacity.less"; +@import "mixins/image.less"; +@import "mixins/labels.less"; +@import "mixins/reset-filter.less"; +@import "mixins/resize.less"; +@import "mixins/responsive-visibility.less"; +@import "mixins/size.less"; +@import "mixins/tab-focus.less"; +@import "mixins/reset-text.less"; +@import "mixins/text-emphasis.less"; +@import "mixins/text-overflow.less"; +@import "mixins/vendor-prefixes.less"; + +// Components +@import "mixins/alerts.less"; +@import "mixins/buttons.less"; +@import "mixins/panels.less"; +@import "mixins/pagination.less"; +@import "mixins/list-group.less"; +@import "mixins/nav-divider.less"; +@import "mixins/forms.less"; +@import "mixins/progress-bar.less"; +@import "mixins/table-row.less"; + +// Skins +@import "mixins/background-variant.less"; +@import "mixins/border-radius.less"; +@import "mixins/gradients.less"; + +// Layout +@import "mixins/clearfix.less"; +@import "mixins/center-block.less"; +@import "mixins/nav-vertical-align.less"; +@import "mixins/grid-framework.less"; +@import "mixins/grid.less"; diff --git a/public/assets/vendor/bootstrap/less/mixins/alerts.less b/public/assets/vendor/bootstrap/less/mixins/alerts.less new file mode 100644 index 00000000..396196f4 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/alerts.less @@ -0,0 +1,14 @@ +// Alerts + +.alert-variant(@background; @border; @text-color) { + background-color: @background; + border-color: @border; + color: @text-color; + + hr { + border-top-color: darken(@border, 5%); + } + .alert-link { + color: darken(@text-color, 10%); + } +} diff --git a/public/assets/vendor/bootstrap/less/mixins/background-variant.less b/public/assets/vendor/bootstrap/less/mixins/background-variant.less new file mode 100644 index 00000000..a85c22b7 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/background-variant.less @@ -0,0 +1,9 @@ +// Contextual backgrounds + +.bg-variant(@color) { + background-color: @color; + a&:hover, + a&:focus { + background-color: darken(@color, 10%); + } +} diff --git a/public/assets/vendor/bootstrap/less/mixins/border-radius.less b/public/assets/vendor/bootstrap/less/mixins/border-radius.less new file mode 100644 index 00000000..ca05dbf4 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/border-radius.less @@ -0,0 +1,18 @@ +// Single side border-radius + +.border-top-radius(@radius) { + border-top-right-radius: @radius; + border-top-left-radius: @radius; +} +.border-right-radius(@radius) { + border-bottom-right-radius: @radius; + border-top-right-radius: @radius; +} +.border-bottom-radius(@radius) { + border-bottom-right-radius: @radius; + border-bottom-left-radius: @radius; +} +.border-left-radius(@radius) { + border-bottom-left-radius: @radius; + border-top-left-radius: @radius; +} diff --git a/public/assets/vendor/bootstrap/less/mixins/buttons.less b/public/assets/vendor/bootstrap/less/mixins/buttons.less new file mode 100644 index 00000000..b294d8c2 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/buttons.less @@ -0,0 +1,65 @@ +// Button variants +// +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons + +.button-variant(@color; @background; @border) { + color: @color; + background-color: @background; + border-color: @border; + + &:focus, + &.focus { + color: @color; + background-color: darken(@background, 10%); + border-color: darken(@border, 25%); + } + &:hover { + color: @color; + background-color: darken(@background, 10%); + border-color: darken(@border, 12%); + } + &:active, + &.active, + .open > .dropdown-toggle& { + color: @color; + background-color: darken(@background, 10%); + border-color: darken(@border, 12%); + + &:hover, + &:focus, + &.focus { + color: @color; + background-color: darken(@background, 17%); + border-color: darken(@border, 25%); + } + } + &:active, + &.active, + .open > .dropdown-toggle& { + background-image: none; + } + &.disabled, + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus, + &.focus { + background-color: @background; + border-color: @border; + } + } + + .badge { + color: @background; + background-color: @color; + } +} + +// Button sizes +.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { + padding: @padding-vertical @padding-horizontal; + font-size: @font-size; + line-height: @line-height; + border-radius: @border-radius; +} diff --git a/public/assets/vendor/bootstrap/less/mixins/center-block.less b/public/assets/vendor/bootstrap/less/mixins/center-block.less new file mode 100644 index 00000000..d18d6de9 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/center-block.less @@ -0,0 +1,7 @@ +// Center-align a block level element + +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} diff --git a/public/assets/vendor/bootstrap/less/mixins/clearfix.less b/public/assets/vendor/bootstrap/less/mixins/clearfix.less new file mode 100644 index 00000000..3f7a3820 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/clearfix.less @@ -0,0 +1,22 @@ +// Clearfix +// +// For modern browsers +// 1. The space content is one way to avoid an Opera bug when the +// contenteditable attribute is included anywhere else in the document. +// Otherwise it causes space to appear at the top and bottom of elements +// that are clearfixed. +// 2. The use of `table` rather than `block` is only necessary if using +// `:before` to contain the top-margins of child elements. +// +// Source: http://nicolasgallagher.com/micro-clearfix-hack/ + +.clearfix() { + &:before, + &:after { + content: " "; // 1 + display: table; // 2 + } + &:after { + clear: both; + } +} diff --git a/public/assets/vendor/bootstrap/less/mixins/forms.less b/public/assets/vendor/bootstrap/less/mixins/forms.less new file mode 100644 index 00000000..6f55ed96 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/mixins/forms.less @@ -0,0 +1,85 @@ +// Form validation states +// +// Used in forms.less to generate the form validation CSS for warnings, errors, +// and successes. + +.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) { + // Color the label and help text + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label { + color: @text-color; + } + // Set the border and box shadow on specific inputs to match + .form-control { + border-color: @border-color; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken(@border-color, 10%); + @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%); + .box-shadow(@shadow); + } + } + // Set validation states also for addons + .input-group-addon { + color: @text-color; + border-color: @border-color; + background-color: @background-color; + } + // Optional feedback icon + .form-control-feedback { + color: @text-color; + } +} + + +// Form control focus state +// +// Generate a customized focus state and for any input with the specified color, +// which defaults to the `@input-border-focus` variable. +// +// We highly encourage you to not customize the default value, but instead use +// this to tweak colors on an as-needed basis. This aesthetic change is based on +// WebKit's default styles, but applicable to a wider range of browsers. Its +// usability and accessibility should be taken into account with any change. +// +// Example usage: change the default blue border and shadow to white for better +// contrast against a dark gray background. +.form-control-focus(@color: @input-border-focus) { + @color-rgba: rgba(red(@color), green(@color), blue(@color), .6); + &:focus { + border-color: @color; + outline: 0; + .box-shadow(~"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}"); + } +} + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `` background color +@input-bg: #fff; +//** `` background color +@input-bg-disabled: @gray-lighter; + +//** Text color for ``s +@input-color: @gray; +//** `` border color +@input-border: #ccc; + +// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +@input-border-radius: @border-radius-base; +//** Large `.form-control` border radius +@input-border-radius-large: @border-radius-large; +//** Small `.form-control` border radius +@input-border-radius-small: @border-radius-small; + +//** Border color for inputs on focus +@input-border-focus: #66afe9; + +//** Placeholder text color +@input-color-placeholder: #999; + +//** Default `.form-control` height +@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2); +//** Large `.form-control` height +@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2); +//** Small `.form-control` height +@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2); + +//** `.form-group` margin +@form-group-margin-bottom: 15px; + +@legend-color: @gray-dark; +@legend-border-color: #e5e5e5; + +//** Background color for textual input addons +@input-group-addon-bg: @gray-lighter; +//** Border color for textual input addons +@input-group-addon-border-color: @input-border; + +//** Disabled cursor for form controls and buttons. +@cursor-disabled: not-allowed; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +@dropdown-bg: #fff; +//** Dropdown menu `border-color`. +@dropdown-border: rgba(0,0,0,.15); +//** Dropdown menu `border-color` **for IE8**. +@dropdown-fallback-border: #ccc; +//** Divider color for between dropdown items. +@dropdown-divider-bg: #e5e5e5; + +//** Dropdown link text color. +@dropdown-link-color: @gray-dark; +//** Hover color for dropdown links. +@dropdown-link-hover-color: darken(@gray-dark, 5%); +//** Hover background for dropdown links. +@dropdown-link-hover-bg: #f5f5f5; + +//** Active dropdown menu item text color. +@dropdown-link-active-color: @component-active-color; +//** Active dropdown menu item background color. +@dropdown-link-active-bg: @component-active-bg; + +//** Disabled dropdown menu item background color. +@dropdown-link-disabled-color: @gray-light; + +//** Text color for headers within dropdown menus. +@dropdown-header-color: @gray-light; + +//** Deprecated `@dropdown-caret-color` as of v3.1.0 +@dropdown-caret-color: #000; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +@zindex-navbar: 1000; +@zindex-dropdown: 1000; +@zindex-popover: 1060; +@zindex-tooltip: 1070; +@zindex-navbar-fixed: 1030; +@zindex-modal-background: 1040; +@zindex-modal: 1050; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `@screen-xs` as of v3.0.1 +@screen-xs: 480px; +//** Deprecated `@screen-xs-min` as of v3.2.0 +@screen-xs-min: @screen-xs; +//** Deprecated `@screen-phone` as of v3.0.1 +@screen-phone: @screen-xs-min; + +// Small screen / tablet +//** Deprecated `@screen-sm` as of v3.0.1 +@screen-sm: 768px; +@screen-sm-min: @screen-sm; +//** Deprecated `@screen-tablet` as of v3.0.1 +@screen-tablet: @screen-sm-min; + +// Medium screen / desktop +//** Deprecated `@screen-md` as of v3.0.1 +@screen-md: 992px; +@screen-md-min: @screen-md; +//** Deprecated `@screen-desktop` as of v3.0.1 +@screen-desktop: @screen-md-min; + +// Large screen / wide desktop +//** Deprecated `@screen-lg` as of v3.0.1 +@screen-lg: 1200px; +@screen-lg-min: @screen-lg; +//** Deprecated `@screen-lg-desktop` as of v3.0.1 +@screen-lg-desktop: @screen-lg-min; + +// So media queries don't overlap when required, provide a maximum +@screen-xs-max: (@screen-sm-min - 1); +@screen-sm-max: (@screen-md-min - 1); +@screen-md-max: (@screen-lg-min - 1); + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +@grid-columns: 12; +//** Padding between columns. Gets divided in half for the left and right. +@grid-gutter-width: 30px; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +@grid-float-breakpoint: @screen-sm-min; +//** Point at which the navbar begins collapsing. +@grid-float-breakpoint-max: (@grid-float-breakpoint - 1); + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +@container-tablet: (720px + @grid-gutter-width); +//** For `@screen-sm-min` and up. +@container-sm: @container-tablet; + +// Medium screen / desktop +@container-desktop: (940px + @grid-gutter-width); +//** For `@screen-md-min` and up. +@container-md: @container-desktop; + +// Large screen / wide desktop +@container-large-desktop: (1140px + @grid-gutter-width); +//** For `@screen-lg-min` and up. +@container-lg: @container-large-desktop; + + +//== Navbar +// +//## + +// Basics of a navbar +@navbar-height: 50px; +@navbar-margin-bottom: @line-height-computed; +@navbar-border-radius: @border-radius-base; +@navbar-padding-horizontal: floor((@grid-gutter-width / 2)); +@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2); +@navbar-collapse-max-height: 340px; + +@navbar-default-color: #777; +@navbar-default-bg: #f8f8f8; +@navbar-default-border: darken(@navbar-default-bg, 6.5%); + +// Navbar links +@navbar-default-link-color: #777; +@navbar-default-link-hover-color: #333; +@navbar-default-link-hover-bg: transparent; +@navbar-default-link-active-color: #555; +@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%); +@navbar-default-link-disabled-color: #ccc; +@navbar-default-link-disabled-bg: transparent; + +// Navbar brand label +@navbar-default-brand-color: @navbar-default-link-color; +@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%); +@navbar-default-brand-hover-bg: transparent; + +// Navbar toggle +@navbar-default-toggle-hover-bg: #ddd; +@navbar-default-toggle-icon-bar-bg: #888; +@navbar-default-toggle-border-color: #ddd; + + +//=== Inverted navbar +// Reset inverted navbar basics +@navbar-inverse-color: lighten(@gray-light, 15%); +@navbar-inverse-bg: #222; +@navbar-inverse-border: darken(@navbar-inverse-bg, 10%); + +// Inverted navbar links +@navbar-inverse-link-color: lighten(@gray-light, 15%); +@navbar-inverse-link-hover-color: #fff; +@navbar-inverse-link-hover-bg: transparent; +@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color; +@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%); +@navbar-inverse-link-disabled-color: #444; +@navbar-inverse-link-disabled-bg: transparent; + +// Inverted navbar brand label +@navbar-inverse-brand-color: @navbar-inverse-link-color; +@navbar-inverse-brand-hover-color: #fff; +@navbar-inverse-brand-hover-bg: transparent; + +// Inverted navbar toggle +@navbar-inverse-toggle-hover-bg: #333; +@navbar-inverse-toggle-icon-bar-bg: #fff; +@navbar-inverse-toggle-border-color: #333; + + +//== Navs +// +//## + +//=== Shared nav styles +@nav-link-padding: 10px 15px; +@nav-link-hover-bg: @gray-lighter; + +@nav-disabled-link-color: @gray-light; +@nav-disabled-link-hover-color: @gray-light; + +//== Tabs +@nav-tabs-border-color: #ddd; + +@nav-tabs-link-hover-border-color: @gray-lighter; + +@nav-tabs-active-link-hover-bg: @body-bg; +@nav-tabs-active-link-hover-color: @gray; +@nav-tabs-active-link-hover-border-color: #ddd; + +@nav-tabs-justified-link-border-color: #ddd; +@nav-tabs-justified-active-link-border-color: @body-bg; + +//== Pills +@nav-pills-border-radius: @border-radius-base; +@nav-pills-active-link-hover-bg: @component-active-bg; +@nav-pills-active-link-hover-color: @component-active-color; + + +//== Pagination +// +//## + +@pagination-color: @link-color; +@pagination-bg: #fff; +@pagination-border: #ddd; + +@pagination-hover-color: @link-hover-color; +@pagination-hover-bg: @gray-lighter; +@pagination-hover-border: #ddd; + +@pagination-active-color: #fff; +@pagination-active-bg: @brand-primary; +@pagination-active-border: @brand-primary; + +@pagination-disabled-color: @gray-light; +@pagination-disabled-bg: #fff; +@pagination-disabled-border: #ddd; + + +//== Pager +// +//## + +@pager-bg: @pagination-bg; +@pager-border: @pagination-border; +@pager-border-radius: 15px; + +@pager-hover-bg: @pagination-hover-bg; + +@pager-active-bg: @pagination-active-bg; +@pager-active-color: @pagination-active-color; + +@pager-disabled-color: @pagination-disabled-color; + + +//== Jumbotron +// +//## + +@jumbotron-padding: 30px; +@jumbotron-color: inherit; +@jumbotron-bg: @gray-lighter; +@jumbotron-heading-color: inherit; +@jumbotron-font-size: ceil((@font-size-base * 1.5)); +@jumbotron-heading-font-size: ceil((@font-size-base * 4.5)); + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +@state-success-text: #3c763d; +@state-success-bg: #dff0d8; +@state-success-border: darken(spin(@state-success-bg, -10), 5%); + +@state-info-text: #31708f; +@state-info-bg: #d9edf7; +@state-info-border: darken(spin(@state-info-bg, -10), 7%); + +@state-warning-text: #8a6d3b; +@state-warning-bg: #fcf8e3; +@state-warning-border: darken(spin(@state-warning-bg, -10), 5%); + +@state-danger-text: #a94442; +@state-danger-bg: #f2dede; +@state-danger-border: darken(spin(@state-danger-bg, -10), 5%); + + +//== Tooltips +// +//## + +//** Tooltip max width +@tooltip-max-width: 200px; +//** Tooltip text color +@tooltip-color: #fff; +//** Tooltip background color +@tooltip-bg: #000; +@tooltip-opacity: .9; + +//** Tooltip arrow width +@tooltip-arrow-width: 5px; +//** Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; + + +//== Popovers +// +//## + +//** Popover body background color +@popover-bg: #fff; +//** Popover maximum width +@popover-max-width: 276px; +//** Popover border color +@popover-border-color: rgba(0,0,0,.2); +//** Popover fallback border color +@popover-fallback-border-color: #ccc; + +//** Popover title background color +@popover-title-bg: darken(@popover-bg, 3%); + +//** Popover arrow width +@popover-arrow-width: 10px; +//** Popover arrow color +@popover-arrow-color: @popover-bg; + +//** Popover outer arrow width +@popover-arrow-outer-width: (@popover-arrow-width + 1); +//** Popover outer arrow color +@popover-arrow-outer-color: fadein(@popover-border-color, 5%); +//** Popover outer arrow fallback color +@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%); + + +//== Labels +// +//## + +//** Default label background color +@label-default-bg: @gray-light; +//** Primary label background color +@label-primary-bg: @brand-primary; +//** Success label background color +@label-success-bg: @brand-success; +//** Info label background color +@label-info-bg: @brand-info; +//** Warning label background color +@label-warning-bg: @brand-warning; +//** Danger label background color +@label-danger-bg: @brand-danger; + +//** Default label text color +@label-color: #fff; +//** Default text color of a linked label +@label-link-hover-color: #fff; + + +//== Modals +// +//## + +//** Padding applied to the modal body +@modal-inner-padding: 15px; + +//** Padding applied to the modal title +@modal-title-padding: 15px; +//** Modal title line-height +@modal-title-line-height: @line-height-base; + +//** Background color of modal content area +@modal-content-bg: #fff; +//** Modal content border color +@modal-content-border-color: rgba(0,0,0,.2); +//** Modal content border color **for IE8** +@modal-content-fallback-border-color: #999; + +//** Modal backdrop background color +@modal-backdrop-bg: #000; +//** Modal backdrop opacity +@modal-backdrop-opacity: .5; +//** Modal header border color +@modal-header-border-color: #e5e5e5; +//** Modal footer border color +@modal-footer-border-color: @modal-header-border-color; + +@modal-lg: 900px; +@modal-md: 600px; +@modal-sm: 300px; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +@alert-padding: 15px; +@alert-border-radius: @border-radius-base; +@alert-link-font-weight: bold; + +@alert-success-bg: @state-success-bg; +@alert-success-text: @state-success-text; +@alert-success-border: @state-success-border; + +@alert-info-bg: @state-info-bg; +@alert-info-text: @state-info-text; +@alert-info-border: @state-info-border; + +@alert-warning-bg: @state-warning-bg; +@alert-warning-text: @state-warning-text; +@alert-warning-border: @state-warning-border; + +@alert-danger-bg: @state-danger-bg; +@alert-danger-text: @state-danger-text; +@alert-danger-border: @state-danger-border; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +@progress-bg: #f5f5f5; +//** Progress bar text color +@progress-bar-color: #fff; +//** Variable for setting rounded corners on progress bar. +@progress-border-radius: @border-radius-base; + +//** Default progress bar color +@progress-bar-bg: @brand-primary; +//** Success progress bar color +@progress-bar-success-bg: @brand-success; +//** Warning progress bar color +@progress-bar-warning-bg: @brand-warning; +//** Danger progress bar color +@progress-bar-danger-bg: @brand-danger; +//** Info progress bar color +@progress-bar-info-bg: @brand-info; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +@list-group-bg: #fff; +//** `.list-group-item` border color +@list-group-border: #ddd; +//** List group border radius +@list-group-border-radius: @border-radius-base; + +//** Background color of single list items on hover +@list-group-hover-bg: #f5f5f5; +//** Text color of active list items +@list-group-active-color: @component-active-color; +//** Background color of active list items +@list-group-active-bg: @component-active-bg; +//** Border color of active list elements +@list-group-active-border: @list-group-active-bg; +//** Text color for content within active list items +@list-group-active-text-color: lighten(@list-group-active-bg, 40%); + +//** Text color of disabled list items +@list-group-disabled-color: @gray-light; +//** Background color of disabled list items +@list-group-disabled-bg: @gray-lighter; +//** Text color for content within disabled list items +@list-group-disabled-text-color: @list-group-disabled-color; + +@list-group-link-color: #555; +@list-group-link-hover-color: @list-group-link-color; +@list-group-link-heading-color: #333; + + +//== Panels +// +//## + +@panel-bg: #fff; +@panel-body-padding: 15px; +@panel-heading-padding: 10px 15px; +@panel-footer-padding: @panel-heading-padding; +@panel-border-radius: @border-radius-base; + +//** Border color for elements within panels +@panel-inner-border: #ddd; +@panel-footer-bg: #f5f5f5; + +@panel-default-text: @gray-dark; +@panel-default-border: #ddd; +@panel-default-heading-bg: #f5f5f5; + +@panel-primary-text: #fff; +@panel-primary-border: @brand-primary; +@panel-primary-heading-bg: @brand-primary; + +@panel-success-text: @state-success-text; +@panel-success-border: @state-success-border; +@panel-success-heading-bg: @state-success-bg; + +@panel-info-text: @state-info-text; +@panel-info-border: @state-info-border; +@panel-info-heading-bg: @state-info-bg; + +@panel-warning-text: @state-warning-text; +@panel-warning-border: @state-warning-border; +@panel-warning-heading-bg: @state-warning-bg; + +@panel-danger-text: @state-danger-text; +@panel-danger-border: @state-danger-border; +@panel-danger-heading-bg: @state-danger-bg; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +@thumbnail-padding: 4px; +//** Thumbnail background color +@thumbnail-bg: @body-bg; +//** Thumbnail border color +@thumbnail-border: #ddd; +//** Thumbnail border radius +@thumbnail-border-radius: @border-radius-base; + +//** Custom text color for thumbnail captions +@thumbnail-caption-color: @text-color; +//** Padding around the thumbnail caption +@thumbnail-caption-padding: 9px; + + +//== Wells +// +//## + +@well-bg: #f5f5f5; +@well-border: darken(@well-bg, 7%); + + +//== Badges +// +//## + +@badge-color: #fff; +//** Linked badge text color on hover +@badge-link-hover-color: #fff; +@badge-bg: @gray-light; + +//** Badge text color in active nav link +@badge-active-color: @link-color; +//** Badge background color in active nav link +@badge-active-bg: #fff; + +@badge-font-weight: bold; +@badge-line-height: 1; +@badge-border-radius: 10px; + + +//== Breadcrumbs +// +//## + +@breadcrumb-padding-vertical: 8px; +@breadcrumb-padding-horizontal: 15px; +//** Breadcrumb background color +@breadcrumb-bg: #f5f5f5; +//** Breadcrumb text color +@breadcrumb-color: #ccc; +//** Text color of current page in the breadcrumb +@breadcrumb-active-color: @gray-light; +//** Textual separator for between breadcrumb elements +@breadcrumb-separator: "/"; + + +//== Carousel +// +//## + +@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6); + +@carousel-control-color: #fff; +@carousel-control-width: 15%; +@carousel-control-opacity: .5; +@carousel-control-font-size: 20px; + +@carousel-indicator-active-bg: #fff; +@carousel-indicator-border-color: #fff; + +@carousel-caption-color: #fff; + + +//== Close +// +//## + +@close-font-weight: bold; +@close-color: #000; +@close-text-shadow: 0 1px 0 #fff; + + +//== Code +// +//## + +@code-color: #c7254e; +@code-bg: #f9f2f4; + +@kbd-color: #fff; +@kbd-bg: #333; + +@pre-bg: #f5f5f5; +@pre-color: @gray-dark; +@pre-border-color: #ccc; +@pre-scrollable-max-height: 340px; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +@component-offset-horizontal: 180px; +//** Text muted color +@text-muted: @gray-light; +//** Abbreviations and acronyms border color +@abbr-border-color: @gray-light; +//** Headings small color +@headings-small-color: @gray-light; +//** Blockquote small color +@blockquote-small-color: @gray-light; +//** Blockquote font size +@blockquote-font-size: (@font-size-base * 1.25); +//** Blockquote border color +@blockquote-border-color: @gray-lighter; +//** Page header border color +@page-header-border-color: @gray-lighter; +//** Width of horizontal description list titles +@dl-horizontal-offset: @component-offset-horizontal; +//** Point at which .dl-horizontal becomes horizontal +@dl-horizontal-breakpoint: @grid-float-breakpoint; +//** Horizontal line color. +@hr-border: @gray-lighter; diff --git a/public/assets/vendor/bootstrap/less/wells.less b/public/assets/vendor/bootstrap/less/wells.less new file mode 100644 index 00000000..15d072b0 --- /dev/null +++ b/public/assets/vendor/bootstrap/less/wells.less @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: @well-bg; + border: 1px solid @well-border; + border-radius: @border-radius-base; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-lg { + padding: 24px; + border-radius: @border-radius-large; +} +.well-sm { + padding: 9px; + border-radius: @border-radius-small; +} diff --git a/public/assets/vendor/bootstrap/nuget/MyGet.ps1 b/public/assets/vendor/bootstrap/nuget/MyGet.ps1 new file mode 100644 index 00000000..417d33df --- /dev/null +++ b/public/assets/vendor/bootstrap/nuget/MyGet.ps1 @@ -0,0 +1,8 @@ +$nuget = $env:NuGet + +# parse the version number out of package.json +$bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version + +# create packages +& $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion +& $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion diff --git a/public/assets/vendor/bootstrap/nuget/bootstrap.less.nuspec b/public/assets/vendor/bootstrap/nuget/bootstrap.less.nuspec new file mode 100644 index 00000000..c72d9ee7 --- /dev/null +++ b/public/assets/vendor/bootstrap/nuget/bootstrap.less.nuspec @@ -0,0 +1,28 @@ + + + + bootstrap.less + 3.3.7 + Bootstrap Less + Twitter, Inc. + bootstrap + The most popular front-end framework for developing responsive, mobile first projects on the web. + http://blog.getbootstrap.com + Bootstrap framework in Less. Includes fonts and JavaScript + en-us + http://getbootstrap.com + http://getbootstrap.com/apple-touch-icon.png + https://github.com/twbs/bootstrap/blob/master/LICENSE + Copyright 2016 + false + + + + css js less mobile-first responsive front-end framework web + + + + + + + \ No newline at end of file diff --git a/public/assets/vendor/bootstrap/nuget/bootstrap.nuspec b/public/assets/vendor/bootstrap/nuget/bootstrap.nuspec new file mode 100644 index 00000000..aa0db01a --- /dev/null +++ b/public/assets/vendor/bootstrap/nuget/bootstrap.nuspec @@ -0,0 +1,28 @@ + + + + bootstrap + 3.3.7 + Bootstrap CSS + Twitter, Inc. + bootstrap + The most popular front-end framework for developing responsive, mobile first projects on the web. + http://blog.getbootstrap.com + Bootstrap framework in CSS. Includes fonts and JavaScript + en-us + http://getbootstrap.com + http://getbootstrap.com/apple-touch-icon.png + https://github.com/twbs/bootstrap/blob/master/LICENSE + Copyright 2016 + false + + + + css js less mobile-first responsive front-end framework web + + + + + + + \ No newline at end of file diff --git a/public/assets/vendor/bootstrap/package.js b/public/assets/vendor/bootstrap/package.js new file mode 100644 index 00000000..f1ddd0c2 --- /dev/null +++ b/public/assets/vendor/bootstrap/package.js @@ -0,0 +1,32 @@ +// package metadata file for Meteor.js + +/* jshint strict:false */ +/* global Package:true */ + +Package.describe({ + name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap + summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', + version: '3.3.7', + git: 'https://github.com/twbs/bootstrap.git' +}); + +Package.onUse(function (api) { + api.versionsFrom('METEOR@1.0'); + api.use('jquery', 'client'); + var assets = [ + 'dist/fonts/glyphicons-halflings-regular.eot', + 'dist/fonts/glyphicons-halflings-regular.svg', + 'dist/fonts/glyphicons-halflings-regular.ttf', + 'dist/fonts/glyphicons-halflings-regular.woff', + 'dist/fonts/glyphicons-halflings-regular.woff2' + ]; + if (api.addAssets) { + api.addAssets(assets, 'client'); + } else { + api.addFiles(assets, 'client', { isAsset: true }); + } + api.addFiles([ + 'dist/css/bootstrap.css', + 'dist/js/bootstrap.js' + ], 'client'); +}); diff --git a/public/assets/vendor/bootstrap/package.json b/public/assets/vendor/bootstrap/package.json new file mode 100644 index 00000000..fe4b31de --- /dev/null +++ b/public/assets/vendor/bootstrap/package.json @@ -0,0 +1,89 @@ +{ + "name": "bootstrap", + "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", + "version": "3.3.7", + "keywords": [ + "css", + "less", + "mobile-first", + "responsive", + "front-end", + "framework", + "web" + ], + "homepage": "http://getbootstrap.com", + "author": "Twitter, Inc.", + "scripts": { + "change-version": "node grunt/change-version.js", + "update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./grunt/npm-shrinkwrap.json", + "test": "grunt test" + }, + "style": "dist/css/bootstrap.css", + "less": "less/bootstrap.less", + "main": "./dist/js/npm", + "repository": { + "type": "git", + "url": "https://github.com/twbs/bootstrap.git" + }, + "bugs": { + "url": "https://github.com/twbs/bootstrap/issues" + }, + "license": "MIT", + "devDependencies": { + "btoa": "~1.1.2", + "glob": "~7.0.3", + "grunt": "~1.0.1", + "grunt-autoprefixer": "~3.0.4", + "grunt-contrib-clean": "~1.0.0", + "grunt-contrib-compress": "~1.3.0", + "grunt-contrib-concat": "~1.0.0", + "grunt-contrib-connect": "~1.0.0", + "grunt-contrib-copy": "~1.0.0", + "grunt-contrib-csslint": "~1.0.0", + "grunt-contrib-cssmin": "~1.0.0", + "grunt-contrib-htmlmin": "~1.5.0", + "grunt-contrib-jshint": "~1.0.0", + "grunt-contrib-less": "~1.3.0", + "grunt-contrib-pug": "~1.0.0", + "grunt-contrib-qunit": "~0.7.0", + "grunt-contrib-uglify": "~1.0.0", + "grunt-contrib-watch": "~1.0.0", + "grunt-csscomb": "~3.1.0", + "grunt-exec": "~1.0.0", + "grunt-html": "~8.0.1", + "grunt-jekyll": "~0.4.4", + "grunt-jscs": "~3.0.1", + "grunt-saucelabs": "~9.0.0", + "load-grunt-tasks": "~3.5.0", + "markdown-it": "^7.0.0", + "shelljs": "^0.7.0", + "shx": "^0.1.2", + "time-grunt": "^1.3.0" + }, + "engines": { + "node": ">=0.10.1" + }, + "files": [ + "dist", + "fonts", + "grunt", + "js/*.js", + "less/**/*.less", + "Gruntfile.js", + "LICENSE" + ], + "jspm": { + "main": "js/bootstrap", + "shim": { + "js/bootstrap": { + "deps": "jquery", + "exports": "$" + } + }, + "files": [ + "css", + "fonts", + "js" + ] + } +} diff --git a/public/assets/vendor/jquery/.bower.json b/public/assets/vendor/jquery/.bower.json new file mode 100644 index 00000000..8411b9bf --- /dev/null +++ b/public/assets/vendor/jquery/.bower.json @@ -0,0 +1,25 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "homepage": "https://github.com/jquery/jquery-dist", + "version": "2.2.4", + "_release": "2.2.4", + "_resolution": { + "type": "version", + "tag": "2.2.4", + "commit": "c0185ab7c75aab88762c5aae780b9d83b80eda72" + }, + "_source": "https://github.com/jquery/jquery-dist.git", + "_target": "^2.2", + "_originalSource": "jquery" +} \ No newline at end of file diff --git a/public/assets/vendor/jquery/AUTHORS.txt b/public/assets/vendor/jquery/AUTHORS.txt new file mode 100644 index 00000000..dde64cac --- /dev/null +++ b/public/assets/vendor/jquery/AUTHORS.txt @@ -0,0 +1,278 @@ +Authors ordered by first contribution. + +John Resig +Gilles van den Hoven +Michael Geary +Stefan Petre +Yehuda Katz +Corey Jewett +Klaus Hartl +Franck Marcia +Jörn Zaefferer +Paul Bakaus +Brandon Aaron +Mike Alsup +Dave Methvin +Ed Engelhardt +Sean Catchpole +Paul Mclanahan +David Serduke +Richard D. Worth +Scott González +Ariel Flesler +Jon Evans +TJ Holowaychuk +Michael Bensoussan +Robert Katić +Louis-Rémi Babé +Earle Castledine +Damian Janowski +Rich Dougherty +Kim Dalsgaard +Andrea Giammarchi +Mark Gibson +Karl Swedberg +Justin Meyer +Ben Alman +James Padolsey +David Petersen +Batiste Bieler +Alexander Farkas +Rick Waldron +Filipe Fortes +Neeraj Singh +Paul Irish +Iraê Carvalho +Matt Curry +Michael Monteleone +Noah Sloan +Tom Viner +Douglas Neiner +Adam J. Sontag +Dave Reed +Ralph Whitbeck +Carl Fürstenberg +Jacob Wright +J. Ryan Stinnett +unknown +temp01 +Heungsub Lee +Colin Snover +Ryan W Tenney +Pinhook +Ron Otten +Jephte Clain +Anton Matzneller +Alex Sexton +Dan Heberden +Henri Wiechers +Russell Holbrook +Julian Aubourg +Gianni Alessandro Chiappetta +Scott Jehl +James Burke +Jonas Pfenniger +Xavi Ramirez +Jared Grippe +Sylvester Keil +Brandon Sterne +Mathias Bynens +Timmy Willison +Corey Frang +Digitalxero +Anton Kovalyov +David Murdoch +Josh Varner +Charles McNulty +Jordan Boesch +Jess Thrysoee +Michael Murray +Lee Carpenter +Alexis Abril +Rob Morgan +John Firebaugh +Sam Bisbee +Gilmore Davidson +Brian Brennan +Xavier Montillet +Daniel Pihlstrom +Sahab Yazdani +avaly +Scott Hughes +Mike Sherov +Greg Hazel +Schalk Neethling +Denis Knauf +Timo Tijhof +Steen Nielsen +Anton Ryzhov +Shi Chuan +Berker Peksag +Toby Brain +Matt Mueller +Justin +Daniel Herman +Oleg Gaidarenko +Richard Gibson +Rafaël Blais Masson +cmc3cn <59194618@qq.com> +Joe Presbrey +Sindre Sorhus +Arne de Bree +Vladislav Zarakovsky +Andrew E Monat +Oskari +Joao Henrique de Andrade Bruni +tsinha +Matt Farmer +Trey Hunner +Jason Moon +Jeffery To +Kris Borchers +Vladimir Zhuravlev +Jacob Thornton +Chad Killingsworth +Nowres Rafid +David Benjamin +Uri Gilad +Chris Faulkner +Elijah Manor +Daniel Chatfield +Nikita Govorov +Wesley Walser +Mike Pennisi +Markus Staab +Dave Riddle +Callum Macrae +Benjamin Truyman +James Huston +Erick Ruiz de Chávez +David Bonner +Akintayo Akinwunmi +MORGAN +Ismail Khair +Carl Danley +Mike Petrovich +Greg Lavallee +Daniel Gálvez +Sai Lung Wong +Tom H Fuertes +Roland Eckl +Jay Merrifield +Allen J Schmidt Jr +Jonathan Sampson +Marcel Greter +Matthias Jäggli +David Fox +Yiming He +Devin Cooper +Paul Ramos +Rod Vagg +Bennett Sorbo +Sebastian Burkhard +Zachary Adam Kaplan +nanto_vi +nanto +Danil Somsikov +Ryunosuke SATO +Jean Boussier +Adam Coulombe +Andrew Plummer +Mark Raddatz +Isaac Z. Schlueter +Karl Sieburg +Pascal Borreli +Nguyen Phuc Lam +Dmitry Gusev +Michał Gołębiowski +Li Xudong +Steven Benner +Tom H Fuertes +Renato Oliveira dos Santos +ros3cin +Jason Bedard +Kyle Robinson Young +Chris Talkington +Eddie Monge +Terry Jones +Jason Merino +Jeremy Dunck +Chris Price +Guy Bedford +Amey Sakhadeo +Mike Sidorov +Anthony Ryan +Dominik D. Geyer +George Kats +Lihan Li +Ronny Springer +Chris Antaki +Marian Sollmann +njhamann +Ilya Kantor +David Hong +John Paul +Jakob Stoeck +Christopher Jones +Forbes Lindesay +S. Andrew Sheppard +Leonardo Balter +Roman Reiß +Benjy Cui +Rodrigo Rosenfeld Rosas +John Hoven +Philip Jägenstedt +Christian Kosmowski +Liang Peng +TJ VanToll +Senya Pugach +Aurelio De Rosa +Nazar Mokrynskyi +Amit Merchant +Jason Bedard +Arthur Verschaeve +Dan Hart +Bin Xin +David Corbacho +Veaceslav Grimalschi +Daniel Husar +Frederic Hemberger +Ben Toews +Aditya Raghavan +Victor Homyakov +Shivaji Varma +Nicolas HENRY +Anne-Gaelle Colom +George Mauer +Leonardo Braga +Stephen Edgar +Thomas Tortorini +Winston Howes +Jon Hester +Alexander O'Mara +Bastian Buchholz +Arthur Stolyar +Calvin Metcalf +Mu Haibao +Richard McDaniel +Chris Rebert +Gabriel Schulhof +Gilad Peleg +Martin Naumann +Marek Lewandowski +Bruno Pérel +Reed Loden +Daniel Nill +Yongwoo Jeon +Sean Henderson +Richard Kraaijenhagen +Connor Atherton +Gary Ye +Christian Grete +Liza Ramo +Julian Alexander Murillo +Joelle Fleurantin +Jun Sun +Devin Wilson +Todor Prikumov +Zack Hall diff --git a/public/assets/vendor/jquery/LICENSE.txt b/public/assets/vendor/jquery/LICENSE.txt new file mode 100644 index 00000000..5312a4c8 --- /dev/null +++ b/public/assets/vendor/jquery/LICENSE.txt @@ -0,0 +1,36 @@ +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. diff --git a/public/assets/vendor/jquery/README.md b/public/assets/vendor/jquery/README.md new file mode 100644 index 00000000..ba3174a7 --- /dev/null +++ b/public/assets/vendor/jquery/README.md @@ -0,0 +1,65 @@ +# jQuery + +> jQuery is a fast, small, and feature-rich JavaScript library. + +For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/). +For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery). + +## Including jQuery + +Below are some of the most common ways to include jQuery. + +### Browser + +#### Script tag + +```html + +``` + +#### Babel + +[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively. + +```js +import $ from "jquery"; +``` + +#### Browserify/Webpack + +There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this... + +```js +var $ = require("jquery"); +``` + +#### AMD (Asynchronous Module Definition) + +AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html). + +```js +define(["jquery"], function($) { + +}); +``` + +### Node + +To include jQuery in [Node](nodejs.org), first install with npm. + +```sh +npm install jquery +``` + +For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes. + +```js +require("jsdom").env("", function(err, window) { + if (err) { + console.error(err); + return; + } + + var $ = require("jquery")(window); +}); +``` diff --git a/public/assets/vendor/jquery/bower.json b/public/assets/vendor/jquery/bower.json new file mode 100644 index 00000000..95798d5a --- /dev/null +++ b/public/assets/vendor/jquery/bower.json @@ -0,0 +1,14 @@ +{ + "name": "jquery", + "main": "dist/jquery.js", + "license": "MIT", + "ignore": [ + "package.json" + ], + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ] +} \ No newline at end of file diff --git a/public/assets/vendor/jquery/dist/jquery.js b/public/assets/vendor/jquery/dist/jquery.js new file mode 100644 index 00000000..5c3c456a --- /dev/null +++ b/public/assets/vendor/jquery/dist/jquery.js @@ -0,0 +1,9814 @@ +/*! + * jQuery JavaScript Library v2.2.4 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-05-20T17:23Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +//"use strict"; +var arr = []; + +var document = window.document; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "2.2.4", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isPlainObject: function( obj ) { + var key; + + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android<4.0, iOS<6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf( "use strict" ) === 1 ) { + script = document.createElement( "script" ); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + + indirect( code ); + } + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE9-11+ + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Support: Blackberry 4.6 + // gEBID returns nodes no longer in the document (#6963) + if ( elem && elem.parentNode ) { + + // Inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // Add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // If we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +} ); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +} ); + +/** + * The ready event handler and self cleanup method + */ +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE9-10 only + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + register: function( owner, initial ) { + var value = initial || {}; + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable, non-writable property + // configurability must be true to allow the property to be + // deleted with the delete operator + } else { + Object.defineProperty( owner, this.expando, { + value: value, + writable: true, + configurable: true + } ); + } + return owner[ this.expando ]; + }, + cache: function( owner ) { + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( !acceptData( owner ) ) { + return {}; + } + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + owner[ this.expando ] && owner[ this.expando ][ key ]; + }, + access: function( owner, key, value ) { + var stored; + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase( key ) ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key === undefined ) { + this.register( owner ); + + } else { + + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <= 35-45+ + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data, camelKey; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // with the key as-is + data = dataUser.get( elem, key ) || + + // Try to find dashed key if it exists (gh-2779) + // This is for 2.2.x only + dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); + + if ( data !== undefined ) { + return data; + } + + camelKey = jQuery.camelCase( key ); + + // Attempt to get data from the cache + // with the key camelized + data = dataUser.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + camelKey = jQuery.camelCase( key ); + this.each( function() { + + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = dataUser.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + dataUser.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf( "-" ) > -1 && data !== undefined ) { + dataUser.set( this, key, value ); + } + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE9 + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
      " ], + col: [ 2, "", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE9-11+ + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0-4.3, Safari<=5.1 + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari<=5.1, Android<4.2 + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<=11+ + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + + "screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome<28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android<4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName( "tbody" )[ 0 ] || + elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); + + +var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "