From d42c8b528eb595101954f478e0024e3f079f6fbf Mon Sep 17 00:00:00 2001 From: schneefux Date: Wed, 22 Mar 2017 19:19:26 +0100 Subject: first implementation of fun stats site --- .gitignore | 91 + app.py | 62 + templates/assets/.DS_Store | Bin 0 -> 10244 bytes .../assets/bootstrap-material-design/.bower.json | 40 + .../assets/bootstrap-material-design/.travis.yml | 29 + .../assets/bootstrap-material-design/LICENSE.md | 30 + .../assets/bootstrap-material-design/README.md | 6 + .../assets/bootstrap-material-design/bower.json | 29 + .../bootstrap-material-design/js/autofill.js | 109 + .../assets/bootstrap-material-design/js/base.js | 88 + .../js/baseFormControl.js | 36 + .../bootstrap-material-design/js/baseInput.js | 321 + .../bootstrap-material-design/js/baseLayout.js | 122 + .../bootstrap-material-design/js/baseSelection.js | 93 + .../js/bootstrapMaterialDesign.js | 205 + .../bootstrap-material-design/js/checkbox.js | 94 + .../bootstrap-material-design/js/checkboxInline.js | 89 + .../bootstrap-material-design/js/collapseInline.js | 113 + .../assets/bootstrap-material-design/js/drawer.js | 170 + .../assets/bootstrap-material-design/js/file.js | 139 + .../assets/bootstrap-material-design/js/index.js | 32 + .../assets/bootstrap-material-design/js/radio.js | 95 + .../bootstrap-material-design/js/radioInline.js | 77 + .../assets/bootstrap-material-design/js/ripples.js | 311 + .../assets/bootstrap-material-design/js/select.js | 94 + .../assets/bootstrap-material-design/js/switch.js | 72 + .../assets/bootstrap-material-design/js/text.js | 89 + .../bootstrap-material-design/js/textarea.js | 89 + .../assets/bootstrap-material-design/js/util.js | 105 + .../assets/bootstrap-material-design/package.json | 60 + .../bootstrap-material-design/scss/_alerts.scss | 4 + .../bootstrap-material-design/scss/_buttons.scss | 233 + .../bootstrap-material-design/scss/_cards.scss | 58 + .../scss/_checkboxes.scss | 256 + .../scss/_core-bootstrap.scss | 68 + .../bootstrap-material-design/scss/_core.scss | 33 + .../scss/_custom-forms.scss | 10 + .../bootstrap-material-design/scss/_drawer.scss | 122 + .../bootstrap-material-design/scss/_dropdown.scss | 126 + .../scss/_extensions.scss | 3 + .../bootstrap-material-design/scss/_forms.scss | 221 + .../scss/_input-group.scss | 39 + .../bootstrap-material-design/scss/_layout.scss | 80 + .../scss/_list-group.scss | 100 + .../bootstrap-material-design/scss/_mixins.scss | 10 + .../bootstrap-material-design/scss/_modal.scss | 26 + .../bootstrap-material-design/scss/_nav.scss | 54 + .../bootstrap-material-design/scss/_navbar.scss | 31 + .../scss/_pagination.scss | 52 + .../bootstrap-material-design/scss/_popover.scss | 19 + .../bootstrap-material-design/scss/_progress.scss | 11 + .../bootstrap-material-design/scss/_radios.scss | 119 + .../bootstrap-material-design/scss/_reboot.scss | 25 + .../bootstrap-material-design/scss/_ripples.scss | 40 + .../bootstrap-material-design/scss/_switches.scss | 83 + .../bootstrap-material-design/scss/_tables.scss | 26 + .../bootstrap-material-design/scss/_themes.scss | 6 + .../bootstrap-material-design/scss/_type.scss | 6 + .../bootstrap-material-design/scss/_variables.scss | 139 + .../scss/bootstrap-material-design.scss | 3 + .../scss/extensions/_selectize.scss | 91 + .../scss/extensions/_snackbarjs.scss | 27 + .../scss/mixins/_animations.scss | 21 + .../scss/mixins/_breakpoints.scss | 34 + .../scss/mixins/_buttons.scss | 218 + .../scss/mixins/_drawer.scss | 237 + .../scss/mixins/_forms.scss | 283 + .../scss/mixins/_hover.scss | 9 + .../scss/mixins/_layout.scss | 17 + .../scss/mixins/_navs.scss | 23 + .../scss/mixins/_type.scss | 11 + .../scss/mixins/_utilities.scss | 35 + .../scss/variables/_colors-map.scss | 311 + .../scss/variables/_colors.scss | 356 + .../scss/variables/_drawer.scss | 5 + .../scss/variables/_layout.scss | 1 + .../scss/variables/_menu.scss | 18 + .../scss/variables/_shadow.scss | 35 + .../scss/variables/bootstrap/_body.scss | 6 + .../scss/variables/bootstrap/_brand.scss | 6 + .../scss/variables/bootstrap/_buttons.scss | 77 + .../scss/variables/bootstrap/_card.scss | 13 + .../scss/variables/bootstrap/_code.scss | 12 + .../scss/variables/bootstrap/_components.scss | 16 + .../scss/variables/bootstrap/_custom-forms.scss | 5 + .../scss/variables/bootstrap/_dropdown.scss | 20 + .../scss/variables/bootstrap/_forms.scss | 47 + .../scss/variables/bootstrap/_list-group.scss | 21 + .../scss/variables/bootstrap/_modals.scss | 20 + .../scss/variables/bootstrap/_nav.scss | 62 + .../scss/variables/bootstrap/_pagination.scss | 6 + .../scss/variables/bootstrap/_spacing.scss | 26 + .../scss/variables/bootstrap/_state.scss | 15 + .../scss/variables/bootstrap/_type.scss | 66 + templates/assets/bootstrap/.bower.json | 44 + templates/assets/bootstrap/CHANGELOG.md | 5 + templates/assets/bootstrap/Gemfile | 8 + templates/assets/bootstrap/Gemfile.lock | 58 + templates/assets/bootstrap/Gruntfile.js | 321 + templates/assets/bootstrap/ISSUE_TEMPLATE.md | 22 + templates/assets/bootstrap/LICENSE | 22 + templates/assets/bootstrap/README.md | 149 + templates/assets/bootstrap/bower.json | 35 + templates/assets/bootstrap/grunt/change-version.js | 110 + templates/assets/bootstrap/grunt/gcp-key.json.enc | Bin 0 -> 2304 bytes .../assets/bootstrap/grunt/npm-shrinkwrap.json | 4164 +++++++++ templates/assets/bootstrap/grunt/postcss.config.js | 41 + .../assets/bootstrap/grunt/sauce_browsers.yml | 84 + templates/assets/bootstrap/grunt/upload-preview.sh | 27 + templates/assets/bootstrap/js/.eslintrc.json | 240 + templates/assets/bootstrap/js/src/alert.js | 193 + templates/assets/bootstrap/js/src/button.js | 176 + templates/assets/bootstrap/js/src/carousel.js | 497 + templates/assets/bootstrap/js/src/collapse.js | 393 + templates/assets/bootstrap/js/src/dropdown.js | 307 + templates/assets/bootstrap/js/src/modal.js | 545 ++ templates/assets/bootstrap/js/src/popover.js | 179 + templates/assets/bootstrap/js/src/scrollspy.js | 335 + templates/assets/bootstrap/js/src/tab.js | 284 + templates/assets/bootstrap/js/src/tooltip.js | 675 ++ templates/assets/bootstrap/js/src/util.js | 164 + templates/assets/bootstrap/nuget/MyGet.ps1 | 18 + templates/assets/bootstrap/nuget/bootstrap.nuspec | 27 + .../assets/bootstrap/nuget/bootstrap.sass.nuspec | 27 + templates/assets/bootstrap/package.js | 19 + templates/assets/bootstrap/package.json | 114 + templates/assets/bootstrap/sache.json | 5 + templates/assets/bootstrap/scss/.scss-lint.yml | 536 ++ templates/assets/bootstrap/scss/_alert.scss | 55 + templates/assets/bootstrap/scss/_badge.scss | 76 + templates/assets/bootstrap/scss/_breadcrumb.scss | 38 + templates/assets/bootstrap/scss/_button-group.scss | 204 + templates/assets/bootstrap/scss/_buttons.scss | 170 + templates/assets/bootstrap/scss/_card.scss | 276 + templates/assets/bootstrap/scss/_carousel.scss | 177 + templates/assets/bootstrap/scss/_close.scss | 29 + templates/assets/bootstrap/scss/_code.scss | 64 + templates/assets/bootstrap/scss/_custom-forms.scss | 258 + templates/assets/bootstrap/scss/_custom.scss | 4 + templates/assets/bootstrap/scss/_dropdown.scss | 156 + templates/assets/bootstrap/scss/_forms.scss | 387 + templates/assets/bootstrap/scss/_grid.scss | 52 + templates/assets/bootstrap/scss/_images.scss | 43 + templates/assets/bootstrap/scss/_input-group.scss | 175 + templates/assets/bootstrap/scss/_jumbotron.scss | 20 + templates/assets/bootstrap/scss/_list-group.scss | 116 + templates/assets/bootstrap/scss/_media.scss | 8 + templates/assets/bootstrap/scss/_mixins.scss | 43 + templates/assets/bootstrap/scss/_modal.scss | 142 + templates/assets/bootstrap/scss/_nav.scss | 120 + templates/assets/bootstrap/scss/_navbar.scss | 276 + templates/assets/bootstrap/scss/_pagination.scss | 67 + templates/assets/bootstrap/scss/_popover.scss | 171 + templates/assets/bootstrap/scss/_print.scss | 119 + templates/assets/bootstrap/scss/_progress.scss | 30 + templates/assets/bootstrap/scss/_reboot.scss | 484 + .../assets/bootstrap/scss/_responsive-embed.scss | 52 + templates/assets/bootstrap/scss/_tables.scss | 169 + templates/assets/bootstrap/scss/_tooltip.scss | 90 + templates/assets/bootstrap/scss/_transitions.scss | 34 + templates/assets/bootstrap/scss/_type.scss | 143 + templates/assets/bootstrap/scss/_utilities.scss | 13 + templates/assets/bootstrap/scss/_variables.scss | 921 ++ .../assets/bootstrap/scss/bootstrap-grid.scss | 37 + .../assets/bootstrap/scss/bootstrap-reboot.scss | 9 + templates/assets/bootstrap/scss/bootstrap.scss | 52 + templates/assets/bootstrap/scss/mixins/_alert.scss | 14 + .../bootstrap/scss/mixins/_background-variant.scss | 12 + templates/assets/bootstrap/scss/mixins/_badge.scss | 11 + .../bootstrap/scss/mixins/_border-radius.scss | 35 + .../assets/bootstrap/scss/mixins/_box-shadow.scss | 5 + .../assets/bootstrap/scss/mixins/_breakpoints.scss | 95 + .../assets/bootstrap/scss/mixins/_buttons.scss | 86 + templates/assets/bootstrap/scss/mixins/_cards.scss | 47 + .../assets/bootstrap/scss/mixins/_clearfix.scss | 7 + templates/assets/bootstrap/scss/mixins/_float.scss | 9 + templates/assets/bootstrap/scss/mixins/_forms.scss | 55 + .../assets/bootstrap/scss/mixins/_gradients.scss | 37 + .../bootstrap/scss/mixins/_grid-framework.scss | 65 + templates/assets/bootstrap/scss/mixins/_grid.scss | 100 + templates/assets/bootstrap/scss/mixins/_hover.scss | 60 + templates/assets/bootstrap/scss/mixins/_image.scss | 36 + .../assets/bootstrap/scss/mixins/_list-group.scss | 26 + templates/assets/bootstrap/scss/mixins/_lists.scss | 7 + .../assets/bootstrap/scss/mixins/_nav-divider.scss | 10 + .../bootstrap/scss/mixins/_navbar-align.scss | 9 + .../assets/bootstrap/scss/mixins/_pagination.scss | 21 + .../assets/bootstrap/scss/mixins/_reset-text.scss | 18 + .../assets/bootstrap/scss/mixins/_resize.scss | 6 + .../bootstrap/scss/mixins/_screen-reader.scss | 35 + templates/assets/bootstrap/scss/mixins/_size.scss | 6 + .../assets/bootstrap/scss/mixins/_table-row.scss | 30 + .../bootstrap/scss/mixins/_text-emphasis.scss | 12 + .../assets/bootstrap/scss/mixins/_text-hide.scss | 8 + .../bootstrap/scss/mixins/_text-truncate.scss | 8 + .../assets/bootstrap/scss/mixins/_transforms.scss | 14 + .../assets/bootstrap/scss/mixins/_transition.scss | 9 + .../assets/bootstrap/scss/mixins/_visibility.scss | 5 + .../assets/bootstrap/scss/utilities/_align.scss | 6 + .../bootstrap/scss/utilities/_background.scss | 19 + .../assets/bootstrap/scss/utilities/_borders.scss | 37 + .../assets/bootstrap/scss/utilities/_clearfix.scss | 3 + .../assets/bootstrap/scss/utilities/_display.scss | 53 + .../assets/bootstrap/scss/utilities/_flex.scss | 48 + .../assets/bootstrap/scss/utilities/_float.scss | 9 + .../assets/bootstrap/scss/utilities/_position.scss | 23 + .../bootstrap/scss/utilities/_screenreaders.scss | 11 + .../assets/bootstrap/scss/utilities/_sizing.scss | 10 + .../assets/bootstrap/scss/utilities/_spacing.scss | 41 + .../assets/bootstrap/scss/utilities/_text.scss | 61 + .../bootstrap/scss/utilities/_visibility.scss | 11 + templates/assets/images/items/aegis.png | Bin 0 -> 19322 bytes templates/assets/images/items/aftershock.png | Bin 0 -> 22083 bytes .../assets/images/items/alternating-current.png | Bin 0 -> 22617 bytes templates/assets/images/items/atlas-pauldron.png | Bin 0 -> 23389 bytes templates/assets/images/items/barbed-needle.png | Bin 0 -> 21230 bytes templates/assets/images/items/blazing-salvo.png | Bin 0 -> 18369 bytes templates/assets/images/items/bonesaw.png | Bin 0 -> 23268 bytes templates/assets/images/items/book-of-eulogies.png | Bin 0 -> 21908 bytes templates/assets/images/items/breaking-point.png | Bin 0 -> 22995 bytes templates/assets/images/items/broken-myth.png | Bin 0 -> 20976 bytes templates/assets/images/items/chronograph.png | Bin 0 -> 22940 bytes templates/assets/images/items/clockwork.png | Bin 0 -> 25189 bytes templates/assets/images/items/coat-of-plates.png | Bin 0 -> 23762 bytes templates/assets/images/items/contraption.png | Bin 0 -> 39535 bytes templates/assets/images/items/crucible.png | Bin 0 -> 22502 bytes templates/assets/images/items/crystal-bit.png | Bin 0 -> 17129 bytes templates/assets/images/items/crystal-infusion.png | Bin 0 -> 22131 bytes templates/assets/images/items/dragon-heart.png | Bin 0 -> 39947 bytes .../assets/images/items/dragonblood-contract.png | Bin 0 -> 30790 bytes templates/assets/images/items/echo.png | Bin 0 -> 46264 bytes templates/assets/images/items/eclipse-prism.png | Bin 0 -> 20643 bytes templates/assets/images/items/energy-battery.png | Bin 0 -> 16888 bytes templates/assets/images/items/eve-of-harvest.png | Bin 0 -> 20851 bytes templates/assets/images/items/flare-gun.png | Bin 0 -> 30178 bytes templates/assets/images/items/flare.png | Bin 0 -> 16840 bytes .../assets/images/items/fountain-of-renewal.png | Bin 0 -> 21872 bytes templates/assets/images/items/frostburn.png | Bin 0 -> 23201 bytes templates/assets/images/items/halcyon-chargers.png | Bin 0 -> 29937 bytes templates/assets/images/items/halcyon-potion.png | Bin 0 -> 18093 bytes templates/assets/images/items/heavy-prism.png | Bin 0 -> 20052 bytes templates/assets/images/items/heavy-steel.png | Bin 0 -> 19149 bytes templates/assets/images/items/hour-glass.png | Bin 0 -> 19167 bytes .../assets/images/items/ironguard-contract.png | Bin 0 -> 30429 bytes templates/assets/images/items/journey-boots.png | Bin 0 -> 21534 bytes templates/assets/images/items/kinetic-shield.png | Bin 0 -> 19986 bytes templates/assets/images/items/level-juice.png | Bin 0 -> 39265 bytes templates/assets/images/items/lifespring.png | Bin 0 -> 22698 bytes templates/assets/images/items/light-armor.png | Bin 0 -> 23137 bytes templates/assets/images/items/light-shield.png | Bin 0 -> 19073 bytes templates/assets/images/items/lucky-strike.png | Bin 0 -> 20864 bytes templates/assets/images/items/metal-jacket.png | Bin 0 -> 23441 bytes templates/assets/images/items/minion-candy.png | Bin 0 -> 18688 bytes templates/assets/images/items/minions-foot.png | Bin 0 -> 31219 bytes .../assets/images/items/nullwave-gauntlet.png | Bin 0 -> 40802 bytes templates/assets/images/items/oak-heart.png | Bin 0 -> 36045 bytes templates/assets/images/items/piercing-shard.png | Bin 0 -> 20772 bytes templates/assets/images/items/piercing-spear.png | Bin 0 -> 20240 bytes templates/assets/images/items/poisoned-shiv.png | Bin 0 -> 38375 bytes templates/assets/images/items/pot-of-gold.png | Bin 0 -> 37175 bytes .../assets/images/items/protector-contract.png | Bin 0 -> 27988 bytes templates/assets/images/items/reflex-block.png | Bin 0 -> 23995 bytes templates/assets/images/items/scout-trap.png | Bin 0 -> 17566 bytes templates/assets/images/items/serpent-mask.png | Bin 0 -> 23338 bytes templates/assets/images/items/shatter-glass.png | Bin 0 -> 20011 bytes templates/assets/images/items/shiversteel.png | Bin 0 -> 21307 bytes templates/assets/images/items/six-sins.png | Bin 0 -> 21977 bytes templates/assets/images/items/slumbering-husk.png | Bin 0 -> 41172 bytes templates/assets/images/items/sorrow-blade.png | Bin 0 -> 23440 bytes templates/assets/images/items/sprint-boots.png | Bin 0 -> 19904 bytes templates/assets/images/items/stormcrown.png | Bin 0 -> 30233 bytes .../assets/images/items/stormguard-banner.png | Bin 0 -> 23057 bytes templates/assets/images/items/swift-shooter.png | Bin 0 -> 17836 bytes templates/assets/images/items/tension-bow.png | Bin 0 -> 21725 bytes templates/assets/images/items/tornado-trigger.png | Bin 0 -> 21436 bytes templates/assets/images/items/travel-boots.png | Bin 0 -> 21182 bytes templates/assets/images/items/tyrants-monocle.png | Bin 0 -> 23363 bytes templates/assets/images/items/void-battery.png | Bin 0 -> 20194 bytes templates/assets/images/items/war-treads.png | Bin 0 -> 29666 bytes templates/assets/images/items/weapon-blade.png | Bin 0 -> 15893 bytes templates/assets/images/items/weapon-infusion.png | Bin 0 -> 22134 bytes templates/assets/jquery/.bower.json | 25 + templates/assets/jquery/AUTHORS.txt | 278 + templates/assets/jquery/LICENSE.txt | 36 + templates/assets/jquery/README.md | 65 + templates/assets/jquery/bower.json | 14 + .../assets/jquery/external/sizzle/LICENSE.txt | 36 + templates/assets/jquery/src/.jshintrc | 29 + templates/assets/jquery/src/ajax.js | 845 ++ templates/assets/jquery/src/ajax/jsonp.js | 100 + templates/assets/jquery/src/ajax/load.js | 83 + templates/assets/jquery/src/ajax/parseJSON.js | 13 + templates/assets/jquery/src/ajax/parseXML.js | 27 + templates/assets/jquery/src/ajax/script.js | 68 + templates/assets/jquery/src/ajax/xhr.js | 167 + templates/assets/jquery/src/attributes.js | 11 + templates/assets/jquery/src/attributes/attr.js | 142 + templates/assets/jquery/src/attributes/classes.js | 177 + templates/assets/jquery/src/attributes/prop.js | 125 + templates/assets/jquery/src/attributes/support.js | 36 + templates/assets/jquery/src/attributes/val.js | 177 + templates/assets/jquery/src/callbacks.js | 232 + templates/assets/jquery/src/core.js | 494 + templates/assets/jquery/src/core/access.js | 65 + templates/assets/jquery/src/core/init.js | 134 + templates/assets/jquery/src/core/parseHTML.js | 41 + templates/assets/jquery/src/core/ready.js | 103 + templates/assets/jquery/src/css.js | 502 + templates/assets/jquery/src/css/addGetHookIf.js | 24 + templates/assets/jquery/src/css/adjustCSS.js | 65 + templates/assets/jquery/src/css/curCSS.js | 60 + templates/assets/jquery/src/css/defaultDisplay.js | 72 + .../jquery/src/css/hiddenVisibleSelectors.js | 18 + templates/assets/jquery/src/css/showHide.js | 48 + templates/assets/jquery/src/css/support.js | 121 + templates/assets/jquery/src/data.js | 187 + templates/assets/jquery/src/data/Data.js | 200 + templates/assets/jquery/src/deferred.js | 158 + templates/assets/jquery/src/deprecated.js | 32 + templates/assets/jquery/src/dimensions.js | 54 + templates/assets/jquery/src/effects.js | 629 ++ templates/assets/jquery/src/effects/Tween.js | 121 + .../assets/jquery/src/effects/animatedSelector.js | 13 + templates/assets/jquery/src/event.js | 711 ++ templates/assets/jquery/src/event/ajax.js | 20 + templates/assets/jquery/src/event/alias.js | 27 + templates/assets/jquery/src/event/focusin.js | 53 + templates/assets/jquery/src/event/support.js | 9 + templates/assets/jquery/src/event/trigger.js | 183 + templates/assets/jquery/src/exports/amd.js | 24 + templates/assets/jquery/src/exports/global.js | 26 + templates/assets/jquery/src/intro.js | 44 + templates/assets/jquery/src/jquery.js | 37 + templates/assets/jquery/src/manipulation.js | 481 + .../assets/jquery/src/manipulation/_evalUrl.js | 20 + .../jquery/src/manipulation/buildFragment.js | 102 + templates/assets/jquery/src/manipulation/getAll.js | 21 + .../jquery/src/manipulation/setGlobalEval.js | 20 + .../assets/jquery/src/manipulation/support.js | 33 + .../assets/jquery/src/manipulation/wrapMap.js | 27 + templates/assets/jquery/src/offset.js | 218 + templates/assets/jquery/src/outro.js | 2 + templates/assets/jquery/src/queue.js | 143 + templates/assets/jquery/src/queue/delay.js | 22 + templates/assets/jquery/src/selector-native.js | 211 + templates/assets/jquery/src/selector-sizzle.js | 14 + templates/assets/jquery/src/selector.js | 1 + templates/assets/jquery/src/serialize.js | 125 + templates/assets/jquery/src/traversing.js | 175 + .../assets/jquery/src/traversing/findFilter.js | 100 + templates/assets/jquery/src/wrap.js | 79 + templates/assets/sass/.DS_Store | Bin 0 -> 6148 bytes templates/assets/sass/material-kit.scss | 24 + templates/assets/sass/material-kit/.DS_Store | Bin 0 -> 6148 bytes templates/assets/sass/material-kit/_alerts.scss | 41 + templates/assets/sass/material-kit/_buttons.scss | 245 + templates/assets/sass/material-kit/_cards.scss | 164 + templates/assets/sass/material-kit/_carousel.scss | 52 + .../assets/sass/material-kit/_checkboxes.scss | 195 + templates/assets/sass/material-kit/_colors.scss | 326 + templates/assets/sass/material-kit/_core.scss | 115 + templates/assets/sass/material-kit/_dialogs.scss | 69 + templates/assets/sass/material-kit/_dividers.scss | 73 + templates/assets/sass/material-kit/_dropdown.scss | 58 + .../assets/sass/material-kit/_example-pages.scss | 236 + templates/assets/sass/material-kit/_footers.scss | 38 + templates/assets/sass/material-kit/_form.scss | 42 + templates/assets/sass/material-kit/_images.scss | 6 + .../assets/sass/material-kit/_import-bs-less.scss | 4 + .../assets/sass/material-kit/_import-bs-sass.scss | 2 + .../assets/sass/material-kit/_info-areas.scss | 38 + .../assets/sass/material-kit/_inputs-size.scss | 223 + templates/assets/sass/material-kit/_inputs.scss | 369 + templates/assets/sass/material-kit/_labels.scss | 10 + templates/assets/sass/material-kit/_lists.scss | 104 + templates/assets/sass/material-kit/_mixins.scss | 326 + templates/assets/sass/material-kit/_navbar.scss | 287 + .../assets/sass/material-kit/_pagination.scss | 91 + templates/assets/sass/material-kit/_panels.scss | 23 + templates/assets/sass/material-kit/_pills.scss | 91 + templates/assets/sass/material-kit/_popups.scss | 72 + templates/assets/sass/material-kit/_progress.scss | 28 + templates/assets/sass/material-kit/_radios.scss | 114 + templates/assets/sass/material-kit/_ripples.scss | 36 + templates/assets/sass/material-kit/_sections.scss | 13 + templates/assets/sass/material-kit/_shadows.scss | 138 + templates/assets/sass/material-kit/_tabs.scss | 53 + .../assets/sass/material-kit/_togglebutton.scss | 87 + .../assets/sass/material-kit/_typography.scss | 66 + templates/assets/sass/material-kit/_variables.scss | 198 + .../sass/material-kit/_variables_bootstrap.scss | 882 ++ templates/assets/sass/material-kit/_welljumbo.scss | 28 + .../material-kit/plugins/_plugin-datepicker.scss | 220 + .../material-kit/plugins/_plugin-dropdownjs.scss | 17 + .../material-kit/plugins/_plugin-nouislider.scss | 161 + .../material-kit/plugins/_plugin-selectize.scss | 93 + .../material-kit/plugins/_plugin-snackbarjs.scss | 34 + templates/assets/tether/.bower.json | 35 + templates/assets/tether/CHANGELOG.md | 13 + templates/assets/tether/CONTRIBUTING.md | 59 + templates/assets/tether/LICENSE | 8 + templates/assets/tether/README.md | 106 + templates/assets/tether/bower.json | 26 + templates/assets/tether/component.json | 22 + .../docs/1-Overview/1-why_you_should_use_tether.md | 43 + .../tether/docs/1-Overview/2-repositioning.md | 46 + .../docs/1-Overview/3-why_we_dont_support_IE_8.md | 47 + .../tether/docs/2-Examples/1-list_of_examples.md | 27 + .../docs/2-Examples/2-projects_using_tether.md | 37 + .../tether/docs/3-Advanced/1-embedding_tether.md | 9 + .../tether/docs/3-Advanced/2-extending_tether.md | 54 + templates/assets/tether/docs/coffee/intro.coffee | 113 + templates/assets/tether/docs/css/intro.css | 218 + templates/assets/tether/docs/intro.md | 591 ++ templates/assets/tether/docs/js/intro.js | 117 + templates/assets/tether/docs/js/markAttachment.js | 51 + templates/assets/tether/docs/sass/intro.sass | 233 + .../assets/tether/docs/welcome/browser-demo.html | 76 + .../tether/docs/welcome/coffee/welcome.coffee | 212 + .../tether/docs/welcome/css/browser-demo.css | 86 + templates/assets/tether/docs/welcome/css/prism.css | 2 + .../assets/tether/docs/welcome/css/welcome.css | 247 + templates/assets/tether/docs/welcome/index.html | 226 + templates/assets/tether/docs/welcome/js/drop.js | 239 + templates/assets/tether/docs/welcome/js/jquery.js | 9597 ++++++++++++++++++++ templates/assets/tether/docs/welcome/js/log.js | 134 + .../assets/tether/docs/welcome/js/tether-v0.1.3.js | 2 + templates/assets/tether/docs/welcome/js/welcome.js | 193 + .../tether/docs/welcome/sass/_inline-block.sass | 6 + .../tether/docs/welcome/sass/browser-demo.sass | 93 + .../assets/tether/docs/welcome/sass/welcome.sass | 285 + .../tether/examples/chosen/chosen-sprite.png | Bin 0 -> 646 bytes .../tether/examples/chosen/chosen-sprite@2x.png | Bin 0 -> 738 bytes templates/assets/tether/examples/chosen/chosen.css | 430 + templates/assets/tether/examples/chosen/chosen.js | 1166 +++ templates/assets/tether/examples/chosen/index.html | 110 + .../assets/tether/examples/common/css/style.css | 48 + .../tether/examples/content-visible/index.html | 64 + templates/assets/tether/examples/dolls/dolls.css | 18 + templates/assets/tether/examples/dolls/dolls.js | 83 + templates/assets/tether/examples/dolls/index.html | 7 + .../tether/examples/element-scroll/index.html | 499 + .../tether/examples/enable-disable/index.html | 37 + .../assets/tether/examples/facebook/facebook.css | 86 + .../assets/tether/examples/facebook/index.html | 209 + .../tether/examples/out-of-bounds/index.html | 38 + templates/assets/tether/examples/pin/index.html | 30 + .../assets/tether/examples/resources/css/base.css | 10 + .../assets/tether/examples/resources/js/jquery.js | 9597 ++++++++++++++++++++ .../assets/tether/examples/resources/js/log.js | 134 + templates/assets/tether/examples/scroll/index.html | 922 ++ templates/assets/tether/examples/simple/index.html | 30 + .../assets/tether/examples/testbed/index.html | 36 + .../assets/tether/examples/tooltip/index.html | 86 + .../assets/tether/examples/viewport/colors.css | 145 + .../assets/tether/examples/viewport/index.html | 70 + templates/assets/tether/gulpfile.js | 96 + templates/assets/tether/package.json | 40 + .../src/css/helpers/_tether-theme-arrows.sass | 192 + .../src/css/helpers/_tether-theme-basic.sass | 14 + .../assets/tether/src/css/helpers/_tether.sass | 12 + .../tether/src/css/mixins/_inline-block.sass | 6 + .../tether/src/css/mixins/_pie-clearfix.sass | 7 + .../tether/src/css/tether-theme-arrows-dark.sass | 12 + .../assets/tether/src/css/tether-theme-arrows.sass | 12 + .../assets/tether/src/css/tether-theme-basic.sass | 10 + templates/assets/tether/src/css/tether.sass | 5 + templates/assets/tether/src/js/abutment.js | 61 + templates/assets/tether/src/js/constraint.js | 366 + templates/assets/tether/src/js/markAttachment.js | 46 + templates/assets/tether/src/js/shift.js | 32 + templates/assets/tether/src/js/tether.js | 809 ++ templates/assets/tether/src/js/utils.js | 370 + templates/index.html | 115 + 474 files changed, 66937 insertions(+) create mode 100644 .gitignore create mode 100644 app.py create mode 100644 templates/assets/.DS_Store create mode 100644 templates/assets/bootstrap-material-design/.bower.json create mode 100644 templates/assets/bootstrap-material-design/.travis.yml create mode 100644 templates/assets/bootstrap-material-design/LICENSE.md create mode 100644 templates/assets/bootstrap-material-design/README.md create mode 100644 templates/assets/bootstrap-material-design/bower.json create mode 100644 templates/assets/bootstrap-material-design/js/autofill.js create mode 100644 templates/assets/bootstrap-material-design/js/base.js create mode 100644 templates/assets/bootstrap-material-design/js/baseFormControl.js create mode 100644 templates/assets/bootstrap-material-design/js/baseInput.js create mode 100644 templates/assets/bootstrap-material-design/js/baseLayout.js create mode 100644 templates/assets/bootstrap-material-design/js/baseSelection.js create mode 100644 templates/assets/bootstrap-material-design/js/bootstrapMaterialDesign.js create mode 100644 templates/assets/bootstrap-material-design/js/checkbox.js create mode 100644 templates/assets/bootstrap-material-design/js/checkboxInline.js create mode 100644 templates/assets/bootstrap-material-design/js/collapseInline.js create mode 100644 templates/assets/bootstrap-material-design/js/drawer.js create mode 100644 templates/assets/bootstrap-material-design/js/file.js create mode 100644 templates/assets/bootstrap-material-design/js/index.js create mode 100644 templates/assets/bootstrap-material-design/js/radio.js create mode 100644 templates/assets/bootstrap-material-design/js/radioInline.js create mode 100644 templates/assets/bootstrap-material-design/js/ripples.js create mode 100644 templates/assets/bootstrap-material-design/js/select.js create mode 100644 templates/assets/bootstrap-material-design/js/switch.js create mode 100644 templates/assets/bootstrap-material-design/js/text.js create mode 100644 templates/assets/bootstrap-material-design/js/textarea.js create mode 100644 templates/assets/bootstrap-material-design/js/util.js create mode 100644 templates/assets/bootstrap-material-design/package.json create mode 100644 templates/assets/bootstrap-material-design/scss/_alerts.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_buttons.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_cards.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_checkboxes.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_core-bootstrap.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_core.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_custom-forms.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_drawer.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_dropdown.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_extensions.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_forms.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_input-group.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_layout.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_list-group.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_mixins.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_modal.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_nav.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_navbar.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_pagination.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_popover.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_progress.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_radios.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_reboot.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_ripples.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_switches.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_tables.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_themes.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_type.scss create mode 100644 templates/assets/bootstrap-material-design/scss/_variables.scss create mode 100644 templates/assets/bootstrap-material-design/scss/bootstrap-material-design.scss create mode 100644 templates/assets/bootstrap-material-design/scss/extensions/_selectize.scss create mode 100644 templates/assets/bootstrap-material-design/scss/extensions/_snackbarjs.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_animations.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_breakpoints.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_buttons.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_drawer.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_forms.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_hover.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_layout.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_navs.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_type.scss create mode 100644 templates/assets/bootstrap-material-design/scss/mixins/_utilities.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/_colors-map.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/_colors.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/_drawer.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/_layout.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/_menu.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/_shadow.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_body.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_brand.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_buttons.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_card.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_code.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_components.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_custom-forms.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_dropdown.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_forms.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_list-group.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_modals.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_nav.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_pagination.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_spacing.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_state.scss create mode 100644 templates/assets/bootstrap-material-design/scss/variables/bootstrap/_type.scss create mode 100644 templates/assets/bootstrap/.bower.json create mode 100644 templates/assets/bootstrap/CHANGELOG.md create mode 100644 templates/assets/bootstrap/Gemfile create mode 100644 templates/assets/bootstrap/Gemfile.lock create mode 100644 templates/assets/bootstrap/Gruntfile.js create mode 100644 templates/assets/bootstrap/ISSUE_TEMPLATE.md create mode 100644 templates/assets/bootstrap/LICENSE create mode 100644 templates/assets/bootstrap/README.md create mode 100644 templates/assets/bootstrap/bower.json create mode 100755 templates/assets/bootstrap/grunt/change-version.js create mode 100644 templates/assets/bootstrap/grunt/gcp-key.json.enc create mode 100644 templates/assets/bootstrap/grunt/npm-shrinkwrap.json create mode 100644 templates/assets/bootstrap/grunt/postcss.config.js create mode 100644 templates/assets/bootstrap/grunt/sauce_browsers.yml create mode 100755 templates/assets/bootstrap/grunt/upload-preview.sh create mode 100644 templates/assets/bootstrap/js/.eslintrc.json create mode 100644 templates/assets/bootstrap/js/src/alert.js create mode 100644 templates/assets/bootstrap/js/src/button.js create mode 100644 templates/assets/bootstrap/js/src/carousel.js create mode 100644 templates/assets/bootstrap/js/src/collapse.js create mode 100644 templates/assets/bootstrap/js/src/dropdown.js create mode 100644 templates/assets/bootstrap/js/src/modal.js create mode 100644 templates/assets/bootstrap/js/src/popover.js create mode 100644 templates/assets/bootstrap/js/src/scrollspy.js create mode 100644 templates/assets/bootstrap/js/src/tab.js create mode 100644 templates/assets/bootstrap/js/src/tooltip.js create mode 100644 templates/assets/bootstrap/js/src/util.js create mode 100644 templates/assets/bootstrap/nuget/MyGet.ps1 create mode 100644 templates/assets/bootstrap/nuget/bootstrap.nuspec create mode 100644 templates/assets/bootstrap/nuget/bootstrap.sass.nuspec create mode 100644 templates/assets/bootstrap/package.js create mode 100644 templates/assets/bootstrap/package.json create mode 100644 templates/assets/bootstrap/sache.json create mode 100644 templates/assets/bootstrap/scss/.scss-lint.yml create mode 100644 templates/assets/bootstrap/scss/_alert.scss create mode 100644 templates/assets/bootstrap/scss/_badge.scss create mode 100644 templates/assets/bootstrap/scss/_breadcrumb.scss create mode 100644 templates/assets/bootstrap/scss/_button-group.scss create mode 100644 templates/assets/bootstrap/scss/_buttons.scss create mode 100644 templates/assets/bootstrap/scss/_card.scss create mode 100644 templates/assets/bootstrap/scss/_carousel.scss create mode 100644 templates/assets/bootstrap/scss/_close.scss create mode 100644 templates/assets/bootstrap/scss/_code.scss create mode 100644 templates/assets/bootstrap/scss/_custom-forms.scss create mode 100644 templates/assets/bootstrap/scss/_custom.scss create mode 100644 templates/assets/bootstrap/scss/_dropdown.scss create mode 100644 templates/assets/bootstrap/scss/_forms.scss create mode 100644 templates/assets/bootstrap/scss/_grid.scss create mode 100644 templates/assets/bootstrap/scss/_images.scss create mode 100644 templates/assets/bootstrap/scss/_input-group.scss create mode 100644 templates/assets/bootstrap/scss/_jumbotron.scss create mode 100644 templates/assets/bootstrap/scss/_list-group.scss create mode 100644 templates/assets/bootstrap/scss/_media.scss create mode 100644 templates/assets/bootstrap/scss/_mixins.scss create mode 100644 templates/assets/bootstrap/scss/_modal.scss create mode 100644 templates/assets/bootstrap/scss/_nav.scss create mode 100644 templates/assets/bootstrap/scss/_navbar.scss create mode 100644 templates/assets/bootstrap/scss/_pagination.scss create mode 100644 templates/assets/bootstrap/scss/_popover.scss create mode 100644 templates/assets/bootstrap/scss/_print.scss create mode 100644 templates/assets/bootstrap/scss/_progress.scss create mode 100644 templates/assets/bootstrap/scss/_reboot.scss create mode 100644 templates/assets/bootstrap/scss/_responsive-embed.scss create mode 100644 templates/assets/bootstrap/scss/_tables.scss create mode 100644 templates/assets/bootstrap/scss/_tooltip.scss create mode 100644 templates/assets/bootstrap/scss/_transitions.scss create mode 100644 templates/assets/bootstrap/scss/_type.scss create mode 100644 templates/assets/bootstrap/scss/_utilities.scss create mode 100644 templates/assets/bootstrap/scss/_variables.scss create mode 100644 templates/assets/bootstrap/scss/bootstrap-grid.scss create mode 100644 templates/assets/bootstrap/scss/bootstrap-reboot.scss create mode 100644 templates/assets/bootstrap/scss/bootstrap.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_alert.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_background-variant.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_badge.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_border-radius.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_box-shadow.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_breakpoints.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_buttons.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_cards.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_clearfix.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_float.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_forms.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_gradients.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_grid-framework.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_grid.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_hover.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_image.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_list-group.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_lists.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_nav-divider.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_navbar-align.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_pagination.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_reset-text.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_resize.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_screen-reader.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_size.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_table-row.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_text-emphasis.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_text-hide.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_text-truncate.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_transforms.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_transition.scss create mode 100644 templates/assets/bootstrap/scss/mixins/_visibility.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_align.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_background.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_borders.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_clearfix.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_display.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_flex.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_float.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_position.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_screenreaders.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_sizing.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_spacing.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_text.scss create mode 100644 templates/assets/bootstrap/scss/utilities/_visibility.scss create mode 100644 templates/assets/images/items/aegis.png create mode 100644 templates/assets/images/items/aftershock.png create mode 100644 templates/assets/images/items/alternating-current.png create mode 100644 templates/assets/images/items/atlas-pauldron.png create mode 100644 templates/assets/images/items/barbed-needle.png create mode 100644 templates/assets/images/items/blazing-salvo.png create mode 100644 templates/assets/images/items/bonesaw.png create mode 100644 templates/assets/images/items/book-of-eulogies.png create mode 100644 templates/assets/images/items/breaking-point.png create mode 100644 templates/assets/images/items/broken-myth.png create mode 100644 templates/assets/images/items/chronograph.png create mode 100644 templates/assets/images/items/clockwork.png create mode 100644 templates/assets/images/items/coat-of-plates.png create mode 100644 templates/assets/images/items/contraption.png create mode 100644 templates/assets/images/items/crucible.png create mode 100644 templates/assets/images/items/crystal-bit.png create mode 100644 templates/assets/images/items/crystal-infusion.png create mode 100644 templates/assets/images/items/dragon-heart.png create mode 100644 templates/assets/images/items/dragonblood-contract.png create mode 100644 templates/assets/images/items/echo.png create mode 100644 templates/assets/images/items/eclipse-prism.png create mode 100644 templates/assets/images/items/energy-battery.png create mode 100644 templates/assets/images/items/eve-of-harvest.png create mode 100644 templates/assets/images/items/flare-gun.png create mode 100644 templates/assets/images/items/flare.png create mode 100644 templates/assets/images/items/fountain-of-renewal.png create mode 100644 templates/assets/images/items/frostburn.png create mode 100644 templates/assets/images/items/halcyon-chargers.png create mode 100644 templates/assets/images/items/halcyon-potion.png create mode 100644 templates/assets/images/items/heavy-prism.png create mode 100644 templates/assets/images/items/heavy-steel.png create mode 100644 templates/assets/images/items/hour-glass.png create mode 100644 templates/assets/images/items/ironguard-contract.png create mode 100644 templates/assets/images/items/journey-boots.png create mode 100644 templates/assets/images/items/kinetic-shield.png create mode 100644 templates/assets/images/items/level-juice.png create mode 100644 templates/assets/images/items/lifespring.png create mode 100644 templates/assets/images/items/light-armor.png create mode 100644 templates/assets/images/items/light-shield.png create mode 100644 templates/assets/images/items/lucky-strike.png create mode 100644 templates/assets/images/items/metal-jacket.png create mode 100644 templates/assets/images/items/minion-candy.png create mode 100644 templates/assets/images/items/minions-foot.png create mode 100644 templates/assets/images/items/nullwave-gauntlet.png create mode 100644 templates/assets/images/items/oak-heart.png create mode 100644 templates/assets/images/items/piercing-shard.png create mode 100644 templates/assets/images/items/piercing-spear.png create mode 100644 templates/assets/images/items/poisoned-shiv.png create mode 100644 templates/assets/images/items/pot-of-gold.png create mode 100644 templates/assets/images/items/protector-contract.png create mode 100644 templates/assets/images/items/reflex-block.png create mode 100644 templates/assets/images/items/scout-trap.png create mode 100644 templates/assets/images/items/serpent-mask.png create mode 100644 templates/assets/images/items/shatter-glass.png create mode 100644 templates/assets/images/items/shiversteel.png create mode 100644 templates/assets/images/items/six-sins.png create mode 100644 templates/assets/images/items/slumbering-husk.png create mode 100644 templates/assets/images/items/sorrow-blade.png create mode 100644 templates/assets/images/items/sprint-boots.png create mode 100644 templates/assets/images/items/stormcrown.png create mode 100644 templates/assets/images/items/stormguard-banner.png create mode 100644 templates/assets/images/items/swift-shooter.png create mode 100644 templates/assets/images/items/tension-bow.png create mode 100644 templates/assets/images/items/tornado-trigger.png create mode 100644 templates/assets/images/items/travel-boots.png create mode 100644 templates/assets/images/items/tyrants-monocle.png create mode 100644 templates/assets/images/items/void-battery.png create mode 100644 templates/assets/images/items/war-treads.png create mode 100644 templates/assets/images/items/weapon-blade.png create mode 100644 templates/assets/images/items/weapon-infusion.png create mode 100644 templates/assets/jquery/.bower.json create mode 100644 templates/assets/jquery/AUTHORS.txt create mode 100644 templates/assets/jquery/LICENSE.txt create mode 100644 templates/assets/jquery/README.md create mode 100644 templates/assets/jquery/bower.json create mode 100644 templates/assets/jquery/external/sizzle/LICENSE.txt create mode 100644 templates/assets/jquery/src/.jshintrc create mode 100644 templates/assets/jquery/src/ajax.js create mode 100644 templates/assets/jquery/src/ajax/jsonp.js create mode 100644 templates/assets/jquery/src/ajax/load.js create mode 100644 templates/assets/jquery/src/ajax/parseJSON.js create mode 100644 templates/assets/jquery/src/ajax/parseXML.js create mode 100644 templates/assets/jquery/src/ajax/script.js create mode 100644 templates/assets/jquery/src/ajax/xhr.js create mode 100644 templates/assets/jquery/src/attributes.js create mode 100644 templates/assets/jquery/src/attributes/attr.js create mode 100644 templates/assets/jquery/src/attributes/classes.js create mode 100644 templates/assets/jquery/src/attributes/prop.js create mode 100644 templates/assets/jquery/src/attributes/support.js create mode 100644 templates/assets/jquery/src/attributes/val.js create mode 100644 templates/assets/jquery/src/callbacks.js create mode 100644 templates/assets/jquery/src/core.js create mode 100644 templates/assets/jquery/src/core/access.js create mode 100644 templates/assets/jquery/src/core/init.js create mode 100644 templates/assets/jquery/src/core/parseHTML.js create mode 100644 templates/assets/jquery/src/core/ready.js create mode 100644 templates/assets/jquery/src/css.js create mode 100644 templates/assets/jquery/src/css/addGetHookIf.js create mode 100644 templates/assets/jquery/src/css/adjustCSS.js create mode 100644 templates/assets/jquery/src/css/curCSS.js create mode 100644 templates/assets/jquery/src/css/defaultDisplay.js create mode 100644 templates/assets/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 templates/assets/jquery/src/css/showHide.js create mode 100644 templates/assets/jquery/src/css/support.js create mode 100644 templates/assets/jquery/src/data.js create mode 100644 templates/assets/jquery/src/data/Data.js create mode 100644 templates/assets/jquery/src/deferred.js create mode 100644 templates/assets/jquery/src/deprecated.js create mode 100644 templates/assets/jquery/src/dimensions.js create mode 100644 templates/assets/jquery/src/effects.js create mode 100644 templates/assets/jquery/src/effects/Tween.js create mode 100644 templates/assets/jquery/src/effects/animatedSelector.js create mode 100644 templates/assets/jquery/src/event.js create mode 100644 templates/assets/jquery/src/event/ajax.js create mode 100644 templates/assets/jquery/src/event/alias.js create mode 100644 templates/assets/jquery/src/event/focusin.js create mode 100644 templates/assets/jquery/src/event/support.js create mode 100644 templates/assets/jquery/src/event/trigger.js create mode 100644 templates/assets/jquery/src/exports/amd.js create mode 100644 templates/assets/jquery/src/exports/global.js create mode 100644 templates/assets/jquery/src/intro.js create mode 100644 templates/assets/jquery/src/jquery.js create mode 100644 templates/assets/jquery/src/manipulation.js create mode 100644 templates/assets/jquery/src/manipulation/_evalUrl.js create mode 100644 templates/assets/jquery/src/manipulation/buildFragment.js create mode 100644 templates/assets/jquery/src/manipulation/getAll.js create mode 100644 templates/assets/jquery/src/manipulation/setGlobalEval.js create mode 100644 templates/assets/jquery/src/manipulation/support.js create mode 100644 templates/assets/jquery/src/manipulation/wrapMap.js create mode 100644 templates/assets/jquery/src/offset.js create mode 100644 templates/assets/jquery/src/outro.js create mode 100644 templates/assets/jquery/src/queue.js create mode 100644 templates/assets/jquery/src/queue/delay.js create mode 100644 templates/assets/jquery/src/selector-native.js create mode 100644 templates/assets/jquery/src/selector-sizzle.js create mode 100644 templates/assets/jquery/src/selector.js create mode 100644 templates/assets/jquery/src/serialize.js create mode 100644 templates/assets/jquery/src/traversing.js create mode 100644 templates/assets/jquery/src/traversing/findFilter.js create mode 100644 templates/assets/jquery/src/wrap.js create mode 100644 templates/assets/sass/.DS_Store create mode 100755 templates/assets/sass/material-kit.scss create mode 100644 templates/assets/sass/material-kit/.DS_Store create mode 100755 templates/assets/sass/material-kit/_alerts.scss create mode 100755 templates/assets/sass/material-kit/_buttons.scss create mode 100755 templates/assets/sass/material-kit/_cards.scss create mode 100644 templates/assets/sass/material-kit/_carousel.scss create mode 100755 templates/assets/sass/material-kit/_checkboxes.scss create mode 100755 templates/assets/sass/material-kit/_colors.scss create mode 100755 templates/assets/sass/material-kit/_core.scss create mode 100755 templates/assets/sass/material-kit/_dialogs.scss create mode 100755 templates/assets/sass/material-kit/_dividers.scss create mode 100644 templates/assets/sass/material-kit/_dropdown.scss create mode 100644 templates/assets/sass/material-kit/_example-pages.scss create mode 100644 templates/assets/sass/material-kit/_footers.scss create mode 100755 templates/assets/sass/material-kit/_form.scss create mode 100644 templates/assets/sass/material-kit/_images.scss create mode 100755 templates/assets/sass/material-kit/_import-bs-less.scss create mode 100755 templates/assets/sass/material-kit/_import-bs-sass.scss create mode 100644 templates/assets/sass/material-kit/_info-areas.scss create mode 100755 templates/assets/sass/material-kit/_inputs-size.scss create mode 100755 templates/assets/sass/material-kit/_inputs.scss create mode 100755 templates/assets/sass/material-kit/_labels.scss create mode 100755 templates/assets/sass/material-kit/_lists.scss create mode 100755 templates/assets/sass/material-kit/_mixins.scss create mode 100755 templates/assets/sass/material-kit/_navbar.scss create mode 100644 templates/assets/sass/material-kit/_pagination.scss create mode 100755 templates/assets/sass/material-kit/_panels.scss create mode 100644 templates/assets/sass/material-kit/_pills.scss create mode 100755 templates/assets/sass/material-kit/_popups.scss create mode 100755 templates/assets/sass/material-kit/_progress.scss create mode 100755 templates/assets/sass/material-kit/_radios.scss create mode 100755 templates/assets/sass/material-kit/_ripples.scss create mode 100644 templates/assets/sass/material-kit/_sections.scss create mode 100755 templates/assets/sass/material-kit/_shadows.scss create mode 100755 templates/assets/sass/material-kit/_tabs.scss create mode 100755 templates/assets/sass/material-kit/_togglebutton.scss create mode 100755 templates/assets/sass/material-kit/_typography.scss create mode 100755 templates/assets/sass/material-kit/_variables.scss create mode 100644 templates/assets/sass/material-kit/_variables_bootstrap.scss create mode 100755 templates/assets/sass/material-kit/_welljumbo.scss create mode 100644 templates/assets/sass/material-kit/plugins/_plugin-datepicker.scss create mode 100755 templates/assets/sass/material-kit/plugins/_plugin-dropdownjs.scss create mode 100755 templates/assets/sass/material-kit/plugins/_plugin-nouislider.scss create mode 100755 templates/assets/sass/material-kit/plugins/_plugin-selectize.scss create mode 100755 templates/assets/sass/material-kit/plugins/_plugin-snackbarjs.scss create mode 100644 templates/assets/tether/.bower.json create mode 100644 templates/assets/tether/CHANGELOG.md create mode 100644 templates/assets/tether/CONTRIBUTING.md create mode 100644 templates/assets/tether/LICENSE create mode 100644 templates/assets/tether/README.md create mode 100644 templates/assets/tether/bower.json create mode 100644 templates/assets/tether/component.json create mode 100644 templates/assets/tether/docs/1-Overview/1-why_you_should_use_tether.md create mode 100644 templates/assets/tether/docs/1-Overview/2-repositioning.md create mode 100644 templates/assets/tether/docs/1-Overview/3-why_we_dont_support_IE_8.md create mode 100644 templates/assets/tether/docs/2-Examples/1-list_of_examples.md create mode 100644 templates/assets/tether/docs/2-Examples/2-projects_using_tether.md create mode 100644 templates/assets/tether/docs/3-Advanced/1-embedding_tether.md create mode 100644 templates/assets/tether/docs/3-Advanced/2-extending_tether.md create mode 100644 templates/assets/tether/docs/coffee/intro.coffee create mode 100644 templates/assets/tether/docs/css/intro.css create mode 100644 templates/assets/tether/docs/intro.md create mode 100644 templates/assets/tether/docs/js/intro.js create mode 100644 templates/assets/tether/docs/js/markAttachment.js create mode 100644 templates/assets/tether/docs/sass/intro.sass create mode 100644 templates/assets/tether/docs/welcome/browser-demo.html create mode 100644 templates/assets/tether/docs/welcome/coffee/welcome.coffee create mode 100644 templates/assets/tether/docs/welcome/css/browser-demo.css create mode 100644 templates/assets/tether/docs/welcome/css/prism.css create mode 100644 templates/assets/tether/docs/welcome/css/welcome.css create mode 100644 templates/assets/tether/docs/welcome/index.html create mode 100644 templates/assets/tether/docs/welcome/js/drop.js create mode 100644 templates/assets/tether/docs/welcome/js/jquery.js create mode 100644 templates/assets/tether/docs/welcome/js/log.js create mode 100644 templates/assets/tether/docs/welcome/js/tether-v0.1.3.js create mode 100644 templates/assets/tether/docs/welcome/js/welcome.js create mode 100644 templates/assets/tether/docs/welcome/sass/_inline-block.sass create mode 100644 templates/assets/tether/docs/welcome/sass/browser-demo.sass create mode 100644 templates/assets/tether/docs/welcome/sass/welcome.sass create mode 100644 templates/assets/tether/examples/chosen/chosen-sprite.png create mode 100644 templates/assets/tether/examples/chosen/chosen-sprite@2x.png create mode 100644 templates/assets/tether/examples/chosen/chosen.css create mode 100644 templates/assets/tether/examples/chosen/chosen.js create mode 100644 templates/assets/tether/examples/chosen/index.html create mode 100644 templates/assets/tether/examples/common/css/style.css create mode 100644 templates/assets/tether/examples/content-visible/index.html create mode 100644 templates/assets/tether/examples/dolls/dolls.css create mode 100644 templates/assets/tether/examples/dolls/dolls.js create mode 100644 templates/assets/tether/examples/dolls/index.html create mode 100644 templates/assets/tether/examples/element-scroll/index.html create mode 100644 templates/assets/tether/examples/enable-disable/index.html create mode 100644 templates/assets/tether/examples/facebook/facebook.css create mode 100644 templates/assets/tether/examples/facebook/index.html create mode 100644 templates/assets/tether/examples/out-of-bounds/index.html create mode 100644 templates/assets/tether/examples/pin/index.html create mode 100644 templates/assets/tether/examples/resources/css/base.css create mode 100644 templates/assets/tether/examples/resources/js/jquery.js create mode 100644 templates/assets/tether/examples/resources/js/log.js create mode 100644 templates/assets/tether/examples/scroll/index.html create mode 100644 templates/assets/tether/examples/simple/index.html create mode 100644 templates/assets/tether/examples/testbed/index.html create mode 100644 templates/assets/tether/examples/tooltip/index.html create mode 100644 templates/assets/tether/examples/viewport/colors.css create mode 100644 templates/assets/tether/examples/viewport/index.html create mode 100644 templates/assets/tether/gulpfile.js create mode 100644 templates/assets/tether/package.json create mode 100644 templates/assets/tether/src/css/helpers/_tether-theme-arrows.sass create mode 100644 templates/assets/tether/src/css/helpers/_tether-theme-basic.sass create mode 100644 templates/assets/tether/src/css/helpers/_tether.sass create mode 100644 templates/assets/tether/src/css/mixins/_inline-block.sass create mode 100644 templates/assets/tether/src/css/mixins/_pie-clearfix.sass create mode 100644 templates/assets/tether/src/css/tether-theme-arrows-dark.sass create mode 100644 templates/assets/tether/src/css/tether-theme-arrows.sass create mode 100644 templates/assets/tether/src/css/tether-theme-basic.sass create mode 100644 templates/assets/tether/src/css/tether.sass create mode 100644 templates/assets/tether/src/js/abutment.js create mode 100644 templates/assets/tether/src/js/constraint.js create mode 100644 templates/assets/tether/src/js/markAttachment.js create mode 100644 templates/assets/tether/src/js/shift.js create mode 100644 templates/assets/tether/src/js/tether.js create mode 100644 templates/assets/tether/src/js/utils.js create mode 100644 templates/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a05e2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,91 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# dotenv +.env + +# virtualenv +.venv/ +venv/ +ENV/ + +# Spyder project settings +.spyderproject + +# Rope project settings +.ropeproject diff --git a/app.py b/app.py new file mode 100644 index 0000000..3eaafb2 --- /dev/null +++ b/app.py @@ -0,0 +1,62 @@ +#!/usr/bin/python3 + +import os +import psycopg2 +import psycopg2.pool +import psycopg2.extras +from flask import Flask, g, render_template, send_from_directory +from werkzeug.contrib.cache import SimpleCache + +app = Flask(__name__) +cache = SimpleCache() + +db_config = { + "host": os.environ.get("POSTGRESQL_DEST_HOST") or "localhost", + "port": os.environ.get("POSTGRESQL_DEST_PORT") or 5432, + "user": os.environ.get("POSTGRESQL_DEST_USER") or "vainweb", + "password": os.environ.get("POSTGRESQL_DEST_PASSWORD") or "vainweb", + "dbname": os.environ.get("POSTGRESQL_DEST_DB") or "vainsocial-web" +} + +def dbpool(): + if not hasattr(g, "db_pool"): + g.db_pool = psycopg2.pool.ThreadedConnectionPool( + **db_config, minconn=1, maxconn=10) + return g.db_pool + +@app.teardown_appcontext +def db_disconnect(err): + if hasattr(g, "db_pool"): + g.db_pool.closeall() + +@app.context_processor +def sql_processor(): + def sql_val(query): + val = cache.get(query) + if val is not None: + return val.get(0) + + con = dbpool().getconn() + c = con.cursor(cursor_factory=psycopg2.extras.DictCursor) + + c.execute(query) + val = c.fetchone() + cache.set(query, val, timeout=60*60) # seconds + + c.close() + dbpool().putconn(con) + + return val.get(0) + + return dict(sql_val=sql_val) + +@app.route("/") +def index(): + return render_template("index.html") + +@app.route("/assets/") +def send_assets(path): + return send_from_directory("templates/assets", path) + +if __name__ == "__main__": + app.run(debug=True) diff --git a/templates/assets/.DS_Store b/templates/assets/.DS_Store new file mode 100644 index 0000000..00e8144 Binary files /dev/null and b/templates/assets/.DS_Store differ diff --git a/templates/assets/bootstrap-material-design/.bower.json b/templates/assets/bootstrap-material-design/.bower.json new file mode 100644 index 0000000..cc4d06b --- /dev/null +++ b/templates/assets/bootstrap-material-design/.bower.json @@ -0,0 +1,40 @@ +{ + "name": "bootstrap-material-design", + "description": "Bootstrap Material Design 4", + "keywords": [ + "material", + "design", + "bootstrap", + "css", + "js", + "sass", + "mobile-first", + "responsive", + "front-end", + "framework", + "web" + ], + "homepage": "http://fezvrasta.github.io/bootstrap-material-design", + "license": "MIT", + "moduleType": "globals", + "main": [ + "scss/_core.scss", + "dist/bootstrap-material-design.iife.js" + ], + "dependencies": { + "jquery": "^2.2", + "tether": "^1.2", + "bootstrap": "v4-dev" + }, + "version": "4.0.2", + "_release": "4.0.2", + "_resolution": { + "type": "version", + "tag": "v4.0.2", + "commit": "ec3a7ffc23d1f18ac822442fe06d3688d29cbbea" + }, + "_source": "https://github.com/FezVrasta/bootstrap-material-design.git", + "_target": "v4.0.2", + "_originalSource": "bootstrap-material-design", + "_direct": true +} \ No newline at end of file diff --git a/templates/assets/bootstrap-material-design/.travis.yml b/templates/assets/bootstrap-material-design/.travis.yml new file mode 100644 index 0000000..34b0d78 --- /dev/null +++ b/templates/assets/bootstrap-material-design/.travis.yml @@ -0,0 +1,29 @@ +sudo: false +git: + depth: 10 + +# remove the dist branch and dist tags from travis builds +branches: + except: + - dist + - /^v(\d+\.)?(\d+\.)?(\*|\d+)$/ + +language: node_js +node_js: + - "5" # "node" (v6.x) yielded v8::ObjectTemplate::Set() with non-primitive values is deprecated + +# enable this once we have reliable builds +cache: + directories: + - node_modules + - vendor/bundle + +before_install: + - rvm install 2.2 + - rvm use 2.2 --fuzzy + - gem install scss-lint + +before_script: + - npm install -g gulp-cli + +script: gulp all diff --git a/templates/assets/bootstrap-material-design/LICENSE.md b/templates/assets/bootstrap-material-design/LICENSE.md new file mode 100644 index 0000000..4199bf6 --- /dev/null +++ b/templates/assets/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/templates/assets/bootstrap-material-design/README.md b/templates/assets/bootstrap-material-design/README.md new file mode 100644 index 0000000..9fe60b2 --- /dev/null +++ b/templates/assets/bootstrap-material-design/README.md @@ -0,0 +1,6 @@ +# bootstrap-material-design + +[`v4.0.2`](../../releases/tag/v4.0.2) built from commit [`f2ac8b1`](../../commit/f2ac8b142aba7e0cda5c945b04649269d1ff3d5a) on branch `v4-dev`. See the [README](../..) for more details + +--- +Built and published by [gulp-pipeline](https://github.com/alienfast/gulp-pipeline) using [build-control](https://github.com/alienfast/build-control) diff --git a/templates/assets/bootstrap-material-design/bower.json b/templates/assets/bootstrap-material-design/bower.json new file mode 100644 index 0000000..a312e33 --- /dev/null +++ b/templates/assets/bootstrap-material-design/bower.json @@ -0,0 +1,29 @@ +{ + "name": "bootstrap-material-design", + "description": "Bootstrap Material Design 4", + "keywords": [ + "material", + "design", + "bootstrap", + "css", + "js", + "sass", + "mobile-first", + "responsive", + "front-end", + "framework", + "web" + ], + "homepage": "http://fezvrasta.github.io/bootstrap-material-design", + "license": "MIT", + "moduleType": "globals", + "main": [ + "scss/_core.scss", + "dist/bootstrap-material-design.iife.js" + ], + "dependencies": { + "jquery": "^2.2", + "tether": "^1.2", + "bootstrap": "v4-dev" + } +} diff --git a/templates/assets/bootstrap-material-design/js/autofill.js b/templates/assets/bootstrap-material-design/js/autofill.js new file mode 100644 index 0000000..2ada9ec --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/autofill.js @@ -0,0 +1,109 @@ +import Base from './base' + +const Autofill = (($) => { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + const NAME = 'autofill' + const DATA_KEY = `bmd.${NAME}` + const JQUERY_NAME = `bmd${NAME.charAt(0).toUpperCase() + NAME.slice(1)}` + const JQUERY_NO_CONFLICT = $.fn[JQUERY_NAME] + + const Default = {} + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class Autofill extends Base { + + constructor($element, config) { + super($element, $.extend(true, {}, Default, config)) + + this._watchLoading() + this._attachEventHandlers() + } + + dispose() { + super.dispose(DATA_KEY) + } + + // ------------------------------------------------------------------------ + // private + + _watchLoading() { + // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them + setTimeout(() => { + clearInterval(this._onLoading) + }, 10000) + } + + // This part of code will detect autofill when the page is loading (username and password inputs for example) + _onLoading() { + setInterval(() => { + $('input[type!=checkbox]').each((index, element) => { + let $element = $(element) + if ($element.val() && $element.val() !== $element.attr('value')) { + $element.trigger('change') + } + }) + }, 100) + } + + _attachEventHandlers() { + // Listen on inputs of the focused form + // (because user can select from the autofill dropdown only when the input has focus) + let focused = null + $(document) + .on('focus', 'input', (event) => { + let $inputs = $(event.currentTarget).closest('form').find('input').not('[type=file]') + focused = setInterval(() => { + $inputs.each((index, element) => { + let $element = $(element) + if ($element.val() !== $element.attr('value')) { + $element.trigger('change') + } + }) + }, 100) + }) + .on('blur', '.form-group input', () => { + clearInterval(focused) + }) + } + + // ------------------------------------------------------------------------ + // static + static _jQueryInterface(config) { + return this.each(function () { + let $element = $(this) + let data = $element.data(DATA_KEY) + + if (!data) { + data = new Autofill($element, config) + $element.data(DATA_KEY, data) + } + }) + } + } + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + $.fn[JQUERY_NAME] = Autofill._jQueryInterface + $.fn[JQUERY_NAME].Constructor = Autofill + $.fn[JQUERY_NAME].noConflict = () => { + $.fn[JQUERY_NAME] = JQUERY_NO_CONFLICT + return Autofill._jQueryInterface + } + + return Autofill + +})(jQuery) + +export default Autofill diff --git a/templates/assets/bootstrap-material-design/js/base.js b/templates/assets/bootstrap-material-design/js/base.js new file mode 100644 index 0000000..283b976 --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/base.js @@ -0,0 +1,88 @@ +import Util from './util' + +const Base = (($) => { + + const ClassName = { + BMD_FORM_GROUP: 'bmd-form-group', + IS_FILLED: 'is-filled', + IS_FOCUSED: 'is-focused' + } + + const Selector = { + BMD_FORM_GROUP: `.${ClassName.BMD_FORM_GROUP}` + } + + const Default = {} + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class Base { + + /** + * + * @param element + * @param config + * @param properties - anything that needs to be set as this[key] = value. Works around the need to call `super` before using `this` + */ + constructor($element, config, properties = {}) { + this.$element = $element + this.config = $.extend(true, {}, Default, config) + + // set properties for use in the constructor initialization + for (let key in properties) { + this[key] = properties[key] + } + } + + dispose(dataKey) { + this.$element.data(dataKey, null) + this.$element = null + this.config = null + } + + // ------------------------------------------------------------------------ + // protected + + addFormGroupFocus() { + if (!this.$element.prop('disabled')) { + this.$bmdFormGroup.addClass(ClassName.IS_FOCUSED) + } + } + + removeFormGroupFocus() { + this.$bmdFormGroup.removeClass(ClassName.IS_FOCUSED) + } + + removeIsFilled() { + this.$bmdFormGroup.removeClass(ClassName.IS_FILLED) + } + + addIsFilled() { + this.$bmdFormGroup.addClass(ClassName.IS_FILLED) + } + + // Find bmd-form-group + findMdbFormGroup(raiseError = true) { + let mfg = this.$element.closest(Selector.BMD_FORM_GROUP) + if (mfg.length === 0 && raiseError) { + $.error(`Failed to find ${Selector.BMD_FORM_GROUP} for ${Util.describe(this.$element)}`) + } + return mfg + } + + // ------------------------------------------------------------------------ + // private + + // ------------------------------------------------------------------------ + // static + + } + + return Base + +})(jQuery) + +export default Base diff --git a/templates/assets/bootstrap-material-design/js/baseFormControl.js b/templates/assets/bootstrap-material-design/js/baseFormControl.js new file mode 100644 index 0000000..8481070 --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/baseFormControl.js @@ -0,0 +1,36 @@ +import BaseInput from './baseInput' + +const BaseFormControl = (($) => { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + const Default = { + requiredClasses: ['form-control'] + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class BaseFormControl extends BaseInput { + + constructor($element, config) { + super($element, $.extend(true, Default, config)) + + // Initially mark as empty + if (this.isEmpty()) { + this.removeIsFilled() + } + } + } + + + return BaseFormControl + +})(jQuery) + +export default BaseFormControl diff --git a/templates/assets/bootstrap-material-design/js/baseInput.js b/templates/assets/bootstrap-material-design/js/baseInput.js new file mode 100644 index 0000000..5396ccb --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/baseInput.js @@ -0,0 +1,321 @@ +import Base from './base' +import Util from './util' + +const BaseInput = (($) => { + + const ClassName = { + FORM_GROUP: 'form-group', + BMD_FORM_GROUP: 'bmd-form-group', + BMD_LABEL: 'bmd-label', + BMD_LABEL_STATIC: 'bmd-label-static', + BMD_LABEL_PLACEHOLDER: 'bmd-label-placeholder', + BMD_LABEL_FLOATING: 'bmd-label-floating', + HAS_DANGER: 'has-danger', + IS_FILLED: 'is-filled', + IS_FOCUSED: 'is-focused', + INPUT_GROUP: 'input-group' + } + + const Selector = { + FORM_GROUP: `.${ClassName.FORM_GROUP}`, + BMD_FORM_GROUP: `.${ClassName.BMD_FORM_GROUP}`, + BMD_LABEL_WILDCARD: `label[class^='${ClassName.BMD_LABEL}'], label[class*=' ${ClassName.BMD_LABEL}']` // match any label variant if specified + } + + const Default = { + validate: false, + formGroup: { + required: false + }, + bmdFormGroup: { + template: ``, + create: true, // create a wrapper if form-group not found + required: true // not recommended to turn this off, only used for inline components + }, + label: { + required: false, + + // Prioritized find order for resolving the label to be used as an bmd-label if not specified in the markup + // - a function(thisComponent); or + // - a string selector used like $bmdFormGroup.find(selector) + // + // Note this only runs if $bmdFormGroup.find(Selector.BMD_LABEL_WILDCARD) fails to find a label (as authored in the markup) + // + selectors: [ + `.form-control-label`, // in the case of horizontal or inline forms, this will be marked + `> label` // usual case for text inputs, first child. Deeper would find toggle labels so don't do that. + ], + className: ClassName.BMD_LABEL_STATIC + }, + requiredClasses: [], + invalidComponentMatches: [], + convertInputSizeVariations: true + } + + const FormControlSizeMarkers = { + 'form-control-lg': 'bmd-form-group-lg', + 'form-control-sm': 'bmd-form-group-sm' + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class BaseInput extends Base { + + /** + * + * @param element + * @param config + * @param properties - anything that needs to be set as this[key] = value. Works around the need to call `super` before using `this` + */ + constructor($element, config, properties = {}) { + super($element, $.extend(true, {}, Default, config), properties) + + // Enforce no overlap between components to prevent side effects + this._rejectInvalidComponentMatches() + + // Enforce expected structure (if any) + this.rejectWithoutRequiredStructure() + + // Enforce required classes for a consistent rendering + this._rejectWithoutRequiredClasses() + + // Resolve the form-group first, it will be used for bmd-form-group if possible + // note: different components have different rules + this.$formGroup = this.findFormGroup(this.config.formGroup.required) + + // Will add bmd-form-group to form-group or create an bmd-form-group + // Performance Note: for those forms that are really performance driven, create the markup with the .bmd-form-group to avoid + // rendering changes once added. + this.$bmdFormGroup = this.resolveMdbFormGroup() + + // Resolve and mark the bmdLabel if necessary as defined by the config + this.$bmdLabel = this.resolveMdbLabel() + + // Signal to the bmd-form-group that a form-control-* variation is being used + this.resolveMdbFormGroupSizing() + + this.addFocusListener() + this.addChangeListener() + + if(this.$element.val() != ''){ + this.addIsFilled() + } + } + + dispose(dataKey) { + super.dispose(dataKey) + this.$bmdFormGroup = null + this.$formGroup = null + } + + // ------------------------------------------------------------------------ + // protected + + rejectWithoutRequiredStructure() { + // implement + } + + addFocusListener() { + this.$element + .on('focus', () => { + this.addFormGroupFocus() + }) + .on('blur', () => { + this.removeFormGroupFocus() + }) + } + + addChangeListener() { + this.$element + .on('keydown paste', (event) => { + if (Util.isChar(event)) { + this.addIsFilled() + } + }) + .on('keyup change', () => { + + // 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') + if (this.isEmpty()) { + this.removeIsFilled() + } else { + this.addIsFilled() + } + + if (this.config.validate) { + // Validation events do not bubble, so they must be attached directly to the text: 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. + let isValid = (typeof this.$element[0].checkValidity === 'undefined' || this.$element[0].checkValidity()) + if (isValid) { + this.removeHasDanger() + } else { + this.addHasDanger() + } + } + }) + } + + addHasDanger() { + this.$bmdFormGroup.addClass(ClassName.HAS_DANGER) + } + + removeHasDanger() { + this.$bmdFormGroup.removeClass(ClassName.HAS_DANGER) + } + + isEmpty() { + return (this.$element.val() === null || this.$element.val() === undefined || this.$element.val() === '') + } + + // Will add bmd-form-group to form-group or create a bmd-form-group if necessary + resolveMdbFormGroup() { + let mfg = this.findMdbFormGroup(false) + if (mfg === undefined || mfg.length === 0) { + if (this.config.bmdFormGroup.create && (this.$formGroup === undefined || this.$formGroup.length === 0)) { + // If a form-group doesn't exist (not recommended), take a guess and wrap the element (assuming no label). + // note: it's possible to make this smarter, but I need to see valid cases before adding any complexity. + + // this may be an input-group, wrap that instead + if(this.outerElement().parent().hasClass(ClassName.INPUT_GROUP)){ + this.outerElement().parent().wrap(this.config.bmdFormGroup.template) + } + else{ + this.outerElement().wrap(this.config.bmdFormGroup.template) + } + } else { + // a form-group does exist, add our marker class to it + this.$formGroup.addClass(ClassName.BMD_FORM_GROUP) + + // OLD: may want to implement this after all, see how the styling turns out, but using an existing form-group is less manipulation of the dom and therefore preferable + // A form-group does exist, so add an bmd-form-group wrapping it's internal contents + //fg.wrapInner(this.config.bmdFormGroup.template) + } + + mfg = this.findMdbFormGroup(this.config.bmdFormGroup.required) + } + + return mfg + } + + // Demarcation element (e.g. first child of a form-group) + // Subclasses such as file inputs may have different structures + outerElement() { + return this.$element + } + + // Will add bmd-label to bmd-form-group if not already specified + resolveMdbLabel() { + + let label = this.$bmdFormGroup.find(Selector.BMD_LABEL_WILDCARD) + if (label === undefined || label.length === 0) { + // we need to find it based on the configured selectors + label = this.findMdbLabel(this.config.label.required) + + if (label === undefined || label.length === 0) { + // no label found, and finder did not require one + } else { + // a candidate label was found, add the configured default class name + label.addClass(this.config.label.className) + } + } + + return label + } + + // Find bmd-label variant based on the config selectors + findMdbLabel(raiseError = true) { + let label = null + + // use the specified selector order + for (let selector of this.config.label.selectors) { + if ($.isFunction(selector)) { + label = selector(this) + } else { + label = this.$bmdFormGroup.find(selector) + } + + if (label !== undefined && label.length > 0) { + break + } + } + + if (label.length === 0 && raiseError) { + $.error(`Failed to find ${Selector.BMD_LABEL_WILDCARD} within form-group for ${Util.describe(this.$element)}`) + } + return label + } + + // Find bmd-form-group + findFormGroup(raiseError = true) { + let fg = this.$element.closest(Selector.FORM_GROUP) + if (fg.length === 0 && raiseError) { + $.error(`Failed to find ${Selector.FORM_GROUP} for ${Util.describe(this.$element)}`) + } + return fg + } + + // Due to the interconnected nature of labels/inputs/help-blocks, signal the bmd-form-group-* size variation based on + // a found form-control-* size + resolveMdbFormGroupSizing() { + if (!this.config.convertInputSizeVariations) { + return + } + + // Modification - Change text-sm/lg to form-group-sm/lg instead (preferred standard and simpler css/less variants) + for (let inputSize in FormControlSizeMarkers) { + if (this.$element.hasClass(inputSize)) { + //this.$element.removeClass(inputSize) + this.$bmdFormGroup.addClass(FormControlSizeMarkers[inputSize]) + } + } + } + + // ------------------------------------------------------------------------ + // private + _rejectInvalidComponentMatches() { + for (let otherComponent of this.config.invalidComponentMatches) { + otherComponent.rejectMatch(this.constructor.name, this.$element) + } + } + + _rejectWithoutRequiredClasses() { + for (let requiredClass of this.config.requiredClasses) { + + let found = false + // allow one of several classes to be passed in x||y + if (requiredClass.indexOf('||') !== -1) { + let oneOf = requiredClass.split('||') + for (let requiredClass of oneOf) { + if (this.$element.hasClass(requiredClass)) { + found = true + break + } + } + } else if (this.$element.hasClass(requiredClass)) { + found = true + } + + // error if not found + if (!found) { + $.error(`${this.constructor.name} element: ${Util.describe(this.$element)} requires class: ${requiredClass}`) + } + } + } + + // ------------------------------------------------------------------------ + // static + + } + + return BaseInput + +})(jQuery) + +export default BaseInput diff --git a/templates/assets/bootstrap-material-design/js/baseLayout.js b/templates/assets/bootstrap-material-design/js/baseLayout.js new file mode 100644 index 0000000..8dc87ed --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/baseLayout.js @@ -0,0 +1,122 @@ +import Base from './base' +import Util from './util' + +const BaseLayout = (($) => { + + const ClassName = { + CANVAS: 'bmd-layout-canvas', + CONTAINER: 'bmd-layout-container', + BACKDROP: `bmd-layout-backdrop` + } + + const Selector = { + CANVAS: `.${ClassName.CANVAS}`, + CONTAINER: `.${ClassName.CONTAINER}`, + BACKDROP: `.${ClassName.BACKDROP}` + } + + const Default = { + canvas: { + create: true, + required: true, + template: `
` + }, + backdrop: { + create: true, + required: true, + template: `
` + } + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class BaseLayout extends Base { + + constructor($element, config, properties = {}) { + super($element, $.extend(true, {}, Default, config), properties) + + this.$container = this.findContainer(true) + this.$backdrop = this.resolveBackdrop() + this.resolveCanvas(); + } + + dispose(dataKey) { + super.dispose(dataKey) + this.$container = null + this.$backdrop = null + } + + // ------------------------------------------------------------------------ + // protected + + // Will wrap container in bmd-layout-canvas if necessary + resolveCanvas() { + let bd = this.findCanvas(false) + if (bd === undefined || bd.length === 0) { + if (this.config.canvas.create) { + this.$container.wrap(this.config.canvas.template) + } + + bd = this.findCanvas(this.config.canvas.required) + } + + return bd + } + + // Find closest bmd-layout-container based on the given context + findCanvas(raiseError = true, context = this.$container) { + let canvas = context.closest(Selector.CANVAS) + if (canvas.length === 0 && raiseError) { + $.error(`Failed to find ${Selector.CANVAS} for ${Util.describe(context)}`) + } + return canvas + } + + // Will add bmd-layout-backdrop to bmd-layout-container if necessary + resolveBackdrop() { + let bd = this.findBackdrop(false) + if (bd === undefined || bd.length === 0) { + if (this.config.backdrop.create) { + this.$container.append(this.config.backdrop.template) + } + + bd = this.findBackdrop(this.config.backdrop.required) + } + + return bd + } + + // Find closest bmd-layout-container based on the given context + findBackdrop(raiseError = true, context = this.$container) { + let backdrop = context.find(`> ${Selector.BACKDROP}`) + if (backdrop.length === 0 && raiseError) { + $.error(`Failed to find ${Selector.BACKDROP} for ${Util.describe(context)}`) + } + return backdrop + } + + // Find closest bmd-layout-container based on the given context + findContainer(raiseError = true, context = this.$element) { + let container = context.closest(Selector.CONTAINER) + if (container.length === 0 && raiseError) { + $.error(`Failed to find ${Selector.CONTAINER} for ${Util.describe(context)}`) + } + return container + } + + // ------------------------------------------------------------------------ + // private + + // ------------------------------------------------------------------------ + // static + + } + + return BaseLayout + +})(jQuery) + +export default BaseLayout diff --git a/templates/assets/bootstrap-material-design/js/baseSelection.js b/templates/assets/bootstrap-material-design/js/baseSelection.js new file mode 100644 index 0000000..765d1c3 --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/baseSelection.js @@ -0,0 +1,93 @@ +import BaseInput from './baseInput' +import Util from './util' + +const BaseSelection = (($) => { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + const Default = { + label: { + required: false + + // Prioritized find order for resolving the label to be used as an bmd-label if not specified in the markup + // - a function(thisComponent); or + // - a string selector used like $bmdFormGroup.find(selector) + // + // Note this only runs if $bmdFormGroup.find(Selector.BMD_LABEL_WILDCARD) fails to find a label (as authored in the markup) + // + //selectors: [ + // `.form-control-label`, // in the case of horizontal or inline forms, this will be marked + // `> label` // usual case for text inputs + //] + } + } + + const Selector = { + LABEL: 'label' + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class BaseSelection extends BaseInput { + + constructor($element, config, properties) { + // properties = {inputType: checkbox, outerClass: checkbox-inline} + // '.checkbox|switch|radio > label > input[type=checkbox|radio]' + // '.${this.outerClass} > label > input[type=${this.inputType}]' + + super($element, $.extend(true, {}, Default, config), properties) + this.decorateMarkup() + } + + // ------------------------------------------------------------------------ + // protected + + decorateMarkup() { + this.$element.after(this.config.template) + } + + // Demarcation element (e.g. first child of a form-group) + outerElement() { + // .checkbox|switch|radio > label > input[type=checkbox|radio] + // label.checkbox-inline > input[type=checkbox|radio] + // .${this.outerClass} > label > input[type=${this.inputType}] + return this.$element.parent().closest(`.${this.outerClass}`) + } + + rejectWithoutRequiredStructure() { + // '.checkbox|switch|radio > label > input[type=checkbox|radio]' + // '.${this.outerClass} > label > input[type=${this.inputType}]' + Util.assert(this.$element, !this.$element.parent().prop('tagName') === 'label', `${this.constructor.name}'s ${Util.describe(this.$element)} parent element should be