├── .bowerrc ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── bower.json ├── bower_components ├── bulma │ ├── .bower.json │ ├── BACKERS.md │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── bulma.sass │ ├── css │ │ ├── bulma.css │ │ ├── bulma.css.map │ │ └── bulma.min.css │ ├── package-lock.json │ ├── package.json │ ├── sass │ │ ├── base │ │ │ ├── _all.sass │ │ │ ├── generic.sass │ │ │ ├── helpers.sass │ │ │ └── minireset.sass │ │ ├── components │ │ │ ├── _all.sass │ │ │ ├── breadcrumb.sass │ │ │ ├── card.sass │ │ │ ├── dropdown.sass │ │ │ ├── level.sass │ │ │ ├── list.sass │ │ │ ├── media.sass │ │ │ ├── menu.sass │ │ │ ├── message.sass │ │ │ ├── modal.sass │ │ │ ├── navbar.sass │ │ │ ├── pagination.sass │ │ │ ├── panel.sass │ │ │ └── tabs.sass │ │ ├── elements │ │ │ ├── _all.sass │ │ │ ├── box.sass │ │ │ ├── button.sass │ │ │ ├── container.sass │ │ │ ├── content.sass │ │ │ ├── form.sass │ │ │ ├── icon.sass │ │ │ ├── image.sass │ │ │ ├── notification.sass │ │ │ ├── other.sass │ │ │ ├── progress.sass │ │ │ ├── table.sass │ │ │ ├── tag.sass │ │ │ └── title.sass │ │ ├── grid │ │ │ ├── _all.sass │ │ │ ├── columns.sass │ │ │ └── tiles.sass │ │ ├── layout │ │ │ ├── _all.sass │ │ │ ├── footer.sass │ │ │ ├── hero.sass │ │ │ └── section.sass │ │ └── utilities │ │ │ ├── _all.sass │ │ │ ├── animations.sass │ │ │ ├── controls.sass │ │ │ ├── derived-variables.sass │ │ │ ├── functions.sass │ │ │ ├── initial-variables.sass │ │ │ └── mixins.sass │ └── yarn.lock ├── jquery │ ├── .bower.json │ ├── AUTHORS.txt │ ├── LICENSE.txt │ ├── README.md │ ├── bower.json │ ├── dist │ │ ├── core.js │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ ├── jquery.min.map │ │ ├── jquery.slim.js │ │ ├── jquery.slim.min.js │ │ └── jquery.slim.min.map │ ├── external │ │ └── sizzle │ │ │ ├── LICENSE.txt │ │ │ └── dist │ │ │ ├── sizzle.js │ │ │ ├── sizzle.min.js │ │ │ └── sizzle.min.map │ └── src │ │ ├── .eslintrc.json │ │ ├── ajax.js │ │ ├── ajax │ │ ├── jsonp.js │ │ ├── load.js │ │ ├── parseXML.js │ │ ├── script.js │ │ ├── var │ │ │ ├── location.js │ │ │ ├── nonce.js │ │ │ └── rquery.js │ │ └── xhr.js │ │ ├── attributes.js │ │ ├── attributes │ │ ├── attr.js │ │ ├── classes.js │ │ ├── prop.js │ │ ├── support.js │ │ └── val.js │ │ ├── callbacks.js │ │ ├── core.js │ │ ├── core │ │ ├── DOMEval.js │ │ ├── access.js │ │ ├── camelCase.js │ │ ├── init.js │ │ ├── nodeName.js │ │ ├── parseHTML.js │ │ ├── ready-no-deferred.js │ │ ├── ready.js │ │ ├── readyException.js │ │ ├── stripAndCollapse.js │ │ ├── support.js │ │ ├── toType.js │ │ └── var │ │ │ └── rsingleTag.js │ │ ├── css.js │ │ ├── css │ │ ├── addGetHookIf.js │ │ ├── adjustCSS.js │ │ ├── curCSS.js │ │ ├── hiddenVisibleSelectors.js │ │ ├── showHide.js │ │ ├── support.js │ │ └── var │ │ │ ├── cssExpand.js │ │ │ ├── getStyles.js │ │ │ ├── isHiddenWithinTree.js │ │ │ ├── rboxStyle.js │ │ │ ├── rnumnonpx.js │ │ │ └── swap.js │ │ ├── data.js │ │ ├── data │ │ ├── Data.js │ │ └── var │ │ │ ├── acceptData.js │ │ │ ├── dataPriv.js │ │ │ └── dataUser.js │ │ ├── deferred.js │ │ ├── deferred │ │ └── exceptionHook.js │ │ ├── deprecated.js │ │ ├── dimensions.js │ │ ├── effects.js │ │ ├── effects │ │ ├── Tween.js │ │ └── animatedSelector.js │ │ ├── event.js │ │ ├── event │ │ ├── ajax.js │ │ ├── alias.js │ │ ├── focusin.js │ │ ├── support.js │ │ └── trigger.js │ │ ├── exports │ │ ├── amd.js │ │ └── global.js │ │ ├── jquery.js │ │ ├── manipulation.js │ │ ├── manipulation │ │ ├── _evalUrl.js │ │ ├── buildFragment.js │ │ ├── getAll.js │ │ ├── setGlobalEval.js │ │ ├── support.js │ │ ├── var │ │ │ ├── rcheckableType.js │ │ │ ├── rscriptType.js │ │ │ └── rtagName.js │ │ └── wrapMap.js │ │ ├── offset.js │ │ ├── queue.js │ │ ├── queue │ │ └── delay.js │ │ ├── selector-native.js │ │ ├── selector-sizzle.js │ │ ├── selector.js │ │ ├── serialize.js │ │ ├── traversing.js │ │ ├── traversing │ │ ├── findFilter.js │ │ └── var │ │ │ ├── dir.js │ │ │ ├── rneedsContext.js │ │ │ └── siblings.js │ │ ├── var │ │ ├── ObjectFunctionString.js │ │ ├── arr.js │ │ ├── class2type.js │ │ ├── concat.js │ │ ├── document.js │ │ ├── documentElement.js │ │ ├── fnToString.js │ │ ├── getProto.js │ │ ├── hasOwn.js │ │ ├── indexOf.js │ │ ├── isFunction.js │ │ ├── isWindow.js │ │ ├── pnum.js │ │ ├── push.js │ │ ├── rcssNum.js │ │ ├── rnothtmlwhite.js │ │ ├── slice.js │ │ ├── support.js │ │ └── toString.js │ │ └── wrap.js └── simple-jekyll-search │ ├── .bower.json │ ├── .gitignore │ ├── .travis.yml │ ├── CYPRESS.md │ ├── LICENSE.md │ ├── README.md │ ├── WIKI.md │ ├── cypress.json │ ├── cypress │ ├── fixtures │ │ ├── example.json │ │ ├── profile.json │ │ └── users.json │ ├── integration │ │ └── simple-jekyll-search.js │ ├── plugins │ │ └── index.js │ └── support │ │ ├── commands.js │ │ └── index.js │ ├── dest │ ├── simple-jekyll-search.js │ └── simple-jekyll-search.min.js │ ├── example │ ├── Gemfile │ ├── _includes │ │ ├── footer.html │ │ ├── head.html │ │ └── header.html │ ├── _layouts │ │ ├── default.html │ │ ├── page.html │ │ └── post.html │ ├── _plugins │ │ ├── simple_search_filter.rb │ │ └── simple_search_filter_cn.rb │ ├── _posts │ │ ├── 2014-11-01-welcome-to-jekyll.markdown │ │ └── 2014-11-02-test.markdown │ ├── _sass │ │ ├── _base.scss │ │ ├── _layout.scss │ │ └── _syntax-highlighting.scss │ ├── about.md │ ├── css │ │ └── main.scss │ ├── index.html │ ├── js │ │ ├── simple-jekyll-search.js │ │ └── simple-jekyll-search.min.js │ └── search.json │ ├── index.html │ ├── package-lock.json │ ├── package.json │ ├── scripts │ └── stamp.js │ ├── src │ ├── JSONLoader.js │ ├── OptionsValidator.js │ ├── Repository.js │ ├── SearchStrategies │ │ ├── FuzzySearchStrategy.js │ │ └── LiteralSearchStrategy.js │ ├── Templater.js │ ├── index.js │ └── utils.js │ └── tests │ ├── OptionsValidator.test.js │ ├── Repository.test.js │ ├── SearchStrategies │ ├── FuzzySearchStrategy.test.js │ └── LiteralSearchStrategy.test.js │ ├── Templater.test.js │ └── utils.test.js └── src ├── CNAME ├── _assets ├── css │ ├── libs │ │ └── _mixins.scss │ └── style.scss └── javascript │ └── main.js ├── _data └── resources.yml ├── _includes ├── _footer.html ├── _nav.html ├── card.html ├── function-set_category_path.html ├── hero-intro.html ├── search.html └── section-cards.html ├── _layouts ├── card.html ├── cards.html ├── compress.html ├── default.html └── home.html ├── _plugins └── generator.rb ├── favicon.ico └── index.md /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "analytics": false, 3 | "directory": "src/_assets/vendor" 4 | } 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io 2 | 3 | ### OSX ### 4 | .DS_Store 5 | .AppleDouble 6 | .LSOverride 7 | 8 | # Icon must end with two \r 9 | Icon 10 | 11 | 12 | # Thumbnails 13 | ._* 14 | 15 | # Files that might appear in the root of a volume 16 | .DocumentRevisions-V100 17 | .fseventsd 18 | .Spotlight-V100 19 | .TemporaryItems 20 | .Trashes 21 | .VolumeIcon.icns 22 | 23 | # Directories potentially created on remote AFP share 24 | .AppleDB 25 | .AppleDesktop 26 | Network Trash Folder 27 | Temporary Items 28 | .apdisk 29 | 30 | 31 | ### Windows ### 32 | # Windows image file caches 33 | Thumbs.db 34 | ehthumbs.db 35 | 36 | # Folder config file 37 | Desktop.ini 38 | 39 | # Recycle Bin used on file shares 40 | $RECYCLE.BIN/ 41 | 42 | # Windows Installer files 43 | *.cab 44 | *.msi 45 | *.msm 46 | *.msp 47 | 48 | # Windows shortcuts 49 | *.lnk 50 | 51 | 52 | ### Linux ### 53 | *~ 54 | 55 | # KDE directory preferences 56 | .directory 57 | 58 | # Linux trash folder which might appear on any partition or disk 59 | .Trash-* 60 | 61 | 62 | ### Elixir ### 63 | /_build 64 | /deps 65 | erl_crash.dump 66 | *.ez 67 | 68 | ### Node ### 69 | node_modules 70 | 71 | ### Jekyll ### 72 | www/ 73 | .jekyll-cache 74 | src/_assets/vendor 75 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - 2.5.3 4 | env: 5 | global: 6 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true # speeds up installation of html-proofer 7 | sudo: false # route your build to the container-based infrastructure for a faster build 8 | addons: 9 | apt: 10 | packages: 11 | - libcurl4-openssl-dev # https://github.com/typhoeus/typhoeus/issues/568 12 | before_script: 13 | - npm install -g bower 14 | - bower install 15 | script: 16 | - bundle exec jekyll build 17 | deploy: 18 | provider: pages # https://docs.travis-ci.com/user/deployment/pages/ 19 | skip-cleanup: true 20 | github-token: $GITHUB_API # Set in the settings page of your repository, as a secure variable 21 | keep-history: true 22 | local-dir: ./www 23 | on: 24 | branch: master 25 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | We're open for Pull Requests! 2 | 3 | New resources for the categories mentioned above can be added in [`src/_data/resources.yml`](https://github.com/RemoteML/bestofml/blob/master/src/_data/resources.yml). The format is as follows: 4 | 5 | ``` 6 | : 7 | category: 8 | tags: <2 - 3 related tags> 9 | url: 10 | description: "" 11 | ``` 12 | 13 | Please add new resources at the **very bottom** of the list! -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gem "jekyll", "~> 3.8.5" 3 | gem "html-proofer", "~> 3.9.1" 4 | gem "json", "~> 2.1.0" 5 | gem "nokogiri", ">= 1.8.5" 6 | gem "rack", ">= 2.0.6" 7 | 8 | group :jekyll_plugins do 9 | gem "jekyll-assets", "~> 3.0.11" 10 | gem 'jekyll-sitemap' 11 | gem "kramdown", "~> 1.17.0" 12 | gem "uglifier", "~> 4.1.12" 13 | end 14 | 15 | # Windows does not include zoneinfo files, so bundle the tzinfo-data gem 16 | gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] 17 | 18 | # Performance-booster for watching directories on Windows 19 | gem "wdm", "~> 0.1.1" if Gem.win_platform? 20 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (5.2.2) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 0.7, < 2) 7 | minitest (~> 5.1) 8 | tzinfo (~> 1.1) 9 | addressable (2.6.0) 10 | public_suffix (>= 2.0.2, < 4.0) 11 | colorator (1.1.0) 12 | colorize (0.8.1) 13 | concurrent-ruby (1.1.4) 14 | em-websocket (0.5.1) 15 | eventmachine (>= 0.12.9) 16 | http_parser.rb (~> 0.6.0) 17 | ethon (0.12.0) 18 | ffi (>= 1.3.0) 19 | eventmachine (1.2.7) 20 | execjs (2.7.0) 21 | extras (0.3.0) 22 | forwardable-extended (~> 2.5) 23 | fastimage (2.1.5) 24 | ffi (1.10.0) 25 | forwardable-extended (2.6.0) 26 | html-proofer (3.9.3) 27 | activesupport (>= 4.2, < 6.0) 28 | addressable (~> 2.3) 29 | colorize (~> 0.8) 30 | mercenary (~> 0.3.2) 31 | nokogiri (~> 1.8.1) 32 | parallel (~> 1.3) 33 | typhoeus (~> 1.3) 34 | yell (~> 2.0) 35 | http_parser.rb (0.6.0) 36 | i18n (0.9.5) 37 | concurrent-ruby (~> 1.0) 38 | jekyll (3.8.5) 39 | addressable (~> 2.4) 40 | colorator (~> 1.0) 41 | em-websocket (~> 0.5) 42 | i18n (~> 0.7) 43 | jekyll-sass-converter (~> 1.0) 44 | jekyll-watch (~> 2.0) 45 | kramdown (~> 1.14) 46 | liquid (~> 4.0) 47 | mercenary (~> 0.3.3) 48 | pathutil (~> 0.9) 49 | rouge (>= 1.7, < 4) 50 | safe_yaml (~> 1.0) 51 | jekyll-assets (3.0.12) 52 | activesupport (~> 5.0) 53 | execjs (~> 2.7) 54 | extras (~> 0.2) 55 | fastimage (~> 2.0, >= 1.8) 56 | jekyll (>= 3.5, < 4.0) 57 | jekyll-sanity (~> 1.2) 58 | liquid-tag-parser (~> 1.0) 59 | nokogiri (~> 1.8) 60 | pathutil (~> 0.16) 61 | sprockets (>= 3.3, < 4.1.beta) 62 | jekyll-sanity (1.2.0) 63 | jekyll (~> 3.1) 64 | jekyll-sass-converter (1.5.2) 65 | sass (~> 3.4) 66 | jekyll-sitemap (1.2.0) 67 | jekyll (~> 3.3) 68 | jekyll-watch (2.1.2) 69 | listen (~> 3.0) 70 | json (2.1.0) 71 | kramdown (1.17.0) 72 | liquid (4.0.1) 73 | liquid-tag-parser (1.9.0) 74 | extras (~> 0.3) 75 | liquid (>= 3.0, < 5.0) 76 | listen (3.1.5) 77 | rb-fsevent (~> 0.9, >= 0.9.4) 78 | rb-inotify (~> 0.9, >= 0.9.7) 79 | ruby_dep (~> 1.2) 80 | mercenary (0.3.6) 81 | mini_portile2 (2.3.0) 82 | minitest (5.11.3) 83 | nokogiri (1.8.5) 84 | mini_portile2 (~> 2.3.0) 85 | parallel (1.13.0) 86 | pathutil (0.16.2) 87 | forwardable-extended (~> 2.6) 88 | public_suffix (3.0.3) 89 | rack (2.0.6) 90 | rb-fsevent (0.10.3) 91 | rb-inotify (0.10.0) 92 | ffi (~> 1.0) 93 | rouge (3.3.0) 94 | ruby_dep (1.5.0) 95 | safe_yaml (1.0.4) 96 | sass (3.7.3) 97 | sass-listen (~> 4.0.0) 98 | sass-listen (4.0.0) 99 | rb-fsevent (~> 0.9, >= 0.9.4) 100 | rb-inotify (~> 0.9, >= 0.9.7) 101 | sprockets (3.7.2) 102 | concurrent-ruby (~> 1.0) 103 | rack (> 1, < 3) 104 | thread_safe (0.3.6) 105 | typhoeus (1.3.1) 106 | ethon (>= 0.9.0) 107 | tzinfo (1.2.5) 108 | thread_safe (~> 0.1) 109 | uglifier (4.1.20) 110 | execjs (>= 0.3.0, < 3) 111 | yell (2.0.7) 112 | 113 | PLATFORMS 114 | ruby 115 | 116 | DEPENDENCIES 117 | html-proofer (~> 3.9.1) 118 | jekyll (~> 3.8.5) 119 | jekyll-assets (~> 3.0.11) 120 | jekyll-sitemap 121 | json (~> 2.1.0) 122 | kramdown (~> 1.17.0) 123 | nokogiri (>= 1.8.5) 124 | rack (>= 2.0.6) 125 | tzinfo-data 126 | uglifier (~> 4.1.12) 127 | 128 | BUNDLED WITH 129 | 1.17.3 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 RemoteML 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Best of Machine Learning 2 | 3 | A collection of the best resources in Machine Learning. 4 | 5 | [Visit curated website](https://bestofml.com) 6 | 7 | ## Categories 8 | 9 | - [Books](https://bestofml.com/category/books) 10 | - [Courses](https://bestofml.com/category/courses) 11 | - [Job Boards](https://bestofml.com/category/job-boards) 12 | - [News & Blogs](https://bestofml.com/category/news---blogs) 13 | - [Papers](https://bestofml.com/category/papers) 14 | 15 | 16 | ## Contributing 17 | 18 | We're open for Pull Requests! 19 | 20 | New resources for the categories mentioned above can be added in [`src/_data/resources.yml`](https://github.com/RemoteML/bestofml/blob/master/src/_data/resources.yml). The format is as follows: 21 | 22 | ``` 23 | : 24 | category: 25 | tags: <2 - 3 related tags> 26 | url: 27 | description: "" 28 | ``` 29 | 30 | Please add new resources at the **very bottom** of the list! 31 | 32 | ## Get in Touch 33 | 34 | This project is supported by [RemoteML](https://remoteml.com). Visit our [community](https://remoteml.com/chat/) if you want to learn more. 35 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | title: Best of Machine Learning 2 | email: support@remoteml.com 3 | description: >- 4 | The best resources in Machine Learning & AI 5 | baseurl: "" 6 | url: "https://bestofml.com" 7 | analytics-id: UA-108818402-5 8 | github: RemoteML/bestofml 9 | maintainers: 10 | - dmonn 11 | 12 | plugins: 13 | - jekyll-assets 14 | - kramdown 15 | - uglifier 16 | - jekyll-sitemap 17 | 18 | source: src 19 | destination: www 20 | markdown: kramdown 21 | 22 | cards: 23 | data: resources # yaml file in _data (without .yml) 24 | comments: false 25 | group_by: 26 | name: category # field in yaml to group by 27 | caption: category # name of category (ex: industries) 28 | fa-icon: folder-open 29 | fa-style: far # valid: fas (solid), far (regular), fal (light), fab (brand) 30 | meta: # use this section to display card info, in addition to 'group_by' 31 | - name: tags 32 | caption: tags 33 | fa-icon: tags 34 | fa-style: fa 35 | - name: url 36 | caption: www 37 | fa-icon: globe 38 | fa-style: fas 39 | 40 | 41 | compress_html: 42 | ignore: 43 | envs: ["development"] 44 | clippings: [] 45 | comments: all 46 | endings: [] 47 | startings: [] 48 | blanklines: false 49 | profile: false 50 | 51 | assets: 52 | sources: 53 | - _assets/vendor 54 | digest: true 55 | compression: true 56 | gzip: false 57 | defaults: 58 | js: { integrity: false } # true on JEKYLL_ENV=production 59 | css: { integrity: false } # true on JEKYLL_ENV=production 60 | img: { integrity: false } # true on JEKYLL_ENV=production 61 | compress: 62 | css: false 63 | js: uglifier 64 | 65 | include: 66 | - CNAME -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jekyll-bulma-boilerplate", 3 | "authors": [ 4 | "burden " 5 | ], 6 | "description": "", 7 | "main": "", 8 | "license": "", 9 | "homepage": "jekyll-bulma-boilerplate.utensils.io", 10 | "ignore": [ 11 | "**/.*", 12 | "node_modules", 13 | "bower_components", 14 | "src/_assets/vendor", 15 | "test", 16 | "tests" 17 | ], 18 | "dependencies": { 19 | "jquery": "^3.2.1", 20 | "bulma": "^0.7.4", 21 | "simple-jekyll-search": "^1.7.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /bower_components/bulma/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bulma", 3 | "version": "0.7.4", 4 | "homepage": "https://bulma.io", 5 | "authors": [ 6 | "jgthms " 7 | ], 8 | "description": "Modern CSS framework based on Flexbox", 9 | "main": "bulma.sass", 10 | "keywords": [ 11 | "css", 12 | "sass", 13 | "flexbox", 14 | "responsive", 15 | "framework" 16 | ], 17 | "license": "MIT", 18 | "ignore": [ 19 | "**/.*", 20 | "node_modules", 21 | "bower_components", 22 | "test", 23 | "tests", 24 | "docs", 25 | "images" 26 | ], 27 | "_release": "0.7.4", 28 | "_resolution": { 29 | "type": "version", 30 | "tag": "0.7.4", 31 | "commit": "7cf10a786a187d6ce278a64c1bdd708384386420" 32 | }, 33 | "_source": "https://github.com/jgthms/bulma.git", 34 | "_target": "^0.7.4", 35 | "_originalSource": "bulma" 36 | } -------------------------------------------------------------------------------- /bower_components/bulma/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 Jeremy Thomas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /bower_components/bulma/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bulma", 3 | "version": "0.7.4", 4 | "homepage": "https://bulma.io", 5 | "authors": [ 6 | "jgthms " 7 | ], 8 | "description": "Modern CSS framework based on Flexbox", 9 | "main": "bulma.sass", 10 | "keywords": [ 11 | "css", 12 | "sass", 13 | "flexbox", 14 | "responsive", 15 | "framework" 16 | ], 17 | "license": "MIT", 18 | "ignore": [ 19 | "**/.*", 20 | "node_modules", 21 | "bower_components", 22 | "test", 23 | "tests", 24 | "docs", 25 | "images" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /bower_components/bulma/bulma.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | /*! bulma.io v0.7.4 | MIT License | github.com/jgthms/bulma */ 3 | @import "sass/utilities/_all" 4 | @import "sass/base/_all" 5 | @import "sass/elements/_all" 6 | @import "sass/components/_all" 7 | @import "sass/grid/_all" 8 | @import "sass/layout/_all" 9 | -------------------------------------------------------------------------------- /bower_components/bulma/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bulma", 3 | "version": "0.7.4", 4 | "homepage": "https://bulma.io", 5 | "author": { 6 | "name": "Jeremy Thomas", 7 | "email": "bbxdesign@gmail.com", 8 | "url": "https://jgthms.com" 9 | }, 10 | "description": "Modern CSS framework based on Flexbox", 11 | "main": "bulma.sass", 12 | "unpkg": "css/bulma.css", 13 | "style": "bulma/css/bulma.min.css", 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/jgthms/bulma.git" 17 | }, 18 | "license": "MIT", 19 | "keywords": [ 20 | "css", 21 | "sass", 22 | "flexbox", 23 | "responsive", 24 | "framework" 25 | ], 26 | "bugs": { 27 | "url": "https://github.com/jgthms/bulma/issues" 28 | }, 29 | "devDependencies": { 30 | "autoprefixer": "^9.4.7", 31 | "clean-css-cli": "^4.2.1", 32 | "node-sass": "^4.11.0", 33 | "postcss-cli": "^6.1.1", 34 | "rimraf": "^2.6.3" 35 | }, 36 | "scripts": { 37 | "build": "npm run build-clean && npm run build-sass && npm run build-autoprefix && npm run build-cleancss", 38 | "build-autoprefix": "postcss --use autoprefixer --map false --output css/bulma.css css/bulma.css", 39 | "build-cleancss": "cleancss -o css/bulma.min.css css/bulma.css", 40 | "build-clean": "rimraf css", 41 | "build-sass": "node-sass --output-style expanded --source-map true bulma.sass css/bulma.css", 42 | "deploy": "npm run build", 43 | "start": "npm run build-sass -- --watch" 44 | }, 45 | "files": [ 46 | "css", 47 | "sass", 48 | "bulma.sass", 49 | "LICENSE", 50 | "README.md" 51 | ] 52 | } 53 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/base/_all.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | 3 | @import "minireset.sass" 4 | @import "generic.sass" 5 | @import "helpers.sass" 6 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/base/generic.sass: -------------------------------------------------------------------------------- 1 | $body-background-color: $white !default 2 | $body-size: 16px !default 3 | $body-rendering: optimizeLegibility !default 4 | $body-family: $family-primary !default 5 | $body-color: $text !default 6 | $body-weight: $weight-normal !default 7 | $body-line-height: 1.5 !default 8 | 9 | $code-family: $family-code !default 10 | $code-padding: 0.25em 0.5em 0.25em !default 11 | $code-weight: normal !default 12 | $code-size: 0.875em !default 13 | 14 | $hr-background-color: $background !default 15 | $hr-height: 2px !default 16 | $hr-margin: 1.5rem 0 !default 17 | 18 | $strong-color: $text-strong !default 19 | $strong-weight: $weight-bold !default 20 | 21 | html 22 | background-color: $body-background-color 23 | font-size: $body-size 24 | -moz-osx-font-smoothing: grayscale 25 | -webkit-font-smoothing: antialiased 26 | min-width: 300px 27 | overflow-x: hidden 28 | overflow-y: scroll 29 | text-rendering: $body-rendering 30 | text-size-adjust: 100% 31 | 32 | article, 33 | aside, 34 | figure, 35 | footer, 36 | header, 37 | hgroup, 38 | section 39 | display: block 40 | 41 | body, 42 | button, 43 | input, 44 | select, 45 | textarea 46 | font-family: $body-family 47 | 48 | code, 49 | pre 50 | -moz-osx-font-smoothing: auto 51 | -webkit-font-smoothing: auto 52 | font-family: $code-family 53 | 54 | body 55 | color: $body-color 56 | font-size: 1rem 57 | font-weight: $body-weight 58 | line-height: $body-line-height 59 | 60 | // Inline 61 | 62 | a 63 | color: $link 64 | cursor: pointer 65 | text-decoration: none 66 | strong 67 | color: currentColor 68 | &:hover 69 | color: $link-hover 70 | 71 | code 72 | background-color: $code-background 73 | color: $code 74 | font-size: $code-size 75 | font-weight: $code-weight 76 | padding: $code-padding 77 | 78 | hr 79 | background-color: $hr-background-color 80 | border: none 81 | display: block 82 | height: $hr-height 83 | margin: $hr-margin 84 | 85 | img 86 | height: auto 87 | max-width: 100% 88 | 89 | input[type="checkbox"], 90 | input[type="radio"] 91 | vertical-align: baseline 92 | 93 | small 94 | font-size: 0.875em 95 | 96 | span 97 | font-style: inherit 98 | font-weight: inherit 99 | 100 | strong 101 | color: $strong-color 102 | font-weight: $strong-weight 103 | 104 | // Block 105 | 106 | fieldset 107 | border: none 108 | 109 | pre 110 | +overflow-touch 111 | background-color: $pre-background 112 | color: $pre 113 | font-size: 0.875em 114 | overflow-x: auto 115 | padding: 1.25rem 1.5rem 116 | white-space: pre 117 | word-wrap: normal 118 | code 119 | background-color: transparent 120 | color: currentColor 121 | font-size: 1em 122 | padding: 0 123 | 124 | table 125 | td, 126 | th 127 | text-align: left 128 | vertical-align: top 129 | th 130 | color: $text-strong 131 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/base/minireset.sass: -------------------------------------------------------------------------------- 1 | /*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ 2 | // Blocks 3 | html, 4 | body, 5 | p, 6 | ol, 7 | ul, 8 | li, 9 | dl, 10 | dt, 11 | dd, 12 | blockquote, 13 | figure, 14 | fieldset, 15 | legend, 16 | textarea, 17 | pre, 18 | iframe, 19 | hr, 20 | h1, 21 | h2, 22 | h3, 23 | h4, 24 | h5, 25 | h6 26 | margin: 0 27 | padding: 0 28 | 29 | // Headings 30 | h1, 31 | h2, 32 | h3, 33 | h4, 34 | h5, 35 | h6 36 | font-size: 100% 37 | font-weight: normal 38 | 39 | // List 40 | ul 41 | list-style: none 42 | 43 | // Form 44 | button, 45 | input, 46 | select, 47 | textarea 48 | margin: 0 49 | 50 | // Box sizing 51 | html 52 | box-sizing: border-box 53 | 54 | * 55 | &, 56 | &::before, 57 | &::after 58 | box-sizing: inherit 59 | 60 | // Media 61 | img, 62 | embed, 63 | iframe, 64 | object, 65 | video 66 | height: auto 67 | max-width: 100% 68 | 69 | audio 70 | max-width: 100% 71 | 72 | // Iframe 73 | iframe 74 | border: 0 75 | 76 | // Table 77 | table 78 | border-collapse: collapse 79 | border-spacing: 0 80 | 81 | td, 82 | th 83 | padding: 0 84 | text-align: left 85 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/_all.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | 3 | @import "breadcrumb.sass" 4 | @import "card.sass" 5 | @import "dropdown.sass" 6 | @import "level.sass" 7 | @import "list.sass" 8 | @import "media.sass" 9 | @import "menu.sass" 10 | @import "message.sass" 11 | @import "modal.sass" 12 | @import "navbar.sass" 13 | @import "pagination.sass" 14 | @import "panel.sass" 15 | @import "tabs.sass" 16 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/breadcrumb.sass: -------------------------------------------------------------------------------- 1 | $breadcrumb-item-color: $link !default 2 | $breadcrumb-item-hover-color: $link-hover !default 3 | $breadcrumb-item-active-color: $text-strong !default 4 | 5 | $breadcrumb-item-padding-vertical: 0 !default 6 | $breadcrumb-item-padding-horizontal: 0.75em !default 7 | 8 | $breadcrumb-item-separator-color: $grey-light !default 9 | 10 | .breadcrumb 11 | @extend %block 12 | @extend %unselectable 13 | font-size: $size-normal 14 | white-space: nowrap 15 | a 16 | align-items: center 17 | color: $breadcrumb-item-color 18 | display: flex 19 | justify-content: center 20 | padding: $breadcrumb-item-padding-vertical $breadcrumb-item-padding-horizontal 21 | &:hover 22 | color: $breadcrumb-item-hover-color 23 | li 24 | align-items: center 25 | display: flex 26 | &:first-child a 27 | padding-left: 0 28 | &.is-active 29 | a 30 | color: $breadcrumb-item-active-color 31 | cursor: default 32 | pointer-events: none 33 | & + li::before 34 | color: $breadcrumb-item-separator-color 35 | content: "\0002f" 36 | ul, 37 | ol 38 | align-items: flex-start 39 | display: flex 40 | flex-wrap: wrap 41 | justify-content: flex-start 42 | .icon 43 | &:first-child 44 | margin-right: 0.5em 45 | &:last-child 46 | margin-left: 0.5em 47 | // Alignment 48 | &.is-centered 49 | ol, 50 | ul 51 | justify-content: center 52 | &.is-right 53 | ol, 54 | ul 55 | justify-content: flex-end 56 | // Sizes 57 | &.is-small 58 | font-size: $size-small 59 | &.is-medium 60 | font-size: $size-medium 61 | &.is-large 62 | font-size: $size-large 63 | // Styles 64 | &.has-arrow-separator 65 | li + li::before 66 | content: "\02192" 67 | &.has-bullet-separator 68 | li + li::before 69 | content: "\02022" 70 | &.has-dot-separator 71 | li + li::before 72 | content: "\000b7" 73 | &.has-succeeds-separator 74 | li + li::before 75 | content: "\0227B" 76 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/card.sass: -------------------------------------------------------------------------------- 1 | $card-color: $text !default 2 | $card-background-color: $white !default 3 | $card-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default 4 | 5 | $card-header-background-color: transparent !default 6 | $card-header-color: $text-strong !default 7 | $card-header-shadow: 0 1px 2px rgba($black, 0.1) !default 8 | $card-header-weight: $weight-bold !default 9 | 10 | $card-content-background-color: transparent !default 11 | 12 | $card-footer-background-color: transparent !default 13 | $card-footer-border-top: 1px solid $border !default 14 | 15 | .card 16 | background-color: $card-background-color 17 | box-shadow: $card-shadow 18 | color: $card-color 19 | max-width: 100% 20 | position: relative 21 | 22 | .card-header 23 | background-color: $card-header-background-color 24 | align-items: stretch 25 | box-shadow: $card-header-shadow 26 | display: flex 27 | 28 | .card-header-title 29 | align-items: center 30 | color: $card-header-color 31 | display: flex 32 | flex-grow: 1 33 | font-weight: $card-header-weight 34 | padding: 0.75rem 35 | &.is-centered 36 | justify-content: center 37 | 38 | .card-header-icon 39 | align-items: center 40 | cursor: pointer 41 | display: flex 42 | justify-content: center 43 | padding: 0.75rem 44 | 45 | .card-image 46 | display: block 47 | position: relative 48 | 49 | .card-content 50 | background-color: $card-content-background-color 51 | padding: 1.5rem 52 | 53 | .card-footer 54 | background-color: $card-footer-background-color 55 | border-top: $card-footer-border-top 56 | align-items: stretch 57 | display: flex 58 | 59 | .card-footer-item 60 | align-items: center 61 | display: flex 62 | flex-basis: 0 63 | flex-grow: 1 64 | flex-shrink: 0 65 | justify-content: center 66 | padding: 0.75rem 67 | &:not(:last-child) 68 | border-right: $card-footer-border-top 69 | 70 | // Combinations 71 | 72 | .card 73 | .media:not(:last-child) 74 | margin-bottom: 0.75rem 75 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/dropdown.sass: -------------------------------------------------------------------------------- 1 | $dropdown-content-background-color: $white !default 2 | $dropdown-content-arrow: $link !default 3 | $dropdown-content-offset: 4px !default 4 | $dropdown-content-radius: $radius !default 5 | $dropdown-content-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default 6 | $dropdown-content-z: 20 !default 7 | 8 | $dropdown-item-color: $grey-dark !default 9 | $dropdown-item-hover-color: $black !default 10 | $dropdown-item-hover-background-color: $background !default 11 | $dropdown-item-active-color: $link-invert !default 12 | $dropdown-item-active-background-color: $link !default 13 | 14 | $dropdown-divider-background-color: $border !default 15 | 16 | .dropdown 17 | display: inline-flex 18 | position: relative 19 | vertical-align: top 20 | &.is-active, 21 | &.is-hoverable:hover 22 | .dropdown-menu 23 | display: block 24 | &.is-right 25 | .dropdown-menu 26 | left: auto 27 | right: 0 28 | &.is-up 29 | .dropdown-menu 30 | bottom: 100% 31 | padding-bottom: $dropdown-content-offset 32 | padding-top: initial 33 | top: auto 34 | 35 | .dropdown-menu 36 | display: none 37 | left: 0 38 | min-width: 12rem 39 | padding-top: $dropdown-content-offset 40 | position: absolute 41 | top: 100% 42 | z-index: $dropdown-content-z 43 | 44 | .dropdown-content 45 | background-color: $dropdown-content-background-color 46 | border-radius: $dropdown-content-radius 47 | box-shadow: $dropdown-content-shadow 48 | padding-bottom: 0.5rem 49 | padding-top: 0.5rem 50 | 51 | .dropdown-item 52 | color: $dropdown-item-color 53 | display: block 54 | font-size: 0.875rem 55 | line-height: 1.5 56 | padding: 0.375rem 1rem 57 | position: relative 58 | 59 | a.dropdown-item, 60 | button.dropdown-item 61 | padding-right: 3rem 62 | text-align: left 63 | white-space: nowrap 64 | width: 100% 65 | &:hover 66 | background-color: $dropdown-item-hover-background-color 67 | color: $dropdown-item-hover-color 68 | &.is-active 69 | background-color: $dropdown-item-active-background-color 70 | color: $dropdown-item-active-color 71 | 72 | .dropdown-divider 73 | background-color: $dropdown-divider-background-color 74 | border: none 75 | display: block 76 | height: 1px 77 | margin: 0.5rem 0 78 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/level.sass: -------------------------------------------------------------------------------- 1 | .level 2 | @extend %block 3 | align-items: center 4 | justify-content: space-between 5 | code 6 | border-radius: $radius 7 | img 8 | display: inline-block 9 | vertical-align: top 10 | // Modifiers 11 | &.is-mobile 12 | display: flex 13 | .level-left, 14 | .level-right 15 | display: flex 16 | .level-left + .level-right 17 | margin-top: 0 18 | .level-item 19 | &:not(:last-child) 20 | margin-bottom: 0 21 | margin-right: 0.75rem 22 | &:not(.is-narrow) 23 | flex-grow: 1 24 | // Responsiveness 25 | +tablet 26 | display: flex 27 | & > .level-item 28 | &:not(.is-narrow) 29 | flex-grow: 1 30 | 31 | .level-item 32 | align-items: center 33 | display: flex 34 | flex-basis: auto 35 | flex-grow: 0 36 | flex-shrink: 0 37 | justify-content: center 38 | .title, 39 | .subtitle 40 | margin-bottom: 0 41 | // Responsiveness 42 | +mobile 43 | &:not(:last-child) 44 | margin-bottom: 0.75rem 45 | 46 | .level-left, 47 | .level-right 48 | flex-basis: auto 49 | flex-grow: 0 50 | flex-shrink: 0 51 | .level-item 52 | // Modifiers 53 | &.is-flexible 54 | flex-grow: 1 55 | // Responsiveness 56 | +tablet 57 | &:not(:last-child) 58 | margin-right: 0.75rem 59 | 60 | .level-left 61 | align-items: center 62 | justify-content: flex-start 63 | // Responsiveness 64 | +mobile 65 | & + .level-right 66 | margin-top: 1.5rem 67 | +tablet 68 | display: flex 69 | 70 | .level-right 71 | align-items: center 72 | justify-content: flex-end 73 | // Responsiveness 74 | +tablet 75 | display: flex 76 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/list.sass: -------------------------------------------------------------------------------- 1 | $list-background-color: $white !default 2 | $list-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default 3 | $list-radius: $radius !default 4 | 5 | $list-item-border: 1px solid $border !default 6 | $list-item-color: $text !default 7 | $list-item-active-background-color: $link !default 8 | $list-item-active-color: $link-invert !default 9 | $list-item-hover-background-color: $background !default 10 | 11 | .list 12 | @extend %block 13 | background-color: $list-background-color 14 | border-radius: $list-radius 15 | box-shadow: $list-shadow 16 | // &.is-hoverable > .list-item:hover:not(.is-active) 17 | // background-color: $list-item-hover-background-color 18 | // cursor: pointer 19 | 20 | .list-item 21 | display: block 22 | padding: 0.5em 1em 23 | &:not(a) 24 | color: $list-item-color 25 | &:first-child 26 | border-top-left-radius: $list-radius 27 | border-top-right-radius: $list-radius 28 | &:last-child 29 | border-top-left-radius: $list-radius 30 | border-top-right-radius: $list-radius 31 | &:not(:last-child) 32 | border-bottom: $list-item-border 33 | &.is-active 34 | background-color: $list-item-active-background-color 35 | color: $list-item-active-color 36 | 37 | a.list-item 38 | background-color: $list-item-hover-background-color 39 | cursor: pointer -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/media.sass: -------------------------------------------------------------------------------- 1 | .media 2 | align-items: flex-start 3 | display: flex 4 | text-align: left 5 | .content:not(:last-child) 6 | margin-bottom: 0.75rem 7 | .media 8 | border-top: 1px solid rgba($border, 0.5) 9 | display: flex 10 | padding-top: 0.75rem 11 | .content:not(:last-child), 12 | .control:not(:last-child) 13 | margin-bottom: 0.5rem 14 | .media 15 | padding-top: 0.5rem 16 | & + .media 17 | margin-top: 0.5rem 18 | & + .media 19 | border-top: 1px solid rgba($border, 0.5) 20 | margin-top: 1rem 21 | padding-top: 1rem 22 | // Sizes 23 | &.is-large 24 | & + .media 25 | margin-top: 1.5rem 26 | padding-top: 1.5rem 27 | 28 | .media-left, 29 | .media-right 30 | flex-basis: auto 31 | flex-grow: 0 32 | flex-shrink: 0 33 | 34 | .media-left 35 | margin-right: 1rem 36 | 37 | .media-right 38 | margin-left: 1rem 39 | 40 | .media-content 41 | flex-basis: auto 42 | flex-grow: 1 43 | flex-shrink: 1 44 | text-align: left 45 | 46 | +mobile 47 | .media-content 48 | overflow-x: auto 49 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/menu.sass: -------------------------------------------------------------------------------- 1 | $menu-item-color: $text !default 2 | $menu-item-radius: $radius-small !default 3 | $menu-item-hover-color: $text-strong !default 4 | $menu-item-hover-background-color: $background !default 5 | $menu-item-active-color: $link-invert !default 6 | $menu-item-active-background-color: $link !default 7 | 8 | $menu-list-border-left: 1px solid $border !default 9 | 10 | $menu-label-color: $text-light !default 11 | 12 | .menu 13 | font-size: $size-normal 14 | // Sizes 15 | &.is-small 16 | font-size: $size-small 17 | &.is-medium 18 | font-size: $size-medium 19 | &.is-large 20 | font-size: $size-large 21 | 22 | .menu-list 23 | line-height: 1.25 24 | a 25 | border-radius: $menu-item-radius 26 | color: $menu-item-color 27 | display: block 28 | padding: 0.5em 0.75em 29 | &:hover 30 | background-color: $menu-item-hover-background-color 31 | color: $menu-item-hover-color 32 | // Modifiers 33 | &.is-active 34 | background-color: $menu-item-active-background-color 35 | color: $menu-item-active-color 36 | li 37 | ul 38 | border-left: $menu-list-border-left 39 | margin: 0.75em 40 | padding-left: 0.75em 41 | 42 | .menu-label 43 | color: $menu-label-color 44 | font-size: 0.75em 45 | letter-spacing: 0.1em 46 | text-transform: uppercase 47 | &:not(:first-child) 48 | margin-top: 1em 49 | &:not(:last-child) 50 | margin-bottom: 1em 51 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/message.sass: -------------------------------------------------------------------------------- 1 | $message-background-color: $background !default 2 | $message-radius: $radius !default 3 | 4 | $message-header-background-color: $text !default 5 | $message-header-color: $text-invert !default 6 | $message-header-weight: $weight-bold !default 7 | $message-header-padding: 0.75em 1em !default 8 | $message-header-radius: $radius !default 9 | 10 | $message-body-border-color: $border !default 11 | $message-body-border-width: 0 0 0 4px !default 12 | $message-body-color: $text !default 13 | $message-body-padding: 1.25em 1.5em !default 14 | $message-body-radius: $radius !default 15 | 16 | $message-body-pre-background-color: $white !default 17 | $message-body-pre-code-background-color: transparent !default 18 | 19 | $message-header-body-border-width: 0 !default 20 | 21 | .message 22 | @extend %block 23 | background-color: $message-background-color 24 | border-radius: $message-radius 25 | font-size: $size-normal 26 | strong 27 | color: currentColor 28 | a:not(.button):not(.tag):not(.dropdown-item) 29 | color: currentColor 30 | text-decoration: underline 31 | // Sizes 32 | &.is-small 33 | font-size: $size-small 34 | &.is-medium 35 | font-size: $size-medium 36 | &.is-large 37 | font-size: $size-large 38 | // Colors 39 | @each $name, $pair in $colors 40 | $color: nth($pair, 1) 41 | $color-invert: nth($pair, 2) 42 | $color-lightning: max((100% - lightness($color)) - 2%, 0%) 43 | $color-luminance: colorLuminance($color) 44 | $darken-percentage: $color-luminance * 70% 45 | $desaturate-percentage: $color-luminance * 30% 46 | &.is-#{$name} 47 | background-color: lighten($color, $color-lightning) 48 | .message-header 49 | background-color: $color 50 | color: $color-invert 51 | .message-body 52 | border-color: $color 53 | color: desaturate(darken($color, $darken-percentage), $desaturate-percentage) 54 | 55 | .message-header 56 | align-items: center 57 | background-color: $message-header-background-color 58 | border-radius: $message-header-radius $message-header-radius 0 0 59 | color: $message-header-color 60 | display: flex 61 | font-weight: $message-header-weight 62 | justify-content: space-between 63 | line-height: 1.25 64 | padding: $message-header-padding 65 | position: relative 66 | .delete 67 | flex-grow: 0 68 | flex-shrink: 0 69 | margin-left: 0.75em 70 | & + .message-body 71 | border-width: $message-header-body-border-width 72 | border-top-left-radius: 0 73 | border-top-right-radius: 0 74 | 75 | .message-body 76 | border-color: $message-body-border-color 77 | border-radius: $message-body-radius 78 | border-style: solid 79 | border-width: $message-body-border-width 80 | color: $message-body-color 81 | padding: $message-body-padding 82 | code, 83 | pre 84 | background-color: $message-body-pre-background-color 85 | pre code 86 | background-color: $message-body-pre-code-background-color 87 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/modal.sass: -------------------------------------------------------------------------------- 1 | $modal-z: 40 !default 2 | 3 | $modal-background-background-color: rgba($black, 0.86) !default 4 | 5 | $modal-content-width: 640px !default 6 | $modal-content-margin-mobile: 20px !default 7 | $modal-content-spacing-mobile: 160px !default 8 | $modal-content-spacing-tablet: 40px !default 9 | 10 | $modal-close-dimensions: 40px !default 11 | $modal-close-right: 20px !default 12 | $modal-close-top: 20px !default 13 | 14 | $modal-card-spacing: 40px !default 15 | 16 | $modal-card-head-background-color: $background !default 17 | $modal-card-head-border-bottom: 1px solid $border !default 18 | $modal-card-head-padding: 20px !default 19 | $modal-card-head-radius: $radius-large !default 20 | 21 | $modal-card-title-color: $text-strong !default 22 | $modal-card-title-line-height: 1 !default 23 | $modal-card-title-size: $size-4 !default 24 | 25 | $modal-card-foot-radius: $radius-large !default 26 | $modal-card-foot-border-top: 1px solid $border !default 27 | 28 | $modal-card-body-background-color: $white !default 29 | $modal-card-body-padding: 20px !default 30 | 31 | .modal 32 | @extend %overlay 33 | align-items: center 34 | display: none 35 | flex-direction: column 36 | justify-content: center 37 | overflow: hidden 38 | position: fixed 39 | z-index: $modal-z 40 | // Modifiers 41 | &.is-active 42 | display: flex 43 | 44 | .modal-background 45 | @extend %overlay 46 | background-color: $modal-background-background-color 47 | 48 | .modal-content, 49 | .modal-card 50 | margin: 0 $modal-content-margin-mobile 51 | max-height: calc(100vh - #{$modal-content-spacing-mobile}) 52 | overflow: auto 53 | position: relative 54 | width: 100% 55 | // Responsiveness 56 | +tablet 57 | margin: 0 auto 58 | max-height: calc(100vh - #{$modal-content-spacing-tablet}) 59 | width: $modal-content-width 60 | 61 | .modal-close 62 | @extend %delete 63 | background: none 64 | height: $modal-close-dimensions 65 | position: fixed 66 | right: $modal-close-right 67 | top: $modal-close-top 68 | width: $modal-close-dimensions 69 | 70 | .modal-card 71 | display: flex 72 | flex-direction: column 73 | max-height: calc(100vh - #{$modal-card-spacing}) 74 | overflow: hidden 75 | -ms-overflow-y: visible 76 | 77 | .modal-card-head, 78 | .modal-card-foot 79 | align-items: center 80 | background-color: $modal-card-head-background-color 81 | display: flex 82 | flex-shrink: 0 83 | justify-content: flex-start 84 | padding: $modal-card-head-padding 85 | position: relative 86 | 87 | .modal-card-head 88 | border-bottom: $modal-card-head-border-bottom 89 | border-top-left-radius: $modal-card-head-radius 90 | border-top-right-radius: $modal-card-head-radius 91 | 92 | .modal-card-title 93 | color: $modal-card-title-color 94 | flex-grow: 1 95 | flex-shrink: 0 96 | font-size: $modal-card-title-size 97 | line-height: $modal-card-title-line-height 98 | 99 | .modal-card-foot 100 | border-bottom-left-radius: $modal-card-foot-radius 101 | border-bottom-right-radius: $modal-card-foot-radius 102 | border-top: $modal-card-foot-border-top 103 | .button 104 | &:not(:last-child) 105 | margin-right: 10px 106 | 107 | .modal-card-body 108 | +overflow-touch 109 | background-color: $modal-card-body-background-color 110 | flex-grow: 1 111 | flex-shrink: 1 112 | overflow: auto 113 | padding: $modal-card-body-padding 114 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/components/panel.sass: -------------------------------------------------------------------------------- 1 | $panel-item-border: 1px solid $border !default 2 | 3 | $panel-heading-background-color: $background !default 4 | $panel-heading-color: $text-strong !default 5 | $panel-heading-line-height: 1.25 !default 6 | $panel-heading-padding: 0.5em 0.75em !default 7 | $panel-heading-radius: $radius !default 8 | $panel-heading-size: 1.25em !default 9 | $panel-heading-weight: $weight-light !default 10 | 11 | $panel-tab-border-bottom: 1px solid $border !default 12 | $panel-tab-active-border-bottom-color: $link-active-border !default 13 | $panel-tab-active-color: $link-active !default 14 | 15 | $panel-list-item-color: $text !default 16 | $panel-list-item-hover-color: $link !default 17 | 18 | $panel-block-color: $text-strong !default 19 | $panel-block-hover-background-color: $background !default 20 | $panel-block-active-border-left-color: $link !default 21 | $panel-block-active-color: $link-active !default 22 | $panel-block-active-icon-color: $link !default 23 | 24 | $panel-icon-color: $text-light !default 25 | 26 | .panel 27 | font-size: $size-normal 28 | &:not(:last-child) 29 | margin-bottom: 1.5rem 30 | 31 | .panel-heading, 32 | .panel-tabs, 33 | .panel-block 34 | border-bottom: $panel-item-border 35 | border-left: $panel-item-border 36 | border-right: $panel-item-border 37 | &:first-child 38 | border-top: $panel-item-border 39 | 40 | .panel-heading 41 | background-color: $panel-heading-background-color 42 | border-radius: $panel-heading-radius $panel-heading-radius 0 0 43 | color: $panel-heading-color 44 | font-size: $panel-heading-size 45 | font-weight: $panel-heading-weight 46 | line-height: $panel-heading-line-height 47 | padding: $panel-heading-padding 48 | 49 | .panel-tabs 50 | align-items: flex-end 51 | display: flex 52 | font-size: 0.875em 53 | justify-content: center 54 | a 55 | border-bottom: $panel-tab-border-bottom 56 | margin-bottom: -1px 57 | padding: 0.5em 58 | // Modifiers 59 | &.is-active 60 | border-bottom-color: $panel-tab-active-border-bottom-color 61 | color: $panel-tab-active-color 62 | 63 | .panel-list 64 | a 65 | color: $panel-list-item-color 66 | &:hover 67 | color: $panel-list-item-hover-color 68 | 69 | .panel-block 70 | align-items: center 71 | color: $panel-block-color 72 | display: flex 73 | justify-content: flex-start 74 | padding: 0.5em 0.75em 75 | input[type="checkbox"] 76 | margin-right: 0.75em 77 | & > .control 78 | flex-grow: 1 79 | flex-shrink: 1 80 | width: 100% 81 | &.is-wrapped 82 | flex-wrap: wrap 83 | &.is-active 84 | border-left-color: $panel-block-active-border-left-color 85 | color: $panel-block-active-color 86 | .panel-icon 87 | color: $panel-block-active-icon-color 88 | 89 | a.panel-block, 90 | label.panel-block 91 | cursor: pointer 92 | &:hover 93 | background-color: $panel-block-hover-background-color 94 | 95 | .panel-icon 96 | +fa(14px, 1em) 97 | color: $panel-icon-color 98 | margin-right: 0.75em 99 | .fa 100 | font-size: inherit 101 | line-height: inherit 102 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/_all.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | 3 | @import "box.sass" 4 | @import "button.sass" 5 | @import "container.sass" 6 | @import "content.sass" 7 | @import "form.sass" 8 | @import "icon.sass" 9 | @import "image.sass" 10 | @import "notification.sass" 11 | @import "progress.sass" 12 | @import "table.sass" 13 | @import "tag.sass" 14 | @import "title.sass" 15 | 16 | @import "other.sass" 17 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/box.sass: -------------------------------------------------------------------------------- 1 | $box-color: $text !default 2 | $box-background-color: $white !default 3 | $box-radius: $radius-large !default 4 | $box-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default 5 | $box-padding: 1.25rem !default 6 | 7 | $box-link-hover-shadow: 0 2px 3px rgba($black, 0.1), 0 0 0 1px $link !default 8 | $box-link-active-shadow: inset 0 1px 2px rgba($black, 0.2), 0 0 0 1px $link !default 9 | 10 | .box 11 | @extend %block 12 | background-color: $box-background-color 13 | border-radius: $box-radius 14 | box-shadow: $box-shadow 15 | color: $box-color 16 | display: block 17 | padding: $box-padding 18 | 19 | a.box 20 | &:hover, 21 | &:focus 22 | box-shadow: $box-link-hover-shadow 23 | &:active 24 | box-shadow: $box-link-active-shadow 25 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/container.sass: -------------------------------------------------------------------------------- 1 | .container 2 | margin: 0 auto 3 | position: relative 4 | +desktop 5 | max-width: $desktop - (2 * $gap) 6 | width: $desktop - (2 * $gap) 7 | &.is-fluid 8 | margin-left: $gap 9 | margin-right: $gap 10 | max-width: none 11 | width: auto 12 | +until-widescreen 13 | &.is-widescreen 14 | max-width: $widescreen - (2 * $gap) 15 | width: auto 16 | +until-fullhd 17 | &.is-fullhd 18 | max-width: $fullhd - (2 * $gap) 19 | width: auto 20 | +widescreen 21 | max-width: $widescreen - (2 * $gap) 22 | width: $widescreen - (2 * $gap) 23 | +fullhd 24 | max-width: $fullhd - (2 * $gap) 25 | width: $fullhd - (2 * $gap) 26 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/icon.sass: -------------------------------------------------------------------------------- 1 | $icon-dimensions: 1.5rem !default 2 | $icon-dimensions-small: 1rem !default 3 | $icon-dimensions-medium: 2rem !default 4 | $icon-dimensions-large: 3rem !default 5 | 6 | .icon 7 | align-items: center 8 | display: inline-flex 9 | justify-content: center 10 | height: $icon-dimensions 11 | width: $icon-dimensions 12 | // Sizes 13 | &.is-small 14 | height: $icon-dimensions-small 15 | width: $icon-dimensions-small 16 | &.is-medium 17 | height: $icon-dimensions-medium 18 | width: $icon-dimensions-medium 19 | &.is-large 20 | height: $icon-dimensions-large 21 | width: $icon-dimensions-large 22 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/image.sass: -------------------------------------------------------------------------------- 1 | $dimensions: 16 24 32 48 64 96 128 !default 2 | 3 | .image 4 | display: block 5 | position: relative 6 | img 7 | display: block 8 | height: auto 9 | width: 100% 10 | &.is-rounded 11 | border-radius: $radius-rounded 12 | // Ratio 13 | &.is-square, 14 | &.is-1by1, 15 | &.is-5by4, 16 | &.is-4by3, 17 | &.is-3by2, 18 | &.is-5by3, 19 | &.is-16by9, 20 | &.is-2by1, 21 | &.is-3by1, 22 | &.is-4by5, 23 | &.is-3by4, 24 | &.is-2by3, 25 | &.is-3by5, 26 | &.is-9by16, 27 | &.is-1by2, 28 | &.is-1by3 29 | img, 30 | .has-ratio 31 | @extend %overlay 32 | height: 100% 33 | width: 100% 34 | &.is-square, 35 | &.is-1by1 36 | padding-top: 100% 37 | &.is-5by4 38 | padding-top: 80% 39 | &.is-4by3 40 | padding-top: 75% 41 | &.is-3by2 42 | padding-top: 66.6666% 43 | &.is-5by3 44 | padding-top: 60% 45 | &.is-16by9 46 | padding-top: 56.25% 47 | &.is-2by1 48 | padding-top: 50% 49 | &.is-3by1 50 | padding-top: 33.3333% 51 | &.is-4by5 52 | padding-top: 125% 53 | &.is-3by4 54 | padding-top: 133.3333% 55 | &.is-2by3 56 | padding-top: 150% 57 | &.is-3by5 58 | padding-top: 166.6666% 59 | &.is-9by16 60 | padding-top: 177.7777% 61 | &.is-1by2 62 | padding-top: 200% 63 | &.is-1by3 64 | padding-top: 300% 65 | // Sizes 66 | @each $dimension in $dimensions 67 | &.is-#{$dimension}x#{$dimension} 68 | height: $dimension * 1px 69 | width: $dimension * 1px 70 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/notification.sass: -------------------------------------------------------------------------------- 1 | $notification-background-color: $background !default 2 | $notification-radius: $radius !default 3 | $notification-padding: 1.25rem 2.5rem 1.25rem 1.5rem !default 4 | 5 | .notification 6 | @extend %block 7 | background-color: $notification-background-color 8 | border-radius: $notification-radius 9 | padding: $notification-padding 10 | position: relative 11 | a:not(.button):not(.dropdown-item) 12 | color: currentColor 13 | text-decoration: underline 14 | strong 15 | color: currentColor 16 | code, 17 | pre 18 | background: $white 19 | pre code 20 | background: transparent 21 | & > .delete 22 | position: absolute 23 | right: 0.5rem 24 | top: 0.5rem 25 | .title, 26 | .subtitle, 27 | .content 28 | color: currentColor 29 | // Colors 30 | @each $name, $pair in $colors 31 | $color: nth($pair, 1) 32 | $color-invert: nth($pair, 2) 33 | &.is-#{$name} 34 | background-color: $color 35 | color: $color-invert 36 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/other.sass: -------------------------------------------------------------------------------- 1 | .block 2 | @extend %block 3 | 4 | .delete 5 | @extend %delete 6 | 7 | .heading 8 | display: block 9 | font-size: 11px 10 | letter-spacing: 1px 11 | margin-bottom: 5px 12 | text-transform: uppercase 13 | 14 | .highlight 15 | @extend %block 16 | font-weight: $weight-normal 17 | max-width: 100% 18 | overflow: hidden 19 | padding: 0 20 | pre 21 | overflow: auto 22 | max-width: 100% 23 | 24 | .loader 25 | @extend %loader 26 | 27 | .number 28 | align-items: center 29 | background-color: $background 30 | border-radius: $radius-rounded 31 | display: inline-flex 32 | font-size: $size-medium 33 | height: 2em 34 | justify-content: center 35 | margin-right: 1.5rem 36 | min-width: 2.5em 37 | padding: 0.25rem 0.5rem 38 | text-align: center 39 | vertical-align: top 40 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/progress.sass: -------------------------------------------------------------------------------- 1 | $progress-bar-background-color: $border !default 2 | $progress-value-background-color: $text !default 3 | 4 | $progress-indeterminate-duration: 1.5s !default 5 | 6 | .progress 7 | @extend %block 8 | -moz-appearance: none 9 | -webkit-appearance: none 10 | border: none 11 | border-radius: $radius-rounded 12 | display: block 13 | height: $size-normal 14 | overflow: hidden 15 | padding: 0 16 | width: 100% 17 | &::-webkit-progress-bar 18 | background-color: $progress-bar-background-color 19 | &::-webkit-progress-value 20 | background-color: $progress-value-background-color 21 | &::-moz-progress-bar 22 | background-color: $progress-value-background-color 23 | &::-ms-fill 24 | background-color: $progress-value-background-color 25 | border: none 26 | &:indeterminate 27 | animation-duration: $progress-indeterminate-duration 28 | animation-iteration-count: infinite 29 | animation-name: moveIndeterminate 30 | animation-timing-function: linear 31 | background-color: $progress-bar-background-color 32 | background-image: linear-gradient(to right, $text 30%, $progress-bar-background-color 30%) 33 | background-position: top left 34 | background-repeat: no-repeat 35 | background-size: 150% 150% 36 | &::-webkit-progress-bar 37 | background-color: transparent 38 | &::-moz-progress-bar 39 | background-color: transparent 40 | // Colors 41 | @each $name, $pair in $colors 42 | $color: nth($pair, 1) 43 | &.is-#{$name} 44 | &::-webkit-progress-value 45 | background-color: $color 46 | &::-moz-progress-bar 47 | background-color: $color 48 | &::-ms-fill 49 | background-color: $color 50 | &:indeterminate 51 | background-image: linear-gradient(to right, $color 30%, $progress-bar-background-color 30%) 52 | 53 | // Sizes 54 | &.is-small 55 | height: $size-small 56 | &.is-medium 57 | height: $size-medium 58 | &.is-large 59 | height: $size-large 60 | 61 | @keyframes moveIndeterminate 62 | from 63 | background-position: 200% 0 64 | to 65 | background-position: -200% 0 66 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/elements/title.sass: -------------------------------------------------------------------------------- 1 | $title-color: $grey-darker !default 2 | $title-size: $size-3 !default 3 | $title-weight: $weight-semibold !default 4 | $title-line-height: 1.125 !default 5 | $title-strong-color: inherit !default 6 | $title-strong-weight: inherit !default 7 | $title-sub-size: 0.75em !default 8 | $title-sup-size: 0.75em !default 9 | 10 | $subtitle-color: $grey-dark !default 11 | $subtitle-size: $size-5 !default 12 | $subtitle-weight: $weight-normal !default 13 | $subtitle-line-height: 1.25 !default 14 | $subtitle-strong-color: $grey-darker !default 15 | $subtitle-strong-weight: $weight-semibold !default 16 | $subtitle-negative-margin: -1.25rem !default 17 | 18 | .title, 19 | .subtitle 20 | @extend %block 21 | word-break: break-word 22 | em, 23 | span 24 | font-weight: inherit 25 | sub 26 | font-size: $title-sub-size 27 | sup 28 | font-size: $title-sup-size 29 | .tag 30 | vertical-align: middle 31 | 32 | .title 33 | color: $title-color 34 | font-size: $title-size 35 | font-weight: $title-weight 36 | line-height: $title-line-height 37 | strong 38 | color: $title-strong-color 39 | font-weight: $title-strong-weight 40 | & + .highlight 41 | margin-top: -0.75rem 42 | &:not(.is-spaced) + .subtitle 43 | margin-top: $subtitle-negative-margin 44 | // Sizes 45 | @each $size in $sizes 46 | $i: index($sizes, $size) 47 | &.is-#{$i} 48 | font-size: $size 49 | 50 | .subtitle 51 | color: $subtitle-color 52 | font-size: $subtitle-size 53 | font-weight: $subtitle-weight 54 | line-height: $subtitle-line-height 55 | strong 56 | color: $subtitle-strong-color 57 | font-weight: $subtitle-strong-weight 58 | &:not(.is-spaced) + .title 59 | margin-top: $subtitle-negative-margin 60 | // Sizes 61 | @each $size in $sizes 62 | $i: index($sizes, $size) 63 | &.is-#{$i} 64 | font-size: $size 65 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/grid/_all.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | 3 | @import "columns.sass" 4 | @import "tiles.sass" 5 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/grid/tiles.sass: -------------------------------------------------------------------------------- 1 | .tile 2 | align-items: stretch 3 | display: block 4 | flex-basis: 0 5 | flex-grow: 1 6 | flex-shrink: 1 7 | min-height: min-content 8 | // Modifiers 9 | &.is-ancestor 10 | margin-left: -0.75rem 11 | margin-right: -0.75rem 12 | margin-top: -0.75rem 13 | &:last-child 14 | margin-bottom: -0.75rem 15 | &:not(:last-child) 16 | margin-bottom: 0.75rem 17 | &.is-child 18 | margin: 0 !important 19 | &.is-parent 20 | padding: 0.75rem 21 | &.is-vertical 22 | flex-direction: column 23 | & > .tile.is-child:not(:last-child) 24 | margin-bottom: 1.5rem !important 25 | // Responsiveness 26 | +tablet 27 | &:not(.is-child) 28 | display: flex 29 | @for $i from 1 through 12 30 | &.is-#{$i} 31 | flex: none 32 | width: ($i / 12) * 100% 33 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/layout/_all.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | 3 | @import "hero.sass" 4 | @import "section.sass" 5 | @import "footer.sass" 6 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/layout/footer.sass: -------------------------------------------------------------------------------- 1 | $footer-background-color: $white-bis !default 2 | $footer-padding: 3rem 1.5rem 6rem !default 3 | 4 | .footer 5 | background-color: $footer-background-color 6 | padding: $footer-padding 7 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/layout/section.sass: -------------------------------------------------------------------------------- 1 | $section-padding: 3rem 1.5rem !default 2 | $section-padding-medium: 9rem 1.5rem !default 3 | $section-padding-large: 18rem 1.5rem !default 4 | 5 | .section 6 | padding: $section-padding 7 | // Responsiveness 8 | +desktop 9 | // Sizes 10 | &.is-medium 11 | padding: $section-padding-medium 12 | &.is-large 13 | padding: $section-padding-large 14 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/utilities/_all.sass: -------------------------------------------------------------------------------- 1 | @charset "utf-8" 2 | 3 | @import "initial-variables.sass" 4 | @import "functions.sass" 5 | @import "derived-variables.sass" 6 | @import "animations.sass" 7 | @import "mixins.sass" 8 | @import "controls.sass" 9 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/utilities/animations.sass: -------------------------------------------------------------------------------- 1 | @keyframes spinAround 2 | from 3 | transform: rotate(0deg) 4 | to 5 | transform: rotate(359deg) 6 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/utilities/controls.sass: -------------------------------------------------------------------------------- 1 | $control-radius: $radius !default 2 | $control-radius-small: $radius-small !default 3 | 4 | $control-border-width: 1px !default 5 | 6 | $control-height: 2.25em !default 7 | $control-line-height: 1.5 !default 8 | 9 | $control-padding-vertical: calc(0.375em - #{$control-border-width}) !default 10 | $control-padding-horizontal: calc(0.625em - #{$control-border-width}) !default 11 | 12 | =control 13 | -moz-appearance: none 14 | -webkit-appearance: none 15 | align-items: center 16 | border: $control-border-width solid transparent 17 | border-radius: $control-radius 18 | box-shadow: none 19 | display: inline-flex 20 | font-size: $size-normal 21 | height: $control-height 22 | justify-content: flex-start 23 | line-height: $control-line-height 24 | padding-bottom: $control-padding-vertical 25 | padding-left: $control-padding-horizontal 26 | padding-right: $control-padding-horizontal 27 | padding-top: $control-padding-vertical 28 | position: relative 29 | vertical-align: top 30 | // States 31 | &:focus, 32 | &.is-focused, 33 | &:active, 34 | &.is-active 35 | outline: none 36 | &[disabled], 37 | fieldset[disabled] & 38 | cursor: not-allowed 39 | 40 | %control 41 | +control 42 | 43 | // The controls sizes use mixins so they can be used at different breakpoints 44 | =control-small 45 | border-radius: $control-radius-small 46 | font-size: $size-small 47 | =control-medium 48 | font-size: $size-medium 49 | =control-large 50 | font-size: $size-large 51 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/utilities/derived-variables.sass: -------------------------------------------------------------------------------- 1 | $primary: $turquoise !default 2 | 3 | $info: $cyan !default 4 | $success: $green !default 5 | $warning: $yellow !default 6 | $danger: $red !default 7 | 8 | $light: $white-ter !default 9 | $dark: $grey-darker !default 10 | 11 | // Invert colors 12 | 13 | $orange-invert: findColorInvert($orange) !default 14 | $yellow-invert: findColorInvert($yellow) !default 15 | $green-invert: findColorInvert($green) !default 16 | $turquoise-invert: findColorInvert($turquoise) !default 17 | $cyan-invert: findColorInvert($cyan) !default 18 | $blue-invert: findColorInvert($blue) !default 19 | $purple-invert: findColorInvert($purple) !default 20 | $red-invert: findColorInvert($red) !default 21 | 22 | $primary-invert: $turquoise-invert !default 23 | $info-invert: $cyan-invert !default 24 | $success-invert: $green-invert !default 25 | $warning-invert: $yellow-invert !default 26 | $danger-invert: $red-invert !default 27 | $light-invert: $dark !default 28 | $dark-invert: $light !default 29 | 30 | // General colors 31 | 32 | $background: $white-ter !default 33 | 34 | $border: $grey-lighter !default 35 | $border-hover: $grey-light !default 36 | 37 | // Text colors 38 | 39 | $text: $grey-dark !default 40 | $text-invert: findColorInvert($text) !default 41 | $text-light: $grey !default 42 | $text-strong: $grey-darker !default 43 | 44 | // Code colors 45 | 46 | $code: $red !default 47 | $code-background: $background !default 48 | 49 | $pre: $text !default 50 | $pre-background: $background !default 51 | 52 | // Link colors 53 | 54 | $link: $blue !default 55 | $link-invert: $blue-invert !default 56 | $link-visited: $purple !default 57 | 58 | $link-hover: $grey-darker !default 59 | $link-hover-border: $grey-light !default 60 | 61 | $link-focus: $grey-darker !default 62 | $link-focus-border: $blue !default 63 | 64 | $link-active: $grey-darker !default 65 | $link-active-border: $grey-dark !default 66 | 67 | // Typography 68 | 69 | $family-primary: $family-sans-serif !default 70 | $family-secondary: $family-sans-serif !default 71 | $family-code: $family-monospace !default 72 | 73 | $size-small: $size-7 !default 74 | $size-normal: $size-6 !default 75 | $size-medium: $size-5 !default 76 | $size-large: $size-4 !default 77 | 78 | // Lists and maps 79 | $custom-colors: null !default 80 | $custom-shades: null !default 81 | 82 | $colors: mergeColorMaps(("white": ($white, $black), "black": ($black, $white), "light": ($light, $light-invert), "dark": ($dark, $dark-invert), "primary": ($primary, $primary-invert), "link": ($link, $link-invert), "info": ($info, $info-invert), "success": ($success, $success-invert), "warning": ($warning, $warning-invert), "danger": ($danger, $danger-invert)), $custom-colors) !default 83 | $shades: mergeColorMaps(("black-bis": $black-bis, "black-ter": $black-ter, "grey-darker": $grey-darker, "grey-dark": $grey-dark, "grey": $grey, "grey-light": $grey-light, "grey-lighter": $grey-lighter, "white-ter": $white-ter, "white-bis": $white-bis), $custom-shades) !default 84 | 85 | $sizes: $size-1 $size-2 $size-3 $size-4 $size-5 $size-6 $size-7 !default 86 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/utilities/functions.sass: -------------------------------------------------------------------------------- 1 | @function mergeColorMaps($bulma-colors, $custom-colors) 2 | // we return at least bulma hardcoded colors 3 | $merged-colors: $bulma-colors 4 | 5 | // we want a map as input 6 | @if type-of($custom-colors) == 'map' 7 | @each $name, $components in $custom-colors 8 | // color name should be a string and colors pair a list with at least one element 9 | @if type-of($name) == 'string' and (type-of($components) == 'list' or type-of($components) == 'color') and length($components) >= 1 10 | $color-base: null 11 | 12 | // the param can either be a single color 13 | // or a list of 2 colors 14 | @if type-of($components) == 'color' 15 | $color-base: $components 16 | @else if type-of($components) == 'list' 17 | $color-base: nth($components, 1) 18 | 19 | $color-invert: null 20 | // is an inverted color provided in the list 21 | @if length($components) > 1 22 | $color-invert: nth($components, 2) 23 | 24 | // we only want a color as base color 25 | @if type-of($color-base) == 'color' 26 | // if inverted color is not provided or is not a color we compute it 27 | @if type-of($color-invert) != 'color' 28 | $color-invert: findColorInvert($color-base) 29 | 30 | // we merge this colors elements as map with bulma colors (we can override them this way, no multiple definition for the same name) 31 | $merged-colors: map_merge($merged-colors, ($name: ($color-base, $color-invert))) 32 | 33 | @return $merged-colors 34 | 35 | @function powerNumber($number, $exp) 36 | $value: 1 37 | @if $exp > 0 38 | @for $i from 1 through $exp 39 | $value: $value * $number 40 | @else if $exp < 0 41 | @for $i from 1 through -$exp 42 | $value: $value / $number 43 | @return $value 44 | 45 | @function colorLuminance($color) 46 | $color-rgb: ('red': red($color),'green': green($color),'blue': blue($color)) 47 | @each $name, $value in $color-rgb 48 | $adjusted: 0 49 | $value: $value / 255 50 | @if $value < 0.03928 51 | $value: $value / 12.92 52 | @else 53 | $value: ($value + .055) / 1.055 54 | $value: powerNumber($value, 2) 55 | $color-rgb: map-merge($color-rgb, ($name: $value)) 56 | @return (map-get($color-rgb, 'red') * .2126) + (map-get($color-rgb, 'green') * .7152) + (map-get($color-rgb, 'blue') * .0722) 57 | 58 | @function findColorInvert($color) 59 | @if (colorLuminance($color) > 0.55) 60 | @return rgba(#000, 0.7) 61 | @else 62 | @return #fff 63 | -------------------------------------------------------------------------------- /bower_components/bulma/sass/utilities/initial-variables.sass: -------------------------------------------------------------------------------- 1 | // Colors 2 | 3 | $black: hsl(0, 0%, 4%) !default 4 | $black-bis: hsl(0, 0%, 7%) !default 5 | $black-ter: hsl(0, 0%, 14%) !default 6 | 7 | $grey-darker: hsl(0, 0%, 21%) !default 8 | $grey-dark: hsl(0, 0%, 29%) !default 9 | $grey: hsl(0, 0%, 48%) !default 10 | $grey-light: hsl(0, 0%, 71%) !default 11 | $grey-lighter: hsl(0, 0%, 86%) !default 12 | 13 | $white-ter: hsl(0, 0%, 96%) !default 14 | $white-bis: hsl(0, 0%, 98%) !default 15 | $white: hsl(0, 0%, 100%) !default 16 | 17 | $orange: hsl(14, 100%, 53%) !default 18 | $yellow: hsl(48, 100%, 67%) !default 19 | $green: hsl(141, 71%, 48%) !default 20 | $turquoise: hsl(171, 100%, 41%) !default 21 | $cyan: hsl(204, 86%, 53%) !default 22 | $blue: hsl(217, 71%, 53%) !default 23 | $purple: hsl(271, 100%, 71%) !default 24 | $red: hsl(348, 100%, 61%) !default 25 | 26 | // Typography 27 | 28 | $family-sans-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif !default 29 | $family-monospace: monospace !default 30 | $render-mode: optimizeLegibility !default 31 | 32 | $size-1: 3rem !default 33 | $size-2: 2.5rem !default 34 | $size-3: 2rem !default 35 | $size-4: 1.5rem !default 36 | $size-5: 1.25rem !default 37 | $size-6: 1rem !default 38 | $size-7: 0.75rem !default 39 | 40 | $weight-light: 300 !default 41 | $weight-normal: 400 !default 42 | $weight-medium: 500 !default 43 | $weight-semibold: 600 !default 44 | $weight-bold: 700 !default 45 | 46 | // Responsiveness 47 | 48 | // The container horizontal gap, which acts as the offset for breakpoints 49 | $gap: 64px !default 50 | // 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16 51 | $tablet: 769px !default 52 | // 960px container + 4rem 53 | $desktop: 960px + (2 * $gap) !default 54 | // 1152px container + 4rem 55 | $widescreen: 1152px + (2 * $gap) !default 56 | $widescreen-enabled: true !default 57 | // 1344px container + 4rem 58 | $fullhd: 1344px + (2 * $gap) !default 59 | $fullhd-enabled: true !default 60 | 61 | // Miscellaneous 62 | 63 | $easing: ease-out !default 64 | $radius-small: 2px !default 65 | $radius: 4px !default 66 | $radius-large: 6px !default 67 | $radius-rounded: 290486px !default 68 | $speed: 86ms !default 69 | 70 | // Flags 71 | 72 | $variable-columns: true !default 73 | -------------------------------------------------------------------------------- /bower_components/jquery/.bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "main": "dist/jquery.js", 4 | "license": "MIT", 5 | "ignore": [ 6 | "package.json" 7 | ], 8 | "keywords": [ 9 | "jquery", 10 | "javascript", 11 | "browser", 12 | "library" 13 | ], 14 | "homepage": "https://github.com/jquery/jquery-dist", 15 | "version": "3.3.1", 16 | "_release": "3.3.1", 17 | "_resolution": { 18 | "type": "version", 19 | "tag": "3.3.1", 20 | "commit": "9e8ec3d10fad04748176144f108d7355662ae75e" 21 | }, 22 | "_source": "https://github.com/jquery/jquery-dist.git", 23 | "_target": "^3.2.1", 24 | "_originalSource": "jquery" 25 | } -------------------------------------------------------------------------------- /bower_components/jquery/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright JS Foundation and other contributors, https://js.foundation/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/jquery 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /bower_components/jquery/README.md: -------------------------------------------------------------------------------- 1 | # jQuery 2 | 3 | > jQuery is a fast, small, and feature-rich JavaScript library. 4 | 5 | For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/). 6 | For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery). 7 | 8 | If upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog. 9 | 10 | ## Including jQuery 11 | 12 | Below are some of the most common ways to include jQuery. 13 | 14 | ### Browser 15 | 16 | #### Script tag 17 | 18 | ```html 19 | 20 | ``` 21 | 22 | #### Babel 23 | 24 | [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. 25 | 26 | ```js 27 | import $ from "jquery"; 28 | ``` 29 | 30 | #### Browserify/Webpack 31 | 32 | 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... 33 | 34 | ```js 35 | var $ = require("jquery"); 36 | ``` 37 | 38 | #### AMD (Asynchronous Module Definition) 39 | 40 | AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html). 41 | 42 | ```js 43 | define(["jquery"], function($) { 44 | 45 | }); 46 | ``` 47 | 48 | ### Node 49 | 50 | To include jQuery in [Node](nodejs.org), first install with npm. 51 | 52 | ```sh 53 | npm install jquery 54 | ``` 55 | 56 | 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. 57 | 58 | ```js 59 | require("jsdom").env("", function(err, window) { 60 | if (err) { 61 | console.error(err); 62 | return; 63 | } 64 | 65 | var $ = require("jquery")(window); 66 | }); 67 | ``` 68 | -------------------------------------------------------------------------------- /bower_components/jquery/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jquery", 3 | "main": "dist/jquery.js", 4 | "license": "MIT", 5 | "ignore": [ 6 | "package.json" 7 | ], 8 | "keywords": [ 9 | "jquery", 10 | "javascript", 11 | "browser", 12 | "library" 13 | ] 14 | } -------------------------------------------------------------------------------- /bower_components/jquery/external/sizzle/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright jQuery Foundation and other contributors, https://jquery.org/ 2 | 3 | This software consists of voluntary contributions made by many 4 | individuals. For exact contribution history, see the revision history 5 | available at https://github.com/jquery/sizzle 6 | 7 | The following license applies to all parts of this software except as 8 | documented below: 9 | 10 | ==== 11 | 12 | Permission is hereby granted, free of charge, to any person obtaining 13 | a copy of this software and associated documentation files (the 14 | "Software"), to deal in the Software without restriction, including 15 | without limitation the rights to use, copy, modify, merge, publish, 16 | distribute, sublicense, and/or sell copies of the Software, and to 17 | permit persons to whom the Software is furnished to do so, subject to 18 | the following conditions: 19 | 20 | The above copyright notice and this permission notice shall be 21 | included in all copies or substantial portions of the Software. 22 | 23 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 27 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 28 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 29 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 30 | 31 | ==== 32 | 33 | All files located in the node_modules and external directories are 34 | externally maintained libraries used by this software which have their 35 | own licenses; we recommend you read them, as their terms may differ from 36 | the terms above. 37 | -------------------------------------------------------------------------------- /bower_components/jquery/src/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | 4 | "extends": "../.eslintrc-browser.json" 5 | } 6 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/jsonp.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../var/isFunction", 4 | "./var/nonce", 5 | "./var/rquery", 6 | "../ajax" 7 | ], function( jQuery, isFunction, nonce, rquery ) { 8 | 9 | "use strict"; 10 | 11 | var oldCallbacks = [], 12 | rjsonp = /(=)\?(?=&|$)|\?\?/; 13 | 14 | // Default jsonp settings 15 | jQuery.ajaxSetup( { 16 | jsonp: "callback", 17 | jsonpCallback: function() { 18 | var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); 19 | this[ callback ] = true; 20 | return callback; 21 | } 22 | } ); 23 | 24 | // Detect, normalize options and install callbacks for jsonp requests 25 | jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 26 | 27 | var callbackName, overwritten, responseContainer, 28 | jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 29 | "url" : 30 | typeof s.data === "string" && 31 | ( s.contentType || "" ) 32 | .indexOf( "application/x-www-form-urlencoded" ) === 0 && 33 | rjsonp.test( s.data ) && "data" 34 | ); 35 | 36 | // Handle iff the expected data type is "jsonp" or we have a parameter to set 37 | if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 38 | 39 | // Get callback name, remembering preexisting value associated with it 40 | callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? 41 | s.jsonpCallback() : 42 | s.jsonpCallback; 43 | 44 | // Insert callback into url or form data 45 | if ( jsonProp ) { 46 | s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 47 | } else if ( s.jsonp !== false ) { 48 | s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 49 | } 50 | 51 | // Use data converter to retrieve json after script execution 52 | s.converters[ "script json" ] = function() { 53 | if ( !responseContainer ) { 54 | jQuery.error( callbackName + " was not called" ); 55 | } 56 | return responseContainer[ 0 ]; 57 | }; 58 | 59 | // Force json dataType 60 | s.dataTypes[ 0 ] = "json"; 61 | 62 | // Install callback 63 | overwritten = window[ callbackName ]; 64 | window[ callbackName ] = function() { 65 | responseContainer = arguments; 66 | }; 67 | 68 | // Clean-up function (fires after converters) 69 | jqXHR.always( function() { 70 | 71 | // If previous value didn't exist - remove it 72 | if ( overwritten === undefined ) { 73 | jQuery( window ).removeProp( callbackName ); 74 | 75 | // Otherwise restore preexisting value 76 | } else { 77 | window[ callbackName ] = overwritten; 78 | } 79 | 80 | // Save back as free 81 | if ( s[ callbackName ] ) { 82 | 83 | // Make sure that re-using the options doesn't screw things around 84 | s.jsonpCallback = originalSettings.jsonpCallback; 85 | 86 | // Save the callback name for future use 87 | oldCallbacks.push( callbackName ); 88 | } 89 | 90 | // Call if it was a function and we have a response 91 | if ( responseContainer && isFunction( overwritten ) ) { 92 | overwritten( responseContainer[ 0 ] ); 93 | } 94 | 95 | responseContainer = overwritten = undefined; 96 | } ); 97 | 98 | // Delegate to script 99 | return "script"; 100 | } 101 | } ); 102 | 103 | } ); 104 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/load.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../core/stripAndCollapse", 4 | "../var/isFunction", 5 | "../core/parseHTML", 6 | "../ajax", 7 | "../traversing", 8 | "../manipulation", 9 | "../selector" 10 | ], function( jQuery, stripAndCollapse, isFunction ) { 11 | 12 | "use strict"; 13 | 14 | /** 15 | * Load a url into a page 16 | */ 17 | jQuery.fn.load = function( url, params, callback ) { 18 | var selector, type, response, 19 | self = this, 20 | off = url.indexOf( " " ); 21 | 22 | if ( off > -1 ) { 23 | selector = stripAndCollapse( url.slice( off ) ); 24 | url = url.slice( 0, off ); 25 | } 26 | 27 | // If it's a function 28 | if ( isFunction( params ) ) { 29 | 30 | // We assume that it's the callback 31 | callback = params; 32 | params = undefined; 33 | 34 | // Otherwise, build a param string 35 | } else if ( params && typeof params === "object" ) { 36 | type = "POST"; 37 | } 38 | 39 | // If we have elements to modify, make the request 40 | if ( self.length > 0 ) { 41 | jQuery.ajax( { 42 | url: url, 43 | 44 | // If "type" variable is undefined, then "GET" method will be used. 45 | // Make value of this field explicit since 46 | // user can override it through ajaxSetup method 47 | type: type || "GET", 48 | dataType: "html", 49 | data: params 50 | } ).done( function( responseText ) { 51 | 52 | // Save response for use in complete callback 53 | response = arguments; 54 | 55 | self.html( selector ? 56 | 57 | // If a selector was specified, locate the right elements in a dummy div 58 | // Exclude scripts to avoid IE 'Permission Denied' errors 59 | jQuery( "
" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : 60 | 61 | // Otherwise use the full result 62 | responseText ); 63 | 64 | // If the request succeeds, this function gets "data", "status", "jqXHR" 65 | // but they are ignored because response was set above. 66 | // If it fails, this function gets "jqXHR", "status", "error" 67 | } ).always( callback && function( jqXHR, status ) { 68 | self.each( function() { 69 | callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); 70 | } ); 71 | } ); 72 | } 73 | 74 | return this; 75 | }; 76 | 77 | } ); 78 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/parseXML.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core" 3 | ], function( jQuery ) { 4 | 5 | "use strict"; 6 | 7 | // Cross-browser xml parsing 8 | jQuery.parseXML = function( data ) { 9 | var xml; 10 | if ( !data || typeof data !== "string" ) { 11 | return null; 12 | } 13 | 14 | // Support: IE 9 - 11 only 15 | // IE throws on parseFromString with invalid input. 16 | try { 17 | xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 18 | } catch ( e ) { 19 | xml = undefined; 20 | } 21 | 22 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { 23 | jQuery.error( "Invalid XML: " + data ); 24 | } 25 | return xml; 26 | }; 27 | 28 | return jQuery.parseXML; 29 | 30 | } ); 31 | -------------------------------------------------------------------------------- /bower_components/jquery/src/ajax/script.js: -------------------------------------------------------------------------------- 1 | define( [ 2 | "../core", 3 | "../var/document", 4 | "../ajax" 5 | ], function( jQuery, document ) { 6 | 7 | "use strict"; 8 | 9 | // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) 10 | jQuery.ajaxPrefilter( function( s ) { 11 | if ( s.crossDomain ) { 12 | s.contents.script = false; 13 | } 14 | } ); 15 | 16 | // Install script dataType 17 | jQuery.ajaxSetup( { 18 | accepts: { 19 | script: "text/javascript, application/javascript, " + 20 | "application/ecmascript, application/x-ecmascript" 21 | }, 22 | contents: { 23 | script: /\b(?:java|ecma)script\b/ 24 | }, 25 | converters: { 26 | "text script": function( text ) { 27 | jQuery.globalEval( text ); 28 | return text; 29 | } 30 | } 31 | } ); 32 | 33 | // Handle cache's special case and crossDomain 34 | jQuery.ajaxPrefilter( "script", function( s ) { 35 | if ( s.cache === undefined ) { 36 | s.cache = false; 37 | } 38 | if ( s.crossDomain ) { 39 | s.type = "GET"; 40 | } 41 | } ); 42 | 43 | // Bind script tag hack transport 44 | jQuery.ajaxTransport( "script", function( s ) { 45 | 46 | // This transport only deals with cross domain requests 47 | if ( s.crossDomain ) { 48 | var script, callback; 49 | return { 50 | send: function( _, complete ) { 51 | script = jQuery( " 24 | 25 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 | 6 |
7 |

{{ page.title }}

8 |
9 | 10 |
11 | {{ content }} 12 |
13 | 14 |
15 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
5 | 6 |
7 |

{{ page.title }}

8 | 9 |
10 | 11 |
12 | {{ content }} 13 |
14 | 15 |
16 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_plugins/simple_search_filter.rb: -------------------------------------------------------------------------------- 1 | module Jekyll 2 | module CharFilter 3 | def remove_chars(input) 4 | input.gsub! '\\','\' 5 | input.gsub! /\t/, ' ' 6 | input.strip_control_and_extended_characters 7 | end 8 | end 9 | end 10 | 11 | Liquid::Template.register_filter(Jekyll::CharFilter) 12 | 13 | class String 14 | def strip_control_and_extended_characters() 15 | chars.each_with_object("") do |char, str| 16 | str << char if char.ascii_only? and char.ord.between?(32,126) 17 | end 18 | end 19 | end -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_plugins/simple_search_filter_cn.rb: -------------------------------------------------------------------------------- 1 | module Jekyll 2 | module CharFilter 3 | def remove_chars_cn(input) 4 | input.gsub! '\\','\' 5 | input.gsub! /\t/, ' ' 6 | input.gsub! '@','' 7 | input.gsub! '$','' 8 | input.gsub! '%','' 9 | input.gsub! '&','' 10 | input.gsub! '"','' 11 | input.gsub! '{','' 12 | input.gsub! '}','' 13 | input 14 | end 15 | end 16 | end 17 | 18 | Liquid::Template.register_filter(Jekyll::CharFilter) 19 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_posts/2014-11-01-welcome-to-jekyll.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "Welcome to Jekyll!" 4 | date: 2014-11-01 20:07:22 5 | categories: jekyll update 6 | --- 7 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve --watch`, which launches a web server and auto-regenerates your site when a file is updated. 8 | 9 | To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. 10 | 11 | Jekyll also offers powerful support for code snippets: 12 | 13 | {% highlight ruby %} 14 | def print_hi(name) 15 | puts "Hi, #{name}" 16 | end 17 | print_hi('Tom') 18 | # => prints 'Hi, Tom' to STDOUT. 19 | {% endhighlight %} 20 | 21 | Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll’s dedicated Help repository][jekyll-help]. 22 | 23 | [jekyll]: http://jekyllrb.com 24 | [jekyll-gh]: https://github.com/jekyll/jekyll 25 | [jekyll-help]: https://github.com/jekyll/jekyll-help 26 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_posts/2014-11-02-test.markdown: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: "This is just a test" 4 | date: 2014-11-01 20:07:22 5 | categories: jekyll update 6 | --- 7 | 8 | Lorem ispums just some test. 9 | 10 | 11 | You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve --watch`, which launches a web server and auto-regenerates your site when a file is updated. 12 | 13 | To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. 14 | 15 | Jekyll also offers powerful support for code snippets: 16 | 17 | {% highlight ruby %} 18 | def print_hi(name) 19 | puts "Hi, #{name}" 20 | end 21 | print_hi('Tom') 22 | # => prints 'Hi, Tom' to STDOUT. 23 | {% endhighlight %} 24 | 25 | Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll’s dedicated Help repository][jekyll-help]. 26 | 27 | [jekyll]: http://jekyllrb.com 28 | [jekyll-gh]: https://github.com/jekyll/jekyll 29 | [jekyll-help]: https://github.com/jekyll/jekyll-help 30 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/_sass/_syntax-highlighting.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Syntax highlighting styles 3 | */ 4 | .highlight { 5 | background: #fff; 6 | @extend %vertical-rhythm; 7 | 8 | .c { color: #998; font-style: italic } // Comment 9 | .err { color: #a61717; background-color: #e3d2d2 } // Error 10 | .k { font-weight: bold } // Keyword 11 | .o { font-weight: bold } // Operator 12 | .cm { color: #998; font-style: italic } // Comment.Multiline 13 | .cp { color: #999; font-weight: bold } // Comment.Preproc 14 | .c1 { color: #998; font-style: italic } // Comment.Single 15 | .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special 16 | .gd { color: #000; background-color: #fdd } // Generic.Deleted 17 | .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific 18 | .ge { font-style: italic } // Generic.Emph 19 | .gr { color: #a00 } // Generic.Error 20 | .gh { color: #999 } // Generic.Heading 21 | .gi { color: #000; background-color: #dfd } // Generic.Inserted 22 | .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific 23 | .go { color: #888 } // Generic.Output 24 | .gp { color: #555 } // Generic.Prompt 25 | .gs { font-weight: bold } // Generic.Strong 26 | .gu { color: #aaa } // Generic.Subheading 27 | .gt { color: #a00 } // Generic.Traceback 28 | .kc { font-weight: bold } // Keyword.Constant 29 | .kd { font-weight: bold } // Keyword.Declaration 30 | .kp { font-weight: bold } // Keyword.Pseudo 31 | .kr { font-weight: bold } // Keyword.Reserved 32 | .kt { color: #458; font-weight: bold } // Keyword.Type 33 | .m { color: #099 } // Literal.Number 34 | .s { color: #d14 } // Literal.String 35 | .na { color: #008080 } // Name.Attribute 36 | .nb { color: #0086B3 } // Name.Builtin 37 | .nc { color: #458; font-weight: bold } // Name.Class 38 | .no { color: #008080 } // Name.Constant 39 | .ni { color: #800080 } // Name.Entity 40 | .ne { color: #900; font-weight: bold } // Name.Exception 41 | .nf { color: #900; font-weight: bold } // Name.Function 42 | .nn { color: #555 } // Name.Namespace 43 | .nt { color: #000080 } // Name.Tag 44 | .nv { color: #008080 } // Name.Variable 45 | .ow { font-weight: bold } // Operator.Word 46 | .w { color: #bbb } // Text.Whitespace 47 | .mf { color: #099 } // Literal.Number.Float 48 | .mh { color: #099 } // Literal.Number.Hex 49 | .mi { color: #099 } // Literal.Number.Integer 50 | .mo { color: #099 } // Literal.Number.Oct 51 | .sb { color: #d14 } // Literal.String.Backtick 52 | .sc { color: #d14 } // Literal.String.Char 53 | .sd { color: #d14 } // Literal.String.Doc 54 | .s2 { color: #d14 } // Literal.String.Double 55 | .se { color: #d14 } // Literal.String.Escape 56 | .sh { color: #d14 } // Literal.String.Heredoc 57 | .si { color: #d14 } // Literal.String.Interpol 58 | .sx { color: #d14 } // Literal.String.Other 59 | .sr { color: #009926 } // Literal.String.Regex 60 | .s1 { color: #d14 } // Literal.String.Single 61 | .ss { color: #990073 } // Literal.String.Symbol 62 | .bp { color: #999 } // Name.Builtin.Pseudo 63 | .vc { color: #008080 } // Name.Variable.Class 64 | .vg { color: #008080 } // Name.Variable.Global 65 | .vi { color: #008080 } // Name.Variable.Instance 66 | .il { color: #099 } // Literal.Number.Integer.Long 67 | } 68 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: About 4 | permalink: /about/ 5 | --- 6 | 7 | This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](http://jekyllrb.com/) 8 | 9 | You can find the source code for the Jekyll new theme at: [github.com/jglovier/jekyll-new](https://github.com/jglovier/jekyll-new) 10 | 11 | You can find the source code for Jekyll at [github.com/jekyll/jekyll](https://github.com/jekyll/jekyll) 12 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | # Only the main Sass file needs front matter (the dashes are enough) 3 | --- 4 | @charset "utf-8"; 5 | 6 | 7 | 8 | // Our variables 9 | $base-font-family: Helvetica, Arial, sans-serif; 10 | $base-font-size: 16px; 11 | $small-font-size: $base-font-size * 0.875; 12 | $base-line-height: 1.5; 13 | 14 | $spacing-unit: 30px; 15 | 16 | $text-color: #111; 17 | $background-color: #fdfdfd; 18 | $brand-color: #2a7ae2; 19 | 20 | $grey-color: #828282; 21 | $grey-color-light: lighten($grey-color, 40%); 22 | $grey-color-dark: darken($grey-color, 25%); 23 | 24 | $on-palm: 600px; 25 | $on-laptop: 800px; 26 | 27 | 28 | 29 | // Using media queries with like this: 30 | // @include media-query($palm) { 31 | // .wrapper { 32 | // padding-right: $spacing-unit / 2; 33 | // padding-left: $spacing-unit / 2; 34 | // } 35 | // } 36 | @mixin media-query($device) { 37 | @media screen and (max-width: $device) { 38 | @content; 39 | } 40 | } 41 | 42 | 43 | 44 | // Import partials from `sass_dir` (defaults to `_sass`) 45 | @import 46 | "base", 47 | "layout", 48 | "syntax-highlighting" 49 | ; 50 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
6 | 7 |

Posts

8 | 9 |
    10 | {% for post in site.posts %} 11 |
  • 12 | 13 | 14 |

    15 | {{ post.title }} 16 |

    17 |
  • 18 | {% endfor %} 19 |
20 | 21 |

subscribe via RSS

22 | 23 |
24 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/example/search.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | [ 5 | {% for post in site.posts %} 6 | { 7 | "title" : "{{ post.title | escape }}", 8 | "category" : "{{ post.category }}", 9 | "tags" : "{{ post.tags | join: ', ' }}", 10 | "url" : "{{ site.baseurl }}{{ post.url }}", 11 | "date" : "{{ post.date }}" 12 | } {% unless forloop.last %},{% endunless %} 13 | {% endfor %} 14 | ] 15 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simple-jekyll-search", 3 | "version": "1.7.2", 4 | "description": "Simple Jekyll site search using javascript and json", 5 | "main": "dest/simple-jekyll-search.js", 6 | "scripts": { 7 | "cypress": "cypress", 8 | "lint": "standard", 9 | "pretest": "npm run lint", 10 | "prebuild": "npm run test", 11 | "postbuild": "npm run copy-example-code", 12 | "browserify": "browserify -p browser-pack-flat/plugin src/index.js | node scripts/stamp.js > dest/simple-jekyll-search.js", 13 | "build": "npm run browserify && npm run uglify", 14 | "dist": "npm run build && npm run copy-example-code", 15 | "test": "m.test tests/**", 16 | "copy-example-code": "cp dest/* example/js/", 17 | "uglify": "uglifyjs --compress --mangle --ie8 --comments \"/^/*!/\" --output dest/simple-jekyll-search.min.js dest/simple-jekyll-search.js" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "git+https://github.com/christian-fei/Simple-Jekyll-Search.git" 22 | }, 23 | "author": "Christian Fei", 24 | "license": "MIT", 25 | "files": [ 26 | "dest", 27 | "src" 28 | ], 29 | "bugs": { 30 | "url": "https://github.com/christian-fei/Simple-Jekyll-Search/issues" 31 | }, 32 | "homepage": "https://github.com/christian-fei/Simple-Jekyll-Search", 33 | "dependencies": { 34 | "fuzzysearch": "^1.0.3" 35 | }, 36 | "optionalDependencies": { 37 | "cypress": "^2.1.0" 38 | }, 39 | "devDependencies": { 40 | "browser-pack-flat": "^3.2.0", 41 | "browserify": "^16.2.3", 42 | "m.test": "0.0.57", 43 | "standard": "^12.0.1", 44 | "uglify-js": "^3.4.9" 45 | }, 46 | "standard": { 47 | "ignore": [ 48 | "cypress/**", 49 | "example/**", 50 | "dest/**" 51 | ] 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/scripts/stamp.js: -------------------------------------------------------------------------------- 1 | // This file is taken from Bootstrap and adapted. 2 | 3 | /* eslint-env node, es6 */ 4 | 5 | 'use strict' 6 | 7 | const path = require('path') 8 | 9 | const pkg = require(path.resolve('package.json')) 10 | const year = new Date().getFullYear() 11 | 12 | const stampTop = 13 | `/*! 14 | * Simple-Jekyll-Search v${pkg.version} (${pkg.homepage}) 15 | * Copyright 2015-${year}, Christian Fei 16 | * Licensed under the MIT License. 17 | */ 18 | 19 | ` 20 | 21 | process.stdout.write(stampTop) 22 | process.stdin.pipe(process.stdout) 23 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/JSONLoader.js: -------------------------------------------------------------------------------- 1 | /* globals ActiveXObject:false */ 2 | 3 | 'use strict' 4 | 5 | module.exports = { 6 | load: load 7 | } 8 | 9 | function load (location, callback) { 10 | var xhr = getXHR() 11 | xhr.open('GET', location, true) 12 | xhr.onreadystatechange = createStateChangeListener(xhr, callback) 13 | xhr.send() 14 | } 15 | 16 | function createStateChangeListener (xhr, callback) { 17 | return function () { 18 | if (xhr.readyState === 4 && xhr.status === 200) { 19 | try { 20 | callback(null, JSON.parse(xhr.responseText)) 21 | } catch (err) { 22 | callback(err, null) 23 | } 24 | } 25 | } 26 | } 27 | 28 | function getXHR () { 29 | return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP') 30 | } 31 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/OptionsValidator.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | module.exports = function OptionsValidator (params) { 4 | if (!validateParams(params)) { 5 | throw new Error('-- OptionsValidator: required options missing') 6 | } 7 | 8 | if (!(this instanceof OptionsValidator)) { 9 | return new OptionsValidator(params) 10 | } 11 | 12 | var requiredOptions = params.required 13 | 14 | this.getRequiredOptions = function () { 15 | return requiredOptions 16 | } 17 | 18 | this.validate = function (parameters) { 19 | var errors = [] 20 | requiredOptions.forEach(function (requiredOptionName) { 21 | if (typeof parameters[requiredOptionName] === 'undefined') { 22 | errors.push(requiredOptionName) 23 | } 24 | }) 25 | return errors 26 | } 27 | 28 | function validateParams (params) { 29 | if (!params) { 30 | return false 31 | } 32 | return typeof params.required !== 'undefined' && params.required instanceof Array 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/Repository.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | module.exports = { 4 | put: put, 5 | clear: clear, 6 | search: search, 7 | setOptions: setOptions 8 | } 9 | 10 | var FuzzySearchStrategy = require('./SearchStrategies/FuzzySearchStrategy') 11 | var LiteralSearchStrategy = require('./SearchStrategies/LiteralSearchStrategy') 12 | 13 | function NoSort () { 14 | return 0 15 | } 16 | 17 | var data = [] 18 | var opt = {} 19 | 20 | opt.fuzzy = false 21 | opt.limit = 10 22 | opt.searchStrategy = opt.fuzzy ? FuzzySearchStrategy : LiteralSearchStrategy 23 | opt.sort = NoSort 24 | 25 | function put (data) { 26 | if (isObject(data)) { 27 | return addObject(data) 28 | } 29 | if (isArray(data)) { 30 | return addArray(data) 31 | } 32 | return undefined 33 | } 34 | function clear () { 35 | data.length = 0 36 | return data 37 | } 38 | 39 | function isObject (obj) { 40 | return Boolean(obj) && Object.prototype.toString.call(obj) === '[object Object]' 41 | } 42 | 43 | function isArray (obj) { 44 | return Boolean(obj) && Object.prototype.toString.call(obj) === '[object Array]' 45 | } 46 | 47 | function addObject (_data) { 48 | data.push(_data) 49 | return data 50 | } 51 | 52 | function addArray (_data) { 53 | var added = [] 54 | clear() 55 | for (var i = 0, len = _data.length; i < len; i++) { 56 | if (isObject(_data[i])) { 57 | added.push(addObject(_data[i])) 58 | } 59 | } 60 | return added 61 | } 62 | 63 | function search (crit) { 64 | if (!crit) { 65 | return [] 66 | } 67 | return findMatches(data, crit, opt.searchStrategy, opt).sort(opt.sort) 68 | } 69 | 70 | function setOptions (_opt) { 71 | opt = _opt || {} 72 | 73 | opt.fuzzy = _opt.fuzzy || false 74 | opt.limit = _opt.limit || 10 75 | opt.searchStrategy = _opt.fuzzy ? FuzzySearchStrategy : LiteralSearchStrategy 76 | opt.sort = _opt.sort || NoSort 77 | } 78 | 79 | function findMatches (data, crit, strategy, opt) { 80 | var matches = [] 81 | for (var i = 0; i < data.length && matches.length < opt.limit; i++) { 82 | var match = findMatchesInObject(data[i], crit, strategy, opt) 83 | if (match) { 84 | matches.push(match) 85 | } 86 | } 87 | return matches 88 | } 89 | 90 | function findMatchesInObject (obj, crit, strategy, opt) { 91 | for (var key in obj) { 92 | if (!isExcluded(obj[key], opt.exclude) && strategy.matches(obj[key], crit)) { 93 | return obj 94 | } 95 | } 96 | } 97 | 98 | function isExcluded (term, excludedTerms) { 99 | var excluded = false 100 | excludedTerms = excludedTerms || [] 101 | for (var i = 0, len = excludedTerms.length; i < len; i++) { 102 | var excludedTerm = excludedTerms[i] 103 | if (!excluded && new RegExp(term).test(excludedTerm)) { 104 | excluded = true 105 | } 106 | } 107 | return excluded 108 | } 109 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/SearchStrategies/FuzzySearchStrategy.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | var fuzzysearch = require('fuzzysearch') 4 | 5 | module.exports = new FuzzySearchStrategy() 6 | 7 | function FuzzySearchStrategy () { 8 | this.matches = function (string, crit) { 9 | return fuzzysearch(crit.toLowerCase(), string.toLowerCase()) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/SearchStrategies/LiteralSearchStrategy.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | module.exports = new LiteralSearchStrategy() 4 | 5 | function LiteralSearchStrategy () { 6 | this.matches = function (str, crit) { 7 | if (!str) return false 8 | 9 | str = str.trim().toLowerCase() 10 | crit = crit.trim().toLowerCase() 11 | 12 | return crit.split(' ').filter(function (word) { 13 | return str.indexOf(word) >= 0 14 | }).length === crit.split(' ').length 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/Templater.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | module.exports = { 4 | compile: compile, 5 | setOptions: setOptions 6 | } 7 | 8 | var options = {} 9 | options.pattern = /\{(.*?)\}/g 10 | options.template = '' 11 | options.middleware = function () {} 12 | 13 | function setOptions (_options) { 14 | options.pattern = _options.pattern || options.pattern 15 | options.template = _options.template || options.template 16 | if (typeof _options.middleware === 'function') { 17 | options.middleware = _options.middleware 18 | } 19 | } 20 | 21 | function compile (data) { 22 | return options.template.replace(options.pattern, function (match, prop) { 23 | var value = options.middleware(prop, data[prop], options.template) 24 | if (typeof value !== 'undefined') { 25 | return value 26 | } 27 | return data[prop] || match 28 | }) 29 | } 30 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/index.js: -------------------------------------------------------------------------------- 1 | (function (window) { 2 | 'use strict' 3 | 4 | var options = { 5 | searchInput: null, 6 | resultsContainer: null, 7 | json: [], 8 | success: Function.prototype, 9 | searchResultTemplate: '
  • {title}
  • ', 10 | templateMiddleware: Function.prototype, 11 | sortMiddleware: function () { 12 | return 0 13 | }, 14 | noResultsText: 'No results found', 15 | limit: 10, 16 | fuzzy: false, 17 | exclude: [] 18 | } 19 | 20 | var requiredOptions = ['searchInput', 'resultsContainer', 'json'] 21 | 22 | var templater = require('./Templater') 23 | var repository = require('./Repository') 24 | var jsonLoader = require('./JSONLoader') 25 | var optionsValidator = require('./OptionsValidator')({ 26 | required: requiredOptions 27 | }) 28 | var utils = require('./utils') 29 | 30 | window.SimpleJekyllSearch = function (_options) { 31 | var errors = optionsValidator.validate(_options) 32 | if (errors.length > 0) { 33 | throwError('You must specify the following required options: ' + requiredOptions) 34 | } 35 | 36 | options = utils.merge(options, _options) 37 | 38 | templater.setOptions({ 39 | template: options.searchResultTemplate, 40 | middleware: options.templateMiddleware 41 | }) 42 | 43 | repository.setOptions({ 44 | fuzzy: options.fuzzy, 45 | limit: options.limit, 46 | sort: options.sortMiddleware 47 | }) 48 | 49 | if (utils.isJSON(options.json)) { 50 | initWithJSON(options.json) 51 | } else { 52 | initWithURL(options.json) 53 | } 54 | 55 | return { 56 | search: search 57 | } 58 | } 59 | 60 | function initWithJSON (json) { 61 | options.success(json) 62 | repository.put(json) 63 | registerInput() 64 | } 65 | 66 | function initWithURL (url) { 67 | jsonLoader.load(url, function (err, json) { 68 | if (err) { 69 | throwError('failed to get JSON (' + url + ')') 70 | } 71 | initWithJSON(json) 72 | }) 73 | } 74 | 75 | function emptyResultsContainer () { 76 | options.resultsContainer.innerHTML = '' 77 | } 78 | 79 | function appendToResultsContainer (text) { 80 | options.resultsContainer.innerHTML += text 81 | } 82 | 83 | function registerInput () { 84 | options.searchInput.addEventListener('keyup', function (e) { 85 | if (isWhitelistedKey(e.which)) { 86 | emptyResultsContainer() 87 | search(e.target.value) 88 | } 89 | }) 90 | } 91 | 92 | function search (query) { 93 | if (isValidQuery(query)) { 94 | emptyResultsContainer() 95 | render(repository.search(query), query) 96 | } 97 | } 98 | 99 | function render (results, query) { 100 | var len = results.length 101 | if (len === 0) { 102 | return appendToResultsContainer(options.noResultsText) 103 | } 104 | for (var i = 0; i < len; i++) { 105 | results[i].query = query 106 | appendToResultsContainer(templater.compile(results[i])) 107 | } 108 | } 109 | 110 | function isValidQuery (query) { 111 | return query && query.length > 0 112 | } 113 | 114 | function isWhitelistedKey (key) { 115 | return [13, 16, 20, 37, 38, 39, 40, 91].indexOf(key) === -1 116 | } 117 | 118 | function throwError (message) { 119 | throw new Error('SimpleJekyllSearch --- ' + message) 120 | } 121 | })(window) 122 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/src/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | module.exports = { 4 | merge: merge, 5 | isJSON: isJSON 6 | } 7 | 8 | function merge (defaultParams, mergeParams) { 9 | var mergedOptions = {} 10 | for (var option in defaultParams) { 11 | mergedOptions[option] = defaultParams[option] 12 | if (typeof mergeParams[option] !== 'undefined') { 13 | mergedOptions[option] = mergeParams[option] 14 | } 15 | } 16 | return mergedOptions 17 | } 18 | 19 | function isJSON (json) { 20 | try { 21 | if (json instanceof Object && JSON.parse(JSON.stringify(json))) { 22 | return true 23 | } 24 | return false 25 | } catch (err) { 26 | return false 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/tests/OptionsValidator.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* globals test */ 3 | 4 | const { strictEqual } = require('assert') 5 | const OptionsValidator = require('../src/OptionsValidator.js') 6 | 7 | test('OptionsValidator', () => { 8 | test('can be instanciated with options', () => { 9 | const requiredOptions = ['foo', 'bar'] 10 | const optionsValidator = new OptionsValidator({ 11 | required: requiredOptions 12 | }) 13 | 14 | strictEqual(optionsValidator.getRequiredOptions(), requiredOptions) 15 | }) 16 | 17 | test('#validate', () => { 18 | test('returns empty errors array for valid options', () => { 19 | const requiredOptions = ['foo', 'bar'] 20 | const optionsValidator = new OptionsValidator({ 21 | required: requiredOptions 22 | }) 23 | 24 | const errors = optionsValidator.validate({ 25 | foo: '', 26 | bar: '' 27 | }) 28 | 29 | strictEqual(errors.length, 0) 30 | }) 31 | test('returns array with errors for invalid options', () => { 32 | const requiredOptions = ['foo', 'bar'] 33 | const optionsValidator = new OptionsValidator({ 34 | required: requiredOptions 35 | }) 36 | 37 | const errors = optionsValidator.validate({ 38 | foo: '' 39 | }) 40 | 41 | strictEqual(errors.length, 1) 42 | }) 43 | }) 44 | }) 45 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/tests/Repository.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* globals test beforeEach afterEach */ 3 | /* eslint-disable node/no-deprecated-api */ 4 | 5 | const { deepEqual } = require('assert') 6 | 7 | const barElement = { title: 'bar', content: 'bar' } 8 | const almostBarElement = { title: 'almostbar', content: 'almostbar' } 9 | const loremElement = { title: 'lorem', content: 'lorem ipsum' } 10 | 11 | const data = [barElement, almostBarElement, loremElement] 12 | 13 | test('Repository', () => { 14 | let repository 15 | 16 | test('finds a simple string', () => { 17 | deepEqual(repository.search('bar'), [barElement, almostBarElement]) 18 | }) 19 | 20 | test('limits the search results to one even if found more', () => { 21 | repository.setOptions({ limit: 1 }) 22 | deepEqual(repository.search('bar'), [barElement]) 23 | }) 24 | 25 | test('finds a long string', () => { 26 | deepEqual(repository.search('lorem ipsum'), [loremElement]) 27 | }) 28 | 29 | test('finds a fuzzy string', () => { 30 | repository.setOptions({ fuzzy: true }) 31 | deepEqual(repository.search('lrm ism'), [loremElement]) 32 | }) 33 | 34 | test('returns empty search results when an empty criteria is provided', () => { 35 | deepEqual(repository.search(''), []) 36 | }) 37 | 38 | test('excludes items from search', () => { 39 | repository.setOptions({ 40 | exclude: ['almostbar'] 41 | }) 42 | deepEqual(repository.search('almostbar'), []) 43 | }) 44 | 45 | test('excludes items from search', () => { 46 | repository.setOptions({ 47 | sort: (a, b) => { 48 | return a.title.localeCompare(b.title) 49 | } 50 | }) 51 | deepEqual(repository.search('r'), [almostBarElement, barElement, loremElement]) 52 | }) 53 | 54 | beforeEach(() => { 55 | repository = require('../src/Repository.js') 56 | repository.put(data) 57 | }) 58 | 59 | afterEach(() => { 60 | repository.clear() 61 | }) 62 | }) 63 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/tests/SearchStrategies/FuzzySearchStrategy.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* globals test */ 3 | 4 | const { strictEqual } = require('assert') 5 | const FuzzySearchStrategy = require('../../src/SearchStrategies/FuzzySearchStrategy') 6 | 7 | test('FuzzySearchStrategy', () => { 8 | test('does not match words that don\'t contain the search criteria', () => { 9 | strictEqual(FuzzySearchStrategy.matches('fuzzy', 'fzyyy'), false) 10 | strictEqual(FuzzySearchStrategy.matches('react', 'angular'), false) 11 | 12 | strictEqual(FuzzySearchStrategy.matches('what the heck', 'wth?'), false) 13 | }) 14 | 15 | test('matches words containing the search criteria', () => { 16 | strictEqual(FuzzySearchStrategy.matches('fuzzy', 'fzy'), true) 17 | strictEqual(FuzzySearchStrategy.matches('react', 'rct'), true) 18 | 19 | strictEqual(FuzzySearchStrategy.matches('what the heck', 'wth'), true) 20 | }) 21 | 22 | test('is case insensitive', () => { 23 | strictEqual(FuzzySearchStrategy.matches('Different Cases', 'dc'), true) 24 | strictEqual(FuzzySearchStrategy.matches('UPPERCASE', 'upprcs'), true) 25 | strictEqual(FuzzySearchStrategy.matches('lowercase', 'lc'), true) 26 | strictEqual(FuzzySearchStrategy.matches('DiFfErENt cASeS', 'dc'), true) 27 | }) 28 | }) 29 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/tests/SearchStrategies/LiteralSearchStrategy.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* globals test */ 3 | 4 | const { strictEqual } = require('assert') 5 | const LiteralSearchStrategy = require('../../src/SearchStrategies/LiteralSearchStrategy') 6 | 7 | test('LiteralSearchStrategy', () => { 8 | test('matches a word that is contained in the search criteria (single words)', () => { 9 | strictEqual(LiteralSearchStrategy.matches('hello world test search text', 'world'), true) 10 | }) 11 | 12 | test('does not match if a word is not contained in the search criteria', () => { 13 | strictEqual(LiteralSearchStrategy.matches('hello world test search text', 'hello my world'), false) 14 | }) 15 | 16 | test('matches a word that is contained in the search criteria (multiple words)', () => { 17 | strictEqual(LiteralSearchStrategy.matches('hello world test search text', 'hello text world'), true) 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/tests/Templater.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* globals test beforeEach */ 3 | 4 | const { strictEqual } = require('assert') 5 | 6 | test('Templater', () => { 7 | let templater 8 | 9 | test('renders the template with the provided data', () => { 10 | strictEqual(templater.compile({ foo: 'bar' }), 'bar') 11 | 12 | templater.setOptions({ 13 | template: 'url' 14 | }) 15 | 16 | strictEqual(templater.compile({ url: 'http://google.com' }), 'url') 17 | }) 18 | 19 | test('renders the template with the provided data and query', () => { 20 | strictEqual(templater.compile({ foo: 'bar' }), 'bar') 21 | 22 | templater.setOptions({ 23 | template: 'url' 24 | }) 25 | 26 | strictEqual(templater.compile({ url: 'http://google.com', query: 'bar' }), 'url') 27 | }) 28 | 29 | test('replaces not found properties with the original pattern', () => { 30 | const template = '{foo}' 31 | templater.setOptions({ 32 | template 33 | }) 34 | strictEqual(templater.compile({ x: 'bar' }), template) 35 | }) 36 | 37 | test('allows custom patterns to be set', () => { 38 | templater.setOptions({ 39 | template: '{{foo}}', 40 | pattern: /\{\{(.*?)\}\}/g 41 | }) 42 | strictEqual(templater.compile({ foo: 'bar' }), 'bar') 43 | }) 44 | 45 | test('middleware', () => { 46 | test('middleware gets parameter to return new replacement', () => { 47 | templater.setOptions({ 48 | template: '{foo} - {bar}', 49 | middleware (prop, value) { 50 | if (prop === 'bar') { 51 | return value.replace(/^\//, '') 52 | } 53 | } 54 | }) 55 | 56 | const compiled = templater.compile({ foo: 'foo', bar: '/leading/slash' }) 57 | 58 | strictEqual(compiled, 'foo - leading/slash') 59 | }) 60 | }) 61 | 62 | beforeEach(() => { 63 | templater = require('../src/Templater.js') 64 | templater.setOptions({ 65 | template: '{foo}', 66 | pattern: /\{(.*?)\}/g 67 | }) 68 | }) 69 | }) 70 | -------------------------------------------------------------------------------- /bower_components/simple-jekyll-search/tests/utils.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | /* globals test */ 3 | 4 | const { strictEqual, ok } = require('assert') 5 | 6 | test('utils', () => { 7 | const utils = require('../src/utils') 8 | 9 | test('#merge', () => { 10 | test('merges objects', () => { 11 | const defaultOptions = { foo: '', bar: '' } 12 | const options = { bar: 'overwritten' } 13 | const mergedOptions = utils.merge(defaultOptions, options) 14 | 15 | strictEqual(mergedOptions.foo, defaultOptions.foo) 16 | strictEqual(mergedOptions.bar, options.bar) 17 | }) 18 | }) 19 | 20 | test('#isJSON', () => { 21 | test('returns true if is JSON object', () => { 22 | ok(utils.isJSON({ foo: 'bar' })) 23 | }) 24 | }) 25 | }) 26 | -------------------------------------------------------------------------------- /src/CNAME: -------------------------------------------------------------------------------- 1 | bestofml.com -------------------------------------------------------------------------------- /src/_assets/css/libs/_mixins.scss: -------------------------------------------------------------------------------- 1 | @mixin font-smoothing($value: on) { 2 | @if $value == on { 3 | -webkit-font-smoothing: antialiased; 4 | -moz-osx-font-smoothing: grayscale; 5 | } 6 | @else { 7 | -webkit-font-smoothing: subpixel-antialiased; 8 | -moz-osx-font-smoothing: auto; 9 | } 10 | } 11 | @mixin placeholder-color($value) { 12 | &::-webkit-input-placeholder { /* Chrome/Opera/Safari */ 13 | color: $value; 14 | } 15 | &::-moz-placeholder { /* Firefox 19+ */ 16 | color: $value; 17 | } 18 | &:-ms-input-placeholder { /* IE 10+ */ 19 | color: $value; 20 | } 21 | &:-moz-placeholder { /* Firefox 18- */ 22 | color: $value; 23 | } 24 | &::placeholder { /* Most modern browsers support this now. */ 25 | color: $value; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/_assets/css/style.scss: -------------------------------------------------------------------------------- 1 | @import 'bulma/bulma'; 2 | @import 'libs/mixins'; 3 | 4 | html { 5 | body { 6 | @include font-smoothing(on); 7 | .burger { 8 | color: $grey-dark; 9 | } 10 | .navbar-item{ 11 | font-size: 1em; 12 | } 13 | .controls { 14 | box-sizing: initial !important; 15 | } 16 | .box { 17 | &.use-theme { 18 | min-height: 350px; 19 | max-height: 350px; 20 | overflow: auto; 21 | .info { 22 | padding: 10px 0px; 23 | border-bottom: 1px solid $grey-lighter; 24 | border-top: 1px solid $grey-lighter; 25 | } 26 | } 27 | } 28 | #search-section { 29 | display: none; 30 | } 31 | .search{ 32 | background-color: $grey-dark; 33 | color: #fff; 34 | input[type="text"] { 35 | border: 0px; 36 | border-bottom: 4px solid #fff; 37 | color: #fff; 38 | @include placeholder-color(#fff); 39 | font-size: 3em; 40 | } 41 | .search-hide { 42 | cursor: pointer !important; 43 | pointer-events: auto !important; 44 | height: 100% !important; 45 | } 46 | li { 47 | font-size: 1.2em; 48 | line-height: 2em; 49 | } 50 | a{ 51 | color: #aaa; 52 | } 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/_assets/javascript/main.js: -------------------------------------------------------------------------------- 1 | //= require jquery/dist/jquery.min.js 2 | //= require simple-jekyll-search/dest/simple-jekyll-search.min.js 3 | 4 | var sjs = SimpleJekyllSearch({ 5 | searchInput: document.getElementById('search-input'), 6 | resultsContainer: document.getElementById('results-container'), 7 | json: '/search.json', 8 | searchResultTemplate: '
  • {title}{category}
  • ', 9 | }) 10 | $(document).keyup(function(e) { 11 | if (e.keyCode === 27) $("#search-section").hide("fast"); // esc 12 | if ($("#search-input").val() != ""){ 13 | $("#search-destructions").hide("fast") 14 | } else { 15 | $("#search-destructions").show() 16 | } 17 | }); 18 | $(document).click(function(e) { 19 | if ($("#search-input").val() == "") $("#search-destructions").show() 20 | }); 21 | $(document).ready(function() { 22 | $(".search-hide").click(function(){ 23 | $("#search-section").hide("fast"); 24 | }); 25 | $(".search-show").click(function(e){ 26 | e.preventDefault(); 27 | $("#search-section").toggle("fast"); 28 | $("#results-container").text("") 29 | $("input:text:visible:first").val("").focus(); 30 | }); 31 | }); 32 | 33 | document.addEventListener('DOMContentLoaded', function () { 34 | 35 | // Get all "navbar-burger" elements 36 | var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0); 37 | 38 | // Check if there are any navbar burgers 39 | if ($navbarBurgers.length > 0) { 40 | 41 | // Add a click event on each of them 42 | $navbarBurgers.forEach(function ($el) { 43 | $el.addEventListener('click', function () { 44 | 45 | // Get the target from the "data-target" attribute 46 | var target = $el.dataset.target; 47 | var $target = document.getElementById(target); 48 | 49 | // Toggle the class on both the "navbar-burger" and the "navbar-menu" 50 | $el.classList.toggle('is-active'); 51 | $target.classList.toggle('is-active'); 52 | 53 | }); 54 | }); 55 | } 56 | 57 | }); 58 | -------------------------------------------------------------------------------- /src/_includes/_footer.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    5 | Maintained by RemoteML.com & the Community 6 |

    7 |

    Contribute on GitHub

    8 |
    9 |
    10 |
    11 | -------------------------------------------------------------------------------- /src/_includes/_nav.html: -------------------------------------------------------------------------------- 1 | 24 | {% include search.html %} 25 | -------------------------------------------------------------------------------- /src/_includes/card.html: -------------------------------------------------------------------------------- 1 | {% assign category_name=include['data'][site.cards.group_by.name] %} 2 | {% include function-set_category_path.html name=category_name %} 3 |
    4 | 7 |
    8 |

    9 | {{ include['data'][site.cards.group_by.name] | truncate: 40 }}
    10 | {% for item in site.cards.meta %} 11 | {% if include['data'][item.name] %} 12 | {% if item.name == "url" %} 13 | {{ include['data'][item.name] | replace: "http://", "" | replace: "https://", "" | replace: "www.", "" | replace_regex: "/$", "" | truncate: 20 }}
    14 | {% else %} 15 | {{ include['data'][item.name] | replace: "http://", "" | replace: "https://", "" | replace: "www.", "" | truncate: 25 }}
    16 | {% endif %} 17 | {% endif %} 18 | {% endfor %} 19 |

    20 |
    21 |
    22 | {{ include['data']['description'] | markdownify }} 23 |
    24 |
    25 | -------------------------------------------------------------------------------- /src/_includes/function-set_category_path.html: -------------------------------------------------------------------------------- 1 | {% capture category_path %} 2 | {% for category in site.data['categories'] %} 3 | {% if category.name == include.name %} 4 | {{ category.path }} 5 | {% endif %} 6 | {% endfor %} 7 | {% endcapture %} 8 | -------------------------------------------------------------------------------- /src/_includes/hero-intro.html: -------------------------------------------------------------------------------- 1 | {% capture cards_count %}{{ site.data[site.cards.data] | size }}{% endcapture %} 2 | 3 | 20 | 21 |
    22 | 23 | 24 | -------------------------------------------------------------------------------- /src/_includes/search.html: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /src/_includes/section-cards.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    {{ include.caption }}

    5 |
    6 | {% for card in include['cards'] %} 7 |
    {% include card.html data=card %}
    8 | {% endfor %} 9 |
    10 |
    11 |
    12 |
    13 | -------------------------------------------------------------------------------- /src/_layouts/card.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {% assign category_name=page['card'][site.cards.group_by.name] %} 5 | {% include function-set_category_path.html name=category_name %} 6 |
    7 |
    8 |

    {{ page.card.name }}

    9 |
    10 |
    11 |
    12 | {{ page['card'][site.cards.group_by.name] }}
    13 | {% for item in site.cards.meta %} 14 | {% if page.card[item.name] %} 15 | {% if item.name == "url" %} 16 | {{ page.card[item.name] | replace: "http://", "" | replace: "https://", "" | replace: "www.", "" | replace_regex: "/$", "" | truncate: 40 }}
    17 | {% else %} 18 | {{ page.card[item.name] | replace: "http://", "" | replace: "https://", "" | replace: "www.", "" | replace_regex: "/$", "" | truncate: 40 }}
    {% endif %} 19 | {% endif %} 20 | {% endfor %} 21 |
    22 |
    23 |
    24 | {{page.card.description | markdownify}} 25 |
    26 |
    27 |
    28 |
    29 | {% if page.comments.show %} 30 |
    31 | 46 | 47 | {% endif %} 48 | 49 |
    50 |
    51 | -------------------------------------------------------------------------------- /src/_layouts/cards.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {% assign caption=page[site.cards.group_by.name] %} 5 | {% assign data=page[site.cards.data] %} 6 | {% include section-cards.html caption=caption cards=data %} 7 | -------------------------------------------------------------------------------- /src/_layouts/default.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: compress 3 | --- 4 | 5 | 6 | 7 | {% if site.analytics-id %} 8 | 14 | 15 | {% endif %} 16 | 17 | 18 | 19 | {{ page.pagetitle | default: site.title }} 20 | {% asset style.css %} 21 | 22 | 23 | 24 | {% include _nav.html %} 25 | {{ content }} 26 | {% asset main.js %} 27 | {% include _footer.html %} 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/_layouts/home.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {% include hero-intro.html %} 5 |
    6 |
    7 |
    8 | {{ content }} 9 |
    10 |
    11 |
    12 | -------------------------------------------------------------------------------- /src/_plugins/generator.rb: -------------------------------------------------------------------------------- 1 | require "json" 2 | 3 | class CardGenerator < Jekyll::Generator 4 | 5 | def generate(site) 6 | data_file = site.config['cards']['data'] # ex: companies 7 | 8 | complete_info = site 9 | .data[data_file] 10 | .map { |name, details| details.merge({'name' => name}) } 11 | 12 | site.data[data_file] = complete_info.reverse 13 | 14 | categories = complete_info 15 | .group_by { |category| [category[site.config['cards']['group_by']['name']], category[site.config['cards']['group_by']['name']].downcase.gsub(/[^0-9a-zA-Z]/, "-")] } 16 | .sort_by { |key, _values| key[0] } 17 | .reduce([]) do |acc, group| 18 | acc << { data_file => group.last, 'name' => group.first.first, 'path' => group.first.last } 19 | end 20 | 21 | site.data['categories'] = categories 22 | categories.each { |category| site.pages << build_category_page(site, category) } 23 | 24 | site.data[site.config['cards']['data']].each do |card| 25 | site.pages << build_card_page(site, card) 26 | end 27 | 28 | site.pages << build_search(site) 29 | end 30 | 31 | def build_search(site) 32 | json = site.data[site.config['cards']['data']].map do |card| 33 | { 34 | 'title' => card['name'], 35 | 'category' => card[site.config['cards']['group_by']['name']], 36 | 'url' => card['slug'], 37 | } 38 | end 39 | page = Jekyll::PageWithoutAFile.new(site, site.source, "./", "search.json") 40 | page.content = json.to_json 41 | page 42 | end 43 | 44 | def build_card_page(site, card) 45 | page_name = card['name'].downcase.gsub(/[^0-9a-zA-Z]/, "-") 46 | page = Jekyll::PageWithoutAFile.new(site, site.source, site.config['cards']['data'], "#{page_name}.md") 47 | page.data['layout'] = 'card' 48 | card['slug'] = "/#{site.config['cards']['data']}/#{page_name}" 49 | page.data['card'] = card 50 | comments = site.config['cards']['comments'] 51 | comments = card['comments'] unless card['comments'].nil? 52 | page.data['comments'] = { 53 | 'id' => page_name, 54 | 'show' => comments 55 | } 56 | page.data['pagetitle'] = card['name'] + " - Best of Machine Learning" 57 | page 58 | end 59 | 60 | def build_category_page(site, category) 61 | data = site.config["cards"]["data"] 62 | category_name = site.config["cards"]["group_by"]["caption"] 63 | category_field = site.config["cards"]["group_by"]["name"] 64 | page = Jekyll::PageWithoutAFile.new(site, site.source, category_name, "#{category['path']}.md") 65 | page.data[category_field] = category['name'] 66 | page.data[data] = category[data] 67 | page.data['layout'] = 'cards' 68 | page.data['pagetitle'] = "Best Machine Learning " + category['name'] 69 | page 70 | end 71 | end 72 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RemoteML/bestofml/552096b93480c990fb0a94c915864b1df00d2a14/src/favicon.ico -------------------------------------------------------------------------------- /src/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {% assign cards = site.data[site.cards.data] | slice: 0, 8 %} 5 | {% include hero-intro.html %} 6 | {% include section-cards.html caption="Recently Added" cards=cards %} 7 | --------------------------------------------------------------------------------