├── .gitignore ├── LICENSE ├── README.md ├── _config.landscape.yml ├── _config.yml ├── netlify.toml ├── package.json ├── pnpm-lock.yaml ├── renovate.json ├── scaffolds ├── draft.md ├── page.md └── post.md ├── source ├── _posts │ └── hello-world.md └── admin │ ├── config.yml │ └── index.html └── themes ├── .gitkeep └── landscape ├── .gitignore ├── Gruntfile.js ├── LICENSE ├── README.md ├── _config.yml ├── languages ├── de.yml ├── default.yml ├── es.yml ├── fr.yml ├── ja.yml ├── ko.yml ├── nl.yml ├── no.yml ├── pt.yml ├── ru.yml ├── zh-CN.yml └── zh-TW.yml ├── layout ├── _partial │ ├── after-footer.ejs │ ├── archive-post.ejs │ ├── archive.ejs │ ├── article.ejs │ ├── footer.ejs │ ├── gauges-analytics.ejs │ ├── google-analytics.ejs │ ├── head.ejs │ ├── header.ejs │ ├── mobile-nav.ejs │ ├── post │ │ ├── category.ejs │ │ ├── date.ejs │ │ ├── gallery.ejs │ │ ├── nav.ejs │ │ ├── tag.ejs │ │ └── title.ejs │ └── sidebar.ejs ├── _widget │ ├── archive.ejs │ ├── category.ejs │ ├── recent_posts.ejs │ ├── tag.ejs │ └── tagcloud.ejs ├── archive.ejs ├── category.ejs ├── index.ejs ├── layout.ejs ├── page.ejs ├── post.ejs └── tag.ejs ├── package.json ├── scripts └── fancybox.js └── source ├── css ├── _extend.styl ├── _partial │ ├── archive.styl │ ├── article.styl │ ├── comment.styl │ ├── footer.styl │ ├── header.styl │ ├── highlight.styl │ ├── mobile.styl │ ├── sidebar-aside.styl │ ├── sidebar-bottom.styl │ └── sidebar.styl ├── _util │ ├── grid.styl │ └── mixin.styl ├── _variables.styl ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── images │ └── banner.jpg └── style.styl ├── fancybox ├── blank.gif ├── fancybox_loading.gif ├── fancybox_loading@2x.gif ├── fancybox_overlay.png ├── fancybox_sprite.png ├── fancybox_sprite@2x.png ├── helpers │ ├── fancybox_buttons.png │ ├── jquery.fancybox-buttons.css │ ├── jquery.fancybox-buttons.js │ ├── jquery.fancybox-media.js │ ├── jquery.fancybox-thumbs.css │ └── jquery.fancybox-thumbs.js ├── jquery.fancybox.css ├── jquery.fancybox.js └── jquery.fancybox.pack.js └── js └── script.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | # Hexo build output 133 | .DS_Store 134 | Thumbs.db 135 | db.json 136 | public/ 137 | .deploy*/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Demo Macro 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 | --- 2 | title: README 3 | --- 4 | 5 | # hexo-boilerplate-netlify-cms 6 | 7 | ![Netlify](https://img.shields.io/netlify/2a5ff8ae-a2d0-47f7-a90b-67f5c1b4fb5b) 8 | ![GitHub](https://img.shields.io/github/license/DemoMacro/hexo-boilerplate-netlify-cms) 9 | [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) 10 | 11 | > Hexo boilerplate integrated with Netlify CMS, powered by Demo Macro. 12 | 13 | [![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/DemoMacro/hexo-boilerplate-netlify-cms&stack=cms) 14 | 15 | ## Manual start 16 | 17 | ### [Fork](https://github.com/DemoMacro/hexo-boilerplate-netlify-cms/fork) on Github 18 | 19 | More info: [Hexo Documentation](https://hexo.io/docs/) 20 | 21 | ### Deploy to Netlify 22 | 23 | More info: [A Step-by-Step Guide: Hexo on Netlify](https://www.netlify.com/blog/2015/10/26/a-step-by-step-guide-hexo-on-netlify/) 24 | 25 | ### Enable Identity and Git Gateway 26 | 27 | Netlify's Identity and Git Gateway services allow you to manage CMS admin users for your site without requiring them to have an account with your Git host or commit access on your repo. From your site dashboard on Netlify: 28 | 29 | 1. Go to **Settings > Identity**, and select **Enable Identity service**. 30 | 2. Under **Registration preferences**, select **Open** or **Invite only**. In most cases, you want only invited users to access your CMS, but if you're just experimenting, you can leave it open for convenience. 31 | 3. If you'd like to allow one-click login with services like Google and GitHub, check the boxes next to the services you'd like to use, under **External providers**. 32 | 4. Scroll down to **Services > Git Gateway**, and click **Enable Git Gateway**. This authenticates with your Git host and generates an API access token. In this case, we're leaving the **Roles** field blank, which means any logged in user may access the CMS. 33 | 34 | More info: [Git Gateway](https://docs.netlify.com/visitor-access/git-gateway/) 35 | 36 | ### Add the Netlify Identity Widget 37 | 38 | You will need to add it to the `` of your CMS index page at /admin/index.html and to the `` of the main index page of your website. We can use Netlify's script injection feature to include this script in your website. 39 | 40 | ```html 41 | 42 | 43 | ``` 44 | 45 | Using Netlify's script injection feature, add the following script to the main index page of your website before the close body tag. 46 | 47 | ```html 48 | 59 | ``` 60 | 61 | ### Congratulations 62 | 63 | You can now manage the content of your website at https://yoursite.netlify.com/admin/. 64 | 65 | ## License 66 | 67 | [MIT](LICENSE) © [Demo Macro](https://github.com/DemoMacro) 68 | -------------------------------------------------------------------------------- /_config.landscape.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/_config.landscape.yml -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Hexo Configuration 2 | ## Docs: https://hexo.io/docs/configuration.html 3 | ## Source: https://github.com/hexojs/hexo/ 4 | 5 | # Site 6 | title: Hexo 7 | subtitle: "" 8 | description: "" 9 | keywords: 10 | author: John Doe 11 | language: en 12 | timezone: "" 13 | 14 | # URL 15 | ## Set your site url here. For example, if you use GitHub Page, set url as 'https://username.github.io/project' 16 | url: http://example.com 17 | permalink: :year/:month/:day/:title/ 18 | permalink_defaults: 19 | pretty_urls: 20 | trailing_index: true # Set to false to remove trailing 'index.html' from permalinks 21 | trailing_html: true # Set to false to remove trailing '.html' from permalinks 22 | 23 | # Directory 24 | source_dir: source 25 | public_dir: public 26 | tag_dir: tags 27 | archive_dir: archives 28 | category_dir: categories 29 | code_dir: downloads/code 30 | i18n_dir: :lang 31 | skip_render: admin/** 32 | 33 | # Writing 34 | new_post_name: :title.md # File name of new posts 35 | default_layout: post 36 | titlecase: false # Transform title into titlecase 37 | external_link: 38 | enable: true # Open external links in new tab 39 | field: site # Apply to the whole site 40 | exclude: "" 41 | filename_case: 0 42 | render_drafts: false 43 | post_asset_folder: false 44 | relative_link: false 45 | future: true 46 | highlight: 47 | enable: true 48 | line_number: true 49 | auto_detect: false 50 | tab_replace: "" 51 | wrap: true 52 | hljs: false 53 | prismjs: 54 | enable: false 55 | preprocess: true 56 | line_number: true 57 | tab_replace: "" 58 | 59 | # Home page setting 60 | # path: Root path for your blogs index page. (default = '') 61 | # per_page: Posts displayed per page. (0 = disable pagination) 62 | # order_by: Posts order. (Order by date descending by default) 63 | index_generator: 64 | path: "" 65 | per_page: 10 66 | order_by: -date 67 | 68 | # Category & Tag 69 | default_category: uncategorized 70 | category_map: 71 | tag_map: 72 | 73 | # Metadata elements 74 | ## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta 75 | meta_generator: true 76 | 77 | # Date / Time format 78 | ## Hexo uses Moment.js to parse and display date 79 | ## You can customize the date format as defined in 80 | ## http://momentjs.com/docs/#/displaying/format/ 81 | date_format: YYYY-MM-DD 82 | time_format: HH:mm:ss 83 | ## updated_option supports 'mtime', 'date', 'empty' 84 | updated_option: "mtime" 85 | 86 | # Pagination 87 | ## Set per_page to 0 to disable pagination 88 | per_page: 10 89 | pagination_dir: page 90 | 91 | # Include / Exclude file(s) 92 | ## include:/exclude: options only apply to the 'source/' folder 93 | include: 94 | exclude: 95 | ignore: 96 | 97 | # Extensions 98 | ## Plugins: https://hexo.io/plugins/ 99 | ## Themes: https://hexo.io/themes/ 100 | theme: landscape 101 | 102 | # Deployment 103 | ## Docs: https://hexo.io/docs/one-command-deployment 104 | deploy: 105 | type: "" 106 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "public" 3 | command = "hexo generate" -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-boilerplate-netlify-cms", 3 | "version": "0.0.0", 4 | "description": "Hexo boilerplate integrated with Netlify CMS, powered by Demo Macro.", 5 | "private": true, 6 | "devDependencies": { 7 | "hexo": "6.3.0", 8 | "hexo-generator-archive": "2.0.0", 9 | "hexo-generator-index": "3.0.0", 10 | "hexo-generator-category": "2.0.0", 11 | "hexo-generator-tag": "2.0.0", 12 | "hexo-renderer-ejs": "2.0.0", 13 | "hexo-renderer-marked": "6.0.0", 14 | "hexo-renderer-stylus": "3.0.0", 15 | "hexo-server": "3.0.0", 16 | "hexo-theme-landscape": "1.0.0" 17 | }, 18 | "scripts": { 19 | "build": "hexo generate", 20 | "clean": "hexo clean", 21 | "deploy": "hexo deploy", 22 | "server": "hexo server" 23 | }, 24 | "hexo": { 25 | "version": "5.4.2" 26 | }, 27 | "repository": { 28 | "type": "git", 29 | "url": "git+https://github.com/DemoMacro/hexo-boilerplate-netlify-cms.git" 30 | }, 31 | "keywords": [ 32 | "hexo", 33 | "boilerplate", 34 | "netlify", 35 | "netlify-cms" 36 | ], 37 | "author": { 38 | "name": "Demo Macro", 39 | "email": "abc@imst.xyz", 40 | "url": "https://imst.xyz/" 41 | }, 42 | "license": "MIT", 43 | "bugs": { 44 | "url": "https://github.com/DemoMacro/hexo-boilerplate-netlify-cms/issues" 45 | }, 46 | "homepage": "https://github.com/DemoMacro/hexo-boilerplate-netlify-cms#readme" 47 | } 48 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | hexo: 6.3.0 5 | hexo-generator-archive: 2.0.0 6 | hexo-generator-category: 2.0.0 7 | hexo-generator-index: 3.0.0 8 | hexo-generator-tag: 2.0.0 9 | hexo-renderer-ejs: 2.0.0 10 | hexo-renderer-marked: 6.0.0 11 | hexo-renderer-stylus: 3.0.0 12 | hexo-server: 3.0.0 13 | hexo-theme-landscape: 1.0.0 14 | 15 | devDependencies: 16 | hexo: 6.3.0 17 | hexo-generator-archive: 2.0.0 18 | hexo-generator-category: 2.0.0 19 | hexo-generator-index: 3.0.0 20 | hexo-generator-tag: 2.0.0 21 | hexo-renderer-ejs: 2.0.0 22 | hexo-renderer-marked: 6.0.0 23 | hexo-renderer-stylus: 3.0.0 24 | hexo-server: 3.0.0 25 | hexo-theme-landscape: 1.0.0 26 | 27 | packages: 28 | 29 | /@adobe/css-tools/4.2.0: 30 | resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} 31 | dev: true 32 | 33 | /@tootallnate/once/2.0.0: 34 | resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} 35 | engines: {node: '>= 10'} 36 | dev: true 37 | 38 | /a-sync-waterfall/1.0.1: 39 | resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} 40 | dev: true 41 | 42 | /abab/2.0.6: 43 | resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} 44 | dev: true 45 | 46 | /abbrev/1.1.1: 47 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 48 | dev: true 49 | 50 | /accepts/1.3.8: 51 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 52 | engines: {node: '>= 0.6'} 53 | dependencies: 54 | mime-types: 2.1.35 55 | negotiator: 0.6.3 56 | dev: true 57 | 58 | /acorn-globals/7.0.1: 59 | resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} 60 | dependencies: 61 | acorn: 8.8.2 62 | acorn-walk: 8.2.0 63 | dev: true 64 | 65 | /acorn-walk/8.2.0: 66 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 67 | engines: {node: '>=0.4.0'} 68 | dev: true 69 | 70 | /acorn/8.8.2: 71 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 72 | engines: {node: '>=0.4.0'} 73 | hasBin: true 74 | dev: true 75 | 76 | /agent-base/6.0.2: 77 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 78 | engines: {node: '>= 6.0.0'} 79 | dependencies: 80 | debug: 4.3.4 81 | transitivePeerDependencies: 82 | - supports-color 83 | dev: true 84 | 85 | /ansi-regex/5.0.1: 86 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 87 | engines: {node: '>=8'} 88 | dev: true 89 | 90 | /ansi-styles/4.3.0: 91 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 92 | engines: {node: '>=8'} 93 | dependencies: 94 | color-convert: 2.0.1 95 | dev: true 96 | 97 | /anymatch/3.1.2: 98 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 99 | engines: {node: '>= 8'} 100 | dependencies: 101 | normalize-path: 3.0.0 102 | picomatch: 2.3.1 103 | dev: true 104 | 105 | /archy/1.0.0: 106 | resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} 107 | dev: true 108 | 109 | /argparse/2.0.1: 110 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 111 | dev: true 112 | 113 | /asap/2.0.6: 114 | resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} 115 | dev: true 116 | 117 | /async/3.2.3: 118 | resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} 119 | dev: true 120 | 121 | /asynckit/0.4.0: 122 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 123 | dev: true 124 | 125 | /balanced-match/1.0.2: 126 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 127 | dev: true 128 | 129 | /basic-auth/2.0.1: 130 | resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} 131 | engines: {node: '>= 0.8'} 132 | dependencies: 133 | safe-buffer: 5.1.2 134 | dev: true 135 | 136 | /binary-extensions/2.2.0: 137 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 138 | engines: {node: '>=8'} 139 | dev: true 140 | 141 | /bluebird/3.7.2: 142 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 143 | dev: true 144 | 145 | /brace-expansion/1.1.11: 146 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 147 | dependencies: 148 | balanced-match: 1.0.2 149 | concat-map: 0.0.1 150 | dev: true 151 | 152 | /brace-expansion/2.0.1: 153 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 154 | dependencies: 155 | balanced-match: 1.0.2 156 | dev: true 157 | 158 | /braces/3.0.2: 159 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 160 | engines: {node: '>=8'} 161 | dependencies: 162 | fill-range: 7.0.1 163 | dev: true 164 | 165 | /bytes/3.0.0: 166 | resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} 167 | engines: {node: '>= 0.8'} 168 | dev: true 169 | 170 | /camel-case/4.1.2: 171 | resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} 172 | dependencies: 173 | pascal-case: 3.1.2 174 | tslib: 2.4.0 175 | dev: true 176 | 177 | /chalk/4.1.2: 178 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 179 | engines: {node: '>=10'} 180 | dependencies: 181 | ansi-styles: 4.3.0 182 | supports-color: 7.2.0 183 | dev: true 184 | 185 | /chokidar/3.5.3: 186 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 187 | engines: {node: '>= 8.10.0'} 188 | dependencies: 189 | anymatch: 3.1.2 190 | braces: 3.0.2 191 | glob-parent: 5.1.2 192 | is-binary-path: 2.1.0 193 | is-glob: 4.0.3 194 | normalize-path: 3.0.0 195 | readdirp: 3.6.0 196 | optionalDependencies: 197 | fsevents: 2.3.2 198 | dev: true 199 | 200 | /color-convert/2.0.1: 201 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 202 | engines: {node: '>=7.0.0'} 203 | dependencies: 204 | color-name: 1.1.4 205 | dev: true 206 | 207 | /color-name/1.1.4: 208 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 209 | dev: true 210 | 211 | /combined-stream/1.0.8: 212 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 213 | engines: {node: '>= 0.8'} 214 | dependencies: 215 | delayed-stream: 1.0.0 216 | dev: true 217 | 218 | /command-exists/1.2.9: 219 | resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} 220 | dev: true 221 | 222 | /commander/5.1.0: 223 | resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} 224 | engines: {node: '>= 6'} 225 | dev: true 226 | 227 | /compressible/2.0.18: 228 | resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} 229 | engines: {node: '>= 0.6'} 230 | dependencies: 231 | mime-db: 1.52.0 232 | dev: true 233 | 234 | /compression/1.7.4: 235 | resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} 236 | engines: {node: '>= 0.8.0'} 237 | dependencies: 238 | accepts: 1.3.8 239 | bytes: 3.0.0 240 | compressible: 2.0.18 241 | debug: 2.6.9 242 | on-headers: 1.0.2 243 | safe-buffer: 5.1.2 244 | vary: 1.1.2 245 | transitivePeerDependencies: 246 | - supports-color 247 | dev: true 248 | 249 | /concat-map/0.0.1: 250 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 251 | dev: true 252 | 253 | /connect/3.7.0: 254 | resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} 255 | engines: {node: '>= 0.10.0'} 256 | dependencies: 257 | debug: 2.6.9 258 | finalhandler: 1.1.2 259 | parseurl: 1.3.3 260 | utils-merge: 1.0.1 261 | transitivePeerDependencies: 262 | - supports-color 263 | dev: true 264 | 265 | /cross-spawn/7.0.3: 266 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 267 | engines: {node: '>= 8'} 268 | dependencies: 269 | path-key: 3.1.1 270 | shebang-command: 2.0.0 271 | which: 2.0.2 272 | dev: true 273 | 274 | /cssom/0.3.8: 275 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 276 | dev: true 277 | 278 | /cssom/0.5.0: 279 | resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} 280 | dev: true 281 | 282 | /cssstyle/2.3.0: 283 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 284 | engines: {node: '>=8'} 285 | dependencies: 286 | cssom: 0.3.8 287 | dev: true 288 | 289 | /cuid/2.1.8: 290 | resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} 291 | dev: true 292 | 293 | /data-urls/3.0.2: 294 | resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} 295 | engines: {node: '>=12'} 296 | dependencies: 297 | abab: 2.0.6 298 | whatwg-mimetype: 3.0.0 299 | whatwg-url: 11.0.0 300 | dev: true 301 | 302 | /debug/2.6.9: 303 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 304 | peerDependencies: 305 | supports-color: '*' 306 | peerDependenciesMeta: 307 | supports-color: 308 | optional: true 309 | dependencies: 310 | ms: 2.0.0 311 | dev: true 312 | 313 | /debug/4.3.4: 314 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 315 | engines: {node: '>=6.0'} 316 | peerDependencies: 317 | supports-color: '*' 318 | peerDependenciesMeta: 319 | supports-color: 320 | optional: true 321 | dependencies: 322 | ms: 2.1.2 323 | dev: true 324 | 325 | /decimal.js/10.4.3: 326 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} 327 | dev: true 328 | 329 | /deep-is/0.1.4: 330 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 331 | dev: true 332 | 333 | /deepmerge/4.2.2: 334 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 335 | engines: {node: '>=0.10.0'} 336 | dev: true 337 | 338 | /define-lazy-prop/2.0.0: 339 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 340 | engines: {node: '>=8'} 341 | dev: true 342 | 343 | /delayed-stream/1.0.0: 344 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 345 | engines: {node: '>=0.4.0'} 346 | dev: true 347 | 348 | /depd/2.0.0: 349 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 350 | engines: {node: '>= 0.8'} 351 | dev: true 352 | 353 | /destroy/1.2.0: 354 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 355 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 356 | dev: true 357 | 358 | /dom-serializer/1.4.1: 359 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 360 | dependencies: 361 | domelementtype: 2.3.0 362 | domhandler: 4.3.1 363 | entities: 2.2.0 364 | dev: true 365 | 366 | /domelementtype/2.3.0: 367 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 368 | dev: true 369 | 370 | /domexception/4.0.0: 371 | resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} 372 | engines: {node: '>=12'} 373 | dependencies: 374 | webidl-conversions: 7.0.0 375 | dev: true 376 | 377 | /domhandler/4.3.1: 378 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 379 | engines: {node: '>= 4'} 380 | dependencies: 381 | domelementtype: 2.3.0 382 | dev: true 383 | 384 | /dompurify/2.4.4: 385 | resolution: {integrity: sha512-1e2SpqHiRx4DPvmRuXU5J0di3iQACwJM+mFGE2HAkkK7Tbnfk9WcghcAmyWc9CRrjyRRUpmuhPUH6LphQQR3EQ==} 386 | dev: true 387 | 388 | /domutils/2.8.0: 389 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 390 | dependencies: 391 | dom-serializer: 1.4.1 392 | domelementtype: 2.3.0 393 | domhandler: 4.3.1 394 | dev: true 395 | 396 | /ee-first/1.1.1: 397 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 398 | dev: true 399 | 400 | /ejs/3.1.8: 401 | resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} 402 | engines: {node: '>=0.10.0'} 403 | hasBin: true 404 | dependencies: 405 | jake: 10.8.5 406 | dev: true 407 | 408 | /encodeurl/1.0.2: 409 | resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} 410 | engines: {node: '>= 0.8'} 411 | dev: true 412 | 413 | /entities/2.2.0: 414 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 415 | dev: true 416 | 417 | /entities/3.0.1: 418 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} 419 | engines: {node: '>=0.12'} 420 | dev: true 421 | 422 | /entities/4.4.0: 423 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} 424 | engines: {node: '>=0.12'} 425 | dev: true 426 | 427 | /escape-html/1.0.3: 428 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} 429 | dev: true 430 | 431 | /escodegen/2.0.0: 432 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 433 | engines: {node: '>=6.0'} 434 | hasBin: true 435 | dependencies: 436 | esprima: 4.0.1 437 | estraverse: 5.3.0 438 | esutils: 2.0.3 439 | optionator: 0.8.3 440 | optionalDependencies: 441 | source-map: 0.6.1 442 | dev: true 443 | 444 | /esprima/4.0.1: 445 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 446 | engines: {node: '>=4'} 447 | hasBin: true 448 | dev: true 449 | 450 | /estraverse/5.3.0: 451 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 452 | engines: {node: '>=4.0'} 453 | dev: true 454 | 455 | /esutils/2.0.3: 456 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 457 | engines: {node: '>=0.10.0'} 458 | dev: true 459 | 460 | /etag/1.8.1: 461 | resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} 462 | engines: {node: '>= 0.6'} 463 | dev: true 464 | 465 | /fast-equals/3.0.3: 466 | resolution: {integrity: sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==} 467 | dev: true 468 | 469 | /fast-levenshtein/2.0.6: 470 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 471 | dev: true 472 | 473 | /filelist/1.0.4: 474 | resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} 475 | dependencies: 476 | minimatch: 5.1.0 477 | dev: true 478 | 479 | /fill-range/7.0.1: 480 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 481 | engines: {node: '>=8'} 482 | dependencies: 483 | to-regex-range: 5.0.1 484 | dev: true 485 | 486 | /finalhandler/1.1.2: 487 | resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} 488 | engines: {node: '>= 0.8'} 489 | dependencies: 490 | debug: 2.6.9 491 | encodeurl: 1.0.2 492 | escape-html: 1.0.3 493 | on-finished: 2.3.0 494 | parseurl: 1.3.3 495 | statuses: 1.5.0 496 | unpipe: 1.0.0 497 | transitivePeerDependencies: 498 | - supports-color 499 | dev: true 500 | 501 | /form-data/4.0.0: 502 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 503 | engines: {node: '>= 6'} 504 | dependencies: 505 | asynckit: 0.4.0 506 | combined-stream: 1.0.8 507 | mime-types: 2.1.35 508 | dev: true 509 | 510 | /fresh/0.5.2: 511 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} 512 | engines: {node: '>= 0.6'} 513 | dev: true 514 | 515 | /fs.realpath/1.0.0: 516 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 517 | dev: true 518 | 519 | /fsevents/2.3.2: 520 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 521 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 522 | os: [darwin] 523 | requiresBuild: true 524 | dev: true 525 | optional: true 526 | 527 | /function-bind/1.1.1: 528 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 529 | dev: true 530 | 531 | /glob-parent/5.1.2: 532 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 533 | engines: {node: '>= 6'} 534 | dependencies: 535 | is-glob: 4.0.3 536 | dev: true 537 | 538 | /glob/7.2.0: 539 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 540 | dependencies: 541 | fs.realpath: 1.0.0 542 | inflight: 1.0.6 543 | inherits: 2.0.4 544 | minimatch: 3.1.2 545 | once: 1.4.0 546 | path-is-absolute: 1.0.1 547 | dev: true 548 | 549 | /graceful-fs/4.2.10: 550 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 551 | dev: true 552 | 553 | /has-flag/4.0.0: 554 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 555 | engines: {node: '>=8'} 556 | dev: true 557 | 558 | /has/1.0.3: 559 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 560 | engines: {node: '>= 0.4.0'} 561 | dependencies: 562 | function-bind: 1.1.1 563 | dev: true 564 | 565 | /hexo-cli/4.3.0: 566 | resolution: {integrity: sha512-lr46h1tK1RNQJAQZbzKYAWGsmqF5DLrW6xKEakqv/o9JqgdeempBjIm7HqjcZEUBpWij4EO65X6YJiDmT9LR7g==} 567 | engines: {node: '>=10.13.0'} 568 | hasBin: true 569 | dependencies: 570 | abbrev: 1.1.1 571 | bluebird: 3.7.2 572 | chalk: 4.1.2 573 | command-exists: 1.2.9 574 | hexo-fs: 3.1.0 575 | hexo-log: 2.0.0 576 | hexo-util: 2.7.0 577 | minimist: 1.2.6 578 | resolve: 1.22.0 579 | tildify: 2.0.0 580 | dev: true 581 | 582 | /hexo-front-matter/3.0.0: 583 | resolution: {integrity: sha512-hSQTPUmB/BCe1BFYmXRkPyLk8rqbBqHCQq+rjwwOJuEfOADrFaVK2VPZb90tJzPyXE1xSxpgCxE/AZq0CyTVwg==} 584 | engines: {node: '>=12.13.0'} 585 | dependencies: 586 | js-yaml: 4.1.0 587 | dev: true 588 | 589 | /hexo-fs/3.1.0: 590 | resolution: {integrity: sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==} 591 | engines: {node: '>=10.13.0'} 592 | dependencies: 593 | bluebird: 3.7.2 594 | chokidar: 3.5.3 595 | graceful-fs: 4.2.10 596 | hexo-util: 2.7.0 597 | dev: true 598 | 599 | /hexo-generator-archive/2.0.0: 600 | resolution: {integrity: sha512-KikJk7dGFbtNHOgqtLFGf5T/S8n1paGp+Gy0KfVDz+HKYhGbXOouyiZkmc3O9KrYt6ja14rmkMhq7KKGtvfehw==} 601 | engines: {node: '>=14'} 602 | dependencies: 603 | hexo-pagination: 3.0.0 604 | dev: true 605 | 606 | /hexo-generator-category/2.0.0: 607 | resolution: {integrity: sha512-9OduRBf3WeRDa4BR0kAfRjOVHur7v3fm0NKAwbjUiqULigAdNZVZPO3cHKW2MlBbl/lI5PuWdhQ9zZ99CCCAgQ==} 608 | engines: {node: '>=14'} 609 | dependencies: 610 | hexo-pagination: 3.0.0 611 | dev: true 612 | 613 | /hexo-generator-index/3.0.0: 614 | resolution: {integrity: sha512-83AuNN4cWdLVi//3ugR8E3kR6rrOwhXZt+hOCm1IjtIGj353/GlrtpMHpqZHU5kqipzj4miy9dweVdukXglVWw==} 615 | engines: {node: '>=14'} 616 | dependencies: 617 | hexo-pagination: 3.0.0 618 | dev: true 619 | 620 | /hexo-generator-tag/2.0.0: 621 | resolution: {integrity: sha512-1px/hF3veEohWDN8jjzchQhaiz+uOStUvvMaBJC9vWOlALh30UFcapL8IrvAwwJZjFRVA+WqGgDRqoQ8+yaaFw==} 622 | engines: {node: '>=14'} 623 | dependencies: 624 | hexo-pagination: 3.0.0 625 | dev: true 626 | 627 | /hexo-i18n/1.0.0: 628 | resolution: {integrity: sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==} 629 | engines: {node: '>=8.6.0'} 630 | dependencies: 631 | sprintf-js: 1.1.2 632 | dev: true 633 | 634 | /hexo-log/2.0.0: 635 | resolution: {integrity: sha512-U7zdDae74pXcyhQEyNmpJdq3UI6zWKxQ7/zLoMr/d3CBRdIfB5yO8DWqKUnewfibYv0gODyTWUIhxQDWuwloow==} 636 | engines: {node: '>=10.13.0'} 637 | dependencies: 638 | chalk: 4.1.2 639 | dev: true 640 | 641 | /hexo-log/3.2.0: 642 | resolution: {integrity: sha512-fk7jOW3hvKiAv4Q/d8UxaQlARwcv+5KjGcnxexUrqBqyWbMCLmw7jhMHTSRLNNQpaoTlF5ff+kQkPi4yhp9iag==} 643 | engines: {node: '>=12.4.0'} 644 | dependencies: 645 | picocolors: 1.0.0 646 | dev: true 647 | 648 | /hexo-pagination/3.0.0: 649 | resolution: {integrity: sha512-8oo1iozloZo7TojPVYg4IxL3SJKCBdSJ908fTlIxIK7TWJIKdYnQlW31+12DBJ0NhVZA/lZisPObGF08wT8fKw==} 650 | engines: {node: '>=14'} 651 | dev: true 652 | 653 | /hexo-renderer-ejs/2.0.0: 654 | resolution: {integrity: sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==} 655 | engines: {node: '>=12'} 656 | dependencies: 657 | ejs: 3.1.8 658 | dev: true 659 | 660 | /hexo-renderer-marked/6.0.0: 661 | resolution: {integrity: sha512-/B/ud8q9pNldbipuv6cPyqL+fir973+blV79n6j59M3S8LRz/4hLXwd0TA4RHxcHVrgPakeWUtiH3UWo6B6Pag==} 662 | engines: {node: '>=14'} 663 | dependencies: 664 | dompurify: 2.4.4 665 | hexo-util: 2.7.0 666 | jsdom: 20.0.3 667 | marked: 4.2.12 668 | transitivePeerDependencies: 669 | - bufferutil 670 | - canvas 671 | - supports-color 672 | - utf-8-validate 673 | dev: true 674 | 675 | /hexo-renderer-stylus/3.0.0: 676 | resolution: {integrity: sha512-wgKOcjUzq1i4Y70luoyYDbh91QeQcDzJO+v1598LgY+IdREFAm+vy1MWtl/TZsVXyPaEtsULNi3Vi22hdsPUSA==} 677 | engines: {node: '>=14'} 678 | dependencies: 679 | nib: 1.2.0_stylus@0.59.0 680 | stylus: 0.59.0 681 | transitivePeerDependencies: 682 | - supports-color 683 | dev: true 684 | 685 | /hexo-server/3.0.0: 686 | resolution: {integrity: sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==} 687 | engines: {node: '>=12.13.0'} 688 | dependencies: 689 | bluebird: 3.7.2 690 | compression: 1.7.4 691 | connect: 3.7.0 692 | mime: 3.0.0 693 | morgan: 1.10.0 694 | open: 8.4.0 695 | picocolors: 1.0.0 696 | serve-static: 1.15.0 697 | transitivePeerDependencies: 698 | - supports-color 699 | dev: true 700 | 701 | /hexo-theme-landscape/1.0.0: 702 | resolution: {integrity: sha512-bWQJWMqQI78wWiJPQZq5pJBH20TM442ShCaHGRetuEgMraxH0OKxB3NTupJzNEkzEk8DV2yrdizkXdKN6i501A==} 703 | dev: true 704 | 705 | /hexo-util/2.7.0: 706 | resolution: {integrity: sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==} 707 | engines: {node: '>=12.4.0'} 708 | dependencies: 709 | bluebird: 3.7.2 710 | camel-case: 4.1.2 711 | cross-spawn: 7.0.3 712 | deepmerge: 4.2.2 713 | highlight.js: 11.5.1 714 | htmlparser2: 7.2.0 715 | prismjs: 1.28.0 716 | strip-indent: 3.0.0 717 | dev: true 718 | 719 | /hexo/6.3.0: 720 | resolution: {integrity: sha512-4Jq+rWd8sYvR1YdIQyndN/9WboQ/Mqm6eax8CjrjO+ePFm2oMVafSOx9WEyJ42wcLOHjfyMfnlQhnUuNmJIpPg==} 721 | engines: {node: '>=12.13.0'} 722 | hasBin: true 723 | dependencies: 724 | abbrev: 1.1.1 725 | archy: 1.0.0 726 | bluebird: 3.7.2 727 | hexo-cli: 4.3.0 728 | hexo-front-matter: 3.0.0 729 | hexo-fs: 3.1.0 730 | hexo-i18n: 1.0.0 731 | hexo-log: 3.2.0 732 | hexo-util: 2.7.0 733 | js-yaml: 4.1.0 734 | js-yaml-js-types: 1.0.0 735 | micromatch: 4.0.5 736 | moize: 6.1.1 737 | moment: 2.29.3 738 | moment-timezone: 0.5.34 739 | nunjucks: 3.2.3 740 | picocolors: 1.0.0 741 | pretty-hrtime: 1.0.3 742 | resolve: 1.22.0 743 | strip-ansi: 6.0.1 744 | text-table: 0.2.0 745 | tildify: 2.0.0 746 | titlecase: 1.1.3 747 | warehouse: 4.0.2 748 | transitivePeerDependencies: 749 | - chokidar 750 | dev: true 751 | 752 | /highlight.js/11.5.1: 753 | resolution: {integrity: sha512-LKzHqnxr4CrD2YsNoIf/o5nJ09j4yi/GcH5BnYz9UnVpZdS4ucMgvP61TDty5xJcFGRjnH4DpujkS9bHT3hq0Q==} 754 | engines: {node: '>=12.0.0'} 755 | dev: true 756 | 757 | /html-encoding-sniffer/3.0.0: 758 | resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} 759 | engines: {node: '>=12'} 760 | dependencies: 761 | whatwg-encoding: 2.0.0 762 | dev: true 763 | 764 | /htmlparser2/7.2.0: 765 | resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} 766 | dependencies: 767 | domelementtype: 2.3.0 768 | domhandler: 4.3.1 769 | domutils: 2.8.0 770 | entities: 3.0.1 771 | dev: true 772 | 773 | /http-errors/2.0.0: 774 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 775 | engines: {node: '>= 0.8'} 776 | dependencies: 777 | depd: 2.0.0 778 | inherits: 2.0.4 779 | setprototypeof: 1.2.0 780 | statuses: 2.0.1 781 | toidentifier: 1.0.1 782 | dev: true 783 | 784 | /http-proxy-agent/5.0.0: 785 | resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} 786 | engines: {node: '>= 6'} 787 | dependencies: 788 | '@tootallnate/once': 2.0.0 789 | agent-base: 6.0.2 790 | debug: 4.3.4 791 | transitivePeerDependencies: 792 | - supports-color 793 | dev: true 794 | 795 | /https-proxy-agent/5.0.1: 796 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 797 | engines: {node: '>= 6'} 798 | dependencies: 799 | agent-base: 6.0.2 800 | debug: 4.3.4 801 | transitivePeerDependencies: 802 | - supports-color 803 | dev: true 804 | 805 | /iconv-lite/0.6.3: 806 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 807 | engines: {node: '>=0.10.0'} 808 | dependencies: 809 | safer-buffer: 2.1.2 810 | dev: true 811 | 812 | /inflight/1.0.6: 813 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 814 | dependencies: 815 | once: 1.4.0 816 | wrappy: 1.0.2 817 | dev: true 818 | 819 | /inherits/2.0.4: 820 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 821 | dev: true 822 | 823 | /is-binary-path/2.1.0: 824 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 825 | engines: {node: '>=8'} 826 | dependencies: 827 | binary-extensions: 2.2.0 828 | dev: true 829 | 830 | /is-core-module/2.9.0: 831 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 832 | dependencies: 833 | has: 1.0.3 834 | dev: true 835 | 836 | /is-docker/2.2.1: 837 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 838 | engines: {node: '>=8'} 839 | hasBin: true 840 | dev: true 841 | 842 | /is-extglob/2.1.1: 843 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 844 | engines: {node: '>=0.10.0'} 845 | dev: true 846 | 847 | /is-glob/4.0.3: 848 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 849 | engines: {node: '>=0.10.0'} 850 | dependencies: 851 | is-extglob: 2.1.1 852 | dev: true 853 | 854 | /is-number/7.0.0: 855 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 856 | engines: {node: '>=0.12.0'} 857 | dev: true 858 | 859 | /is-plain-object/5.0.0: 860 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 861 | engines: {node: '>=0.10.0'} 862 | dev: true 863 | 864 | /is-potential-custom-element-name/1.0.1: 865 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 866 | dev: true 867 | 868 | /is-wsl/2.2.0: 869 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 870 | engines: {node: '>=8'} 871 | dependencies: 872 | is-docker: 2.2.1 873 | dev: true 874 | 875 | /isexe/2.0.0: 876 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 877 | dev: true 878 | 879 | /jake/10.8.5: 880 | resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} 881 | engines: {node: '>=10'} 882 | hasBin: true 883 | dependencies: 884 | async: 3.2.3 885 | chalk: 4.1.2 886 | filelist: 1.0.4 887 | minimatch: 3.1.2 888 | dev: true 889 | 890 | /js-yaml-js-types/1.0.0: 891 | resolution: {integrity: sha512-UNjPwuoaj4mcHkJCJSF6l4MgkzoFjG+JJkBXMYNvjgO3yE9gTeRt+E6PN022vduz/daZZ7HmlEiSEE36NrGE4w==} 892 | dependencies: 893 | esprima: 4.0.1 894 | dev: true 895 | 896 | /js-yaml/4.1.0: 897 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 898 | hasBin: true 899 | dependencies: 900 | argparse: 2.0.1 901 | dev: true 902 | 903 | /jsdom/20.0.3: 904 | resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} 905 | engines: {node: '>=14'} 906 | peerDependencies: 907 | canvas: ^2.5.0 908 | peerDependenciesMeta: 909 | canvas: 910 | optional: true 911 | dependencies: 912 | abab: 2.0.6 913 | acorn: 8.8.2 914 | acorn-globals: 7.0.1 915 | cssom: 0.5.0 916 | cssstyle: 2.3.0 917 | data-urls: 3.0.2 918 | decimal.js: 10.4.3 919 | domexception: 4.0.0 920 | escodegen: 2.0.0 921 | form-data: 4.0.0 922 | html-encoding-sniffer: 3.0.0 923 | http-proxy-agent: 5.0.0 924 | https-proxy-agent: 5.0.1 925 | is-potential-custom-element-name: 1.0.1 926 | nwsapi: 2.2.2 927 | parse5: 7.1.2 928 | saxes: 6.0.0 929 | symbol-tree: 3.2.4 930 | tough-cookie: 4.1.2 931 | w3c-xmlserializer: 4.0.0 932 | webidl-conversions: 7.0.0 933 | whatwg-encoding: 2.0.0 934 | whatwg-mimetype: 3.0.0 935 | whatwg-url: 11.0.0 936 | ws: 8.12.1 937 | xml-name-validator: 4.0.0 938 | transitivePeerDependencies: 939 | - bufferutil 940 | - supports-color 941 | - utf-8-validate 942 | dev: true 943 | 944 | /jsonparse/1.3.1: 945 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} 946 | engines: {'0': node >= 0.2.0} 947 | dev: true 948 | 949 | /levn/0.3.0: 950 | resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} 951 | engines: {node: '>= 0.8.0'} 952 | dependencies: 953 | prelude-ls: 1.1.2 954 | type-check: 0.3.2 955 | dev: true 956 | 957 | /lower-case/2.0.2: 958 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 959 | dependencies: 960 | tslib: 2.4.0 961 | dev: true 962 | 963 | /marked/4.2.12: 964 | resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} 965 | engines: {node: '>= 12'} 966 | hasBin: true 967 | dev: true 968 | 969 | /micro-memoize/4.0.10: 970 | resolution: {integrity: sha512-rk0OlvEQkShjbr2EvGn1+GdCsgLDgABQyM9ZV6VoHNU7hiNM+eSOkjGWhiNabU/XWiEalWbjNQrNO+zcqd+pEA==} 971 | dev: true 972 | 973 | /micromatch/4.0.5: 974 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 975 | engines: {node: '>=8.6'} 976 | dependencies: 977 | braces: 3.0.2 978 | picomatch: 2.3.1 979 | dev: true 980 | 981 | /mime-db/1.52.0: 982 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 983 | engines: {node: '>= 0.6'} 984 | dev: true 985 | 986 | /mime-types/2.1.35: 987 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 988 | engines: {node: '>= 0.6'} 989 | dependencies: 990 | mime-db: 1.52.0 991 | dev: true 992 | 993 | /mime/1.6.0: 994 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 995 | engines: {node: '>=4'} 996 | hasBin: true 997 | dev: true 998 | 999 | /mime/3.0.0: 1000 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1001 | engines: {node: '>=10.0.0'} 1002 | hasBin: true 1003 | dev: true 1004 | 1005 | /min-indent/1.0.1: 1006 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1007 | engines: {node: '>=4'} 1008 | dev: true 1009 | 1010 | /minimatch/3.1.2: 1011 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1012 | dependencies: 1013 | brace-expansion: 1.1.11 1014 | dev: true 1015 | 1016 | /minimatch/5.1.0: 1017 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} 1018 | engines: {node: '>=10'} 1019 | dependencies: 1020 | brace-expansion: 2.0.1 1021 | dev: true 1022 | 1023 | /minimist/1.2.6: 1024 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 1025 | dev: true 1026 | 1027 | /moize/6.1.1: 1028 | resolution: {integrity: sha512-6bryLehIBVByDdAkXhoaPP1fknkoq1hNPmVCDYIb/w5zwfidT02zLSto1uGbmnv1GKu02ysgAEaJ5Ic7QQaGQA==} 1029 | dependencies: 1030 | fast-equals: 3.0.3 1031 | micro-memoize: 4.0.10 1032 | dev: true 1033 | 1034 | /moment-timezone/0.5.34: 1035 | resolution: {integrity: sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==} 1036 | dependencies: 1037 | moment: 2.29.3 1038 | dev: true 1039 | 1040 | /moment/2.29.3: 1041 | resolution: {integrity: sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==} 1042 | dev: true 1043 | 1044 | /morgan/1.10.0: 1045 | resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} 1046 | engines: {node: '>= 0.8.0'} 1047 | dependencies: 1048 | basic-auth: 2.0.1 1049 | debug: 2.6.9 1050 | depd: 2.0.0 1051 | on-finished: 2.3.0 1052 | on-headers: 1.0.2 1053 | transitivePeerDependencies: 1054 | - supports-color 1055 | dev: true 1056 | 1057 | /ms/2.0.0: 1058 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1059 | dev: true 1060 | 1061 | /ms/2.1.2: 1062 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1063 | dev: true 1064 | 1065 | /ms/2.1.3: 1066 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1067 | dev: true 1068 | 1069 | /negotiator/0.6.3: 1070 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1071 | engines: {node: '>= 0.6'} 1072 | dev: true 1073 | 1074 | /nib/1.2.0_stylus@0.59.0: 1075 | resolution: {integrity: sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==} 1076 | peerDependencies: 1077 | stylus: '*' 1078 | dependencies: 1079 | stylus: 0.59.0 1080 | dev: true 1081 | 1082 | /no-case/3.0.4: 1083 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1084 | dependencies: 1085 | lower-case: 2.0.2 1086 | tslib: 2.4.0 1087 | dev: true 1088 | 1089 | /normalize-path/3.0.0: 1090 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1091 | engines: {node: '>=0.10.0'} 1092 | dev: true 1093 | 1094 | /nunjucks/3.2.3: 1095 | resolution: {integrity: sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==} 1096 | engines: {node: '>= 6.9.0'} 1097 | hasBin: true 1098 | peerDependencies: 1099 | chokidar: ^3.3.0 1100 | peerDependenciesMeta: 1101 | chokidar: 1102 | optional: true 1103 | dependencies: 1104 | a-sync-waterfall: 1.0.1 1105 | asap: 2.0.6 1106 | commander: 5.1.0 1107 | dev: true 1108 | 1109 | /nwsapi/2.2.2: 1110 | resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} 1111 | dev: true 1112 | 1113 | /on-finished/2.3.0: 1114 | resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} 1115 | engines: {node: '>= 0.8'} 1116 | dependencies: 1117 | ee-first: 1.1.1 1118 | dev: true 1119 | 1120 | /on-finished/2.4.1: 1121 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1122 | engines: {node: '>= 0.8'} 1123 | dependencies: 1124 | ee-first: 1.1.1 1125 | dev: true 1126 | 1127 | /on-headers/1.0.2: 1128 | resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} 1129 | engines: {node: '>= 0.8'} 1130 | dev: true 1131 | 1132 | /once/1.4.0: 1133 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1134 | dependencies: 1135 | wrappy: 1.0.2 1136 | dev: true 1137 | 1138 | /open/8.4.0: 1139 | resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} 1140 | engines: {node: '>=12'} 1141 | dependencies: 1142 | define-lazy-prop: 2.0.0 1143 | is-docker: 2.2.1 1144 | is-wsl: 2.2.0 1145 | dev: true 1146 | 1147 | /optionator/0.8.3: 1148 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 1149 | engines: {node: '>= 0.8.0'} 1150 | dependencies: 1151 | deep-is: 0.1.4 1152 | fast-levenshtein: 2.0.6 1153 | levn: 0.3.0 1154 | prelude-ls: 1.1.2 1155 | type-check: 0.3.2 1156 | word-wrap: 1.2.3 1157 | dev: true 1158 | 1159 | /parse5/7.1.2: 1160 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 1161 | dependencies: 1162 | entities: 4.4.0 1163 | dev: true 1164 | 1165 | /parseurl/1.3.3: 1166 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1167 | engines: {node: '>= 0.8'} 1168 | dev: true 1169 | 1170 | /pascal-case/3.1.2: 1171 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 1172 | dependencies: 1173 | no-case: 3.0.4 1174 | tslib: 2.4.0 1175 | dev: true 1176 | 1177 | /path-is-absolute/1.0.1: 1178 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1179 | engines: {node: '>=0.10.0'} 1180 | dev: true 1181 | 1182 | /path-key/3.1.1: 1183 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1184 | engines: {node: '>=8'} 1185 | dev: true 1186 | 1187 | /path-parse/1.0.7: 1188 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1189 | dev: true 1190 | 1191 | /picocolors/1.0.0: 1192 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1193 | dev: true 1194 | 1195 | /picomatch/2.3.1: 1196 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1197 | engines: {node: '>=8.6'} 1198 | dev: true 1199 | 1200 | /prelude-ls/1.1.2: 1201 | resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} 1202 | engines: {node: '>= 0.8.0'} 1203 | dev: true 1204 | 1205 | /pretty-hrtime/1.0.3: 1206 | resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} 1207 | engines: {node: '>= 0.8'} 1208 | dev: true 1209 | 1210 | /prismjs/1.28.0: 1211 | resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} 1212 | engines: {node: '>=6'} 1213 | dev: true 1214 | 1215 | /psl/1.8.0: 1216 | resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} 1217 | dev: true 1218 | 1219 | /punycode/2.1.1: 1220 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1221 | engines: {node: '>=6'} 1222 | dev: true 1223 | 1224 | /querystringify/2.2.0: 1225 | resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} 1226 | dev: true 1227 | 1228 | /range-parser/1.2.1: 1229 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1230 | engines: {node: '>= 0.6'} 1231 | dev: true 1232 | 1233 | /readable-stream/3.6.0: 1234 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 1235 | engines: {node: '>= 6'} 1236 | dependencies: 1237 | inherits: 2.0.4 1238 | string_decoder: 1.3.0 1239 | util-deprecate: 1.0.2 1240 | dev: true 1241 | 1242 | /readdirp/3.6.0: 1243 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1244 | engines: {node: '>=8.10.0'} 1245 | dependencies: 1246 | picomatch: 2.3.1 1247 | dev: true 1248 | 1249 | /requires-port/1.0.0: 1250 | resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} 1251 | dev: true 1252 | 1253 | /resolve/1.22.0: 1254 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 1255 | hasBin: true 1256 | dependencies: 1257 | is-core-module: 2.9.0 1258 | path-parse: 1.0.7 1259 | supports-preserve-symlinks-flag: 1.0.0 1260 | dev: true 1261 | 1262 | /rfdc/1.3.0: 1263 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 1264 | dev: true 1265 | 1266 | /safe-buffer/5.1.2: 1267 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1268 | dev: true 1269 | 1270 | /safe-buffer/5.2.1: 1271 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1272 | dev: true 1273 | 1274 | /safer-buffer/2.1.2: 1275 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1276 | dev: true 1277 | 1278 | /sax/1.2.4: 1279 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 1280 | dev: true 1281 | 1282 | /saxes/6.0.0: 1283 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} 1284 | engines: {node: '>=v12.22.7'} 1285 | dependencies: 1286 | xmlchars: 2.2.0 1287 | dev: true 1288 | 1289 | /send/0.18.0: 1290 | resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 1291 | engines: {node: '>= 0.8.0'} 1292 | dependencies: 1293 | debug: 2.6.9 1294 | depd: 2.0.0 1295 | destroy: 1.2.0 1296 | encodeurl: 1.0.2 1297 | escape-html: 1.0.3 1298 | etag: 1.8.1 1299 | fresh: 0.5.2 1300 | http-errors: 2.0.0 1301 | mime: 1.6.0 1302 | ms: 2.1.3 1303 | on-finished: 2.4.1 1304 | range-parser: 1.2.1 1305 | statuses: 2.0.1 1306 | transitivePeerDependencies: 1307 | - supports-color 1308 | dev: true 1309 | 1310 | /serve-static/1.15.0: 1311 | resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 1312 | engines: {node: '>= 0.8.0'} 1313 | dependencies: 1314 | encodeurl: 1.0.2 1315 | escape-html: 1.0.3 1316 | parseurl: 1.3.3 1317 | send: 0.18.0 1318 | transitivePeerDependencies: 1319 | - supports-color 1320 | dev: true 1321 | 1322 | /setprototypeof/1.2.0: 1323 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1324 | dev: true 1325 | 1326 | /shebang-command/2.0.0: 1327 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1328 | engines: {node: '>=8'} 1329 | dependencies: 1330 | shebang-regex: 3.0.0 1331 | dev: true 1332 | 1333 | /shebang-regex/3.0.0: 1334 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1335 | engines: {node: '>=8'} 1336 | dev: true 1337 | 1338 | /source-map/0.6.1: 1339 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1340 | engines: {node: '>=0.10.0'} 1341 | requiresBuild: true 1342 | dev: true 1343 | optional: true 1344 | 1345 | /source-map/0.7.3: 1346 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 1347 | engines: {node: '>= 8'} 1348 | dev: true 1349 | 1350 | /sprintf-js/1.1.2: 1351 | resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} 1352 | dev: true 1353 | 1354 | /statuses/1.5.0: 1355 | resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} 1356 | engines: {node: '>= 0.6'} 1357 | dev: true 1358 | 1359 | /statuses/2.0.1: 1360 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1361 | engines: {node: '>= 0.8'} 1362 | dev: true 1363 | 1364 | /string_decoder/1.3.0: 1365 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1366 | dependencies: 1367 | safe-buffer: 5.2.1 1368 | dev: true 1369 | 1370 | /strip-ansi/6.0.1: 1371 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1372 | engines: {node: '>=8'} 1373 | dependencies: 1374 | ansi-regex: 5.0.1 1375 | dev: true 1376 | 1377 | /strip-indent/3.0.0: 1378 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1379 | engines: {node: '>=8'} 1380 | dependencies: 1381 | min-indent: 1.0.1 1382 | dev: true 1383 | 1384 | /stylus/0.59.0: 1385 | resolution: {integrity: sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==} 1386 | hasBin: true 1387 | dependencies: 1388 | '@adobe/css-tools': 4.2.0 1389 | debug: 4.3.4 1390 | glob: 7.2.0 1391 | sax: 1.2.4 1392 | source-map: 0.7.3 1393 | transitivePeerDependencies: 1394 | - supports-color 1395 | dev: true 1396 | 1397 | /supports-color/7.2.0: 1398 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1399 | engines: {node: '>=8'} 1400 | dependencies: 1401 | has-flag: 4.0.0 1402 | dev: true 1403 | 1404 | /supports-preserve-symlinks-flag/1.0.0: 1405 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1406 | engines: {node: '>= 0.4'} 1407 | dev: true 1408 | 1409 | /symbol-tree/3.2.4: 1410 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 1411 | dev: true 1412 | 1413 | /text-table/0.2.0: 1414 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1415 | dev: true 1416 | 1417 | /through2/4.0.2: 1418 | resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} 1419 | dependencies: 1420 | readable-stream: 3.6.0 1421 | dev: true 1422 | 1423 | /tildify/2.0.0: 1424 | resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} 1425 | engines: {node: '>=8'} 1426 | dev: true 1427 | 1428 | /titlecase/1.1.3: 1429 | resolution: {integrity: sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==} 1430 | hasBin: true 1431 | dev: true 1432 | 1433 | /to-regex-range/5.0.1: 1434 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1435 | engines: {node: '>=8.0'} 1436 | dependencies: 1437 | is-number: 7.0.0 1438 | dev: true 1439 | 1440 | /toidentifier/1.0.1: 1441 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1442 | engines: {node: '>=0.6'} 1443 | dev: true 1444 | 1445 | /tough-cookie/4.1.2: 1446 | resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} 1447 | engines: {node: '>=6'} 1448 | dependencies: 1449 | psl: 1.8.0 1450 | punycode: 2.1.1 1451 | universalify: 0.2.0 1452 | url-parse: 1.5.10 1453 | dev: true 1454 | 1455 | /tr46/3.0.0: 1456 | resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} 1457 | engines: {node: '>=12'} 1458 | dependencies: 1459 | punycode: 2.1.1 1460 | dev: true 1461 | 1462 | /tslib/2.4.0: 1463 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 1464 | dev: true 1465 | 1466 | /type-check/0.3.2: 1467 | resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} 1468 | engines: {node: '>= 0.8.0'} 1469 | dependencies: 1470 | prelude-ls: 1.1.2 1471 | dev: true 1472 | 1473 | /universalify/0.2.0: 1474 | resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} 1475 | engines: {node: '>= 4.0.0'} 1476 | dev: true 1477 | 1478 | /unpipe/1.0.0: 1479 | resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} 1480 | engines: {node: '>= 0.8'} 1481 | dev: true 1482 | 1483 | /url-parse/1.5.10: 1484 | resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} 1485 | dependencies: 1486 | querystringify: 2.2.0 1487 | requires-port: 1.0.0 1488 | dev: true 1489 | 1490 | /util-deprecate/1.0.2: 1491 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1492 | dev: true 1493 | 1494 | /utils-merge/1.0.1: 1495 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 1496 | engines: {node: '>= 0.4.0'} 1497 | dev: true 1498 | 1499 | /vary/1.1.2: 1500 | resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} 1501 | engines: {node: '>= 0.8'} 1502 | dev: true 1503 | 1504 | /w3c-xmlserializer/4.0.0: 1505 | resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} 1506 | engines: {node: '>=14'} 1507 | dependencies: 1508 | xml-name-validator: 4.0.0 1509 | dev: true 1510 | 1511 | /warehouse/4.0.2: 1512 | resolution: {integrity: sha512-GixS7SolBGu81rnxYM6bScxdElLM97Jx/kr0a6B6PGBWFqvHeuWFj7QbgEX1YWZSxiJt/aR6dBVQKC/PvvihdQ==} 1513 | engines: {node: '>=10.13.0'} 1514 | dependencies: 1515 | bluebird: 3.7.2 1516 | cuid: 2.1.8 1517 | graceful-fs: 4.2.10 1518 | hexo-log: 3.2.0 1519 | is-plain-object: 5.0.0 1520 | jsonparse: 1.3.1 1521 | rfdc: 1.3.0 1522 | through2: 4.0.2 1523 | dev: true 1524 | 1525 | /webidl-conversions/7.0.0: 1526 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 1527 | engines: {node: '>=12'} 1528 | dev: true 1529 | 1530 | /whatwg-encoding/2.0.0: 1531 | resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} 1532 | engines: {node: '>=12'} 1533 | dependencies: 1534 | iconv-lite: 0.6.3 1535 | dev: true 1536 | 1537 | /whatwg-mimetype/3.0.0: 1538 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 1539 | engines: {node: '>=12'} 1540 | dev: true 1541 | 1542 | /whatwg-url/11.0.0: 1543 | resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} 1544 | engines: {node: '>=12'} 1545 | dependencies: 1546 | tr46: 3.0.0 1547 | webidl-conversions: 7.0.0 1548 | dev: true 1549 | 1550 | /which/2.0.2: 1551 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1552 | engines: {node: '>= 8'} 1553 | hasBin: true 1554 | dependencies: 1555 | isexe: 2.0.0 1556 | dev: true 1557 | 1558 | /word-wrap/1.2.3: 1559 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 1560 | engines: {node: '>=0.10.0'} 1561 | dev: true 1562 | 1563 | /wrappy/1.0.2: 1564 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1565 | dev: true 1566 | 1567 | /ws/8.12.1: 1568 | resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} 1569 | engines: {node: '>=10.0.0'} 1570 | peerDependencies: 1571 | bufferutil: ^4.0.1 1572 | utf-8-validate: '>=5.0.2' 1573 | peerDependenciesMeta: 1574 | bufferutil: 1575 | optional: true 1576 | utf-8-validate: 1577 | optional: true 1578 | dev: true 1579 | 1580 | /xml-name-validator/4.0.0: 1581 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 1582 | engines: {node: '>=12'} 1583 | dev: true 1584 | 1585 | /xmlchars/2.2.0: 1586 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 1587 | dev: true 1588 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /scaffolds/draft.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: { { title } } 3 | tags: 4 | --- 5 | -------------------------------------------------------------------------------- /scaffolds/page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: { { title } } 3 | date: { { date } } 4 | --- 5 | -------------------------------------------------------------------------------- /scaffolds/post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: { { title } } 3 | date: { { date } } 4 | tags: 5 | --- 6 | -------------------------------------------------------------------------------- /source/_posts/hello-world.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Hello World 3 | --- 4 | 5 | Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues). 6 | 7 | ## Quick Start 8 | 9 | ### Create a new post 10 | 11 | ```bash 12 | $ hexo new "My New Post" 13 | ``` 14 | 15 | More info: [Writing](https://hexo.io/docs/writing.html) 16 | 17 | ### Run server 18 | 19 | ```bash 20 | $ hexo server 21 | ``` 22 | 23 | More info: [Server](https://hexo.io/docs/server.html) 24 | 25 | ### Generate static files 26 | 27 | ```bash 28 | $ hexo generate 29 | ``` 30 | 31 | More info: [Generating](https://hexo.io/docs/generating.html) 32 | 33 | ### Deploy to remote sites 34 | 35 | ```bash 36 | $ hexo deploy 37 | ``` 38 | 39 | More info: [Deployment](https://hexo.io/docs/one-command-deployment.html) 40 | -------------------------------------------------------------------------------- /source/admin/config.yml: -------------------------------------------------------------------------------- 1 | backend: 2 | name: git-gateway 3 | branch: master # Branch to update (master by default) 4 | 5 | # These lines should *not* be indented 6 | media_folder: "source/images" # Media files will be stored in the repo under source/images 7 | public_folder: "images" # The src attribute for uploaded media will begin with images 8 | 9 | # This line should *not* be indented 10 | publish_mode: editorial_workflow 11 | 12 | collections: 13 | - name: "Post" # Used in routes, e.g., /admin/collections/blog 14 | label: "Post" # Used in the UI 15 | folder: "source/_posts" # The path to the folder where the documents are stored 16 | create: true # Allow users to create new documents in this collection 17 | slug: "{{slug}}" # Filename template, e.g., YYYY-MM-DD-title.md 18 | fields: # The fields for each document, usually in front matter 19 | - { label: "Title", name: "title", widget: "string" } 20 | - { label: "Publish Date", name: "date", widget: "datetime" } 21 | - { label: "Body", name: "body", widget: "markdown" } 22 | -------------------------------------------------------------------------------- /source/admin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Content Manager 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /themes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/.gitkeep -------------------------------------------------------------------------------- /themes/landscape/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | tmp -------------------------------------------------------------------------------- /themes/landscape/Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function (grunt) { 2 | grunt.initConfig({ 3 | gitclone: { 4 | fontawesome: { 5 | options: { 6 | repository: "https://github.com/FortAwesome/Font-Awesome.git", 7 | directory: "tmp/fontawesome", 8 | }, 9 | }, 10 | fancybox: { 11 | options: { 12 | repository: "https://github.com/fancyapps/fancyBox.git", 13 | directory: "tmp/fancybox", 14 | }, 15 | }, 16 | }, 17 | copy: { 18 | fontawesome: { 19 | expand: true, 20 | cwd: "tmp/fontawesome/fonts/", 21 | src: ["**"], 22 | dest: "source/css/fonts/", 23 | }, 24 | fancybox: { 25 | expand: true, 26 | cwd: "tmp/fancybox/source/", 27 | src: ["**"], 28 | dest: "source/fancybox/", 29 | }, 30 | }, 31 | _clean: { 32 | tmp: ["tmp"], 33 | fontawesome: ["source/css/fonts"], 34 | fancybox: ["source/fancybox"], 35 | }, 36 | }); 37 | 38 | require("load-grunt-tasks")(grunt); 39 | 40 | grunt.renameTask("clean", "_clean"); 41 | 42 | grunt.registerTask("fontawesome", [ 43 | "gitclone:fontawesome", 44 | "copy:fontawesome", 45 | "_clean:tmp", 46 | ]); 47 | grunt.registerTask("fancybox", [ 48 | "gitclone:fancybox", 49 | "copy:fancybox", 50 | "_clean:tmp", 51 | ]); 52 | grunt.registerTask("default", ["gitclone", "copy", "_clean:tmp"]); 53 | grunt.registerTask("clean", ["_clean"]); 54 | }; 55 | -------------------------------------------------------------------------------- /themes/landscape/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 Tommy Chen 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /themes/landscape/README.md: -------------------------------------------------------------------------------- 1 | # Landscape 2 | 3 | A brand new default theme for [Hexo]. 4 | 5 | - [Preview](http://hexo.io/hexo-theme-landscape/) 6 | 7 | ## Installation 8 | 9 | ### Install 10 | 11 | ```bash 12 | $ git clone https://github.com/hexojs/hexo-theme-landscape.git themes/landscape 13 | ``` 14 | 15 | **Landscape requires Hexo 2.4 and above.** If you would like to enable the RSS, the [hexo-generate-feed] plugin is also required. 16 | 17 | ### Enable 18 | 19 | Modify `theme` setting in `_config.yml` to `landscape`. 20 | 21 | ### Update 22 | 23 | ```bash 24 | cd themes/landscape 25 | git pull 26 | ``` 27 | 28 | ## Configuration 29 | 30 | ```yml 31 | # Header 32 | menu: 33 | Home: / 34 | Archives: /archives 35 | rss: /atom.xml 36 | 37 | # Content 38 | excerpt_link: Read More 39 | fancybox: true 40 | 41 | # Sidebar 42 | sidebar: right 43 | widgets: 44 | - category 45 | - tag 46 | - tagcloud 47 | - archives 48 | - recent_posts 49 | 50 | # Miscellaneous 51 | google_analytics: 52 | favicon: /favicon.png 53 | twitter: 54 | google_plus: 55 | ``` 56 | 57 | - **menu** - Navigation menu 58 | - **rss** - RSS link 59 | - **excerpt_link** - "Read More" link at the bottom of excerpted articles. `false` to hide the link. 60 | - **fancybox** - Enable [Fancybox] 61 | - **sidebar** - Sidebar style. You can choose `left`, `right`, `bottom` or `false`. 62 | - **widgets** - Widgets displaying in sidebar 63 | - **google_analytics** - Google Analytics ID 64 | - **favicon** - Favicon path 65 | - **twitter** - Twiiter ID 66 | - **google_plus** - Google+ ID 67 | 68 | ## Features 69 | 70 | ### Fancybox 71 | 72 | Landscape uses [Fancybox] to showcase your photos. You can use Markdown syntax or fancybox tag plugin to add your photos. 73 | 74 | ``` 75 | ![img caption](img url) 76 | 77 | {% fancybox img_url [img_thumbnail] [img_caption] %} 78 | ``` 79 | 80 | ### Sidebar 81 | 82 | You can put your sidebar in left side, right side or bottom of your site by editing `sidebar` setting. 83 | 84 | Landscape provides 5 built-in widgets: 85 | 86 | - category 87 | - tag 88 | - tagcloud 89 | - archives 90 | - recent_posts 91 | 92 | All of them are enabled by default. You can edit them in `widget` setting. 93 | 94 | ## Development 95 | 96 | ### Requirements 97 | 98 | - [Grunt] 0.4+ 99 | - Hexo 2.4+ 100 | 101 | ### Grunt tasks 102 | 103 | - **default** - Download [Fancybox] and [Font Awesome]. 104 | - **fontawesome** - Only download [Font Awesome]. 105 | - **fancybox** - Only download [Fancybox]. 106 | - **clean** - Clean temporarily files and downloaded files. 107 | 108 | [hexo]: https://hexo.io/ 109 | [fancybox]: http://fancyapps.com/fancybox/ 110 | [font awesome]: http://fontawesome.io/ 111 | [grunt]: http://gruntjs.com/ 112 | [hexo-generate-feed]: https://github.com/hexojs/hexo-generator-feed 113 | -------------------------------------------------------------------------------- /themes/landscape/_config.yml: -------------------------------------------------------------------------------- 1 | # Header 2 | menu: 3 | Home: / 4 | Archives: /archives 5 | rss: /atom.xml 6 | 7 | # Content 8 | excerpt_link: Read More 9 | fancybox: true 10 | 11 | # Sidebar 12 | sidebar: right 13 | widgets: 14 | - category 15 | - tag 16 | - tagcloud 17 | - archive 18 | - recent_posts 19 | 20 | # display widgets at the bottom of index pages (pagination == 2) 21 | index_widgets: 22 | # - category 23 | # - tagcloud 24 | # - archive 25 | 26 | # widget behavior 27 | archive_type: "monthly" 28 | show_count: false 29 | 30 | # Miscellaneous 31 | google_analytics: 32 | gauges_analytics: 33 | favicon: /favicon.png 34 | twitter: 35 | google_plus: 36 | fb_admins: 37 | fb_app_id: 38 | -------------------------------------------------------------------------------- /themes/landscape/languages/de.yml: -------------------------------------------------------------------------------- 1 | categories: Kategorien 2 | search: Suche 3 | tags: Tags 4 | tagcloud: Tag Cloud 5 | tweets: Tweets 6 | prev: zurück 7 | next: weiter 8 | comment: Kommentare 9 | archive_a: Archiv 10 | archive_b: "Archive: %s" 11 | page: Seite %d 12 | recent_posts: letzter Beitrag 13 | newer: Neuer 14 | older: Älter 15 | share: Teilen 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: Kategorie 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/default.yml: -------------------------------------------------------------------------------- 1 | categories: Categories 2 | search: Search 3 | tags: Tags 4 | tagcloud: Tag Cloud 5 | tweets: Tweets 6 | prev: Prev 7 | next: Next 8 | comment: Comments 9 | archive_a: Archives 10 | archive_b: "Archives: %s" 11 | page: Page %d 12 | recent_posts: Recent Posts 13 | newer: Newer 14 | older: Older 15 | share: Share 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: Category 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/es.yml: -------------------------------------------------------------------------------- 1 | categories: Categorías 2 | search: Buscar 3 | tags: Tags 4 | tagcloud: Nube de Tags 5 | tweets: Tweets 6 | prev: Previo 7 | next: Siguiente 8 | comment: Comentarios 9 | archive_a: Archivos 10 | archive_b: "Archivos: %s" 11 | page: Página %d 12 | recent_posts: Posts recientes 13 | newer: Nuevo 14 | older: Viejo 15 | share: Compartir 16 | powered_by: Construido por 17 | rss_feed: RSS 18 | category: Categoría 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/fr.yml: -------------------------------------------------------------------------------- 1 | categories: Catégories 2 | search: Rechercher 3 | tags: Mot-clés 4 | tagcloud: Nuage de mot-clés 5 | tweets: Tweets 6 | prev: Précédent 7 | next: Suivant 8 | comment: Commentaires 9 | archive_a: Archives 10 | archive_b: "Archives: %s" 11 | page: Page %d 12 | recent_posts: Articles récents 13 | newer: Récent 14 | older: Ancien 15 | share: Partager 16 | powered_by: Propulsé par 17 | rss_feed: Flux RSS 18 | category: Catégorie 19 | tag: Mot-clé 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/ja.yml: -------------------------------------------------------------------------------- 1 | categories: カテゴリ 2 | search: 検索 3 | tags: タグ 4 | tagcloud: タグクラウド 5 | tweets: ツイート 6 | prev: 戻る 7 | next: 次へ 8 | comment: コメント 9 | archive_a: アーカイブ 10 | archive_b: "アーカイブ: %s" 11 | page: ページ %d 12 | recent_posts: 最近の投稿 13 | newer: 次の記事 14 | older: 前の記事 15 | share: 共有 16 | powered_by: Powered by 17 | rss_feed: RSSフィード 18 | category: カテゴリ 19 | tag: タグ 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/ko.yml: -------------------------------------------------------------------------------- 1 | categories: 카테고리 2 | search: 검색 3 | tags: 태그 4 | tagcloud: 태그 클라우드 5 | tweets: 트윗 6 | prev: 이전 7 | next: 다음 8 | comment: 댓글 9 | archive_a: 아카이브 10 | archive_b: "아카이브: %s" 11 | page: 페이지 %d 12 | recent_posts: 최근 포스트 13 | newer: 최신 14 | older: 이전 15 | share: 공유 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: 카테고리 19 | tag: 태그 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/nl.yml: -------------------------------------------------------------------------------- 1 | categories: Categorieën 2 | search: Zoeken 3 | tags: Labels 4 | tagcloud: Tag Cloud 5 | tweets: Tweets 6 | prev: Vorige 7 | next: Volgende 8 | comment: Commentaren 9 | archive_a: Archieven 10 | archive_b: "Archieven: %s" 11 | page: Pagina %d 12 | recent_posts: Recente berichten 13 | newer: Nieuwer 14 | older: Ouder 15 | share: Delen 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: Categorie 19 | tag: Label 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/no.yml: -------------------------------------------------------------------------------- 1 | categories: Kategorier 2 | search: Søk 3 | tags: Tags 4 | tagcloud: Tag Cloud 5 | tweets: Tweets 6 | prev: Forrige 7 | next: Neste 8 | comment: Kommentarer 9 | archive_a: Arkiv 10 | archive_b: "Arkiv: %s" 11 | page: Side %d 12 | recent_posts: Siste innlegg 13 | newer: Newer 14 | older: Older 15 | share: Share 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: Category 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/pt.yml: -------------------------------------------------------------------------------- 1 | categories: Categorias 2 | search: Buscar 3 | tags: Tags 4 | tagcloud: Nuvem de Tags 5 | tweets: Tweets 6 | prev: Anterior 7 | next: Próximo 8 | comment: Comentários 9 | archive_a: Arquivos 10 | archive_b: "Arquivos: %s" 11 | page: Página %d 12 | recent_posts: Postagens Recentes 13 | newer: Mais Recente 14 | older: Mais Antigo 15 | share: Compartilhar 16 | powered_by: Desenvolvido por 17 | rss_feed: Feed RSS 18 | category: Categoria 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/ru.yml: -------------------------------------------------------------------------------- 1 | categories: Категории 2 | search: Поиск 3 | tags: Метки 4 | tagcloud: Облако меток 5 | tweets: Твиты 6 | prev: Назад 7 | next: Вперед 8 | comment: Комментарии 9 | archive_a: Архив 10 | archive_b: "Архив: %s" 11 | page: Страница %d 12 | recent_posts: Недавние записи 13 | newer: Следующий 14 | older: Предыдущий 15 | share: Поделиться 16 | powered_by: Создано с помощью 17 | rss_feed: RSS-каналы 18 | category: Категория 19 | tag: Метка 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/zh-CN.yml: -------------------------------------------------------------------------------- 1 | categories: 分类 2 | search: 搜索 3 | tags: 标签 4 | tagcloud: 标签云 5 | tweets: 推文 6 | prev: 上一页 7 | next: 下一页 8 | comment: 留言 9 | archive_a: 归档 10 | archive_b: 归档:%s 11 | page: 第 %d 页 12 | recent_posts: 最新文章 13 | newer: Newer 14 | older: Older 15 | share: Share 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: Category 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/languages/zh-TW.yml: -------------------------------------------------------------------------------- 1 | categories: 分類 2 | search: 搜尋 3 | tags: 標籤 4 | tagcloud: 標籤雲 5 | tweets: 推文 6 | prev: 上一頁 7 | next: 下一頁 8 | comment: 留言 9 | archive_a: 彙整 10 | archive_b: 彙整:%s 11 | page: 第 %d 頁 12 | recent_posts: 最新文章 13 | newer: Newer 14 | older: Older 15 | share: Share 16 | powered_by: Powered by 17 | rss_feed: RSS Feed 18 | category: Category 19 | tag: Tag 20 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/after-footer.ejs: -------------------------------------------------------------------------------- 1 | <% if (config.disqus_shortname){ %> 2 | 15 | <% } %> 16 | 17 | 18 | 19 | <% if (theme.fancybox){ %> 20 | <%- css('fancybox/jquery.fancybox') %> 21 | <%- js('fancybox/jquery.fancybox.pack') %> 22 | <% } %> 23 | 24 | <%- js('js/script') %> 25 | <%- partial('gauges-analytics') %> 26 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/archive-post.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | <%- partial('post/date', {class_name: 'archive-article-date', date_format: 'MMM D'}) %> 5 | <%- partial('post/title', {class_name: 'archive-article-title'}) %> 6 |
7 |
8 |
-------------------------------------------------------------------------------- /themes/landscape/layout/_partial/archive.ejs: -------------------------------------------------------------------------------- 1 | <% if (pagination == 2){ %> 2 | <% page.posts.each(function(post){ %> 3 | <%- partial('article', {post: post, index: true}) %> 4 | <% }) %> 5 | <% } else { %> 6 | <% var last; %> 7 | <% page.posts.each(function(post, i){ %> 8 | <% var year = post.date.year(); %> 9 | <% if (last != year){ %> 10 | <% if (last != null){ %> 11 | 12 | <% } %> 13 | <% last = year; %> 14 |
15 |
16 | <%= year %> 17 |
18 |
19 | <% } %> 20 | <%- partial('archive-post', {post: post, even: i % 2 == 0}) %> 21 | <% }) %> 22 | <% if (page.posts.length){ %> 23 |
24 | <% } %> 25 | <% } %> 26 | <% if (page.total > 1){ %> 27 | 34 | <% } %> 35 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/article.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%- partial('post/date', {class_name: 'article-date', date_format: null}) %> 4 | <%- partial('post/category') %> 5 |
6 |
7 | <%- partial('post/gallery') %> 8 | <% if (post.link || post.title){ %> 9 |
10 | <%- partial('post/title', {class_name: 'article-title'}) %> 11 |
12 | <% } %> 13 |
14 | <% if (post.excerpt && index){ %> 15 | <%- post.excerpt %> 16 | <% if (theme.excerpt_link){ %> 17 |

18 | <%= theme.excerpt_link %> 19 |

20 | <% } %> 21 | <% } else { %> 22 | <%- post.content %> 23 | <% } %> 24 |
25 | 32 |
33 | <% if (!index){ %> 34 | <%- partial('post/nav') %> 35 | <% } %> 36 |
37 | 38 | <% if (!index && post.comments && config.disqus_shortname){ %> 39 |
40 |
41 | 42 |
43 |
44 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/footer.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/gauges-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.gauges_analytics){ %> 2 | 3 | 17 | 18 | <% } %> 19 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/google-analytics.ejs: -------------------------------------------------------------------------------- 1 | <% if (theme.google_analytics){ %> 2 | 3 | 13 | 14 | <% } %> 15 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/head.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | <%- partial('google-analytics') %> 6 | <% 7 | var title = page.title; 8 | 9 | if (is_archive()){ 10 | title = __('archive_a'); 11 | 12 | if (is_month()){ 13 | title += ': ' + page.year + '/' + page.month; 14 | } else if (is_year()){ 15 | title += ': ' + page.year; 16 | } 17 | } else if (is_category()){ 18 | title = __('category') + ': ' + page.category; 19 | } else if (is_tag()){ 20 | title = __('tag') + ': ' + page.tag; 21 | } 22 | %> 23 | <% if (title){ %><%= title %> | <% } %><%= config.title %> 24 | 25 | <%- open_graph({twitter_id: theme.twitter, google_plus: theme.google_plus, fb_admins: theme.fb_admins, fb_app_id: theme.fb_app_id}) %> 26 | <% if (theme.rss){ %> 27 | 28 | <% } %> 29 | <% if (theme.favicon){ %> 30 | 31 | <% } %> 32 | <% if (config.highlight.enable){ %> 33 | 34 | <% } %> 35 | <%- css('css/style') %> 36 | 37 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/header.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/mobile-nav.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/post/category.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.categories && post.categories.length){ %> 2 |
3 | <%- list_categories(post.categories, { 4 | show_count: false, 5 | class: 'article-category', 6 | style: 'none', 7 | separator: '►' 8 | }) %> 9 |
10 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/post/date.ejs: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/post/gallery.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.photos && post.photos.length){ %> 2 |
3 |
4 | <% post.photos.forEach(function(photo, i){ %> 5 | 6 | 7 | 8 | <% }) %> 9 |
10 |
11 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/post/nav.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.prev || post.next){ %> 2 | 22 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/post/tag.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.tags && post.tags.length){ %> 2 | <%- list_tags(post.tags, { 3 | show_count: false, 4 | class: 'article-tag' 5 | }) %> 6 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/post/title.ejs: -------------------------------------------------------------------------------- 1 | <% if (post.link){ %> 2 |

3 | 4 |

5 | <% } else if (post.title){ %> 6 | <% if (index){ %> 7 |

8 | <%= post.title %> 9 |

10 | <% } else { %> 11 |

12 | <%= post.title %> 13 |

14 | <% } %> 15 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_partial/sidebar.ejs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/landscape/layout/_widget/archive.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.posts.length){ %> 2 |
3 |

<%= __('archive_a') %>

4 |
5 | <%- list_archives({show_count: theme.show_count, type: theme.archive_type}) %> 6 |
7 |
8 | <% } %> 9 | -------------------------------------------------------------------------------- /themes/landscape/layout/_widget/category.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.categories.length){ %> 2 |
3 |

<%= __('categories') %>

4 |
5 | <%- list_categories({show_count: theme.show_count}) %> 6 |
7 |
8 | <% } %> 9 | -------------------------------------------------------------------------------- /themes/landscape/layout/_widget/recent_posts.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.posts.length){ %> 2 |
3 |

<%= __('recent_posts') %>

4 |
5 | 12 |
13 |
14 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/_widget/tag.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.tags.length){ %> 2 |
3 |

<%= __('tags') %>

4 |
5 | <%- list_tags({show_count: theme.show_count}) %> 6 |
7 |
8 | <% } %> 9 | -------------------------------------------------------------------------------- /themes/landscape/layout/_widget/tagcloud.ejs: -------------------------------------------------------------------------------- 1 | <% if (site.tags.length){ %> 2 |
3 |

<%= __('tagcloud') %>

4 |
5 | <%- tagcloud() %> 6 |
7 |
8 | <% } %> -------------------------------------------------------------------------------- /themes/landscape/layout/archive.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.archive, index: true}) %> -------------------------------------------------------------------------------- /themes/landscape/layout/category.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.category, index: true}) %> -------------------------------------------------------------------------------- /themes/landscape/layout/index.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: 2, index: true}) %> -------------------------------------------------------------------------------- /themes/landscape/layout/layout.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/head') %> 2 | 3 |
4 |
5 | <%- partial('_partial/header', null, {cache: !config.relative_link}) %> 6 |
7 |
<%- body %>
8 | <% if (theme.sidebar && theme.sidebar !== 'bottom'){ %> 9 | <%- partial('_partial/sidebar', null, {cache: !config.relative_link}) %> 10 | <% } %> 11 |
12 | <%- partial('_partial/footer', null, {cache: !config.relative_link}) %> 13 |
14 | <%- partial('_partial/mobile-nav', null, {cache: !config.relative_link}) %> 15 | <%- partial('_partial/after-footer') %> 16 |
17 | 18 | -------------------------------------------------------------------------------- /themes/landscape/layout/page.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/article', {post: page, index: false}) %> -------------------------------------------------------------------------------- /themes/landscape/layout/post.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/article', {post: page, index: false}) %> -------------------------------------------------------------------------------- /themes/landscape/layout/tag.ejs: -------------------------------------------------------------------------------- 1 | <%- partial('_partial/archive', {pagination: config.tag, index: true}) %> -------------------------------------------------------------------------------- /themes/landscape/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hexo-theme-landscape", 3 | "version": "0.0.2", 4 | "private": true, 5 | "devDependencies": { 6 | "grunt": "1.6.1", 7 | "load-grunt-tasks": "5.1.0", 8 | "grunt-git": "1.1.1", 9 | "grunt-contrib-clean": "2.0.1", 10 | "grunt-contrib-copy": "1.0.0" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /themes/landscape/scripts/fancybox.js: -------------------------------------------------------------------------------- 1 | var rUrl = 2 | /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/; 3 | 4 | /** 5 | * Fancybox tag 6 | * 7 | * Syntax: 8 | * {% fancybox /path/to/image [/path/to/thumbnail] [title] %} 9 | */ 10 | 11 | hexo.extend.tag.register("fancybox", function (args) { 12 | var original = args.shift(), 13 | thumbnail = ""; 14 | 15 | if (args.length && rUrl.test(args[0])) { 16 | thumbnail = args.shift(); 17 | } 18 | 19 | var title = args.join(" "); 20 | 21 | return ( 22 | '' + 27 | '' +
30 |     title +
31 |     '' 32 | ); 33 | "" + (title ? '' + title + "" : ""); 34 | }); 35 | -------------------------------------------------------------------------------- /themes/landscape/source/css/_extend.styl: -------------------------------------------------------------------------------- 1 | $block-caption 2 | text-decoration: none 3 | text-transform: uppercase 4 | letter-spacing: 2px 5 | color: color-grey 6 | margin-bottom: 1em 7 | margin-left: 5px 8 | line-height: 1em 9 | text-shadow: 0 1px #fff 10 | font-weight: bold 11 | 12 | $block 13 | background: #fff 14 | box-shadow: 1px 2px 3px #ddd 15 | border: 1px solid color-border 16 | border-radius: 3px 17 | 18 | $base-style 19 | h1 20 | font-size: 2em 21 | h2 22 | font-size: 1.5em 23 | h3 24 | font-size: 1.3em 25 | h4 26 | font-size: 1.2em 27 | h5 28 | font-size: 1em 29 | h6 30 | font-size: 1em 31 | color: color-grey 32 | hr 33 | border: 1px dashed color-border 34 | strong 35 | font-weight: bold 36 | em, cite 37 | font-style: italic 38 | sup, sub 39 | font-size: 0.75em 40 | line-height: 0 41 | position: relative 42 | vertical-align: baseline 43 | sup 44 | top: -0.5em 45 | sub 46 | bottom: -0.2em 47 | small 48 | font-size: 0.85em 49 | acronym, abbr 50 | border-bottom: 1px dotted 51 | ul, ol, dl 52 | margin: 0 20px 53 | line-height: line-height 54 | ul, ol 55 | ul, ol 56 | margin-top: 0 57 | margin-bottom: 0 58 | ul 59 | list-style: disc 60 | ol 61 | list-style: decimal 62 | dt 63 | font-weight: bold -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/archive.styl: -------------------------------------------------------------------------------- 1 | .archives-wrap 2 | margin: block-margin 0 3 | 4 | .archives 5 | clearfix() 6 | 7 | .archive-year-wrap 8 | margin-bottom: 1em 9 | 10 | .archive-year 11 | @extend $block-caption 12 | 13 | .archives 14 | column-gap: 10px 15 | @media mq-tablet 16 | column-count: 2 17 | @media mq-normal 18 | column-count: 3 19 | 20 | .archive-article 21 | avoid-column-break() 22 | 23 | .archive-article-inner 24 | @extend $block 25 | padding: 10px 26 | margin-bottom: 15px 27 | 28 | .archive-article-title 29 | text-decoration: none 30 | font-weight: bold 31 | color: color-default 32 | transition: color 0.2s 33 | line-height: line-height 34 | &:hover 35 | color: color-link 36 | 37 | .archive-article-footer 38 | margin-top: 1em 39 | 40 | .archive-article-date 41 | color: color-grey 42 | text-decoration: none 43 | font-size: 0.85em 44 | line-height: 1em 45 | margin-bottom: 0.5em 46 | display: block 47 | 48 | #page-nav 49 | clearfix() 50 | margin: block-margin auto 51 | background: #fff 52 | box-shadow: 1px 2px 3px #ddd 53 | border: 1px solid color-border 54 | border-radius: 3px 55 | text-align: center 56 | color: color-grey 57 | overflow: hidden 58 | a, span 59 | padding: 10px 20px 60 | line-height: 1 61 | height: 2ex 62 | a 63 | color: color-grey 64 | text-decoration: none 65 | &:hover 66 | background: color-grey 67 | color: #fff 68 | .prev 69 | float: left 70 | .next 71 | float: right 72 | .page-number 73 | display: inline-block 74 | @media mq-mobile 75 | display: none 76 | .current 77 | color: color-default 78 | font-weight: bold 79 | .space 80 | color: color-border -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/article.styl: -------------------------------------------------------------------------------- 1 | .article 2 | margin: block-margin 0 3 | 4 | .article-inner 5 | @extend $block 6 | overflow: hidden 7 | 8 | .article-meta 9 | clearfix() 10 | 11 | .article-date 12 | @extend $block-caption 13 | float: left 14 | 15 | .article-category 16 | float: left 17 | line-height: 1em 18 | color: #ccc 19 | text-shadow: 0 1px #fff 20 | margin-left: 8px 21 | &:before 22 | content: "\2022" 23 | 24 | .article-category-link 25 | @extend $block-caption 26 | margin: 0 12px 1em 27 | 28 | .article-header 29 | padding: article-padding article-padding 0 30 | 31 | .article-title 32 | text-decoration: none 33 | font-size: 2em 34 | font-weight: bold 35 | color: color-default 36 | line-height: line-height-title 37 | transition: color 0.2s 38 | a&:hover 39 | color: color-link 40 | 41 | .article-entry 42 | @extend $base-style 43 | clearfix() 44 | color: color-default 45 | padding: 0 article-padding 46 | p, table 47 | line-height: line-height 48 | margin: line-height 0 49 | h1, h2, h3, h4, h5, h6 50 | font-weight: bold 51 | h1, h2, h3, h4, h5, h6 52 | line-height: line-height-title 53 | margin: line-height-title 0 54 | a 55 | color: color-link 56 | text-decoration: none 57 | &:hover 58 | text-decoration: underline 59 | ul, ol, dl 60 | margin-top: line-height 61 | margin-bottom: line-height 62 | img, video 63 | max-width: 100% 64 | height: auto 65 | display: block 66 | margin: auto 67 | iframe 68 | border: none 69 | table 70 | width: 100% 71 | border-collapse: collapse 72 | border-spacing: 0 73 | th 74 | font-weight: bold 75 | border-bottom: 3px solid color-border 76 | padding-bottom: 0.5em 77 | td 78 | border-bottom: 1px solid color-border 79 | padding: 10px 0 80 | blockquote 81 | font-family: font-serif 82 | font-size: 1.4em 83 | margin: line-height 20px 84 | text-align: center 85 | footer 86 | font-size: font-size 87 | margin: line-height 0 88 | font-family: font-sans 89 | cite 90 | &:before 91 | content: "—" 92 | padding: 0 0.5em 93 | .pullquote 94 | text-align: left 95 | width: 45% 96 | margin: 0 97 | &.left 98 | margin-left: 0.5em 99 | margin-right: 1em 100 | &.right 101 | margin-right: 0.5em 102 | margin-left: 1em 103 | .caption 104 | color: color-grey 105 | display: block 106 | font-size: 0.9em 107 | margin-top: 0.5em 108 | position: relative 109 | text-align: center 110 | // http://webdesignerwall.com/tutorials/css-elastic-videos 111 | .video-container 112 | position: relative 113 | padding-top: (9 / 16 * 100)% // 16:9 ratio 114 | height: 0 115 | overflow: hidden 116 | iframe, object, embed 117 | position: absolute 118 | top: 0 119 | left: 0 120 | width: 100% 121 | height: 100% 122 | margin-top: 0 123 | 124 | .article-more-link a 125 | display: inline-block 126 | line-height: 1em 127 | padding: 6px 15px 128 | border-radius: 15px 129 | background: color-background 130 | color: color-grey 131 | text-shadow: 0 1px #fff 132 | text-decoration: none 133 | &:hover 134 | background: color-link 135 | color: #fff 136 | text-decoration: none 137 | text-shadow: 0 1px darken(color-link, 20%) 138 | 139 | .article-footer 140 | clearfix() 141 | font-size: 0.85em 142 | line-height: line-height 143 | border-top: 1px solid color-border 144 | padding-top: line-height 145 | margin: 0 article-padding article-padding 146 | a 147 | color: color-grey 148 | text-decoration: none 149 | &:hover 150 | color: color-default 151 | 152 | .article-tag-list-item 153 | float: left 154 | margin-right: 10px 155 | 156 | .article-tag-list-link 157 | &:before 158 | content: "#" 159 | 160 | .article-comment-link 161 | float: right 162 | &:before 163 | content: "\f075" 164 | font-family: font-icon 165 | padding-right: 8px 166 | 167 | .article-share-link 168 | cursor: pointer 169 | float: right 170 | margin-left: 20px 171 | &:before 172 | content: "\f064" 173 | font-family: font-icon 174 | padding-right: 6px 175 | 176 | #article-nav 177 | clearfix() 178 | position: relative 179 | @media mq-normal 180 | margin: block-margin 0 181 | &:before 182 | absolute-center(8px) 183 | content: "" 184 | border-radius: 50% 185 | background: color-border 186 | box-shadow: 0 1px 2px #fff 187 | 188 | .article-nav-link-wrap 189 | text-decoration: none 190 | text-shadow: 0 1px #fff 191 | color: color-grey 192 | box-sizing: border-box 193 | margin-top: block-margin 194 | text-align: center 195 | display: block 196 | &:hover 197 | color: color-default 198 | @media mq-normal 199 | width: 50% 200 | margin-top: 0 201 | 202 | #article-nav-newer 203 | @media mq-normal 204 | float: left 205 | text-align: right 206 | padding-right: 20px 207 | 208 | #article-nav-older 209 | @media mq-normal 210 | float: right 211 | text-align: left 212 | padding-left: 20px 213 | 214 | .article-nav-caption 215 | text-transform: uppercase 216 | letter-spacing: 2px 217 | color: color-border 218 | line-height: 1em 219 | font-weight: bold 220 | #article-nav-newer & 221 | margin-right: -2px 222 | 223 | .article-nav-title 224 | font-size: 0.85em 225 | line-height: line-height 226 | margin-top: 0.5em 227 | 228 | .article-share-box 229 | position: absolute 230 | display: none 231 | background: #fff 232 | box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.2) 233 | border-radius: 3px 234 | margin-left: -145px 235 | overflow: hidden 236 | z-index: 1 237 | &.on 238 | display: block 239 | 240 | .article-share-input 241 | width: 100% 242 | background: none 243 | box-sizing: border-box 244 | font: 14px font-sans 245 | padding: 0 15px 246 | color: color-default 247 | outline: none 248 | border: 1px solid color-border 249 | border-radius: 3px 3px 0 0 250 | height: 36px 251 | line-height: 36px 252 | 253 | .article-share-links 254 | clearfix() 255 | background: color-background 256 | 257 | $article-share-link 258 | width: 50px 259 | height: 36px 260 | display: block 261 | float: left 262 | position: relative 263 | color: #999 264 | text-shadow: 0 1px #fff 265 | &:before 266 | font-size: 20px 267 | font-family: font-icon 268 | absolute-center(@font-size) 269 | text-align: center 270 | &:hover 271 | color: #fff 272 | 273 | .article-share-twitter 274 | @extend $article-share-link 275 | &:before 276 | content: "\f099" 277 | &:hover 278 | background: color-twitter 279 | text-shadow: 0 1px darken(color-twitter, 20%) 280 | 281 | .article-share-facebook 282 | @extend $article-share-link 283 | &:before 284 | content: "\f09a" 285 | &:hover 286 | background: color-facebook 287 | text-shadow: 0 1px darken(color-facebook, 20%) 288 | 289 | .article-share-pinterest 290 | @extend $article-share-link 291 | &:before 292 | content: "\f0d2" 293 | &:hover 294 | background: color-pinterest 295 | text-shadow: 0 1px darken(color-pinterest, 20%) 296 | 297 | .article-share-google 298 | @extend $article-share-link 299 | &:before 300 | content: "\f0d5" 301 | &:hover 302 | background: color-google 303 | text-shadow: 0 1px darken(color-google, 20%) 304 | 305 | .article-gallery 306 | background: #000 307 | position: relative 308 | 309 | .article-gallery-photos 310 | position: relative 311 | overflow: hidden 312 | 313 | .article-gallery-img 314 | display: none 315 | max-width: 100% 316 | &:first-child 317 | display: block 318 | &.loaded 319 | position: absolute 320 | display: block 321 | img 322 | display: block 323 | max-width: 100% 324 | margin: 0 auto 325 | /* 326 | $article-gallery-ctrl 327 | position: absolute 328 | top: 0 329 | height: 100% 330 | width: 60px 331 | color: #fff 332 | text-shadow: 0 0 3px rgba(0, 0, 0, 0.3) 333 | opacity: 0.3 334 | transition: opacity 0.2s 335 | cursor: pointer 336 | &:hover 337 | opacity: 0.8 338 | &:before 339 | font-size: 30px 340 | font-family: font-icon 341 | position: absolute 342 | top: 50% 343 | margin-top: @font-size * -0.5 344 | 345 | .article-gallery-prev 346 | @extend $article-gallery-ctrl 347 | left: 0 348 | &:before 349 | content: "\f053" 350 | left: 15px 351 | 352 | .article-gallery-next 353 | @extend $article-gallery-ctrl 354 | right: 0 355 | &:before 356 | content: "\f054" 357 | right: 15px*/ -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/comment.styl: -------------------------------------------------------------------------------- 1 | #comments 2 | background: #fff 3 | box-shadow: 1px 2px 3px #ddd 4 | padding: article-padding 5 | border: 1px solid color-border 6 | border-radius: 3px 7 | margin: block-margin 0 8 | a 9 | color: color-link -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/footer.styl: -------------------------------------------------------------------------------- 1 | #footer 2 | background: color-footer-background 3 | padding: 50px 0 4 | border-top: 1px solid color-border 5 | color: color-grey 6 | a 7 | color: color-link 8 | text-decoration: none 9 | &:hover 10 | text-decoration: underline 11 | 12 | #footer-info 13 | line-height: line-height 14 | font-size: 0.85em -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/header.styl: -------------------------------------------------------------------------------- 1 | #header 2 | height: banner-height 3 | position: relative 4 | border-bottom: 1px solid color-border 5 | &:before, &:after 6 | content: "" 7 | position: absolute 8 | left: 0 9 | right: 0 10 | height: 40px 11 | &:before 12 | top: 0 13 | background: linear-gradient(rgba(0, 0, 0, 0.2), transparent) 14 | &:after 15 | bottom: 0 16 | background: linear-gradient(transparent, rgba(0, 0, 0, 0.2)) 17 | 18 | #header-outer 19 | height: 100% 20 | position: relative 21 | 22 | #header-inner 23 | position: relative 24 | overflow: hidden 25 | 26 | #banner 27 | position: absolute 28 | top: 0 29 | left: 0 30 | width: 100% 31 | height: 100% 32 | background: url(banner-url) center #000 33 | background-size: cover 34 | z-index: -1 35 | 36 | #header-title 37 | text-align: center 38 | height: logo-size 39 | position: absolute 40 | top: 50% 41 | left: 0 42 | margin-top: logo-size * -0.5 43 | 44 | $logo-text 45 | text-decoration: none 46 | color: #fff 47 | font-weight: 300 48 | text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) 49 | 50 | #logo 51 | @extend $logo-text 52 | font-size: logo-size 53 | line-height: logo-size 54 | letter-spacing: 2px 55 | 56 | #subtitle 57 | @extend $logo-text 58 | font-size: subtitle-size 59 | line-height: subtitle-size 60 | letter-spacing: 1px 61 | 62 | #subtitle-wrap 63 | margin-top: subtitle-size 64 | 65 | #main-nav 66 | float: left 67 | margin-left: -15px 68 | 69 | $nav-link 70 | float: left 71 | color: #fff 72 | opacity: 0.6 73 | text-decoration: none 74 | text-shadow: 0 1px rgba(0, 0, 0, 0.2) 75 | transition: opacity 0.2s 76 | display: block 77 | padding: 20px 15px 78 | &:hover 79 | opacity: 1 80 | 81 | .nav-icon 82 | @extend $nav-link 83 | font-family: font-icon 84 | text-align: center 85 | font-size: font-size 86 | width: font-size 87 | height: font-size 88 | padding: 20px 15px 89 | position: relative 90 | cursor: pointer 91 | 92 | .main-nav-link 93 | @extend $nav-link 94 | font-weight: 300 95 | letter-spacing: 1px 96 | @media mq-mobile 97 | display: none 98 | 99 | #main-nav-toggle 100 | display: none 101 | &:before 102 | content: "\f0c9" 103 | @media mq-mobile 104 | display: block 105 | 106 | #sub-nav 107 | float: right 108 | margin-right: -15px 109 | 110 | #nav-rss-link 111 | &:before 112 | content: "\f09e" 113 | 114 | #nav-search-btn 115 | &:before 116 | content: "\f002" 117 | 118 | #search-form-wrap 119 | position: absolute 120 | top: 15px 121 | width: 150px 122 | height: 30px 123 | right: -150px 124 | opacity: 0 125 | transition: 0.2s ease-out 126 | &.on 127 | opacity: 1 128 | right: 0 129 | @media mq-mobile 130 | width: 100% 131 | right: -100% 132 | 133 | .search-form 134 | position: absolute 135 | top: 0 136 | left: 0 137 | right: 0 138 | background: #fff 139 | padding: 5px 15px 140 | border-radius: 15px 141 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.3) 142 | 143 | .search-form-input 144 | border: none 145 | background: none 146 | color: color-default 147 | width: 100% 148 | font: 13px font-sans 149 | outline: none 150 | &::-webkit-search-results-decoration 151 | &::-webkit-search-cancel-button 152 | -webkit-appearance: none 153 | 154 | .search-form-submit 155 | position: absolute 156 | top: 50% 157 | right: 10px 158 | margin-top: -7px 159 | font: 13px font-icon 160 | border: none 161 | background: none 162 | color: #bbb 163 | cursor: pointer 164 | &:hover, &:focus 165 | color: #777 -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/highlight.styl: -------------------------------------------------------------------------------- 1 | // https://github.com/chriskempson/tomorrow-theme 2 | highlight-background = #2d2d2d 3 | highlight-current-line = #393939 4 | highlight-selection = #515151 5 | highlight-foreground = #cccccc 6 | highlight-comment = #999999 7 | highlight-red = #f2777a 8 | highlight-orange = #f99157 9 | highlight-yellow = #ffcc66 10 | highlight-green = #99cc99 11 | highlight-aqua = #66cccc 12 | highlight-blue = #6699cc 13 | highlight-purple = #cc99cc 14 | 15 | $code-block 16 | background: highlight-background 17 | margin: 0 article-padding * -1 18 | padding: 15px article-padding 19 | border-style: solid 20 | border-color: color-border 21 | border-width: 1px 0 22 | overflow: auto 23 | color: highlight-foreground 24 | line-height: font-size * line-height 25 | 26 | $line-numbers 27 | color: #666 28 | font-size: 0.85em 29 | 30 | .article-entry 31 | pre, code 32 | font-family: font-mono 33 | code 34 | background: color-background 35 | text-shadow: 0 1px #fff 36 | padding: 0 0.3em 37 | pre 38 | @extend $code-block 39 | code 40 | background: none 41 | text-shadow: none 42 | padding: 0 43 | .highlight 44 | @extend $code-block 45 | pre 46 | border: none 47 | margin: 0 48 | padding: 0 49 | table 50 | margin: 0 51 | width: auto 52 | td 53 | border: none 54 | padding: 0 55 | figcaption 56 | clearfix() 57 | font-size: 0.85em 58 | color: highlight-comment 59 | line-height: 1em 60 | margin-bottom: 1em 61 | a 62 | float: right 63 | .gutter pre 64 | @extend $line-numbers 65 | text-align: right 66 | padding-right: 20px 67 | .line 68 | height: font-size * line-height 69 | .line.marked 70 | background: highlight-selection 71 | .gist 72 | margin: 0 article-padding * -1 73 | border-style: solid 74 | border-color: color-border 75 | border-width: 1px 0 76 | background: highlight-background 77 | padding: 15px article-padding 15px 0 78 | .gist-file 79 | border: none 80 | font-family: font-mono 81 | margin: 0 82 | .gist-data 83 | background: none 84 | border: none 85 | .line-numbers 86 | @extend $line-numbers 87 | background: none 88 | border: none 89 | padding: 0 20px 0 0 90 | .line-data 91 | padding: 0 !important 92 | .highlight 93 | margin: 0 94 | padding: 0 95 | border: none 96 | .gist-meta 97 | background: highlight-background 98 | color: highlight-comment 99 | font: 0.85em font-sans 100 | text-shadow: 0 0 101 | padding: 0 102 | margin-top: 1em 103 | margin-left: article-padding 104 | a 105 | color: color-link 106 | font-weight: normal 107 | &:hover 108 | text-decoration: underline 109 | 110 | pre 111 | .comment 112 | .title 113 | color: highlight-comment 114 | .variable 115 | .attribute 116 | .tag 117 | .regexp 118 | .ruby .constant 119 | .xml .tag .title 120 | .xml .pi 121 | .xml .doctype 122 | .html .doctype 123 | .css .id 124 | .css .class 125 | .css .pseudo 126 | color: highlight-red 127 | .number 128 | .preprocessor 129 | .built_in 130 | .literal 131 | .params 132 | .constant 133 | color: highlight-orange 134 | .class 135 | .ruby .class .title 136 | .css .rules .attribute 137 | color: highlight-green 138 | .string 139 | .value 140 | .inheritance 141 | .header 142 | .ruby .symbol 143 | .xml .cdata 144 | color: highlight-green 145 | .css .hexcolor 146 | color: highlight-aqua 147 | .function 148 | .python .decorator 149 | .python .title 150 | .ruby .function .title 151 | .ruby .title .keyword 152 | .perl .sub 153 | .javascript .title 154 | .coffeescript .title 155 | color: highlight-blue 156 | .keyword 157 | .javascript .function 158 | color: highlight-purple 159 | -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/mobile.styl: -------------------------------------------------------------------------------- 1 | @media mq-mobile 2 | #mobile-nav 3 | position: absolute 4 | top: 0 5 | left: 0 6 | width: mobile-nav-width 7 | height: 100% 8 | background: color-mobile-nav-background 9 | border-right: 1px solid #fff 10 | 11 | @media mq-mobile 12 | .mobile-nav-link 13 | display: block 14 | color: color-grey 15 | text-decoration: none 16 | padding: 15px 20px 17 | font-weight: bold 18 | &:hover 19 | color: #fff 20 | -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/sidebar-aside.styl: -------------------------------------------------------------------------------- 1 | #sidebar 2 | @media mq-normal 3 | column(sidebar-column) 4 | 5 | .widget-wrap 6 | margin: block-margin 0 7 | 8 | .widget-title 9 | @extend $block-caption 10 | 11 | .widget 12 | color: color-sidebar-text 13 | text-shadow: 0 1px #fff 14 | background: color-widget-background 15 | box-shadow: 0 -1px 4px color-widget-border inset 16 | border: 1px solid color-widget-border 17 | padding: 15px 18 | border-radius: 3px 19 | a 20 | color: color-link 21 | text-decoration: none 22 | &:hover 23 | text-decoration: underline 24 | ul, ol, dl 25 | ul, ol, dl 26 | margin-left: 15px 27 | list-style: disc -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/sidebar-bottom.styl: -------------------------------------------------------------------------------- 1 | .widget-wrap 2 | margin-bottom: block-margin !important 3 | @media mq-normal 4 | column(main-column) 5 | 6 | .widget-title 7 | color: #ccc 8 | text-transform: uppercase 9 | letter-spacing: 2px 10 | margin-bottom: .5em 11 | line-height: 1em 12 | font-weight: bold 13 | 14 | .widget 15 | color: color-grey 16 | ul, ol 17 | li 18 | display: inline-block 19 | zoom:1 20 | *display:inline 21 | padding-right: .75em 22 | /* Having problems getting balanced white space between items 23 | li:before 24 | content: " | " 25 | li:first-child:before 26 | content: none 27 | */ 28 | -------------------------------------------------------------------------------- /themes/landscape/source/css/_partial/sidebar.styl: -------------------------------------------------------------------------------- 1 | if sidebar is bottom 2 | @import "sidebar-bottom" 3 | else 4 | @import "sidebar-aside" 5 | 6 | .widget 7 | @extend $base-style 8 | line-height: line-height 9 | word-wrap: break-word 10 | font-size: 0.9em 11 | ul, ol 12 | list-style: none 13 | margin: 0 14 | ul, ol 15 | margin: 0 20px 16 | ul 17 | list-style: disc 18 | ol 19 | list-style: decimal 20 | 21 | .category-list-count 22 | .tag-list-count 23 | .archive-list-count 24 | padding-left: 5px 25 | color: color-grey 26 | font-size: 0.85em 27 | &:before 28 | content: "(" 29 | &:after 30 | content: ")" 31 | 32 | .tagcloud 33 | a 34 | margin-right: 5px 35 | display: inline-block 36 | -------------------------------------------------------------------------------- /themes/landscape/source/css/_util/grid.styl: -------------------------------------------------------------------------------- 1 | ///////////////// 2 | // Semantic.gs // for Stylus: http://learnboost.github.com/stylus/ 3 | ///////////////// 4 | 5 | // Utility function — you should never need to modify this 6 | // _gridsystem-width = (column-width + gutter-width) * columns 7 | gridsystem-width(_columns = columns) 8 | (column-width + gutter-width) * _columns 9 | 10 | // Set @total-width to 100% for a fluid layout 11 | // total-width = gridsystem-width(columns) 12 | total-width = 100% 13 | 14 | ////////// 15 | // GRID // 16 | ////////// 17 | 18 | body 19 | clearfix() 20 | width: 100% 21 | 22 | row(_columns = columns) 23 | clearfix() 24 | display: block 25 | width: total-width * ((gutter-width + gridsystem-width(_columns)) / gridsystem-width(_columns)) 26 | margin: 0 total-width * (((gutter-width * .5) / gridsystem-width(_columns)) * -1) 27 | 28 | column(x, _columns = columns) 29 | display: inline 30 | float: left 31 | width: total-width * ((((gutter-width + column-width) * x) - gutter-width) / gridsystem-width(_columns)) 32 | margin: 0 total-width * ((gutter-width * .5) / gridsystem-width(_columns)) 33 | 34 | push(offset = 1) 35 | margin-left: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) 36 | 37 | pull(offset = 1) 38 | margin-right: total-width * (((gutter-width + column-width) * offset) / gridsystem-width(columns)) -------------------------------------------------------------------------------- /themes/landscape/source/css/_util/mixin.styl: -------------------------------------------------------------------------------- 1 | // http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/ 2 | hide-text() 3 | text-indent: 100% 4 | white-space: nowrap 5 | overflow: hidden 6 | 7 | // http://codepen.io/shshaw/full/gEiDt 8 | absolute-center(width, height = width) 9 | // margin: auto 10 | // position: absolute 11 | // top: 50% 12 | // top: 0 13 | // left: 0 14 | // bottom: 0 15 | // right: 0 16 | // width: width 17 | // height: height 18 | // overflow: auto 19 | width: width 20 | height: height 21 | position: absolute 22 | top: 50% 23 | left: 50% 24 | margin-top: width * -0.5 25 | margin-left: height * -0.5 26 | 27 | avoid-column-break() 28 | vendor("column-break-inside", avoid, only: webkit) 29 | page-break-inside: avoid // for firefox 30 | overflow: hidden // fix for firefox 31 | break-inside: avoid-column 32 | -------------------------------------------------------------------------------- /themes/landscape/source/css/_variables.styl: -------------------------------------------------------------------------------- 1 | // Config 2 | support-for-ie = false 3 | vendor-prefixes = webkit moz ms official 4 | 5 | // Colors 6 | color-default = #555 7 | color-grey = #999 8 | color-border = #ddd 9 | color-link = #258fb8 10 | color-background = #eee 11 | color-sidebar-text = #777 12 | color-widget-background = #ddd 13 | color-widget-border = #ccc 14 | color-footer-background = #262a30 15 | color-mobile-nav-background = #191919 16 | color-twitter = #00aced 17 | color-facebook = #3b5998 18 | color-pinterest = #cb2027 19 | color-google = #dd4b39 20 | 21 | // Fonts 22 | font-sans = -apple-system, BlinkMacSystemFont, 23 | "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", 24 | "Fira Sans", "Droid Sans", "Helvetica Neue", 25 | sans-serif 26 | font-serif = Georgia, "Times New Roman", serif 27 | font-mono = "Source Code Pro", Consolas, Monaco, Menlo, Consolas, monospace 28 | font-icon = FontAwesome 29 | font-icon-path = "fonts/fontawesome-webfont" 30 | font-icon-version = "4.0.3" 31 | font-size = 14px 32 | line-height = 1.6em 33 | line-height-title = 1.1em 34 | 35 | // Header 36 | logo-size = 40px 37 | subtitle-size = 16px 38 | banner-height = 300px 39 | banner-url = "images/banner.jpg" 40 | 41 | sidebar = hexo-config("sidebar") 42 | 43 | // Layout 44 | block-margin = 50px 45 | article-padding = 20px 46 | mobile-nav-width = 280px 47 | main-column = 9 48 | sidebar-column = 3 49 | 50 | if sidebar and sidebar isnt bottom 51 | _sidebar-column = sidebar-column 52 | else 53 | _sidebar-column = 0 54 | 55 | // Grids 56 | column-width = 80px 57 | gutter-width = 20px 58 | columns = main-column + _sidebar-column 59 | 60 | // Media queries 61 | mq-mobile = "screen and (max-width: 479px)" 62 | mq-tablet = "screen and (min-width: 480px) and (max-width: 767px)" 63 | mq-normal = "screen and (min-width: 768px)" -------------------------------------------------------------------------------- /themes/landscape/source/css/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/css/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /themes/landscape/source/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /themes/landscape/source/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /themes/landscape/source/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /themes/landscape/source/css/images/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/css/images/banner.jpg -------------------------------------------------------------------------------- /themes/landscape/source/css/style.styl: -------------------------------------------------------------------------------- 1 | @import "nib" 2 | @import "_variables" 3 | @import "_util/mixin" 4 | @import "_util/grid" 5 | 6 | global-reset() 7 | 8 | input, button 9 | margin: 0 10 | padding: 0 11 | &::-moz-focus-inner 12 | border: 0 13 | padding: 0 14 | 15 | @font-face 16 | font-family: FontAwesome 17 | font-style: normal 18 | font-weight: normal 19 | src: url(font-icon-path + ".eot?v=#" + font-icon-version) 20 | src: url(font-icon-path + ".eot?#iefix&v=#" + font-icon-version) format("embedded-opentype"), 21 | url(font-icon-path + ".woff?v=#" + font-icon-version) format("woff"), 22 | url(font-icon-path + ".ttf?v=#" + font-icon-version) format("truetype"), 23 | url(font-icon-path + ".svg#fontawesomeregular?v=#" + font-icon-version) format("svg") 24 | 25 | html, body, #container 26 | height: 100% 27 | 28 | body 29 | background: color-background 30 | font: font-size font-sans 31 | -webkit-text-size-adjust: 100% 32 | 33 | .outer 34 | clearfix() 35 | max-width: (column-width + gutter-width) * columns + gutter-width 36 | margin: 0 auto 37 | padding: 0 gutter-width 38 | 39 | .inner 40 | column(columns) 41 | 42 | .left, .alignleft 43 | float: left 44 | 45 | .right, .alignright 46 | float: right 47 | 48 | .clear 49 | clear: both 50 | 51 | #container 52 | position: relative 53 | 54 | .mobile-nav-on 55 | overflow: hidden 56 | 57 | #wrap 58 | height: 100% 59 | width: 100% 60 | position: absolute 61 | top: 0 62 | left: 0 63 | transition: 0.2s ease-out 64 | z-index: 1 65 | background: color-background 66 | .mobile-nav-on & 67 | left: mobile-nav-width 68 | 69 | if sidebar and sidebar isnt bottom 70 | #main 71 | @media mq-normal 72 | column(main-column) 73 | 74 | if sidebar is left 75 | @media mq-normal 76 | #main 77 | float: right 78 | 79 | @import "_extend" 80 | @import "_partial/header" 81 | @import "_partial/article" 82 | @import "_partial/comment" 83 | @import "_partial/archive" 84 | @import "_partial/footer" 85 | @import "_partial/highlight" 86 | @import "_partial/mobile" 87 | 88 | if sidebar 89 | @import "_partial/sidebar" -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/blank.gif -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/fancybox_loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/fancybox_loading@2x.gif -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/fancybox_sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/fancybox_sprite@2x.png -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/helpers/fancybox_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DemoMacro/hexo-boilerplate-netlify-cms/3365f7b0a50dc974901c1ed5815760ebd4b3b8b7/themes/landscape/source/fancybox/helpers/fancybox_buttons.png -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.css: -------------------------------------------------------------------------------- 1 | #fancybox-buttons { 2 | position: fixed; 3 | left: 0; 4 | width: 100%; 5 | z-index: 8050; 6 | } 7 | 8 | #fancybox-buttons.top { 9 | top: 10px; 10 | } 11 | 12 | #fancybox-buttons.bottom { 13 | bottom: 10px; 14 | } 15 | 16 | #fancybox-buttons ul { 17 | display: block; 18 | width: 166px; 19 | height: 30px; 20 | margin: 0 auto; 21 | padding: 0; 22 | list-style: none; 23 | border: 1px solid #111; 24 | border-radius: 3px; 25 | -webkit-box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05); 26 | -moz-box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05); 27 | box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05); 28 | background: rgb(50, 50, 50); 29 | background: -moz-linear-gradient( 30 | top, 31 | rgb(68, 68, 68) 0%, 32 | rgb(52, 52, 52) 50%, 33 | rgb(41, 41, 41) 50%, 34 | rgb(51, 51, 51) 100% 35 | ); 36 | background: -webkit-gradient( 37 | linear, 38 | left top, 39 | left bottom, 40 | color-stop(0%, rgb(68, 68, 68)), 41 | color-stop(50%, rgb(52, 52, 52)), 42 | color-stop(50%, rgb(41, 41, 41)), 43 | color-stop(100%, rgb(51, 51, 51)) 44 | ); 45 | background: -webkit-linear-gradient( 46 | top, 47 | rgb(68, 68, 68) 0%, 48 | rgb(52, 52, 52) 50%, 49 | rgb(41, 41, 41) 50%, 50 | rgb(51, 51, 51) 100% 51 | ); 52 | background: -o-linear-gradient( 53 | top, 54 | rgb(68, 68, 68) 0%, 55 | rgb(52, 52, 52) 50%, 56 | rgb(41, 41, 41) 50%, 57 | rgb(51, 51, 51) 100% 58 | ); 59 | background: -ms-linear-gradient( 60 | top, 61 | rgb(68, 68, 68) 0%, 62 | rgb(52, 52, 52) 50%, 63 | rgb(41, 41, 41) 50%, 64 | rgb(51, 51, 51) 100% 65 | ); 66 | background: linear-gradient( 67 | top, 68 | rgb(68, 68, 68) 0%, 69 | rgb(52, 52, 52) 50%, 70 | rgb(41, 41, 41) 50%, 71 | rgb(51, 51, 51) 100% 72 | ); 73 | filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); 74 | } 75 | 76 | #fancybox-buttons ul li { 77 | float: left; 78 | margin: 0; 79 | padding: 0; 80 | } 81 | 82 | #fancybox-buttons a { 83 | display: block; 84 | width: 30px; 85 | height: 30px; 86 | text-indent: -9999px; 87 | background-color: transparent; 88 | background-image: url("fancybox_buttons.png"); 89 | background-repeat: no-repeat; 90 | outline: none; 91 | opacity: 0.8; 92 | } 93 | 94 | #fancybox-buttons a:hover { 95 | opacity: 1; 96 | } 97 | 98 | #fancybox-buttons a.btnPrev { 99 | background-position: 5px 0; 100 | } 101 | 102 | #fancybox-buttons a.btnNext { 103 | background-position: -33px 0; 104 | border-right: 1px solid #3e3e3e; 105 | } 106 | 107 | #fancybox-buttons a.btnPlay { 108 | background-position: 0 -30px; 109 | } 110 | 111 | #fancybox-buttons a.btnPlayOn { 112 | background-position: -30px -30px; 113 | } 114 | 115 | #fancybox-buttons a.btnToggle { 116 | background-position: 3px -60px; 117 | border-left: 1px solid #111; 118 | border-right: 1px solid #3e3e3e; 119 | width: 35px; 120 | } 121 | 122 | #fancybox-buttons a.btnToggleOn { 123 | background-position: -27px -60px; 124 | } 125 | 126 | #fancybox-buttons a.btnClose { 127 | border-left: 1px solid #111; 128 | width: 35px; 129 | background-position: -56px 0px; 130 | } 131 | 132 | #fancybox-buttons a.btnDisabled { 133 | opacity: 0.4; 134 | cursor: default; 135 | } 136 | -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/helpers/jquery.fancybox-buttons.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Buttons helper for fancyBox 3 | * version: 1.0.5 (Mon, 15 Oct 2012) 4 | * @requires fancyBox v2.0 or later 5 | * 6 | * Usage: 7 | * $(".fancybox").fancybox({ 8 | * helpers : { 9 | * buttons: { 10 | * position : 'top' 11 | * } 12 | * } 13 | * }); 14 | * 15 | */ 16 | (function ($) { 17 | //Shortcut for fancyBox object 18 | var F = $.fancybox; 19 | 20 | //Add helper object 21 | F.helpers.buttons = { 22 | defaults: { 23 | skipSingle: false, // disables if gallery contains single image 24 | position: "top", // 'top' or 'bottom' 25 | tpl: '
', 26 | }, 27 | 28 | list: null, 29 | buttons: null, 30 | 31 | beforeLoad: function (opts, obj) { 32 | //Remove self if gallery do not have at least two items 33 | 34 | if (opts.skipSingle && obj.group.length < 2) { 35 | obj.helpers.buttons = false; 36 | obj.closeBtn = true; 37 | 38 | return; 39 | } 40 | 41 | //Increase top margin to give space for buttons 42 | obj.margin[opts.position === "bottom" ? 2 : 0] += 30; 43 | }, 44 | 45 | onPlayStart: function () { 46 | if (this.buttons) { 47 | this.buttons.play 48 | .attr("title", "Pause slideshow") 49 | .addClass("btnPlayOn"); 50 | } 51 | }, 52 | 53 | onPlayEnd: function () { 54 | if (this.buttons) { 55 | this.buttons.play 56 | .attr("title", "Start slideshow") 57 | .removeClass("btnPlayOn"); 58 | } 59 | }, 60 | 61 | afterShow: function (opts, obj) { 62 | var buttons = this.buttons; 63 | 64 | if (!buttons) { 65 | this.list = $(opts.tpl).addClass(opts.position).appendTo("body"); 66 | 67 | buttons = { 68 | prev: this.list.find(".btnPrev").click(F.prev), 69 | next: this.list.find(".btnNext").click(F.next), 70 | play: this.list.find(".btnPlay").click(F.play), 71 | toggle: this.list.find(".btnToggle").click(F.toggle), 72 | close: this.list.find(".btnClose").click(F.close), 73 | }; 74 | } 75 | 76 | //Prev 77 | if (obj.index > 0 || obj.loop) { 78 | buttons.prev.removeClass("btnDisabled"); 79 | } else { 80 | buttons.prev.addClass("btnDisabled"); 81 | } 82 | 83 | //Next / Play 84 | if (obj.loop || obj.index < obj.group.length - 1) { 85 | buttons.next.removeClass("btnDisabled"); 86 | buttons.play.removeClass("btnDisabled"); 87 | } else { 88 | buttons.next.addClass("btnDisabled"); 89 | buttons.play.addClass("btnDisabled"); 90 | } 91 | 92 | this.buttons = buttons; 93 | 94 | this.onUpdate(opts, obj); 95 | }, 96 | 97 | onUpdate: function (opts, obj) { 98 | var toggle; 99 | 100 | if (!this.buttons) { 101 | return; 102 | } 103 | 104 | toggle = this.buttons.toggle.removeClass("btnDisabled btnToggleOn"); 105 | 106 | //Size toggle button 107 | if (obj.canShrink) { 108 | toggle.addClass("btnToggleOn"); 109 | } else if (!obj.canExpand) { 110 | toggle.addClass("btnDisabled"); 111 | } 112 | }, 113 | 114 | beforeClose: function () { 115 | if (this.list) { 116 | this.list.remove(); 117 | } 118 | 119 | this.list = null; 120 | this.buttons = null; 121 | }, 122 | }; 123 | })(jQuery); 124 | -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/helpers/jquery.fancybox-media.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Media helper for fancyBox 3 | * version: 1.0.6 (Fri, 14 Jun 2013) 4 | * @requires fancyBox v2.0 or later 5 | * 6 | * Usage: 7 | * $(".fancybox").fancybox({ 8 | * helpers : { 9 | * media: true 10 | * } 11 | * }); 12 | * 13 | * Set custom URL parameters: 14 | * $(".fancybox").fancybox({ 15 | * helpers : { 16 | * media: { 17 | * youtube : { 18 | * params : { 19 | * autoplay : 0 20 | * } 21 | * } 22 | * } 23 | * } 24 | * }); 25 | * 26 | * Or: 27 | * $(".fancybox").fancybox({, 28 | * helpers : { 29 | * media: true 30 | * }, 31 | * youtube : { 32 | * autoplay: 0 33 | * } 34 | * }); 35 | * 36 | * Supports: 37 | * 38 | * Youtube 39 | * http://www.youtube.com/watch?v=opj24KnzrWo 40 | * http://www.youtube.com/embed/opj24KnzrWo 41 | * http://youtu.be/opj24KnzrWo 42 | * http://www.youtube-nocookie.com/embed/opj24KnzrWo 43 | * Vimeo 44 | * http://vimeo.com/40648169 45 | * http://vimeo.com/channels/staffpicks/38843628 46 | * http://vimeo.com/groups/surrealism/videos/36516384 47 | * http://player.vimeo.com/video/45074303 48 | * Metacafe 49 | * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/ 50 | * http://www.metacafe.com/watch/7635964/ 51 | * Dailymotion 52 | * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people 53 | * Twitvid 54 | * http://twitvid.com/QY7MD 55 | * Twitpic 56 | * http://twitpic.com/7p93st 57 | * Instagram 58 | * http://instagr.am/p/IejkuUGxQn/ 59 | * http://instagram.com/p/IejkuUGxQn/ 60 | * Google maps 61 | * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17 62 | * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 63 | * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56 64 | */ 65 | (function ($) { 66 | "use strict"; 67 | 68 | //Shortcut for fancyBox object 69 | var F = $.fancybox, 70 | format = function (url, rez, params) { 71 | params = params || ""; 72 | 73 | if ($.type(params) === "object") { 74 | params = $.param(params, true); 75 | } 76 | 77 | $.each(rez, function (key, value) { 78 | url = url.replace("$" + key, value || ""); 79 | }); 80 | 81 | if (params.length) { 82 | url += (url.indexOf("?") > 0 ? "&" : "?") + params; 83 | } 84 | 85 | return url; 86 | }; 87 | 88 | //Add helper object 89 | F.helpers.media = { 90 | defaults: { 91 | youtube: { 92 | matcher: 93 | /(youtube\.com|youtu\.be|youtube-nocookie\.com)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, 94 | params: { 95 | autoplay: 1, 96 | autohide: 1, 97 | fs: 1, 98 | rel: 0, 99 | hd: 1, 100 | wmode: "opaque", 101 | enablejsapi: 1, 102 | }, 103 | type: "iframe", 104 | url: "//www.youtube.com/embed/$3", 105 | }, 106 | vimeo: { 107 | matcher: /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, 108 | params: { 109 | autoplay: 1, 110 | hd: 1, 111 | show_title: 1, 112 | show_byline: 1, 113 | show_portrait: 0, 114 | fullscreen: 1, 115 | }, 116 | type: "iframe", 117 | url: "//player.vimeo.com/video/$1", 118 | }, 119 | metacafe: { 120 | matcher: /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, 121 | params: { 122 | autoPlay: "yes", 123 | }, 124 | type: "swf", 125 | url: function (rez, params, obj) { 126 | obj.swf.flashVars = "playerVars=" + $.param(params, true); 127 | 128 | return "//www.metacafe.com/fplayer/" + rez[1] + "/.swf"; 129 | }, 130 | }, 131 | dailymotion: { 132 | matcher: /dailymotion.com\/video\/(.*)\/?(.*)/, 133 | params: { 134 | additionalInfos: 0, 135 | autoStart: 1, 136 | }, 137 | type: "swf", 138 | url: "//www.dailymotion.com/swf/video/$1", 139 | }, 140 | twitvid: { 141 | matcher: /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, 142 | params: { 143 | autoplay: 0, 144 | }, 145 | type: "iframe", 146 | url: "//www.twitvid.com/embed.php?guid=$1", 147 | }, 148 | twitpic: { 149 | matcher: 150 | /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, 151 | type: "image", 152 | url: "//twitpic.com/show/full/$1/", 153 | }, 154 | instagram: { 155 | matcher: /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, 156 | type: "image", 157 | url: "//$1/p/$2/media/?size=l", 158 | }, 159 | google_maps: { 160 | matcher: /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, 161 | type: "iframe", 162 | url: function (rez) { 163 | return ( 164 | "//maps.google." + 165 | rez[1] + 166 | "/" + 167 | rez[3] + 168 | "" + 169 | rez[4] + 170 | "&output=" + 171 | (rez[4].indexOf("layer=c") > 0 ? "svembed" : "embed") 172 | ); 173 | }, 174 | }, 175 | }, 176 | 177 | beforeLoad: function (opts, obj) { 178 | var url = obj.href || "", 179 | type = false, 180 | what, 181 | item, 182 | rez, 183 | params; 184 | 185 | for (what in opts) { 186 | if (opts.hasOwnProperty(what)) { 187 | item = opts[what]; 188 | rez = url.match(item.matcher); 189 | 190 | if (rez) { 191 | type = item.type; 192 | params = $.extend( 193 | true, 194 | {}, 195 | item.params, 196 | obj[what] || 197 | ($.isPlainObject(opts[what]) ? opts[what].params : null) 198 | ); 199 | 200 | url = 201 | $.type(item.url) === "function" 202 | ? item.url.call(this, rez, params, obj) 203 | : format(item.url, rez, params); 204 | 205 | break; 206 | } 207 | } 208 | } 209 | 210 | if (type) { 211 | obj.href = url; 212 | obj.type = type; 213 | 214 | obj.autoHeight = false; 215 | } 216 | }, 217 | }; 218 | })(jQuery); 219 | -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.css: -------------------------------------------------------------------------------- 1 | #fancybox-thumbs { 2 | position: fixed; 3 | left: 0; 4 | width: 100%; 5 | overflow: hidden; 6 | z-index: 8050; 7 | } 8 | 9 | #fancybox-thumbs.bottom { 10 | bottom: 2px; 11 | } 12 | 13 | #fancybox-thumbs.top { 14 | top: 2px; 15 | } 16 | 17 | #fancybox-thumbs ul { 18 | position: relative; 19 | list-style: none; 20 | margin: 0; 21 | padding: 0; 22 | } 23 | 24 | #fancybox-thumbs ul li { 25 | float: left; 26 | padding: 1px; 27 | opacity: 0.5; 28 | } 29 | 30 | #fancybox-thumbs ul li.active { 31 | opacity: 0.75; 32 | padding: 0; 33 | border: 1px solid #fff; 34 | } 35 | 36 | #fancybox-thumbs ul li:hover { 37 | opacity: 1; 38 | } 39 | 40 | #fancybox-thumbs ul li a { 41 | display: block; 42 | position: relative; 43 | overflow: hidden; 44 | border: 1px solid #222; 45 | background: #111; 46 | outline: none; 47 | } 48 | 49 | #fancybox-thumbs ul li img { 50 | display: block; 51 | position: relative; 52 | border: 0; 53 | padding: 0; 54 | max-width: none; 55 | } 56 | -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/helpers/jquery.fancybox-thumbs.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Thumbnail helper for fancyBox 3 | * version: 1.0.7 (Mon, 01 Oct 2012) 4 | * @requires fancyBox v2.0 or later 5 | * 6 | * Usage: 7 | * $(".fancybox").fancybox({ 8 | * helpers : { 9 | * thumbs: { 10 | * width : 50, 11 | * height : 50 12 | * } 13 | * } 14 | * }); 15 | * 16 | */ 17 | (function ($) { 18 | //Shortcut for fancyBox object 19 | var F = $.fancybox; 20 | 21 | //Add helper object 22 | F.helpers.thumbs = { 23 | defaults: { 24 | width: 50, // thumbnail width 25 | height: 50, // thumbnail height 26 | position: "bottom", // 'top' or 'bottom' 27 | source: function (item) { 28 | // function to obtain the URL of the thumbnail image 29 | var href; 30 | 31 | if (item.element) { 32 | href = $(item.element).find("img").attr("src"); 33 | } 34 | 35 | if (!href && item.type === "image" && item.href) { 36 | href = item.href; 37 | } 38 | 39 | return href; 40 | }, 41 | }, 42 | 43 | wrap: null, 44 | list: null, 45 | width: 0, 46 | 47 | init: function (opts, obj) { 48 | var that = this, 49 | list, 50 | thumbWidth = opts.width, 51 | thumbHeight = opts.height, 52 | thumbSource = opts.source; 53 | 54 | //Build list structure 55 | list = ""; 56 | 57 | for (var n = 0; n < obj.group.length; n++) { 58 | list += 59 | '
  • '; 66 | } 67 | 68 | this.wrap = $('
    ') 69 | .addClass(opts.position) 70 | .appendTo("body"); 71 | this.list = $("").appendTo(this.wrap); 72 | 73 | //Load each thumbnail 74 | $.each(obj.group, function (i) { 75 | var el = obj.group[i], 76 | href = thumbSource(el); 77 | 78 | if (!href) { 79 | return; 80 | } 81 | 82 | $("") 83 | .load(function () { 84 | var width = this.width, 85 | height = this.height, 86 | widthRatio, 87 | heightRatio, 88 | parent; 89 | 90 | if (!that.list || !width || !height) { 91 | return; 92 | } 93 | 94 | //Calculate thumbnail width/height and center it 95 | widthRatio = width / thumbWidth; 96 | heightRatio = height / thumbHeight; 97 | 98 | parent = that.list.children().eq(i).find("a"); 99 | 100 | if (widthRatio >= 1 && heightRatio >= 1) { 101 | if (widthRatio > heightRatio) { 102 | width = Math.floor(width / heightRatio); 103 | height = thumbHeight; 104 | } else { 105 | width = thumbWidth; 106 | height = Math.floor(height / widthRatio); 107 | } 108 | } 109 | 110 | $(this).css({ 111 | width: width, 112 | height: height, 113 | top: Math.floor(thumbHeight / 2 - height / 2), 114 | left: Math.floor(thumbWidth / 2 - width / 2), 115 | }); 116 | 117 | parent.width(thumbWidth).height(thumbHeight); 118 | 119 | $(this).hide().appendTo(parent).fadeIn(300); 120 | }) 121 | .attr("src", href) 122 | .attr("title", el.title); 123 | }); 124 | 125 | //Set initial width 126 | this.width = this.list.children().eq(0).outerWidth(true); 127 | 128 | this.list 129 | .width(this.width * (obj.group.length + 1)) 130 | .css( 131 | "left", 132 | Math.floor( 133 | $(window).width() * 0.5 - 134 | (obj.index * this.width + this.width * 0.5) 135 | ) 136 | ); 137 | }, 138 | 139 | beforeLoad: function (opts, obj) { 140 | //Remove self if gallery do not have at least two items 141 | if (obj.group.length < 2) { 142 | obj.helpers.thumbs = false; 143 | 144 | return; 145 | } 146 | 147 | //Increase bottom margin to give space for thumbs 148 | obj.margin[opts.position === "top" ? 0 : 2] += opts.height + 15; 149 | }, 150 | 151 | afterShow: function (opts, obj) { 152 | //Check if exists and create or update list 153 | if (this.list) { 154 | this.onUpdate(opts, obj); 155 | } else { 156 | this.init(opts, obj); 157 | } 158 | 159 | //Set active element 160 | this.list 161 | .children() 162 | .removeClass("active") 163 | .eq(obj.index) 164 | .addClass("active"); 165 | }, 166 | 167 | //Center list 168 | onUpdate: function (opts, obj) { 169 | if (this.list) { 170 | this.list.stop(true).animate( 171 | { 172 | left: Math.floor( 173 | $(window).width() * 0.5 - 174 | (obj.index * this.width + this.width * 0.5) 175 | ), 176 | }, 177 | 150 178 | ); 179 | } 180 | }, 181 | 182 | beforeClose: function () { 183 | if (this.wrap) { 184 | this.wrap.remove(); 185 | } 186 | 187 | this.wrap = null; 188 | this.list = null; 189 | this.width = 0; 190 | }, 191 | }; 192 | })(jQuery); 193 | -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/jquery.fancybox.css: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | .fancybox-wrap, 3 | .fancybox-skin, 4 | .fancybox-outer, 5 | .fancybox-inner, 6 | .fancybox-image, 7 | .fancybox-wrap iframe, 8 | .fancybox-wrap object, 9 | .fancybox-nav, 10 | .fancybox-nav span, 11 | .fancybox-tmp { 12 | padding: 0; 13 | margin: 0; 14 | border: 0; 15 | outline: none; 16 | vertical-align: top; 17 | } 18 | 19 | .fancybox-wrap { 20 | position: absolute; 21 | top: 0; 22 | left: 0; 23 | z-index: 8020; 24 | } 25 | 26 | .fancybox-skin { 27 | position: relative; 28 | background: #f9f9f9; 29 | color: #444; 30 | text-shadow: none; 31 | -webkit-border-radius: 4px; 32 | -moz-border-radius: 4px; 33 | border-radius: 4px; 34 | } 35 | 36 | .fancybox-opened { 37 | z-index: 8030; 38 | } 39 | 40 | .fancybox-opened .fancybox-skin { 41 | -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 42 | -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 43 | box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); 44 | } 45 | 46 | .fancybox-outer, 47 | .fancybox-inner { 48 | position: relative; 49 | } 50 | 51 | .fancybox-inner { 52 | overflow: hidden; 53 | } 54 | 55 | .fancybox-type-iframe .fancybox-inner { 56 | -webkit-overflow-scrolling: touch; 57 | } 58 | 59 | .fancybox-error { 60 | color: #444; 61 | font: 14px/20px "Helvetica Neue", Helvetica, Arial, sans-serif; 62 | margin: 0; 63 | padding: 15px; 64 | white-space: nowrap; 65 | } 66 | 67 | .fancybox-image, 68 | .fancybox-iframe { 69 | display: block; 70 | width: 100%; 71 | height: 100%; 72 | } 73 | 74 | .fancybox-image { 75 | max-width: 100%; 76 | max-height: 100%; 77 | } 78 | 79 | #fancybox-loading, 80 | .fancybox-close, 81 | .fancybox-prev span, 82 | .fancybox-next span { 83 | background-image: url(fancybox_sprite.png); 84 | } 85 | 86 | #fancybox-loading { 87 | position: fixed; 88 | top: 50%; 89 | left: 50%; 90 | margin-top: -22px; 91 | margin-left: -22px; 92 | background-position: 0 -108px; 93 | opacity: 0.8; 94 | cursor: pointer; 95 | z-index: 8060; 96 | } 97 | 98 | #fancybox-loading div { 99 | width: 44px; 100 | height: 44px; 101 | background: url(fancybox_loading.gif) center center no-repeat; 102 | } 103 | 104 | .fancybox-close { 105 | position: absolute; 106 | top: -18px; 107 | right: -18px; 108 | width: 36px; 109 | height: 36px; 110 | cursor: pointer; 111 | z-index: 8040; 112 | } 113 | 114 | .fancybox-nav { 115 | position: absolute; 116 | top: 0; 117 | width: 40%; 118 | height: 100%; 119 | cursor: pointer; 120 | text-decoration: none; 121 | background: transparent url(blank.gif); /* helps IE */ 122 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 123 | z-index: 8040; 124 | } 125 | 126 | .fancybox-prev { 127 | left: 0; 128 | } 129 | 130 | .fancybox-next { 131 | right: 0; 132 | } 133 | 134 | .fancybox-nav span { 135 | position: absolute; 136 | top: 50%; 137 | width: 36px; 138 | height: 34px; 139 | margin-top: -18px; 140 | cursor: pointer; 141 | z-index: 8040; 142 | visibility: hidden; 143 | } 144 | 145 | .fancybox-prev span { 146 | left: 10px; 147 | background-position: 0 -36px; 148 | } 149 | 150 | .fancybox-next span { 151 | right: 10px; 152 | background-position: 0 -72px; 153 | } 154 | 155 | .fancybox-nav:hover span { 156 | visibility: visible; 157 | } 158 | 159 | .fancybox-tmp { 160 | position: absolute; 161 | top: -99999px; 162 | left: -99999px; 163 | max-width: 99999px; 164 | max-height: 99999px; 165 | overflow: visible !important; 166 | } 167 | 168 | /* Overlay helper */ 169 | 170 | .fancybox-lock { 171 | overflow: visible !important; 172 | width: auto; 173 | } 174 | 175 | .fancybox-lock body { 176 | overflow: hidden !important; 177 | } 178 | 179 | .fancybox-lock-test { 180 | overflow-y: hidden !important; 181 | } 182 | 183 | .fancybox-overlay { 184 | position: absolute; 185 | top: 0; 186 | left: 0; 187 | overflow: hidden; 188 | display: none; 189 | z-index: 8010; 190 | background: url(fancybox_overlay.png); 191 | } 192 | 193 | .fancybox-overlay-fixed { 194 | position: fixed; 195 | bottom: 0; 196 | right: 0; 197 | } 198 | 199 | .fancybox-lock .fancybox-overlay { 200 | overflow: auto; 201 | overflow-y: scroll; 202 | } 203 | 204 | /* Title helper */ 205 | 206 | .fancybox-title { 207 | visibility: hidden; 208 | font: normal 13px/20px "Helvetica Neue", Helvetica, Arial, sans-serif; 209 | position: relative; 210 | text-shadow: none; 211 | z-index: 8050; 212 | } 213 | 214 | .fancybox-opened .fancybox-title { 215 | visibility: visible; 216 | } 217 | 218 | .fancybox-title-float-wrap { 219 | position: absolute; 220 | bottom: 0; 221 | right: 50%; 222 | margin-bottom: -35px; 223 | z-index: 8050; 224 | text-align: center; 225 | } 226 | 227 | .fancybox-title-float-wrap .child { 228 | display: inline-block; 229 | margin-right: -100%; 230 | padding: 2px 20px; 231 | background: transparent; /* Fallback for web browsers that doesn't support RGBa */ 232 | background: rgba(0, 0, 0, 0.8); 233 | -webkit-border-radius: 15px; 234 | -moz-border-radius: 15px; 235 | border-radius: 15px; 236 | text-shadow: 0 1px 2px #222; 237 | color: #fff; 238 | font-weight: bold; 239 | line-height: 24px; 240 | white-space: nowrap; 241 | } 242 | 243 | .fancybox-title-outside-wrap { 244 | position: relative; 245 | margin-top: 10px; 246 | color: #fff; 247 | } 248 | 249 | .fancybox-title-inside-wrap { 250 | padding-top: 10px; 251 | } 252 | 253 | .fancybox-title-over-wrap { 254 | position: absolute; 255 | bottom: 0; 256 | left: 0; 257 | color: #fff; 258 | padding: 10px; 259 | background: #000; 260 | background: rgba(0, 0, 0, 0.8); 261 | } 262 | 263 | /*Retina graphics!*/ 264 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 265 | only screen and (min--moz-device-pixel-ratio: 1.5), 266 | only screen and (min-device-pixel-ratio: 1.5) { 267 | #fancybox-loading, 268 | .fancybox-close, 269 | .fancybox-prev span, 270 | .fancybox-next span { 271 | background-image: url(fancybox_sprite@2x.png); 272 | background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/ 273 | } 274 | 275 | #fancybox-loading div { 276 | background-image: url(fancybox_loading@2x.gif); 277 | background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/ 278 | } 279 | } 280 | -------------------------------------------------------------------------------- /themes/landscape/source/fancybox/jquery.fancybox.pack.js: -------------------------------------------------------------------------------- 1 | /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ 2 | (function (s, H, f, w) { 3 | var K = f("html"), 4 | q = f(s), 5 | p = f(H), 6 | b = (f.fancybox = function () { 7 | b.open.apply(this, arguments); 8 | }), 9 | J = navigator.userAgent.match(/msie/i), 10 | C = null, 11 | t = H.createTouch !== w, 12 | u = function (a) { 13 | return a && a.hasOwnProperty && a instanceof f; 14 | }, 15 | r = function (a) { 16 | return a && "string" === f.type(a); 17 | }, 18 | F = function (a) { 19 | return r(a) && 0 < a.indexOf("%"); 20 | }, 21 | m = function (a, d) { 22 | var e = parseInt(a, 10) || 0; 23 | d && F(a) && (e *= b.getViewport()[d] / 100); 24 | return Math.ceil(e); 25 | }, 26 | x = function (a, b) { 27 | return m(a, b) + "px"; 28 | }; 29 | f.extend(b, { 30 | version: "2.1.5", 31 | defaults: { 32 | padding: 15, 33 | margin: 20, 34 | width: 800, 35 | height: 600, 36 | minWidth: 100, 37 | minHeight: 100, 38 | maxWidth: 9999, 39 | maxHeight: 9999, 40 | pixelRatio: 1, 41 | autoSize: !0, 42 | autoHeight: !1, 43 | autoWidth: !1, 44 | autoResize: !0, 45 | autoCenter: !t, 46 | fitToView: !0, 47 | aspectRatio: !1, 48 | topRatio: 0.5, 49 | leftRatio: 0.5, 50 | scrolling: "auto", 51 | wrapCSS: "", 52 | arrows: !0, 53 | closeBtn: !0, 54 | closeClick: !1, 55 | nextClick: !1, 56 | mouseWheel: !0, 57 | autoPlay: !1, 58 | playSpeed: 3e3, 59 | preload: 3, 60 | modal: !1, 61 | loop: !0, 62 | ajax: { dataType: "html", headers: { "X-fancyBox": !0 } }, 63 | iframe: { scrolling: "auto", preload: !0 }, 64 | swf: { 65 | wmode: "transparent", 66 | allowfullscreen: "true", 67 | allowscriptaccess: "always", 68 | }, 69 | keys: { 70 | next: { 13: "left", 34: "up", 39: "left", 40: "up" }, 71 | prev: { 8: "right", 33: "down", 37: "right", 38: "down" }, 72 | close: [27], 73 | play: [32], 74 | toggle: [70], 75 | }, 76 | direction: { next: "left", prev: "right" }, 77 | scrollOutside: !0, 78 | index: 0, 79 | type: null, 80 | href: null, 81 | content: null, 82 | title: null, 83 | tpl: { 84 | wrap: '
    ', 85 | image: '', 86 | iframe: 87 | '", 90 | error: 91 | '

    The requested content cannot be loaded.
    Please try again later.

    ', 92 | closeBtn: 93 | '', 94 | next: '', 95 | prev: '', 96 | }, 97 | openEffect: "fade", 98 | openSpeed: 250, 99 | openEasing: "swing", 100 | openOpacity: !0, 101 | openMethod: "zoomIn", 102 | closeEffect: "fade", 103 | closeSpeed: 250, 104 | closeEasing: "swing", 105 | closeOpacity: !0, 106 | closeMethod: "zoomOut", 107 | nextEffect: "elastic", 108 | nextSpeed: 250, 109 | nextEasing: "swing", 110 | nextMethod: "changeIn", 111 | prevEffect: "elastic", 112 | prevSpeed: 250, 113 | prevEasing: "swing", 114 | prevMethod: "changeOut", 115 | helpers: { overlay: !0, title: !0 }, 116 | onCancel: f.noop, 117 | beforeLoad: f.noop, 118 | afterLoad: f.noop, 119 | beforeShow: f.noop, 120 | afterShow: f.noop, 121 | beforeChange: f.noop, 122 | beforeClose: f.noop, 123 | afterClose: f.noop, 124 | }, 125 | group: {}, 126 | opts: {}, 127 | previous: null, 128 | coming: null, 129 | current: null, 130 | isActive: !1, 131 | isOpen: !1, 132 | isOpened: !1, 133 | wrap: null, 134 | skin: null, 135 | outer: null, 136 | inner: null, 137 | player: { timer: null, isActive: !1 }, 138 | ajaxLoad: null, 139 | imgPreload: null, 140 | transitions: {}, 141 | helpers: {}, 142 | open: function (a, d) { 143 | if (a && (f.isPlainObject(d) || (d = {}), !1 !== b.close(!0))) 144 | return ( 145 | f.isArray(a) || (a = u(a) ? f(a).get() : [a]), 146 | f.each(a, function (e, c) { 147 | var l = {}, 148 | g, 149 | h, 150 | k, 151 | n, 152 | m; 153 | "object" === f.type(c) && 154 | (c.nodeType && (c = f(c)), 155 | u(c) 156 | ? ((l = { 157 | href: c.data("fancybox-href") || c.attr("href"), 158 | title: f("
    ") 159 | .text(c.data("fancybox-title") || c.attr("title")) 160 | .html(), 161 | isDom: !0, 162 | element: c, 163 | }), 164 | f.metadata && f.extend(!0, l, c.metadata())) 165 | : (l = c)); 166 | g = d.href || l.href || (r(c) ? c : null); 167 | h = d.title !== w ? d.title : l.title || ""; 168 | n = (k = d.content || l.content) ? "html" : d.type || l.type; 169 | !n && 170 | l.isDom && 171 | ((n = c.data("fancybox-type")), 172 | n || 173 | (n = (n = c.prop("class").match(/fancybox\.(\w+)/)) 174 | ? n[1] 175 | : null)); 176 | r(g) && 177 | (n || 178 | (b.isImage(g) 179 | ? (n = "image") 180 | : b.isSWF(g) 181 | ? (n = "swf") 182 | : "#" === g.charAt(0) 183 | ? (n = "inline") 184 | : r(c) && ((n = "html"), (k = c))), 185 | "ajax" === n && 186 | ((m = g.split(/\s+/, 2)), (g = m.shift()), (m = m.shift()))); 187 | k || 188 | ("inline" === n 189 | ? g 190 | ? (k = f(r(g) ? g.replace(/.*(?=#[^\s]+$)/, "") : g)) 191 | : l.isDom && (k = c) 192 | : "html" === n 193 | ? (k = g) 194 | : n || g || !l.isDom || ((n = "inline"), (k = c))); 195 | f.extend(l, { 196 | href: g, 197 | type: n, 198 | content: k, 199 | title: h, 200 | selector: m, 201 | }); 202 | a[e] = l; 203 | }), 204 | (b.opts = f.extend(!0, {}, b.defaults, d)), 205 | d.keys !== w && 206 | (b.opts.keys = d.keys ? f.extend({}, b.defaults.keys, d.keys) : !1), 207 | (b.group = a), 208 | b._start(b.opts.index) 209 | ); 210 | }, 211 | cancel: function () { 212 | var a = b.coming; 213 | (a && !1 === b.trigger("onCancel")) || 214 | (b.hideLoading(), 215 | a && 216 | (b.ajaxLoad && b.ajaxLoad.abort(), 217 | (b.ajaxLoad = null), 218 | b.imgPreload && (b.imgPreload.onload = b.imgPreload.onerror = null), 219 | a.wrap && a.wrap.stop(!0, !0).trigger("onReset").remove(), 220 | (b.coming = null), 221 | b.current || b._afterZoomOut(a))); 222 | }, 223 | close: function (a) { 224 | b.cancel(); 225 | !1 !== b.trigger("beforeClose") && 226 | (b.unbindEvents(), 227 | b.isActive && 228 | (b.isOpen && !0 !== a 229 | ? ((b.isOpen = b.isOpened = !1), 230 | (b.isClosing = !0), 231 | f(".fancybox-item, .fancybox-nav").remove(), 232 | b.wrap.stop(!0, !0).removeClass("fancybox-opened"), 233 | b.transitions[b.current.closeMethod]()) 234 | : (f(".fancybox-wrap").stop(!0).trigger("onReset").remove(), 235 | b._afterZoomOut()))); 236 | }, 237 | play: function (a) { 238 | var d = function () { 239 | clearTimeout(b.player.timer); 240 | }, 241 | e = function () { 242 | d(); 243 | b.current && 244 | b.player.isActive && 245 | (b.player.timer = setTimeout(b.next, b.current.playSpeed)); 246 | }, 247 | c = function () { 248 | d(); 249 | p.unbind(".player"); 250 | b.player.isActive = !1; 251 | b.trigger("onPlayEnd"); 252 | }; 253 | !0 === a || (!b.player.isActive && !1 !== a) 254 | ? b.current && 255 | (b.current.loop || b.current.index < b.group.length - 1) && 256 | ((b.player.isActive = !0), 257 | p.bind({ 258 | "onCancel.player beforeClose.player": c, 259 | "onUpdate.player": e, 260 | "beforeLoad.player": d, 261 | }), 262 | e(), 263 | b.trigger("onPlayStart")) 264 | : c(); 265 | }, 266 | next: function (a) { 267 | var d = b.current; 268 | d && (r(a) || (a = d.direction.next), b.jumpto(d.index + 1, a, "next")); 269 | }, 270 | prev: function (a) { 271 | var d = b.current; 272 | d && (r(a) || (a = d.direction.prev), b.jumpto(d.index - 1, a, "prev")); 273 | }, 274 | jumpto: function (a, d, e) { 275 | var c = b.current; 276 | c && 277 | ((a = m(a)), 278 | (b.direction = d || c.direction[a >= c.index ? "next" : "prev"]), 279 | (b.router = e || "jumpto"), 280 | c.loop && 281 | (0 > a && (a = c.group.length + (a % c.group.length)), 282 | (a %= c.group.length)), 283 | c.group[a] !== w && (b.cancel(), b._start(a))); 284 | }, 285 | reposition: function (a, d) { 286 | var e = b.current, 287 | c = e ? e.wrap : null, 288 | l; 289 | c && 290 | ((l = b._getPosition(d)), 291 | a && "scroll" === a.type 292 | ? (delete l.position, c.stop(!0, !0).animate(l, 200)) 293 | : (c.css(l), (e.pos = f.extend({}, e.dim, l)))); 294 | }, 295 | update: function (a) { 296 | var d = a && a.originalEvent && a.originalEvent.type, 297 | e = !d || "orientationchange" === d; 298 | e && (clearTimeout(C), (C = null)); 299 | b.isOpen && 300 | !C && 301 | (C = setTimeout( 302 | function () { 303 | var c = b.current; 304 | c && 305 | !b.isClosing && 306 | (b.wrap.removeClass("fancybox-tmp"), 307 | (e || "load" === d || ("resize" === d && c.autoResize)) && 308 | b._setDimension(), 309 | ("scroll" === d && c.canShrink) || b.reposition(a), 310 | b.trigger("onUpdate"), 311 | (C = null)); 312 | }, 313 | e && !t ? 0 : 300 314 | )); 315 | }, 316 | toggle: function (a) { 317 | b.isOpen && 318 | ((b.current.fitToView = 319 | "boolean" === f.type(a) ? a : !b.current.fitToView), 320 | t && 321 | (b.wrap.removeAttr("style").addClass("fancybox-tmp"), 322 | b.trigger("onUpdate")), 323 | b.update()); 324 | }, 325 | hideLoading: function () { 326 | p.unbind(".loading"); 327 | f("#fancybox-loading").remove(); 328 | }, 329 | showLoading: function () { 330 | var a, d; 331 | b.hideLoading(); 332 | a = f('
    ') 333 | .click(b.cancel) 334 | .appendTo("body"); 335 | p.bind("keydown.loading", function (a) { 336 | 27 === (a.which || a.keyCode) && (a.preventDefault(), b.cancel()); 337 | }); 338 | b.defaults.fixed || 339 | ((d = b.getViewport()), 340 | a.css({ 341 | position: "absolute", 342 | top: 0.5 * d.h + d.y, 343 | left: 0.5 * d.w + d.x, 344 | })); 345 | b.trigger("onLoading"); 346 | }, 347 | getViewport: function () { 348 | var a = (b.current && b.current.locked) || !1, 349 | d = { x: q.scrollLeft(), y: q.scrollTop() }; 350 | a && a.length 351 | ? ((d.w = a[0].clientWidth), (d.h = a[0].clientHeight)) 352 | : ((d.w = t && s.innerWidth ? s.innerWidth : q.width()), 353 | (d.h = t && s.innerHeight ? s.innerHeight : q.height())); 354 | return d; 355 | }, 356 | unbindEvents: function () { 357 | b.wrap && u(b.wrap) && b.wrap.unbind(".fb"); 358 | p.unbind(".fb"); 359 | q.unbind(".fb"); 360 | }, 361 | bindEvents: function () { 362 | var a = b.current, 363 | d; 364 | a && 365 | (q.bind( 366 | "orientationchange.fb" + 367 | (t ? "" : " resize.fb") + 368 | (a.autoCenter && !a.locked ? " scroll.fb" : ""), 369 | b.update 370 | ), 371 | (d = a.keys) && 372 | p.bind("keydown.fb", function (e) { 373 | var c = e.which || e.keyCode, 374 | l = e.target || e.srcElement; 375 | if (27 === c && b.coming) return !1; 376 | e.ctrlKey || 377 | e.altKey || 378 | e.shiftKey || 379 | e.metaKey || 380 | (l && (l.type || f(l).is("[contenteditable]"))) || 381 | f.each(d, function (d, l) { 382 | if (1 < a.group.length && l[c] !== w) 383 | return b[d](l[c]), e.preventDefault(), !1; 384 | if (-1 < f.inArray(c, l)) return b[d](), e.preventDefault(), !1; 385 | }); 386 | }), 387 | f.fn.mousewheel && 388 | a.mouseWheel && 389 | b.wrap.bind("mousewheel.fb", function (d, c, l, g) { 390 | for ( 391 | var h = f(d.target || null), k = !1; 392 | h.length && 393 | !(k || h.is(".fancybox-skin") || h.is(".fancybox-wrap")); 394 | 395 | ) 396 | (k = 397 | h[0] && 398 | !(h[0].style.overflow && "hidden" === h[0].style.overflow) && 399 | ((h[0].clientWidth && h[0].scrollWidth > h[0].clientWidth) || 400 | (h[0].clientHeight && 401 | h[0].scrollHeight > h[0].clientHeight))), 402 | (h = f(h).parent()); 403 | 0 !== c && 404 | !k && 405 | 1 < b.group.length && 406 | !a.canShrink && 407 | (0 < g || 0 < l 408 | ? b.prev(0 < g ? "down" : "left") 409 | : (0 > g || 0 > l) && b.next(0 > g ? "up" : "right"), 410 | d.preventDefault()); 411 | })); 412 | }, 413 | trigger: function (a, d) { 414 | var e, 415 | c = d || b.coming || b.current; 416 | if (c) { 417 | f.isFunction(c[a]) && 418 | (e = c[a].apply(c, Array.prototype.slice.call(arguments, 1))); 419 | if (!1 === e) return !1; 420 | c.helpers && 421 | f.each(c.helpers, function (d, e) { 422 | if (e && b.helpers[d] && f.isFunction(b.helpers[d][a])) 423 | b.helpers[d][a](f.extend(!0, {}, b.helpers[d].defaults, e), c); 424 | }); 425 | } 426 | p.trigger(a); 427 | }, 428 | isImage: function (a) { 429 | return ( 430 | r(a) && 431 | a.match( 432 | /(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i 433 | ) 434 | ); 435 | }, 436 | isSWF: function (a) { 437 | return r(a) && a.match(/\.(swf)((\?|#).*)?$/i); 438 | }, 439 | _start: function (a) { 440 | var d = {}, 441 | e, 442 | c; 443 | a = m(a); 444 | e = b.group[a] || null; 445 | if (!e) return !1; 446 | d = f.extend(!0, {}, b.opts, e); 447 | e = d.margin; 448 | c = d.padding; 449 | "number" === f.type(e) && (d.margin = [e, e, e, e]); 450 | "number" === f.type(c) && (d.padding = [c, c, c, c]); 451 | d.modal && 452 | f.extend(!0, d, { 453 | closeBtn: !1, 454 | closeClick: !1, 455 | nextClick: !1, 456 | arrows: !1, 457 | mouseWheel: !1, 458 | keys: null, 459 | helpers: { overlay: { closeClick: !1 } }, 460 | }); 461 | d.autoSize && (d.autoWidth = d.autoHeight = !0); 462 | "auto" === d.width && (d.autoWidth = !0); 463 | "auto" === d.height && (d.autoHeight = !0); 464 | d.group = b.group; 465 | d.index = a; 466 | b.coming = d; 467 | if (!1 === b.trigger("beforeLoad")) b.coming = null; 468 | else { 469 | c = d.type; 470 | e = d.href; 471 | if (!c) 472 | return ( 473 | (b.coming = null), 474 | b.current && b.router && "jumpto" !== b.router 475 | ? ((b.current.index = a), b[b.router](b.direction)) 476 | : !1 477 | ); 478 | b.isActive = !0; 479 | if ("image" === c || "swf" === c) 480 | (d.autoHeight = d.autoWidth = !1), (d.scrolling = "visible"); 481 | "image" === c && (d.aspectRatio = !0); 482 | "iframe" === c && t && (d.scrolling = "scroll"); 483 | d.wrap = f(d.tpl.wrap) 484 | .addClass( 485 | "fancybox-" + 486 | (t ? "mobile" : "desktop") + 487 | " fancybox-type-" + 488 | c + 489 | " fancybox-tmp " + 490 | d.wrapCSS 491 | ) 492 | .appendTo(d.parent || "body"); 493 | f.extend(d, { 494 | skin: f(".fancybox-skin", d.wrap), 495 | outer: f(".fancybox-outer", d.wrap), 496 | inner: f(".fancybox-inner", d.wrap), 497 | }); 498 | f.each(["Top", "Right", "Bottom", "Left"], function (a, b) { 499 | d.skin.css("padding" + b, x(d.padding[a])); 500 | }); 501 | b.trigger("onReady"); 502 | if ("inline" === c || "html" === c) { 503 | if (!d.content || !d.content.length) return b._error("content"); 504 | } else if (!e) return b._error("href"); 505 | "image" === c 506 | ? b._loadImage() 507 | : "ajax" === c 508 | ? b._loadAjax() 509 | : "iframe" === c 510 | ? b._loadIframe() 511 | : b._afterLoad(); 512 | } 513 | }, 514 | _error: function (a) { 515 | f.extend(b.coming, { 516 | type: "html", 517 | autoWidth: !0, 518 | autoHeight: !0, 519 | minWidth: 0, 520 | minHeight: 0, 521 | scrolling: "no", 522 | hasError: a, 523 | content: b.coming.tpl.error, 524 | }); 525 | b._afterLoad(); 526 | }, 527 | _loadImage: function () { 528 | var a = (b.imgPreload = new Image()); 529 | a.onload = function () { 530 | this.onload = this.onerror = null; 531 | b.coming.width = this.width / b.opts.pixelRatio; 532 | b.coming.height = this.height / b.opts.pixelRatio; 533 | b._afterLoad(); 534 | }; 535 | a.onerror = function () { 536 | this.onload = this.onerror = null; 537 | b._error("image"); 538 | }; 539 | a.src = b.coming.href; 540 | !0 !== a.complete && b.showLoading(); 541 | }, 542 | _loadAjax: function () { 543 | var a = b.coming; 544 | b.showLoading(); 545 | b.ajaxLoad = f.ajax( 546 | f.extend({}, a.ajax, { 547 | url: a.href, 548 | error: function (a, e) { 549 | b.coming && "abort" !== e ? b._error("ajax", a) : b.hideLoading(); 550 | }, 551 | success: function (d, e) { 552 | "success" === e && ((a.content = d), b._afterLoad()); 553 | }, 554 | }) 555 | ); 556 | }, 557 | _loadIframe: function () { 558 | var a = b.coming, 559 | d = f(a.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) 560 | .attr("scrolling", t ? "auto" : a.iframe.scrolling) 561 | .attr("src", a.href); 562 | f(a.wrap).bind("onReset", function () { 563 | try { 564 | f(this) 565 | .find("iframe") 566 | .hide() 567 | .attr("src", "//about:blank") 568 | .end() 569 | .empty(); 570 | } catch (a) {} 571 | }); 572 | a.iframe.preload && 573 | (b.showLoading(), 574 | d.one("load", function () { 575 | f(this).data("ready", 1); 576 | t || f(this).bind("load.fb", b.update); 577 | f(this) 578 | .parents(".fancybox-wrap") 579 | .width("100%") 580 | .removeClass("fancybox-tmp") 581 | .show(); 582 | b._afterLoad(); 583 | })); 584 | a.content = d.appendTo(a.inner); 585 | a.iframe.preload || b._afterLoad(); 586 | }, 587 | _preloadImages: function () { 588 | var a = b.group, 589 | d = b.current, 590 | e = a.length, 591 | c = d.preload ? Math.min(d.preload, e - 1) : 0, 592 | f, 593 | g; 594 | for (g = 1; g <= c; g += 1) 595 | (f = a[(d.index + g) % e]), 596 | "image" === f.type && f.href && (new Image().src = f.href); 597 | }, 598 | _afterLoad: function () { 599 | var a = b.coming, 600 | d = b.current, 601 | e, 602 | c, 603 | l, 604 | g, 605 | h; 606 | b.hideLoading(); 607 | if (a && !1 !== b.isActive) 608 | if (!1 === b.trigger("afterLoad", a, d)) 609 | a.wrap.stop(!0).trigger("onReset").remove(), (b.coming = null); 610 | else { 611 | d && 612 | (b.trigger("beforeChange", d), 613 | d.wrap 614 | .stop(!0) 615 | .removeClass("fancybox-opened") 616 | .find(".fancybox-item, .fancybox-nav") 617 | .remove()); 618 | b.unbindEvents(); 619 | e = a.content; 620 | c = a.type; 621 | l = a.scrolling; 622 | f.extend(b, { 623 | wrap: a.wrap, 624 | skin: a.skin, 625 | outer: a.outer, 626 | inner: a.inner, 627 | current: a, 628 | previous: d, 629 | }); 630 | g = a.href; 631 | switch (c) { 632 | case "inline": 633 | case "ajax": 634 | case "html": 635 | a.selector 636 | ? (e = f("
    ").html(e).find(a.selector)) 637 | : u(e) && 638 | (e.data("fancybox-placeholder") || 639 | e.data( 640 | "fancybox-placeholder", 641 | f('
    ') 642 | .insertAfter(e) 643 | .hide() 644 | ), 645 | (e = e.show().detach()), 646 | a.wrap.bind("onReset", function () { 647 | f(this).find(e).length && 648 | e 649 | .hide() 650 | .replaceAll(e.data("fancybox-placeholder")) 651 | .data("fancybox-placeholder", !1); 652 | })); 653 | break; 654 | case "image": 655 | e = a.tpl.image.replace(/\{href\}/g, g); 656 | break; 657 | case "swf": 658 | (e = 659 | ''), 662 | (h = ""), 663 | f.each(a.swf, function (a, b) { 664 | e += ''; 665 | h += " " + a + '="' + b + '"'; 666 | }), 667 | (e += 668 | '"); 673 | } 674 | (u(e) && e.parent().is(a.inner)) || a.inner.append(e); 675 | b.trigger("beforeShow"); 676 | a.inner.css( 677 | "overflow", 678 | "yes" === l ? "scroll" : "no" === l ? "hidden" : l 679 | ); 680 | b._setDimension(); 681 | b.reposition(); 682 | b.isOpen = !1; 683 | b.coming = null; 684 | b.bindEvents(); 685 | if (!b.isOpened) 686 | f(".fancybox-wrap") 687 | .not(a.wrap) 688 | .stop(!0) 689 | .trigger("onReset") 690 | .remove(); 691 | else if (d.prevMethod) b.transitions[d.prevMethod](); 692 | b.transitions[b.isOpened ? a.nextMethod : a.openMethod](); 693 | b._preloadImages(); 694 | } 695 | }, 696 | _setDimension: function () { 697 | var a = b.getViewport(), 698 | d = 0, 699 | e = !1, 700 | c = !1, 701 | e = b.wrap, 702 | l = b.skin, 703 | g = b.inner, 704 | h = b.current, 705 | c = h.width, 706 | k = h.height, 707 | n = h.minWidth, 708 | v = h.minHeight, 709 | p = h.maxWidth, 710 | q = h.maxHeight, 711 | t = h.scrolling, 712 | r = h.scrollOutside ? h.scrollbarWidth : 0, 713 | y = h.margin, 714 | z = m(y[1] + y[3]), 715 | s = m(y[0] + y[2]), 716 | w, 717 | A, 718 | u, 719 | D, 720 | B, 721 | G, 722 | C, 723 | E, 724 | I; 725 | e.add(l).add(g).width("auto").height("auto").removeClass("fancybox-tmp"); 726 | y = m(l.outerWidth(!0) - l.width()); 727 | w = m(l.outerHeight(!0) - l.height()); 728 | A = z + y; 729 | u = s + w; 730 | D = F(c) ? ((a.w - A) * m(c)) / 100 : c; 731 | B = F(k) ? ((a.h - u) * m(k)) / 100 : k; 732 | if ("iframe" === h.type) { 733 | if (((I = h.content), h.autoHeight && 1 === I.data("ready"))) 734 | try { 735 | I[0].contentWindow.document.location && 736 | (g.width(D).height(9999), 737 | (G = I.contents().find("body")), 738 | r && G.css("overflow-x", "hidden"), 739 | (B = G.outerHeight(!0))); 740 | } catch (H) {} 741 | } else if (h.autoWidth || h.autoHeight) 742 | g.addClass("fancybox-tmp"), 743 | h.autoWidth || g.width(D), 744 | h.autoHeight || g.height(B), 745 | h.autoWidth && (D = g.width()), 746 | h.autoHeight && (B = g.height()), 747 | g.removeClass("fancybox-tmp"); 748 | c = m(D); 749 | k = m(B); 750 | E = D / B; 751 | n = m(F(n) ? m(n, "w") - A : n); 752 | p = m(F(p) ? m(p, "w") - A : p); 753 | v = m(F(v) ? m(v, "h") - u : v); 754 | q = m(F(q) ? m(q, "h") - u : q); 755 | G = p; 756 | C = q; 757 | h.fitToView && ((p = Math.min(a.w - A, p)), (q = Math.min(a.h - u, q))); 758 | A = a.w - z; 759 | s = a.h - s; 760 | h.aspectRatio 761 | ? (c > p && ((c = p), (k = m(c / E))), 762 | k > q && ((k = q), (c = m(k * E))), 763 | c < n && ((c = n), (k = m(c / E))), 764 | k < v && ((k = v), (c = m(k * E)))) 765 | : ((c = Math.max(n, Math.min(c, p))), 766 | h.autoHeight && "iframe" !== h.type && (g.width(c), (k = g.height())), 767 | (k = Math.max(v, Math.min(k, q)))); 768 | if (h.fitToView) 769 | if ( 770 | (g.width(c).height(k), 771 | e.width(c + y), 772 | (a = e.width()), 773 | (z = e.height()), 774 | h.aspectRatio) 775 | ) 776 | for (; (a > A || z > s) && c > n && k > v && !(19 < d++); ) 777 | (k = Math.max(v, Math.min(q, k - 10))), 778 | (c = m(k * E)), 779 | c < n && ((c = n), (k = m(c / E))), 780 | c > p && ((c = p), (k = m(c / E))), 781 | g.width(c).height(k), 782 | e.width(c + y), 783 | (a = e.width()), 784 | (z = e.height()); 785 | else 786 | (c = Math.max(n, Math.min(c, c - (a - A)))), 787 | (k = Math.max(v, Math.min(k, k - (z - s)))); 788 | r && "auto" === t && k < B && c + y + r < A && (c += r); 789 | g.width(c).height(k); 790 | e.width(c + y); 791 | a = e.width(); 792 | z = e.height(); 793 | e = (a > A || z > s) && c > n && k > v; 794 | c = h.aspectRatio 795 | ? c < G && k < C && c < D && k < B 796 | : (c < G || k < C) && (c < D || k < B); 797 | f.extend(h, { 798 | dim: { width: x(a), height: x(z) }, 799 | origWidth: D, 800 | origHeight: B, 801 | canShrink: e, 802 | canExpand: c, 803 | wPadding: y, 804 | hPadding: w, 805 | wrapSpace: z - l.outerHeight(!0), 806 | skinSpace: l.height() - k, 807 | }); 808 | !I && h.autoHeight && k > v && k < q && !c && g.height("auto"); 809 | }, 810 | _getPosition: function (a) { 811 | var d = b.current, 812 | e = b.getViewport(), 813 | c = d.margin, 814 | f = b.wrap.width() + c[1] + c[3], 815 | g = b.wrap.height() + c[0] + c[2], 816 | c = { position: "absolute", top: c[0], left: c[3] }; 817 | d.autoCenter && d.fixed && !a && g <= e.h && f <= e.w 818 | ? (c.position = "fixed") 819 | : d.locked || ((c.top += e.y), (c.left += e.x)); 820 | c.top = x(Math.max(c.top, c.top + (e.h - g) * d.topRatio)); 821 | c.left = x(Math.max(c.left, c.left + (e.w - f) * d.leftRatio)); 822 | return c; 823 | }, 824 | _afterZoomIn: function () { 825 | var a = b.current; 826 | a && 827 | (((b.isOpen = b.isOpened = !0), 828 | b.wrap.css("overflow", "visible").addClass("fancybox-opened"), 829 | b.update(), 830 | (a.closeClick || (a.nextClick && 1 < b.group.length)) && 831 | b.inner.css("cursor", "pointer").bind("click.fb", function (d) { 832 | f(d.target).is("a") || 833 | f(d.target).parent().is("a") || 834 | (d.preventDefault(), b[a.closeClick ? "close" : "next"]()); 835 | }), 836 | a.closeBtn && 837 | f(a.tpl.closeBtn) 838 | .appendTo(b.skin) 839 | .bind("click.fb", function (a) { 840 | a.preventDefault(); 841 | b.close(); 842 | }), 843 | a.arrows && 844 | 1 < b.group.length && 845 | ((a.loop || 0 < a.index) && 846 | f(a.tpl.prev).appendTo(b.outer).bind("click.fb", b.prev), 847 | (a.loop || a.index < b.group.length - 1) && 848 | f(a.tpl.next).appendTo(b.outer).bind("click.fb", b.next)), 849 | b.trigger("afterShow"), 850 | a.loop || a.index !== a.group.length - 1) 851 | ? b.opts.autoPlay && 852 | !b.player.isActive && 853 | ((b.opts.autoPlay = !1), b.play(!0)) 854 | : b.play(!1)); 855 | }, 856 | _afterZoomOut: function (a) { 857 | a = a || b.current; 858 | f(".fancybox-wrap").trigger("onReset").remove(); 859 | f.extend(b, { 860 | group: {}, 861 | opts: {}, 862 | router: !1, 863 | current: null, 864 | isActive: !1, 865 | isOpened: !1, 866 | isOpen: !1, 867 | isClosing: !1, 868 | wrap: null, 869 | skin: null, 870 | outer: null, 871 | inner: null, 872 | }); 873 | b.trigger("afterClose", a); 874 | }, 875 | }); 876 | b.transitions = { 877 | getOrigPosition: function () { 878 | var a = b.current, 879 | d = a.element, 880 | e = a.orig, 881 | c = {}, 882 | f = 50, 883 | g = 50, 884 | h = a.hPadding, 885 | k = a.wPadding, 886 | n = b.getViewport(); 887 | !e && 888 | a.isDom && 889 | d.is(":visible") && 890 | ((e = d.find("img:first")), e.length || (e = d)); 891 | u(e) 892 | ? ((c = e.offset()), 893 | e.is("img") && ((f = e.outerWidth()), (g = e.outerHeight()))) 894 | : ((c.top = n.y + (n.h - g) * a.topRatio), 895 | (c.left = n.x + (n.w - f) * a.leftRatio)); 896 | if ("fixed" === b.wrap.css("position") || a.locked) 897 | (c.top -= n.y), (c.left -= n.x); 898 | return (c = { 899 | top: x(c.top - h * a.topRatio), 900 | left: x(c.left - k * a.leftRatio), 901 | width: x(f + k), 902 | height: x(g + h), 903 | }); 904 | }, 905 | step: function (a, d) { 906 | var e, 907 | c, 908 | f = d.prop; 909 | c = b.current; 910 | var g = c.wrapSpace, 911 | h = c.skinSpace; 912 | if ("width" === f || "height" === f) 913 | (e = d.end === d.start ? 1 : (a - d.start) / (d.end - d.start)), 914 | b.isClosing && (e = 1 - e), 915 | (c = "width" === f ? c.wPadding : c.hPadding), 916 | (c = a - c), 917 | b.skin[f](m("width" === f ? c : c - g * e)), 918 | b.inner[f](m("width" === f ? c : c - g * e - h * e)); 919 | }, 920 | zoomIn: function () { 921 | var a = b.current, 922 | d = a.pos, 923 | e = a.openEffect, 924 | c = "elastic" === e, 925 | l = f.extend({ opacity: 1 }, d); 926 | delete l.position; 927 | c 928 | ? ((d = this.getOrigPosition()), a.openOpacity && (d.opacity = 0.1)) 929 | : "fade" === e && (d.opacity = 0.1); 930 | b.wrap.css(d).animate(l, { 931 | duration: "none" === e ? 0 : a.openSpeed, 932 | easing: a.openEasing, 933 | step: c ? this.step : null, 934 | complete: b._afterZoomIn, 935 | }); 936 | }, 937 | zoomOut: function () { 938 | var a = b.current, 939 | d = a.closeEffect, 940 | e = "elastic" === d, 941 | c = { opacity: 0.1 }; 942 | e && ((c = this.getOrigPosition()), a.closeOpacity && (c.opacity = 0.1)); 943 | b.wrap.animate(c, { 944 | duration: "none" === d ? 0 : a.closeSpeed, 945 | easing: a.closeEasing, 946 | step: e ? this.step : null, 947 | complete: b._afterZoomOut, 948 | }); 949 | }, 950 | changeIn: function () { 951 | var a = b.current, 952 | d = a.nextEffect, 953 | e = a.pos, 954 | c = { opacity: 1 }, 955 | f = b.direction, 956 | g; 957 | e.opacity = 0.1; 958 | "elastic" === d && 959 | ((g = "down" === f || "up" === f ? "top" : "left"), 960 | "down" === f || "right" === f 961 | ? ((e[g] = x(m(e[g]) - 200)), (c[g] = "+=200px")) 962 | : ((e[g] = x(m(e[g]) + 200)), (c[g] = "-=200px"))); 963 | "none" === d 964 | ? b._afterZoomIn() 965 | : b.wrap.css(e).animate(c, { 966 | duration: a.nextSpeed, 967 | easing: a.nextEasing, 968 | complete: b._afterZoomIn, 969 | }); 970 | }, 971 | changeOut: function () { 972 | var a = b.previous, 973 | d = a.prevEffect, 974 | e = { opacity: 0.1 }, 975 | c = b.direction; 976 | "elastic" === d && 977 | (e["down" === c || "up" === c ? "top" : "left"] = 978 | ("up" === c || "left" === c ? "-" : "+") + "=200px"); 979 | a.wrap.animate(e, { 980 | duration: "none" === d ? 0 : a.prevSpeed, 981 | easing: a.prevEasing, 982 | complete: function () { 983 | f(this).trigger("onReset").remove(); 984 | }, 985 | }); 986 | }, 987 | }; 988 | b.helpers.overlay = { 989 | defaults: { 990 | closeClick: !0, 991 | speedOut: 200, 992 | showEarly: !0, 993 | css: {}, 994 | locked: !t, 995 | fixed: !0, 996 | }, 997 | overlay: null, 998 | fixed: !1, 999 | el: f("html"), 1000 | create: function (a) { 1001 | var d; 1002 | a = f.extend({}, this.defaults, a); 1003 | this.overlay && this.close(); 1004 | d = b.coming ? b.coming.parent : a.parent; 1005 | this.overlay = f('
    ').appendTo( 1006 | d && d.lenth ? d : "body" 1007 | ); 1008 | this.fixed = !1; 1009 | a.fixed && 1010 | b.defaults.fixed && 1011 | (this.overlay.addClass("fancybox-overlay-fixed"), (this.fixed = !0)); 1012 | }, 1013 | open: function (a) { 1014 | var d = this; 1015 | a = f.extend({}, this.defaults, a); 1016 | this.overlay 1017 | ? this.overlay.unbind(".overlay").width("auto").height("auto") 1018 | : this.create(a); 1019 | this.fixed || 1020 | (q.bind("resize.overlay", f.proxy(this.update, this)), this.update()); 1021 | a.closeClick && 1022 | this.overlay.bind("click.overlay", function (a) { 1023 | if (f(a.target).hasClass("fancybox-overlay")) 1024 | return b.isActive ? b.close() : d.close(), !1; 1025 | }); 1026 | this.overlay.css(a.css).show(); 1027 | }, 1028 | close: function () { 1029 | q.unbind("resize.overlay"); 1030 | this.el.hasClass("fancybox-lock") && 1031 | (f(".fancybox-margin").removeClass("fancybox-margin"), 1032 | this.el.removeClass("fancybox-lock"), 1033 | q.scrollTop(this.scrollV).scrollLeft(this.scrollH)); 1034 | f(".fancybox-overlay").remove().hide(); 1035 | f.extend(this, { overlay: null, fixed: !1 }); 1036 | }, 1037 | update: function () { 1038 | var a = "100%", 1039 | b; 1040 | this.overlay.width(a).height("100%"); 1041 | J 1042 | ? ((b = Math.max(H.documentElement.offsetWidth, H.body.offsetWidth)), 1043 | p.width() > b && (a = p.width())) 1044 | : p.width() > q.width() && (a = p.width()); 1045 | this.overlay.width(a).height(p.height()); 1046 | }, 1047 | onReady: function (a, b) { 1048 | var e = this.overlay; 1049 | f(".fancybox-overlay").stop(!0, !0); 1050 | e || this.create(a); 1051 | a.locked && 1052 | this.fixed && 1053 | b.fixed && 1054 | ((b.locked = this.overlay.append(b.wrap)), (b.fixed = !1)); 1055 | !0 === a.showEarly && this.beforeShow.apply(this, arguments); 1056 | }, 1057 | beforeShow: function (a, b) { 1058 | b.locked && 1059 | !this.el.hasClass("fancybox-lock") && 1060 | (!1 !== this.fixPosition && 1061 | f("*") 1062 | .filter(function () { 1063 | return ( 1064 | "fixed" === f(this).css("position") && 1065 | !f(this).hasClass("fancybox-overlay") && 1066 | !f(this).hasClass("fancybox-wrap") 1067 | ); 1068 | }) 1069 | .addClass("fancybox-margin"), 1070 | this.el.addClass("fancybox-margin"), 1071 | (this.scrollV = q.scrollTop()), 1072 | (this.scrollH = q.scrollLeft()), 1073 | this.el.addClass("fancybox-lock"), 1074 | q.scrollTop(this.scrollV).scrollLeft(this.scrollH)); 1075 | this.open(a); 1076 | }, 1077 | onUpdate: function () { 1078 | this.fixed || this.update(); 1079 | }, 1080 | afterClose: function (a) { 1081 | this.overlay && 1082 | !b.coming && 1083 | this.overlay.fadeOut(a.speedOut, f.proxy(this.close, this)); 1084 | }, 1085 | }; 1086 | b.helpers.title = { 1087 | defaults: { type: "float", position: "bottom" }, 1088 | beforeShow: function (a) { 1089 | var d = b.current, 1090 | e = d.title, 1091 | c = a.type; 1092 | f.isFunction(e) && (e = e.call(d.element, d)); 1093 | if (r(e) && "" !== f.trim(e)) { 1094 | d = f( 1095 | '
    ' + 1098 | e + 1099 | "
    " 1100 | ); 1101 | switch (c) { 1102 | case "inside": 1103 | c = b.skin; 1104 | break; 1105 | case "outside": 1106 | c = b.wrap; 1107 | break; 1108 | case "over": 1109 | c = b.inner; 1110 | break; 1111 | default: 1112 | (c = b.skin), 1113 | d.appendTo("body"), 1114 | J && d.width(d.width()), 1115 | d.wrapInner(''), 1116 | (b.current.margin[2] += Math.abs(m(d.css("margin-bottom")))); 1117 | } 1118 | d["top" === a.position ? "prependTo" : "appendTo"](c); 1119 | } 1120 | }, 1121 | }; 1122 | f.fn.fancybox = function (a) { 1123 | var d, 1124 | e = f(this), 1125 | c = this.selector || "", 1126 | l = function (g) { 1127 | var h = f(this).blur(), 1128 | k = d, 1129 | l, 1130 | m; 1131 | g.ctrlKey || 1132 | g.altKey || 1133 | g.shiftKey || 1134 | g.metaKey || 1135 | h.is(".fancybox-wrap") || 1136 | ((l = a.groupAttr || "data-fancybox-group"), 1137 | (m = h.attr(l)), 1138 | m || ((l = "rel"), (m = h.get(0)[l])), 1139 | m && 1140 | "" !== m && 1141 | "nofollow" !== m && 1142 | ((h = c.length ? f(c) : e), 1143 | (h = h.filter("[" + l + '="' + m + '"]')), 1144 | (k = h.index(this))), 1145 | (a.index = k), 1146 | !1 !== b.open(h, a) && g.preventDefault()); 1147 | }; 1148 | a = a || {}; 1149 | d = a.index || 0; 1150 | c && !1 !== a.live 1151 | ? p 1152 | .undelegate(c, "click.fb-start") 1153 | .delegate( 1154 | c + ":not('.fancybox-item, .fancybox-nav')", 1155 | "click.fb-start", 1156 | l 1157 | ) 1158 | : e.unbind("click.fb-start").bind("click.fb-start", l); 1159 | this.filter("[data-fancybox-start=1]").trigger("click"); 1160 | return this; 1161 | }; 1162 | p.ready(function () { 1163 | var a, d; 1164 | f.scrollbarWidth === w && 1165 | (f.scrollbarWidth = function () { 1166 | var a = f( 1167 | '
    ' 1168 | ).appendTo("body"), 1169 | b = a.children(), 1170 | b = b.innerWidth() - b.height(99).innerWidth(); 1171 | a.remove(); 1172 | return b; 1173 | }); 1174 | f.support.fixedPosition === w && 1175 | (f.support.fixedPosition = (function () { 1176 | var a = f('
    ').appendTo( 1177 | "body" 1178 | ), 1179 | b = 20 === a[0].offsetTop || 15 === a[0].offsetTop; 1180 | a.remove(); 1181 | return b; 1182 | })()); 1183 | f.extend(b.defaults, { 1184 | scrollbarWidth: f.scrollbarWidth(), 1185 | fixed: f.support.fixedPosition, 1186 | parent: f("body"), 1187 | }); 1188 | a = f(s).width(); 1189 | K.addClass("fancybox-lock-test"); 1190 | d = f(s).width(); 1191 | K.removeClass("fancybox-lock-test"); 1192 | f( 1193 | "" 1196 | ).appendTo("head"); 1197 | }); 1198 | })(window, document, jQuery); 1199 | -------------------------------------------------------------------------------- /themes/landscape/source/js/script.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | // Search 3 | var $searchWrap = $("#search-form-wrap"), 4 | isSearchAnim = false, 5 | searchAnimDuration = 200; 6 | 7 | var startSearchAnim = function () { 8 | isSearchAnim = true; 9 | }; 10 | 11 | var stopSearchAnim = function (callback) { 12 | setTimeout(function () { 13 | isSearchAnim = false; 14 | callback && callback(); 15 | }, searchAnimDuration); 16 | }; 17 | 18 | $("#nav-search-btn").on("click", function () { 19 | if (isSearchAnim) return; 20 | 21 | startSearchAnim(); 22 | $searchWrap.addClass("on"); 23 | stopSearchAnim(function () { 24 | $(".search-form-input").focus(); 25 | }); 26 | }); 27 | 28 | $(".search-form-input").on("blur", function () { 29 | startSearchAnim(); 30 | $searchWrap.removeClass("on"); 31 | stopSearchAnim(); 32 | }); 33 | 34 | // Share 35 | $("body") 36 | .on("click", function () { 37 | $(".article-share-box.on").removeClass("on"); 38 | }) 39 | .on("click", ".article-share-link", function (e) { 40 | e.stopPropagation(); 41 | 42 | var $this = $(this), 43 | url = $this.attr("data-url"), 44 | encodedUrl = encodeURIComponent(url), 45 | id = "article-share-box-" + $this.attr("data-id"), 46 | offset = $this.offset(); 47 | 48 | if ($("#" + id).length) { 49 | var box = $("#" + id); 50 | 51 | if (box.hasClass("on")) { 52 | box.removeClass("on"); 53 | return; 54 | } 55 | } else { 56 | var html = [ 57 | '
    ', 58 | '', 59 | '
    ', 60 | '', 63 | '', 66 | '', 69 | '', 72 | "
    ", 73 | "
    ", 74 | ].join(""); 75 | 76 | var box = $(html); 77 | 78 | $("body").append(box); 79 | } 80 | 81 | $(".article-share-box.on").hide(); 82 | 83 | box 84 | .css({ 85 | top: offset.top + 25, 86 | left: offset.left, 87 | }) 88 | .addClass("on"); 89 | }) 90 | .on("click", ".article-share-box", function (e) { 91 | e.stopPropagation(); 92 | }) 93 | .on("click", ".article-share-box-input", function () { 94 | $(this).select(); 95 | }) 96 | .on("click", ".article-share-box-link", function (e) { 97 | e.preventDefault(); 98 | e.stopPropagation(); 99 | 100 | window.open( 101 | this.href, 102 | "article-share-box-window-" + Date.now(), 103 | "width=500,height=450" 104 | ); 105 | }); 106 | 107 | // Caption 108 | $(".article-entry").each(function (i) { 109 | $(this) 110 | .find("img") 111 | .each(function () { 112 | if ($(this).parent().hasClass("fancybox")) return; 113 | 114 | var alt = this.alt; 115 | 116 | if (alt) $(this).after('' + alt + ""); 117 | 118 | $(this).wrap( 119 | '' 120 | ); 121 | }); 122 | 123 | $(this) 124 | .find(".fancybox") 125 | .each(function () { 126 | $(this).attr("rel", "article" + i); 127 | }); 128 | }); 129 | 130 | if ($.fancybox) { 131 | $(".fancybox").fancybox(); 132 | } 133 | 134 | // Mobile nav 135 | var $container = $("#container"), 136 | isMobileNavAnim = false, 137 | mobileNavAnimDuration = 200; 138 | 139 | var startMobileNavAnim = function () { 140 | isMobileNavAnim = true; 141 | }; 142 | 143 | var stopMobileNavAnim = function () { 144 | setTimeout(function () { 145 | isMobileNavAnim = false; 146 | }, mobileNavAnimDuration); 147 | }; 148 | 149 | $("#main-nav-toggle").on("click", function () { 150 | if (isMobileNavAnim) return; 151 | 152 | startMobileNavAnim(); 153 | $container.toggleClass("mobile-nav-on"); 154 | stopMobileNavAnim(); 155 | }); 156 | 157 | $("#wrap").on("click", function () { 158 | if (isMobileNavAnim || !$container.hasClass("mobile-nav-on")) return; 159 | 160 | $container.removeClass("mobile-nav-on"); 161 | }); 162 | })(jQuery); 163 | --------------------------------------------------------------------------------