From 94c66ac445f5223d889118d104b28a299e33463c Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sat, 20 Jul 2019 10:30:59 -0700 Subject: [PATCH 01/59] docs(change): Updating status doc to reflect current state. --- .../Development/documentation-status.md | 123 +++++++++--------- 1 file changed, 61 insertions(+), 62 deletions(-) diff --git a/documentation/content/Development/documentation-status.md b/documentation/content/Development/documentation-status.md index 39224f86..36c5481f 100644 --- a/documentation/content/Development/documentation-status.md +++ b/documentation/content/Development/documentation-status.md @@ -10,67 +10,66 @@ Status: draft --- - -| Category/Directory | File Name | Status | Title | -| ----------------------- | ---------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------- | -| Analytics | google-analytics.md | - | - | -| Analytics | heap-analytics.md | - | - | -| Analytics | stat-counter.md | - | - | -| Appearance and Style | article-subtitle.md | - | - | -| Appearance and Style | modified-date.md | - | - | -| Appearance and Style | page-title.md | - | - | -| Appearance and Style | table-of-contents.md | Rewritten, [301](https://github.com/Pelican-Elegant/elegant/issues/301) | Add A Table Of Contents to Your Pages | -| Appearance and Style | warnings-admonitions.md | - | - | -| Appearance and Style | web-safe-fonts.md | - | - | -| Appearance and Style | why-look-and-feel.md | New, Pending [312](https://github.com/Pelican-Elegant/elegant/issues/312) | - | -| Code Snippets | code-style.md | - | - | -| Code Snippets | custome-syntax-theme.md | - | - | -| Code Snippets | line-numbers-code-snippet.md | - | - | -| Comments | collapsible-comments.md | - | - | -| Comments | comment-id.md | - | - | -| Comments | disable-comments.md | - | - | -| Comments | disqus-comments.md | - | - | -| Comments | invite-comments.md | - | - | -| Contributing | not listed | - | - | -| Development | not listed | - | - | -| Elegant - Pelican Theme | article-redirect.md | - | - | -| Elegant - Pelican Theme | author-blurbs.md | Rewritten, Pending | Add Author Blurbs to Your Articles | -| Elegant - Pelican Theme | Elegant-Quickstart.md | - | - | -| Elegant - Pelican Theme | favicons-speed-dial-icons.md | - | - | -| Elegant - Pelican Theme | testimonials.md | - | - | -| Extra Customization | change-labels.md | - | - | -| Extra Customization | custom-404.md | Rewritten | Add A Custom 404 Error Page to Your Site | -| Extra Customization | custom-style.md | - | - | -| Extra Customization | customize-elegant.md | - | - | -| Extra Customization | meta-data.md | - | - | -| Extra Customization | reading-time.md | Rewritten, Pending, [302](https://github.com/Pelican-Elegant/elegant/issues/302) | Add A Reading Time Estimate to Your Articles | -| Footer | add-license.md | - | - | -| Footer | hosted-on.md | - | - | -| Footer | site-subtitle.md | - | - | -| Landing Page | about-me.md | - | - | -| Landing Page | landing-page.md | - | - | -| Landing Page | projects-list.md | - | - | -| Landing Page | recent-articles.md | - | - | -| Landing Page | welcome.md | - | - | -| Mailing List | freelists.md | - | - | -| Mailing List | mailchimp.md | - | - | -| Monetization | amazon-one-link.md | - | - | -| Monetization | bestazon.md | - | - | -| Search | tipue-search.md | Rewritten, [392](https://github.com/Pelican-Elegant/elegant/issues/392) | Add Search to Your Site | -| SEO and SMO | claim-site.md | - | - | -| SEO and SMO | rss-feeds.md | - | - | -| SEO and SMO | seo-social-media-tags.md | - | - | -| SEO and SMO | social-profiles-sidebar.md | - | - | -| Supported Plugins | assets-plugin.md | - | - | -| Supported Plugins | multi-part-plugin.md | Abandoned?, Pri-1, [308](https://github.com/Pelican-Elegant/elegant/issues/308) | - | -| Supported Plugins | photogallery.md | - | - | -| Supported Plugins | previous-and-next-article.md | - | - | -| Supported Plugins | share-post-plugin.md | - | - | -| Taxonomy | article-count.md | - | - | -| Taxonomy | filter-tags.md | - | - | -| Taxonomy | zero-clutter-category.md | - | - | -| Unknown | | Jack, Pri-1, [363](https://github.com/Pelican-Elegant/elegant/issues/363) | - | -| Unknown | | Ongoing discussion, [314](https://github.com/Pelican-Elegant/elegant/issues/314) | -| Unknown | | Not Assigned, [311](https://github.com/Pelican-Elegant/elegant/issues/311) | +| Category/Directory |File Name | Status | Title | Notes | +| --- | --- | --- | --- |- | +|Analytics |google-analytics.md | - | **Proposed** How To Setup Google Analytics for Website Analytics | - | +|Analytics |heap-analytics.md | - | **Proposed** How To Setup Heap Analytics for Website Analytics | - | +|Analytics |stat-counter.md | - | **Proposed** How To Setup Stat Counter for Website Analytics | - | +|Appearance and Style |article-subtitle.md | - | **Proposed** Add a Subtitle To Your Articles | - | +|Appearance and Style |modified-date.md | - | **Proposed** Adding Modified Dates to Your Articles | - | +|Appearance and Style |page-title.md | - | **Proposed** How Elegant Titles Your Pages | - | +|Appearance and Style |table-of-contents.md | Rewritten, [301](https://github.com/Pelican-Elegant/elegant/issues/301) | Add A Table Of Contents to Your Pages | - | +|Appearance and Style |warnings-admonitions.md | - | **Proposed** How To Add Admonitions To Your Pages | - | +|Appearance and Style |web-safe-fonts.md | - | **Proposed** How Elegant Uses Web-Safe Fonts for Your Pages | - | +|Appearance and Style |why-look-and-feel.md | New, Pending [312](https://github.com/Pelican-Elegant/elegant/issues/312) | Why Does Elegant Look The Way It Does? | - | +|Code Snippets |code-style.md | - | Change Syntax Highlight Theme | - | +|Code Snippets |custome-syntax-theme.md | - | Code Snippets Theme | - | +|Code Snippets |line-numbers-code-snippet.md| old? remove? | Display Line Numbers in Code Snippets | - | +|Comments |collapsible-comments.md | - | Collapsible Comments | rethink this section | +|Comments |comment-id.md | - | Comments Thread ID | - | +|Comments |disable-comments.md | - | Disable Comments - articles | - | +|Comments |disqus-comments.md | - | Enable Disqus Comments | - | +|Comments |invite-comments.md | - | Invite Visitors To Comment | - | +|Contributing |not listed | - |- |- | +|Development |not listed | - |- |- | +|Elegant - Pelican Theme|article-redirect.md | - | Article redirection | - | +|Elegant - Pelican Theme|author-blurbs.md | Rewritten, Pending | Add Author Blurbs to Your Articles | - | +|Elegant - Pelican Theme|Elegant-Quickstart.md | - | Quickly get a GitHub hosted blog with Pelican... | - | +|Elegant - Pelican Theme|favicons-speed-dial-icons.md| - | How to set Shortcut Icons | - | +|Elegant - Pelican Theme|testimonials.md | - | What People Say About Elegant | - | +|Extra Customization |change-labels.md | - | Change Labels | - | +|Extra Customization |custom-404.md | Rewritten | Add A Custom 404 Error Page to Your Site | - | +|Extra Customization |custom-style.md | - | Customize Style |- | +|Extra Customization |customize-elegant.md | old? | How to Customize Elegant | - | +|Extra Customization |meta-data.md | - | Metadata |- | +|Extra Customization |reading-time.md | Rewritten, Pending, [302](https://github.com/Pelican-Elegant/elegant/issues/302) | Add A Reading Time Estimate to Your Articles | - | +|Footer |add-license.md | - | Add License to your Site |- | +|Footer |hosted-on.md | - | Show Your Host Information |- | +|Footer |site-subtitle.md | - | Add Site Subtitle |- | +|Landing Page |about-me.md | - | Write About Me |- | +|Landing Page |landing-page.md | - | Unique Home Page Features | really a jump page for category | +|Landing Page |projects-list.md | - | Projects List |- | +|Landing Page |recent-articles.md | - | Recent Articles List |- | +|Landing Page |welcome.md | - | Write Welcome Message |- | +|Mailing List |freelists.md | - | Add FreeLists |- | +|Mailing List |mailchimp.md | - | Add Mailchimp |- | +|Monetization |amazon-one-link.md | - | Amazon OneLink Support |- | +|Monetization |bestazon.md | - | BestAzon Support |- | +|Search |tipue-search.md | Rewritten, [392](https://github.com/Pelican-Elegant/elegant/issues/392) | Add Search to Your Site |- | +|SEO and SMO |claim-site.md | - | Claim website on Google and Bing |- | +|SEO and SMO |rss-feeds.md | - | How to show RSS feeds icon |- | +|SEO and SMO |seo-social-media-tags.md | - | Search Engine and Social Media Optimization |- | +|SEO and SMO |social-profiles-sidebar.md | - | How to display your Social Media Profiles |- | +|Supported Plugins |assets-plugin.md | - | Avoid Unnecessary HTTP Requests |- | +|Supported Plugins |multi-part-plugin.md | Abandoned?, Pri-1, [308](https://github.com/Pelican-Elegant/elegant/issues/308) | How to use Multi Part plugin |- | +|Supported Plugins |photogallery.md | - | Photo gallery plugin |- | +|Supported Plugins |previous-and-next-article.md| - | How to show Previous and Next Articles |- | +|Supported Plugins |share-post-plugin.md | - | How to use Social Sharing Plugin |- | +|Taxonomy |article-count.md | - | Articles Count With Every Tag & Category | Reassign to Look and Feel | +|Taxonomy |filter-tags.md | - | Live Filter for Tags | Reassign to Look and Feel | +|Taxonomy |zero-clutter-category.md | - | Zero Clutter Categories | Reassign to Look and Feel | +| Unknown | | Jack, Pri-1, [363](https://github.com/Pelican-Elegant/elegant/issues/363) | - |- | +| Unknown | | Ongoing discussion, [314](https://github.com/Pelican-Elegant/elegant/issues/314) |- | +| Unknown | | Not Assigned, [311](https://github.com/Pelican-Elegant/elegant/issues/311) |- | From cb7bbee3c06b4e2a1c3dd7c4163c15121463b45f Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sat, 20 Jul 2019 17:06:01 -0700 Subject: [PATCH 02/59] doc(changes): Rewrite of multi-part plugin per issue 308. --- .../Appearance and Style/why-look-and-feel.md | 12 ++- .../Supported Plugins/multi-part-plugin.md | 92 +++++++++--------- .../content/Supported Plugins/reading-time.md | 5 +- .../elegant-theme_multi-part-sidebar.png | Bin 3391 -> 2836 bytes 4 files changed, 57 insertions(+), 52 deletions(-) diff --git a/documentation/content/Appearance and Style/why-look-and-feel.md b/documentation/content/Appearance and Style/why-look-and-feel.md index b87f9b8e..530b7505 100644 --- a/documentation/content/Appearance and Style/why-look-and-feel.md +++ b/documentation/content/Appearance and Style/why-look-and-feel.md @@ -45,6 +45,12 @@ article's [Table of Contents]({filename}./table-of-contents.md) to the left sidebar and displaying it in a smaller font. This allows the table to retain it's usefulness to the reader while not intruding on the article. In a similar fashion, the right sidebar is used to relate any other extra information about the article to the user. Elements -that regularly appear in the right sidebar include: Published time, Last Updated time, -Category, Tags, "Stay in Touch" icons, "Monthly Updates" opt-in, and -[Reading Time]({filename}../Supported Plugins/reading-time.md). +that regularly appear in the right sidebar include: +Category, +Last Updated time, +"Monthly Updates" opt-in, +Published time, +[Reading Time]({filename}../Supported Plugins/reading-time.md), and +[Series section]({filename}../Supported Plugins/multi-part-plugin.md) +"Stay in Touch" icons, +Tags. diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index 4e59f160..ca988ff1 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -1,69 +1,69 @@ -Title: How to use Multi Part plugin +Title: Add a Series Indicator to Your Multipart Articles Tags: pelican-theme, pelican-plugin, navigation, web-design Category: Supported Plugins Date: 2014-04-20 18:18 Slug: how-to-use-multi-part-plugin Comment_id: 3ws2xke-how-to-use-multi-part-plugin Subtitle: -Summary: Elegant integrates with Multi Part plugin out of the box +Summary: Elegant can be configured to provide a series indicator on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. Keywords: -[Multi -parts](https://github.com/getpelican/pelican-plugins/tree/master/multi_part) is -a useful plugin that lets you write "multi-part" articles. +When writing articles about certain topics, it is advantageous to split a single article into +multiple articles. Without splitting the article up, the author would be forced to cram all +of the content into a denser and much longer article, reducing its effectiveness and +readability in the process. Splitting the article allows the author to focus on a specific +concept of the larger article, thereby increasing the overall appearance and readability. -To mark articles that belong to the same series, define `parts` metadata. +Elegant provides the ability to present a view of the articles in the series in the middle of +the right sidebar. This section starts with the name of the series, followed by one bullet +point for each of the articles in the series. The text for the article is prefaced with +"Part N: " (where N is the index of the article) and then the title for the article. To make +navigation easier, the current article is presented in italics, with the other articles being +presented as links to their respective articles. - :::rest - :parts: iCloud 101 Series +Here is an example of what the Series section may look like: -Elegant shows the multi-part series in the sidebar. +![series example in the sidebar]({static}/images/elegant-theme_multi-part-sidebar.png) -![multi-part example in the -sidebar]({static}/images/elegant-theme_multi-part-sidebar.png) +## Configuration -Articles are sorted by their date in ascending order. The oldest article is -considered "Part 1" and so on. +To enable the reading time for your articles, you need to add `series` to `PLUGINS` in +your Pelican configuration. -The currently opened article is displayed in italics. In the above example, -"Part 2" is opened in the browser tab. +```python +PLUGINS = ['series'] +``` -Title attribute of HTML anchor tag `` is set for each "Part" to its article -title; it is displayed when user hovers over the link. +Note that these values must be added to any existing values present for the `PLUGINS` +configuration variables. -![multi-part example with title of the -links]({static}/images/elegant-theme_multi-part-title-attribute.png) +In addition, the `SERIES_TITLE` configuration variable can be set to specify the title used for +the Series section, regardless of the series. -As all other features, Elegant has some tricks up its sleeve. +```python +SERIES_TITLE = "More In This Series" +``` -## Series Title +Note that this configuration variable will only change the name of the series for display as +the title of the Series section, and will not affect any aspect of the grouping of articles. -By default Elegant uses value of `parts` as the title of the series. You can -define series title for your multi-part articles series. Define `series_title` -in your articles metadata, like, +## Article Metadata - :::rest - :parts: iCloud 101 Series - :series_title: iCloud for Dummies +Once the configuration for Series is enabled in the configuration file, using this feature for +a given set of articles requires that the article contains the `Series` +[metadata]({filename}../Extra Customization/meta-data.md) field value. -And this will give you, +The text assigned to the `Series` metadata field is the title of the series. When the page is +created, Pelican provides Elegant with a list of all pages that have the same value for the +`Series` metadata field. By default, Elegant sorts that list according to the publish date for +each article. The titles for those pages is then displayed in sorted order, with the current +page presented in *italics* and the other pages presented as a link to those pages. -![multi-part example with custom series title]({static}/images/elegant-theme_multi-part-custom-label.png) +```Markdown +Series: Maximizing Elegant +series_index: 2 +``` -You have to make sure `series_title` metadata is set for every article in the -series. - -You can also define `SERIES_TITLE` in your Pelican configuration to set a -default value for `multi_part` widget label. - -Elegant first looks for `SERIES_TITLE` in configuration, then `series_title` in -the article metadata, then `parts` metadata which it uses as the last resort. - -I recommend you to let Elegant use `parts` instead of `series_title` and -`SERIES_TITLE`. - -With `series_title` you will have to deal with the hassle of making sure all -articles in the series have it, which you are already doing for `parts`. So why -double the hassle? - -With `SERIES_TITLE` you won't be able to have custom titles for the series'. +If there is a reason to override the ordering of the articles, the `series_index` metadata +field is required. It is recommended that you use the part number you want displayed for the +article as the value to assign to the field. diff --git a/documentation/content/Supported Plugins/reading-time.md b/documentation/content/Supported Plugins/reading-time.md index e4448378..28d4b649 100644 --- a/documentation/content/Supported Plugins/reading-time.md +++ b/documentation/content/Supported Plugins/reading-time.md @@ -13,9 +13,8 @@ to the reader on the amount of time it will take to read the article. This estim typically based on the average reading speed of an adult being roughly 265 words per minute while retaining comprehension. -Elegant provides this feature, adding a `Reading Time` section -at the top of the text on the right side of the article with the estimate for the current -article. +Elegant provides this feature, adding a `Reading Time` section at the top of the right sidebar +with the estimate for the current article. Here is an example of what the Reading Time estimate may look like: diff --git a/documentation/content/images/elegant-theme_multi-part-sidebar.png b/documentation/content/images/elegant-theme_multi-part-sidebar.png index 7ed2019e700421ae1842c35fba3214d916cb2895..3fb8db247a259d75a3dde88cbd61c8e9ced54c65 100644 GIT binary patch literal 2836 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 I#O=_310u(AVgLXD literal 3391 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 Date: Sat, 20 Jul 2019 17:45:36 -0700 Subject: [PATCH 03/59] doc(changes) Adding rewrite of next and previous indicator. --- .../Supported Plugins/multi-part-plugin.md | 2 +- .../previous-and-next-article.md | 40 ++++++++++++------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index ca988ff1..82c4afe9 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -5,7 +5,7 @@ Date: 2014-04-20 18:18 Slug: how-to-use-multi-part-plugin Comment_id: 3ws2xke-how-to-use-multi-part-plugin Subtitle: -Summary: Elegant can be configured to provide a series indicator on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. +Summary: Elegant can be configured to provide a series section on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. Keywords: When writing articles about certain topics, it is advantageous to split a single article into diff --git a/documentation/content/Supported Plugins/previous-and-next-article.md b/documentation/content/Supported Plugins/previous-and-next-article.md index ba157874..666260ec 100644 --- a/documentation/content/Supported Plugins/previous-and-next-article.md +++ b/documentation/content/Supported Plugins/previous-and-next-article.md @@ -1,26 +1,38 @@ -Title: How to show Previous and Next Articles +Title: Add Previous and Next Article Links to Your Articles Tags: pelican-theme, pelican-plugin, navigation, web-design Category: Supported Plugins Date: 2014-01-27 00:02 Slug: how-to-show-previous-and-next-article Comment_id: p9ot4uz-how-to-show-previous-and-next-article Subtitle: -Summary: Elegant theme shows Previous and Next article link to make navigation of the site easier +Summary: Elegant can be configured to provide a Previous and Next article link at the bottom of your articles. This allows for easier navigation through the site if you are looking at articles in published date order. Keywords: -The Previous and Next post links are a powerful way to keep visitors engaged -and to guide them through your site. +When reading a series of articles on a website, a reader often desires to view the articles in +the order in which they were published. -Elegant requires [Neighbor Articles -plugin](https://github.com/getpelican/pelican-plugins/tree/master/neighbors) to -show these navigational links. +Elegant provides the ability to provide navigation links to the previous and next articles at +the bottom of each article. These links provide a powerful way to keep visitors engaged +and guide them through your site. -![Show next and previous -articles]({static}/images/elegant-theme_previous-next-article.png) +Here is an example of what the Previous and Next articles links may look like: -Elegant shows newer article on the right hand side and older article on the -left hand side at the bottom of every article. +![Show next and previous articles]({filename}/images/elegant-theme_previous-next-article.png) -Most of the content on web is written in left to right languages. In these -languages pages are placed from left to right. It seemed natural to use the -same order in Elegant. +## Configuration + +To enable the Previous and Next Article links for your articles, add `neighbors` to `PLUGINS` +in your Pelican configuration. + +```python +PLUGINS = ['neighbors'] +``` + +Note that these values must be added to any existing values present for the `PLUGINS` +configuration variables. + +When enabled, Elegant will show the links for Previous and Next articles at the very bottom of +every article, after any footnotes for the article, but before the footer for the website. The +link for the next oldest or Previous article is displayed on the left side and the next +youngest or Next article on the right side. If there is no article that is newer or older than +the current article, the respective link will not be shown. From c6e2dbfebf46b935e49f998387077bed9a1d82d3 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sat, 20 Jul 2019 23:31:23 -0700 Subject: [PATCH 04/59] docs(change): Adding rewrite for share-post. --- .../Supported Plugins/share-post-plugin.md | 108 ++++++++++++------ 1 file changed, 72 insertions(+), 36 deletions(-) diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index dcbd4c13..1c74bbaf 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -1,56 +1,92 @@ -Title: How to use Social Sharing Plugin +Title: Add Social Sharing Links to Your Articles Tags: pelican-theme, pelican-plugin, social-media Category: Supported Plugins Date: 2014-03-24 20:14 Slug: how-to-use-social-sharing-plugin Comment_id: x4jitcv-how-to-use-social-sharing-plugin Subtitle: -Summary: Elegant integrates with Share Post plugin of Pelican out of the box +Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links are provide with a simple way to share on various Social Media platforms while endeavoring to not track users in the process. Keywords: social networks, share posts, +Authors: Talha Mansoor, Jack De Winter -No blog is complete without a social sharing plugin, that invites visitors to -share your post on popular social networks. +No blog is complete without buttons or links that invites a reader to share your articles +with the friend and colleagues on various social media sites. The problem with these buttons +on many sites is that the buttons are used by big companies to track your web usage, sharing +that information with various companies. (For a more in-depth talk on this subject, please +read the [Online Trackers and Links](#Online-Trackers-and-Links) section at the end of this +page.) -There are plethora of social sharing widgets available online. Unfortunately -most of these widgets are used to track users. [Technology -watchdogs](http://techliberation.com/2011/05/20/privacy-solutions-how-to-block-facebooks-like-button-and-other-social-widgets/) -have been [raising a hue and -cry](http://online.wsj.com/news/articles/SB10001424052748704281504576329441432995616#printMode) -since as [early as -2009](https://www.eff.org/deeplinks/2009/09/online-trackers-and-social-networks). +Elegant provides a simple solution to this, using the `Share Post` plugin from pelican to +provide simple and plain old-school URLs to provide the social media links. These have the +benefit of not having any ability to be used for online tracking. -Developers have come up with [different ways](http://fixtracking.com/) to cope -this issue. Solutions ranging from [browser plugins](https://disconnect.me/) to -totally [reinventing share -widgets](http://panzi.github.io/SocialSharePrivacy/). +Here is an example of what the Series section may look like: -Obviously, you cannot expect that all your visitors to use a privacy plugin. -Most browsers on mobile platforms do not let user install any sort of plugin. +![Share Post plugin in Elegant]({filename}/images/elegant-theme-share-post-plugin.png) -Reinventing social widget will require educating users about it. The new style -will be alien to them and may result in a decrease in number of _shares_ on -social networks. +## Configuration -Elegant has a far simpler solution. It uses Pelican's [Share -Post](https://github.com/getpelican/pelican-plugins/tree/master/share_post) -plugin. This plugin generates old school URLs that cannot be used for online -tracking at all. +To enable the Social Media Sharing links for your articles, add `share_post` to `PLUGINS` +in your Pelican configuration. -Elegant supports it out of the box. You just have to enable it in your Pelican -configuration, +```python +PLUGINS = ['share_post'] +``` - :::python - PLUGINS = ['share_post'] +Note that these values must be added to any existing values present for the `PLUGINS` +configuration variables. -And viola! +!!! note + The [share_post plugin](https://github.com/getpelican/pelican-plugins/blob/master/share_post/README.md) requires the Python `beautifulsoup4` package to be installed. -![Share Post plugin in Elegant]({static}/images/elegant-theme-share-post-plugin.png) +The default text used to lead into the Social Media Sharing links is "Share On:". This can +be overridden by defining the `SHARE_POST_INTRO` configuration variable with the text you +want to replace it. -Like [rest of the Elegant](how-to-customize-elegant) you can customize this -widget too. +```Python +SHARE_POST_INTRO = "Share me with your friends on" +``` -You can define `SHARE_POST_INTRO` in your Pelican configuration to override the -default "Share on:" text. +## Article Metadata -You can also define it on per article basis by defining `share_post_intro` in -your article metadata. +Once the configuration for Sharing Media Links is enabled in the configuration file, using +this feature to provide links for your readers to share your articles on social media is +completed. + +The only effect any [metadata]({filename}../Extra Customization/meta-data.md) field will have +on Sharing Media links is to change the test to lead into the Social Media Sharing links. +As documented above, there is a default that can be overridden using the `SHARE_POST_INTRO` +configuration variable. This can be further overridden for a specific article by providing +the `share_post_intro` metadata field value for an article. + +```yaml +share_post_intro: Share this article on Elegant with +``` + +## Online Trackers and Links + +There are a plethora of social sharing widgets available online. The unfortunate problem with +most of the widgets is that they are used to track users and their browsing habits. +[Technology watchdogs](http://techliberation.com/2011/05/20/privacy-solutions-how-to-block-facebooks-like-button-and-other-social-widgets/) +have been +[raising a hue and cry](http://online.wsj.com/news/articles/SB10001424052748704281504576329441432995616#printMode) +since as +[early as 2009](https://www.eff.org/deeplinks/2009/09/online-trackers-and-social-networks). + +Developers have responded to these concerned by coming up with +[different ways](http://fixtracking.com/) to cope with this issue. The solutions range from +custom [browser plugins](https://disconnect.me/) to completely totally +[reinventing share widgets](http://panzi.github.io/SocialSharePrivacy/) for a given browser. +However, it is unreasonable to expect that each of your visitors uses a privacy plugin. +Depending on your setup, your computer's browser or mobile phone's browser may not let your +users install any kind of plugin. + +Reinventing a social widget that respects the user's concerns will certainly requiring the more +educated readers about it. For other readers, the "new" or "changed" social widget will seem +alien to them, and will make them hesitant to use it. In turn, that will almost definitely +result in a decrease in the number of shares of your articles on social networks. + +Pelican (and therefore Elegant) uses a simple approach to work around this issue. By using +plain URLs to provide it's ability to share with social media sites, the entire widget issue +is avoided. The only cost that seems to be present is that some social media sites **require** +some form of widget. From 0f71058e313e6eea1dde23911243dac523e89dcb Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sat, 20 Jul 2019 23:32:22 -0700 Subject: [PATCH 05/59] docs(change): Updating recently changed plugins articles to conform to each other. --- .../Development/documentation-status.md | 26 +++++++++---------- .../Supported Plugins/multi-part-plugin.md | 3 ++- .../previous-and-next-article.md | 1 + .../content/Supported Plugins/reading-time.md | 3 +++ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/documentation/content/Development/documentation-status.md b/documentation/content/Development/documentation-status.md index 36c5481f..4a610f3c 100644 --- a/documentation/content/Development/documentation-status.md +++ b/documentation/content/Development/documentation-status.md @@ -12,16 +12,16 @@ Status: draft | Category/Directory |File Name | Status | Title | Notes | | --- | --- | --- | --- |- | -|Analytics |google-analytics.md | - | **Proposed** How To Setup Google Analytics for Website Analytics | - | -|Analytics |heap-analytics.md | - | **Proposed** How To Setup Heap Analytics for Website Analytics | - | -|Analytics |stat-counter.md | - | **Proposed** How To Setup Stat Counter for Website Analytics | - | -|Appearance and Style |article-subtitle.md | - | **Proposed** Add a Subtitle To Your Articles | - | -|Appearance and Style |modified-date.md | - | **Proposed** Adding Modified Dates to Your Articles | - | -|Appearance and Style |page-title.md | - | **Proposed** How Elegant Titles Your Pages | - | -|Appearance and Style |table-of-contents.md | Rewritten, [301](https://github.com/Pelican-Elegant/elegant/issues/301) | Add A Table Of Contents to Your Pages | - | -|Appearance and Style |warnings-admonitions.md | - | **Proposed** How To Add Admonitions To Your Pages | - | -|Appearance and Style |web-safe-fonts.md | - | **Proposed** How Elegant Uses Web-Safe Fonts for Your Pages | - | -|Appearance and Style |why-look-and-feel.md | New, Pending [312](https://github.com/Pelican-Elegant/elegant/issues/312) | Why Does Elegant Look The Way It Does? | - | +|Analytics |google-analytics.md | - | **Proposed** How To Setup Google Analytics for Website Analytics | - | +|Analytics |heap-analytics.md | - | **Proposed** How To Setup Heap Analytics for Website Analytics | - | +|Analytics |stat-counter.md | - | **Proposed** How To Setup Stat Counter for Website Analytics | - | +|Appearance and Style |article-subtitle.md | - | **Proposed** Add a Subtitle To Your Articles | - | +|Appearance and Style |modified-date.md | - | **Proposed** Adding Modified Dates to Your Articles | - | +|Appearance and Style |page-title.md | - | **Proposed** How Elegant Titles Your Pages | - | +|Appearance and Style |table-of-contents.md | Rewritten, [301](https://github.com/Pelican-Elegant/elegant/issues/301) | Add A Table Of Contents to Your Pages | - | +|Appearance and Style |warnings-admonitions.md | - | **Proposed** How To Add Admonitions To Your Pages | - | +|Appearance and Style |web-safe-fonts.md | - | **Proposed** How Elegant Uses Web-Safe Fonts for Your Pages | - | +|Appearance and Style |why-look-and-feel.md | New, Pending [312](https://github.com/Pelican-Elegant/elegant/issues/312) | Why Does Elegant Look The Way It Does? | - | |Code Snippets |code-style.md | - | Change Syntax Highlight Theme | - | |Code Snippets |custome-syntax-theme.md | - | Code Snippets Theme | - | |Code Snippets |line-numbers-code-snippet.md| old? remove? | Display Line Numbers in Code Snippets | - | @@ -61,10 +61,10 @@ Status: draft |SEO and SMO |seo-social-media-tags.md | - | Search Engine and Social Media Optimization |- | |SEO and SMO |social-profiles-sidebar.md | - | How to display your Social Media Profiles |- | |Supported Plugins |assets-plugin.md | - | Avoid Unnecessary HTTP Requests |- | -|Supported Plugins |multi-part-plugin.md | Abandoned?, Pri-1, [308](https://github.com/Pelican-Elegant/elegant/issues/308) | How to use Multi Part plugin |- | +|Supported Plugins |multi-part-plugin.md | New [308](https://github.com/Pelican-Elegant/elegant/issues/308) | Add a Series Indicator to Your Multipart Articles |- | |Supported Plugins |photogallery.md | - | Photo gallery plugin |- | -|Supported Plugins |previous-and-next-article.md| - | How to show Previous and Next Articles |- | -|Supported Plugins |share-post-plugin.md | - | How to use Social Sharing Plugin |- | +|Supported Plugins |previous-and-next-article.md| New | Add Previous and Next Article Links to Your Articles |- | +|Supported Plugins |share-post-plugin.md | New | Add Social Sharing Links to Your Articles |- | |Taxonomy |article-count.md | - | Articles Count With Every Tag & Category | Reassign to Look and Feel | |Taxonomy |filter-tags.md | - | Live Filter for Tags | Reassign to Look and Feel | |Taxonomy |zero-clutter-category.md | - | Zero Clutter Categories | Reassign to Look and Feel | diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index 82c4afe9..f97567aa 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -7,6 +7,7 @@ Comment_id: 3ws2xke-how-to-use-multi-part-plugin Subtitle: Summary: Elegant can be configured to provide a series section on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. Keywords: +Authors: Talha Mansoor, Jack De Winter When writing articles about certain topics, it is advantageous to split a single article into multiple articles. Without splitting the article up, the author would be forced to cram all @@ -23,7 +24,7 @@ presented as links to their respective articles. Here is an example of what the Series section may look like: -![series example in the sidebar]({static}/images/elegant-theme_multi-part-sidebar.png) +![series example in the sidebar]({filename}/images/elegant-theme_multi-part-sidebar.png) ## Configuration diff --git a/documentation/content/Supported Plugins/previous-and-next-article.md b/documentation/content/Supported Plugins/previous-and-next-article.md index 666260ec..81f9b460 100644 --- a/documentation/content/Supported Plugins/previous-and-next-article.md +++ b/documentation/content/Supported Plugins/previous-and-next-article.md @@ -7,6 +7,7 @@ Comment_id: p9ot4uz-how-to-show-previous-and-next-article Subtitle: Summary: Elegant can be configured to provide a Previous and Next article link at the bottom of your articles. This allows for easier navigation through the site if you are looking at articles in published date order. Keywords: +Authors: Talha Mansoor, Jack De Winter When reading a series of articles on a website, a reader often desires to view the articles in the order in which they were published. diff --git a/documentation/content/Supported Plugins/reading-time.md b/documentation/content/Supported Plugins/reading-time.md index 28d4b649..05c2c6c7 100644 --- a/documentation/content/Supported Plugins/reading-time.md +++ b/documentation/content/Supported Plugins/reading-time.md @@ -32,6 +32,9 @@ PLUGINS = ['post_stats'] Note that these values must be added to any existing values present for the `PLUGINS` configuration variables. +!!! note + The [post_stats plugin](https://github.com/getpelican/pelican-plugins/blob/master/post_stats/readme.rst) requires the Python `beautifulsoup4` package to be installed. + In addition, the `READING_TIME_LOWER_LIMIT` configuration variable can be set to specify a lower limit for this feature. If not supplied, the default value for this variable is 4 min. From 91f343991b2b2a788e74220f562163bad47e83da Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Mon, 22 Jul 2019 18:00:04 -0700 Subject: [PATCH 06/59] docs(change): rewriting assets documentation --- .pre-commit-config.yaml | 3 +- .../Development/documentation-status.md | 123 +++++++++--------- .../Supported Plugins/assets-plugin.md | 119 +++++++++++++---- 3 files changed, 160 insertions(+), 85 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ca09066b..6c3499bf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,7 @@ repos: - id: prettier files: \.(css|js|md|markdown|json) exclude: ^static/(tipuesearch|magnific) + log_file: prettier.out - repo: https://github.com/python/black rev: master hooks: @@ -16,7 +17,7 @@ repos: - id: check-added-large-files - id: check-ast - id: check-case-conflict - - id: check-executables-have-shebangs +# - id: check-executables-have-shebangs - id: check-json - id: check-merge-conflict - id: check-symlinks diff --git a/documentation/content/Development/documentation-status.md b/documentation/content/Development/documentation-status.md index 4a610f3c..739eff90 100644 --- a/documentation/content/Development/documentation-status.md +++ b/documentation/content/Development/documentation-status.md @@ -10,66 +10,67 @@ Status: draft --- -| Category/Directory |File Name | Status | Title | Notes | -| --- | --- | --- | --- |- | -|Analytics |google-analytics.md | - | **Proposed** How To Setup Google Analytics for Website Analytics | - | -|Analytics |heap-analytics.md | - | **Proposed** How To Setup Heap Analytics for Website Analytics | - | -|Analytics |stat-counter.md | - | **Proposed** How To Setup Stat Counter for Website Analytics | - | -|Appearance and Style |article-subtitle.md | - | **Proposed** Add a Subtitle To Your Articles | - | -|Appearance and Style |modified-date.md | - | **Proposed** Adding Modified Dates to Your Articles | - | -|Appearance and Style |page-title.md | - | **Proposed** How Elegant Titles Your Pages | - | -|Appearance and Style |table-of-contents.md | Rewritten, [301](https://github.com/Pelican-Elegant/elegant/issues/301) | Add A Table Of Contents to Your Pages | - | -|Appearance and Style |warnings-admonitions.md | - | **Proposed** How To Add Admonitions To Your Pages | - | -|Appearance and Style |web-safe-fonts.md | - | **Proposed** How Elegant Uses Web-Safe Fonts for Your Pages | - | -|Appearance and Style |why-look-and-feel.md | New, Pending [312](https://github.com/Pelican-Elegant/elegant/issues/312) | Why Does Elegant Look The Way It Does? | - | -|Code Snippets |code-style.md | - | Change Syntax Highlight Theme | - | -|Code Snippets |custome-syntax-theme.md | - | Code Snippets Theme | - | -|Code Snippets |line-numbers-code-snippet.md| old? remove? | Display Line Numbers in Code Snippets | - | -|Comments |collapsible-comments.md | - | Collapsible Comments | rethink this section | -|Comments |comment-id.md | - | Comments Thread ID | - | -|Comments |disable-comments.md | - | Disable Comments - articles | - | -|Comments |disqus-comments.md | - | Enable Disqus Comments | - | -|Comments |invite-comments.md | - | Invite Visitors To Comment | - | -|Contributing |not listed | - |- |- | -|Development |not listed | - |- |- | -|Elegant - Pelican Theme|article-redirect.md | - | Article redirection | - | -|Elegant - Pelican Theme|author-blurbs.md | Rewritten, Pending | Add Author Blurbs to Your Articles | - | -|Elegant - Pelican Theme|Elegant-Quickstart.md | - | Quickly get a GitHub hosted blog with Pelican... | - | -|Elegant - Pelican Theme|favicons-speed-dial-icons.md| - | How to set Shortcut Icons | - | -|Elegant - Pelican Theme|testimonials.md | - | What People Say About Elegant | - | -|Extra Customization |change-labels.md | - | Change Labels | - | -|Extra Customization |custom-404.md | Rewritten | Add A Custom 404 Error Page to Your Site | - | -|Extra Customization |custom-style.md | - | Customize Style |- | -|Extra Customization |customize-elegant.md | old? | How to Customize Elegant | - | -|Extra Customization |meta-data.md | - | Metadata |- | -|Extra Customization |reading-time.md | Rewritten, Pending, [302](https://github.com/Pelican-Elegant/elegant/issues/302) | Add A Reading Time Estimate to Your Articles | - | -|Footer |add-license.md | - | Add License to your Site |- | -|Footer |hosted-on.md | - | Show Your Host Information |- | -|Footer |site-subtitle.md | - | Add Site Subtitle |- | -|Landing Page |about-me.md | - | Write About Me |- | -|Landing Page |landing-page.md | - | Unique Home Page Features | really a jump page for category | -|Landing Page |projects-list.md | - | Projects List |- | -|Landing Page |recent-articles.md | - | Recent Articles List |- | -|Landing Page |welcome.md | - | Write Welcome Message |- | -|Mailing List |freelists.md | - | Add FreeLists |- | -|Mailing List |mailchimp.md | - | Add Mailchimp |- | -|Monetization |amazon-one-link.md | - | Amazon OneLink Support |- | -|Monetization |bestazon.md | - | BestAzon Support |- | -|Search |tipue-search.md | Rewritten, [392](https://github.com/Pelican-Elegant/elegant/issues/392) | Add Search to Your Site |- | -|SEO and SMO |claim-site.md | - | Claim website on Google and Bing |- | -|SEO and SMO |rss-feeds.md | - | How to show RSS feeds icon |- | -|SEO and SMO |seo-social-media-tags.md | - | Search Engine and Social Media Optimization |- | -|SEO and SMO |social-profiles-sidebar.md | - | How to display your Social Media Profiles |- | -|Supported Plugins |assets-plugin.md | - | Avoid Unnecessary HTTP Requests |- | -|Supported Plugins |multi-part-plugin.md | New [308](https://github.com/Pelican-Elegant/elegant/issues/308) | Add a Series Indicator to Your Multipart Articles |- | -|Supported Plugins |photogallery.md | - | Photo gallery plugin |- | -|Supported Plugins |previous-and-next-article.md| New | Add Previous and Next Article Links to Your Articles |- | -|Supported Plugins |share-post-plugin.md | New | Add Social Sharing Links to Your Articles |- | -|Taxonomy |article-count.md | - | Articles Count With Every Tag & Category | Reassign to Look and Feel | -|Taxonomy |filter-tags.md | - | Live Filter for Tags | Reassign to Look and Feel | -|Taxonomy |zero-clutter-category.md | - | Zero Clutter Categories | Reassign to Look and Feel | -| Unknown | | Jack, Pri-1, [363](https://github.com/Pelican-Elegant/elegant/issues/363) | - |- | -| Unknown | | Ongoing discussion, [314](https://github.com/Pelican-Elegant/elegant/issues/314) |- | -| Unknown | | Not Assigned, [311](https://github.com/Pelican-Elegant/elegant/issues/311) |- | + +| Category/Directory | File Name | Status | Title | Notes | +| ----------------------- | ---------------------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------- | +| Analytics | google-analytics.md | - | **Proposed** How To Setup Google Analytics for Website Analytics | - | +| Analytics | heap-analytics.md | - | **Proposed** How To Setup Heap Analytics for Website Analytics | - | +| Analytics | stat-counter.md | - | **Proposed** How To Setup Stat Counter for Website Analytics | - | +| Appearance and Style | article-subtitle.md | - | **Proposed** Add a Subtitle To Your Articles | - | +| Appearance and Style | modified-date.md | - | **Proposed** Adding Modified Dates to Your Articles | - | +| Appearance and Style | page-title.md | - | **Proposed** How Elegant Titles Your Pages | - | +| Appearance and Style | table-of-contents.md | Rewritten, [301](https://github.com/Pelican-Elegant/elegant/issues/301) | Add A Table Of Contents to Your Pages | - | +| Appearance and Style | warnings-admonitions.md | - | **Proposed** How To Add Admonitions To Your Pages | - | +| Appearance and Style | web-safe-fonts.md | - | **Proposed** How Elegant Uses Web-Safe Fonts for Your Pages | - | +| Appearance and Style | why-look-and-feel.md | New, Pending [312](https://github.com/Pelican-Elegant/elegant/issues/312) | Why Does Elegant Look The Way It Does? | - | +| Code Snippets | code-style.md | - | Change Syntax Highlight Theme | - | +| Code Snippets | custome-syntax-theme.md | - | Code Snippets Theme | - | +| Code Snippets | line-numbers-code-snippet.md | old? remove? | Display Line Numbers in Code Snippets | - | +| Comments | collapsible-comments.md | - | Collapsible Comments | rethink this section | +| Comments | comment-id.md | - | Comments Thread ID | - | +| Comments | disable-comments.md | - | Disable Comments - articles | - | +| Comments | disqus-comments.md | - | Enable Disqus Comments | - | +| Comments | invite-comments.md | - | Invite Visitors To Comment | - | +| Contributing | not listed | - | - | - | +| Development | not listed | - | - | - | +| Elegant - Pelican Theme | article-redirect.md | - | Article redirection | - | +| Elegant - Pelican Theme | author-blurbs.md | Rewritten, Pending | Add Author Blurbs to Your Articles | - | +| Elegant - Pelican Theme | Elegant-Quickstart.md | - | Quickly get a GitHub hosted blog with Pelican... | - | +| Elegant - Pelican Theme | favicons-speed-dial-icons.md | - | How to set Shortcut Icons | - | +| Elegant - Pelican Theme | testimonials.md | - | What People Say About Elegant | - | +| Extra Customization | change-labels.md | - | Change Labels | - | +| Extra Customization | custom-404.md | Rewritten | Add A Custom 404 Error Page to Your Site | - | +| Extra Customization | custom-style.md | - | Customize Style | - | +| Extra Customization | customize-elegant.md | old? | How to Customize Elegant | - | +| Extra Customization | meta-data.md | - | Metadata | - | +| Extra Customization | reading-time.md | Rewritten, Pending, [302](https://github.com/Pelican-Elegant/elegant/issues/302) | Add A Reading Time Estimate to Your Articles | - | +| Footer | add-license.md | - | Add License to your Site | - | +| Footer | hosted-on.md | - | Show Your Host Information | - | +| Footer | site-subtitle.md | - | Add Site Subtitle | - | +| Landing Page | about-me.md | - | Write About Me | - | +| Landing Page | landing-page.md | - | Unique Home Page Features | really a jump page for category | +| Landing Page | projects-list.md | - | Projects List | - | +| Landing Page | recent-articles.md | - | Recent Articles List | - | +| Landing Page | welcome.md | - | Write Welcome Message | - | +| Mailing List | freelists.md | - | Add FreeLists | - | +| Mailing List | mailchimp.md | - | Add Mailchimp | - | +| Monetization | amazon-one-link.md | - | Amazon OneLink Support | - | +| Monetization | bestazon.md | - | BestAzon Support | - | +| Search | tipue-search.md | Rewritten, [392](https://github.com/Pelican-Elegant/elegant/issues/392) | Add Search to Your Site | - | +| SEO and SMO | claim-site.md | - | Claim website on Google and Bing | - | +| SEO and SMO | rss-feeds.md | - | How to show RSS feeds icon | - | +| SEO and SMO | seo-social-media-tags.md | - | Search Engine and Social Media Optimization | - | +| SEO and SMO | social-profiles-sidebar.md | - | How to display your Social Media Profiles | - | +| Supported Plugins | assets-plugin.md | New | How To Improve the Download Time For Your Pages | - | +| Supported Plugins | multi-part-plugin.md | New [308](https://github.com/Pelican-Elegant/elegant/issues/308) | Add a Series Indicator to Your Multipart Articles | - | +| Supported Plugins | photogallery.md | - | Photo gallery plugin | - | +| Supported Plugins | previous-and-next-article.md | New | Add Previous and Next Article Links to Your Articles | - | +| Supported Plugins | share-post-plugin.md | New | Add Social Sharing Links to Your Articles | - | +| Taxonomy | article-count.md | - | Articles Count With Every Tag & Category | Reassign to Look and Feel | +| Taxonomy | filter-tags.md | - | Live Filter for Tags | Reassign to Look and Feel | +| Taxonomy | zero-clutter-category.md | - | Zero Clutter Categories | Reassign to Look and Feel | +| Unknown | | Jack, Pri-1, [363](https://github.com/Pelican-Elegant/elegant/issues/363) | - | - | +| Unknown | | Ongoing discussion, [314](https://github.com/Pelican-Elegant/elegant/issues/314) | - | +| Unknown | | Not Assigned, [311](https://github.com/Pelican-Elegant/elegant/issues/311) | - | diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index 44ab2994..c1189362 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -1,41 +1,114 @@ -Title: Avoid Unnecessary HTTP Requests +Title: How To Improve the Download Time For Your Pages Tags: pelican-theme, pelican-plugin, page-speed Category: Supported Plugins Date: 2014-03-24 14:09 Slug: avoid-unnecessary-http-requests Comment_id: hk9m5eq-avoid-unnecessary-http-requests Subtitle: -Summary: Use Pelican assets plugin to improve your website load speed +Summary: Pelican can be configured to compile multiple assets for your website into one single asset. When these assets are combined together, they are reduce to only their necessary components, and can be fetch by the webpage in a single call. Keywords: +Authors: Talha Mansoor, Jack De Winter -Visitor's browser will make separate HTTP requests to fetch `elegent.css`, -`custom.css`, `pygments.css`, `admonition.css` and `tipuesearch.css`. These separate requests can -be avoided using [Pelican plugin -`assets`](https://github.com/getpelican/pelican-plugins/tree/master/assets). +When a webpage is created, webpage authors and static page generators will often grab +low-level asset files from a trusted location. Between Pelican and Elegant, these files will +often number between 8 and 15 CSS or JavaScript files[^css-javascript]. While these files are +essential to the proper look and feel of a properly designed website, the overhead of this +content being in separate files is that one request is made from the browser to the webserver +for each file. -Install the required packages +[^css-javascript]: If you would like to learn more about these, [W3Schools](https://www.w3schools.com/) have some great introductions to these files and their affects. The important part about these files is that they change how the browser displays and reacts to a given webpage. These files are use on 99.9% of the websites in existence due to their versatility. - :::bash - pip install webassets cssmin +Pelican provides a plugin that takes the various CSS and JavaScript files and compiles each +group of them into a single file. Not only does this process reduce the number of calls to +retrieve files from the webserver, but it minifies[^minifies] or reduces the overall size of +those files as well. -Then enable `assets` plugin in your configuration. +[^]: [Wikipedia]() has a good article on minification. The summary is that anything unnecessary over a series of files is removed and concatenated together to produce a single file that is the minimum size possible while not losing any understandability. - :::python - PLUGINS = ['assets'] +## Configuration -This minor fix will improve the load speed of your website. All style -sheets will be merged and minified into one style sheet, `style.min.css`. +To enable Asset Management for your website, add `assets` to `PLUGINS` in your Pelican +configuration. -Compact CSS will save many bytes of data which in turn will improve page speed -and parse time. +```python +PLUGINS = ['assets'] +``` -# Hacking Elegant Source Code +Note that these values must be added to any existing values present for the `PLUGINS` +configuration variables. -If you add a new CSS file to the theme while developing the Elegant theme, you -will need to add it to the list of files that are automatically minified. +!!! note +The [assets plugin](https://github.com/getpelican/pelican-plugins/blob/master/assets/Readme.rst) requires the Python `webassets` and `cssmin` packages to be installed. -Find the file `templates/_includes/minify_css.html`. You will need to add your -new CSS file to Line 1, _before_ `css/custom.css`. +## Debugging Notes -We recommend you add custom CSS to `custom.css` for personal use. If you add to -`custom.css` you will not need to modify the `minify_css.html` file. +Note that you will not see the full power of the Assets Management plugin if you are working in +debug mode, that is building the website while using `--debug` on the Pelican command line. +In debug mode, some of the files may be minified into the `style.min.css` file, but the +original files will be included in the HTML page they are referenced from. + +This will look something like the following: + +```html + + + + + +``` + +When the `--debug` command line option is removed, the lines described above will be +replaced with a line like: + +```html + +``` + +## Improving Elegant + +If you are developing a new feature (for the theme or for your own website), you may need to +add a new CSS file to make sure that it renders properly on the webpage. Elegant ships with +the ability support minification of CSS files through the `minify_css.html` file. This file +is located in the `templates/_includes` directory of the theme and has the following +contents: + +```text +{% assets filters="cssmin", output="css/style.min.css", "css/pygments.css", "tipuesearch/tipuesearch.css","css/elegant.css", "css/admonition.css", "css/custom.css" %} + +{% endassets %} +``` + +To ensure that your new CSS file is minified, we advise you to follow one of these two +suggestions. + +If you are planning to add a new feature to your own website, consider placing the changes in +the Elegant theme's `custom.css` file. This file is also located in the `templates/_includes` +directory, and is blank in a standard Elegant theme. As the `custom.css` file is already in +the list of files to minify, no addition modifications are required. If you are not sure +whether or not the feature will be submitted as part of Elegant, this is a good place to +start at. + +If you are planning to add a new feature to Elegant and share it with others, you will be asked +to place any CSS changes for your feature in a new CSS file. This new file should be saved in +the theme's `templates/_includes` directory with the other CSS files. To ensure that the new +file is minified, a reference to it must be added to the first line of the `minify_css.html` +file, after the `css/admonition.css` file reference and before the `css/custom.css` file +reference. From d6388f001b5bfc50a33cb67b3ee2e5528543cba1 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Mon, 22 Jul 2019 19:02:24 -0700 Subject: [PATCH 07/59] docs(change): correct sentence grammar --- .pre-commit-config.yaml | 2 +- .../Supported Plugins/assets-plugin.md | 4 +-- .../Supported Plugins/multi-part-plugin.md | 24 +++++++-------- .../previous-and-next-article.md | 12 ++++---- .../content/Supported Plugins/reading-time.md | 8 ++--- .../Supported Plugins/share-post-plugin.md | 30 +++++++++---------- 6 files changed, 40 insertions(+), 40 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6c3499bf..adfcae07 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: - id: check-added-large-files - id: check-ast - id: check-case-conflict -# - id: check-executables-have-shebangs + - id: check-executables-have-shebangs - id: check-json - id: check-merge-conflict - id: check-symlinks diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index c1189362..a724620d 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -27,8 +27,8 @@ those files as well. ## Configuration -To enable Asset Management for your website, add `assets` to `PLUGINS` in your Pelican -configuration. +To enable Asset Management for your website, add `assets` to the `PLUGINS` configuration +variable in your Pelican configuration. ```python PLUGINS = ['assets'] diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index f97567aa..eff3f5ba 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -5,20 +5,20 @@ Date: 2014-04-20 18:18 Slug: how-to-use-multi-part-plugin Comment_id: 3ws2xke-how-to-use-multi-part-plugin Subtitle: -Summary: Elegant can be configured to provide a series section on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. +Summary: Elegant can be configured to provide a series section on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. Keywords: Authors: Talha Mansoor, Jack De Winter When writing articles about certain topics, it is advantageous to split a single article into -multiple articles. Without splitting the article up, the author would be forced to cram all +multiple articles. Without splitting the article up, the author would be forced to cram all of the content into a denser and much longer article, reducing its effectiveness and readability in the process. Splitting the article allows the author to focus on a specific concept of the larger article, thereby increasing the overall appearance and readability. Elegant provides the ability to present a view of the articles in the series in the middle of -the right sidebar. This section starts with the name of the series, followed by one bullet -point for each of the articles in the series. The text for the article is prefaced with -"Part N: " (where N is the index of the article) and then the title for the article. To make +the right sidebar. This section starts with the name of the series, followed by one bullet +point for each of the articles in the series. The text for the article is prefaced with +"Part N: " (where N is the index of the article) and then the title for the article. To make navigation easier, the current article is presented in italics, with the other articles being presented as links to their respective articles. @@ -28,8 +28,8 @@ Here is an example of what the Series section may look like: ## Configuration -To enable the reading time for your articles, you need to add `series` to `PLUGINS` in -your Pelican configuration. +To enable the reading time for your articles, you need to add `series` to the `PLUGINS` +configuration variable in your Pelican configuration. ```python PLUGINS = ['series'] @@ -54,11 +54,11 @@ Once the configuration for Series is enabled in the configuration file, using th a given set of articles requires that the article contains the `Series` [metadata]({filename}../Extra Customization/meta-data.md) field value. -The text assigned to the `Series` metadata field is the title of the series. When the page is +The text assigned to the `Series` metadata field is the title of the series. When the page is created, Pelican provides Elegant with a list of all pages that have the same value for the -`Series` metadata field. By default, Elegant sorts that list according to the publish date for -each article. The titles for those pages is then displayed in sorted order, with the current -page presented in *italics* and the other pages presented as a link to those pages. +`Series` metadata field. By default, Elegant sorts that list according to the publish date for +each article. The titles for those pages is then displayed in sorted order, with the current +page presented in _italics_ and the other pages presented as a link to those pages. ```Markdown Series: Maximizing Elegant @@ -66,5 +66,5 @@ series_index: 2 ``` If there is a reason to override the ordering of the articles, the `series_index` metadata -field is required. It is recommended that you use the part number you want displayed for the +field is required. It is recommended that you use the part number you want displayed for the article as the value to assign to the field. diff --git a/documentation/content/Supported Plugins/previous-and-next-article.md b/documentation/content/Supported Plugins/previous-and-next-article.md index 81f9b460..5ae3f309 100644 --- a/documentation/content/Supported Plugins/previous-and-next-article.md +++ b/documentation/content/Supported Plugins/previous-and-next-article.md @@ -5,7 +5,7 @@ Date: 2014-01-27 00:02 Slug: how-to-show-previous-and-next-article Comment_id: p9ot4uz-how-to-show-previous-and-next-article Subtitle: -Summary: Elegant can be configured to provide a Previous and Next article link at the bottom of your articles. This allows for easier navigation through the site if you are looking at articles in published date order. +Summary: Elegant can be configured to provide a Previous and Next article link at the bottom of your articles. This allows for easier navigation through the site if you are looking at articles in published date order. Keywords: Authors: Talha Mansoor, Jack De Winter @@ -13,17 +13,17 @@ When reading a series of articles on a website, a reader often desires to view t the order in which they were published. Elegant provides the ability to provide navigation links to the previous and next articles at -the bottom of each article. These links provide a powerful way to keep visitors engaged +the bottom of each article. These links provide a powerful way to keep visitors engaged and guide them through your site. -Here is an example of what the Previous and Next articles links may look like: +Here is an example of what the Previous and Next Articles section may look like: ![Show next and previous articles]({filename}/images/elegant-theme_previous-next-article.png) ## Configuration -To enable the Previous and Next Article links for your articles, add `neighbors` to `PLUGINS` -in your Pelican configuration. +To enable the Previous and Next Article links for your articles, add `neighbors` to the +`PLUGINS` configuration variable in your Pelican configuration. ```python PLUGINS = ['neighbors'] @@ -35,5 +35,5 @@ configuration variables. When enabled, Elegant will show the links for Previous and Next articles at the very bottom of every article, after any footnotes for the article, but before the footer for the website. The link for the next oldest or Previous article is displayed on the left side and the next -youngest or Next article on the right side. If there is no article that is newer or older than +youngest or Next article on the right side. If there is no article that is newer or older than the current article, the respective link will not be shown. diff --git a/documentation/content/Supported Plugins/reading-time.md b/documentation/content/Supported Plugins/reading-time.md index 05c2c6c7..2c520181 100644 --- a/documentation/content/Supported Plugins/reading-time.md +++ b/documentation/content/Supported Plugins/reading-time.md @@ -16,14 +16,14 @@ while retaining comprehension. Elegant provides this feature, adding a `Reading Time` section at the top of the right sidebar with the estimate for the current article. -Here is an example of what the Reading Time estimate may look like: +Here is an example of what the Reading Time Estimate section may look like: ![Reading Time Section]({static}/images/elegant-theme_reading-time.png) ## Configuration -To enable the reading time for your articles, you need to add `post_stats` to `PLUGINS` in -your Pelican configuration. +To enable the reading time for your articles, you need to add `post_stats` to the `PLUGINS` +configuration variable in your Pelican configuration. ```python PLUGINS = ['post_stats'] @@ -33,7 +33,7 @@ Note that these values must be added to any existing values present for the `PLU configuration variables. !!! note - The [post_stats plugin](https://github.com/getpelican/pelican-plugins/blob/master/post_stats/readme.rst) requires the Python `beautifulsoup4` package to be installed. +The [post_stats plugin](https://github.com/getpelican/pelican-plugins/blob/master/post_stats/readme.rst) requires the Python `beautifulsoup4` package to be installed. In addition, the `READING_TIME_LOWER_LIMIT` configuration variable can be set to specify a lower limit for this feature. If not supplied, the default value for this variable is 4 min. diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index 1c74bbaf..cc9b5614 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -5,29 +5,29 @@ Date: 2014-03-24 20:14 Slug: how-to-use-social-sharing-plugin Comment_id: x4jitcv-how-to-use-social-sharing-plugin Subtitle: -Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links are provide with a simple way to share on various Social Media platforms while endeavoring to not track users in the process. +Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links are provide with a simple way to share on various Social Media platforms while endeavoring to not track users in the process. Keywords: social networks, share posts, Authors: Talha Mansoor, Jack De Winter No blog is complete without buttons or links that invites a reader to share your articles -with the friend and colleagues on various social media sites. The problem with these buttons +with the friend and colleagues on various social media sites. The problem with these buttons on many sites is that the buttons are used by big companies to track your web usage, sharing -that information with various companies. (For a more in-depth talk on this subject, please +that information with various companies. (For a more in-depth talk on this subject, please read the [Online Trackers and Links](#Online-Trackers-and-Links) section at the end of this page.) Elegant provides a simple solution to this, using the `Share Post` plugin from pelican to -provide simple and plain old-school URLs to provide the social media links. These have the +provide simple and plain old-school URLs to provide the social media links. These have the benefit of not having any ability to be used for online tracking. -Here is an example of what the Series section may look like: +Here is an example of what the Social Media Sharing section may look like: ![Share Post plugin in Elegant]({filename}/images/elegant-theme-share-post-plugin.png) ## Configuration -To enable the Social Media Sharing links for your articles, add `share_post` to `PLUGINS` -in your Pelican configuration. +To enable the Social Media Sharing links for your articles, add `share_post` to the `PLUGINS` +configuration variable in your Pelican configuration. ```python PLUGINS = ['share_post'] @@ -37,9 +37,9 @@ Note that these values must be added to any existing values present for the `PLU configuration variables. !!! note - The [share_post plugin](https://github.com/getpelican/pelican-plugins/blob/master/share_post/README.md) requires the Python `beautifulsoup4` package to be installed. +The [share_post plugin](https://github.com/getpelican/pelican-plugins/blob/master/share_post/README.md) requires the Python `beautifulsoup4` package to be installed. -The default text used to lead into the Social Media Sharing links is "Share On:". This can +The default text used to lead into the Social Media Sharing links is "Share On:". This can be overridden by defining the `SHARE_POST_INTRO` configuration variable with the text you want to replace it. @@ -56,7 +56,7 @@ completed. The only effect any [metadata]({filename}../Extra Customization/meta-data.md) field will have on Sharing Media links is to change the test to lead into the Social Media Sharing links. As documented above, there is a default that can be overridden using the `SHARE_POST_INTRO` -configuration variable. This can be further overridden for a specific article by providing +configuration variable. This can be further overridden for a specific article by providing the `share_post_intro` metadata field value for an article. ```yaml @@ -74,7 +74,7 @@ since as [early as 2009](https://www.eff.org/deeplinks/2009/09/online-trackers-and-social-networks). Developers have responded to these concerned by coming up with -[different ways](http://fixtracking.com/) to cope with this issue. The solutions range from +[different ways](http://fixtracking.com/) to cope with this issue. The solutions range from custom [browser plugins](https://disconnect.me/) to completely totally [reinventing share widgets](http://panzi.github.io/SocialSharePrivacy/) for a given browser. However, it is unreasonable to expect that each of your visitors uses a privacy plugin. @@ -82,11 +82,11 @@ Depending on your setup, your computer's browser or mobile phone's browser may n users install any kind of plugin. Reinventing a social widget that respects the user's concerns will certainly requiring the more -educated readers about it. For other readers, the "new" or "changed" social widget will seem -alien to them, and will make them hesitant to use it. In turn, that will almost definitely +educated readers about it. For other readers, the "new" or "changed" social widget will seem +alien to them, and will make them hesitant to use it. In turn, that will almost definitely result in a decrease in the number of shares of your articles on social networks. -Pelican (and therefore Elegant) uses a simple approach to work around this issue. By using +Pelican (and therefore Elegant) uses a simple approach to work around this issue. By using plain URLs to provide it's ability to share with social media sites, the entire widget issue -is avoided. The only cost that seems to be present is that some social media sites **require** +is avoided. The only cost that seems to be present is that some social media sites **require** some form of widget. From a92158565e0ecf933ce9f1c5664b37810b8d82d4 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Mon, 22 Jul 2019 19:15:12 -0700 Subject: [PATCH 08/59] docs(change): cleaning up pre-commit changes --- .pre-commit-config.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index adfcae07..ca09066b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,6 @@ repos: - id: prettier files: \.(css|js|md|markdown|json) exclude: ^static/(tipuesearch|magnific) - log_file: prettier.out - repo: https://github.com/python/black rev: master hooks: From 4c9e1b771c86281814f4edbe1ef56ef82785071f Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Mon, 22 Jul 2019 19:37:39 -0700 Subject: [PATCH 09/59] docs(change): cleaning up yaspeller issues --- .yaspeller.json | 2 ++ documentation/content/Supported Plugins/assets-plugin.md | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.yaspeller.json b/.yaspeller.json index 6d9ad479..ee42d0f2 100644 --- a/.yaspeller.json +++ b/.yaspeller.json @@ -136,6 +136,7 @@ "metatag", "metatags", "Miguel", + "minification", "Mohamed", "Mohanan", "monetization", @@ -210,6 +211,7 @@ "tshepang", "tshepang_dev", "uncollapsed", + "understandability", "unhide", "unordered", "validator", diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index a724620d..d16e90ce 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -13,14 +13,14 @@ When a webpage is created, webpage authors and static page generators will often low-level asset files from a trusted location. Between Pelican and Elegant, these files will often number between 8 and 15 CSS or JavaScript files[^css-javascript]. While these files are essential to the proper look and feel of a properly designed website, the overhead of this -content being in separate files is that one request is made from the browser to the webserver +content being in separate files is that one request is made from the browser to the server for each file. [^css-javascript]: If you would like to learn more about these, [W3Schools](https://www.w3schools.com/) have some great introductions to these files and their affects. The important part about these files is that they change how the browser displays and reacts to a given webpage. These files are use on 99.9% of the websites in existence due to their versatility. Pelican provides a plugin that takes the various CSS and JavaScript files and compiles each group of them into a single file. Not only does this process reduce the number of calls to -retrieve files from the webserver, but it minifies[^minifies] or reduces the overall size of +retrieve files from the server, but it minifies[^minifies] or reduces the overall size of those files as well. [^]: [Wikipedia]() has a good article on minification. The summary is that anything unnecessary over a series of files is removed and concatenated together to produce a single file that is the minimum size possible while not losing any understandability. From 2dfdadac46d32c64d00057ae46519928fd18d3c9 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Mon, 22 Jul 2019 19:43:43 -0700 Subject: [PATCH 10/59] docs(change): cleaning up yaspeller issues --- documentation/content/Supported Plugins/assets-plugin.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index d16e90ce..43385351 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -11,12 +11,12 @@ Authors: Talha Mansoor, Jack De Winter When a webpage is created, webpage authors and static page generators will often grab low-level asset files from a trusted location. Between Pelican and Elegant, these files will -often number between 8 and 15 CSS or JavaScript files[^css-javascript]. While these files are +often number between 8 and 15 CSS or JavaScript files[^css-java-script]. While these files are essential to the proper look and feel of a properly designed website, the overhead of this content being in separate files is that one request is made from the browser to the server for each file. -[^css-javascript]: If you would like to learn more about these, [W3Schools](https://www.w3schools.com/) have some great introductions to these files and their affects. The important part about these files is that they change how the browser displays and reacts to a given webpage. These files are use on 99.9% of the websites in existence due to their versatility. +[^css-java-script]: If you would like to learn more about these, [W3Schools](https://www.w3schools.com/) have some great introductions to these files and their affects. The important part about these files is that they change how the browser displays and reacts to a given webpage. These files are use on 99.9% of the websites in existence due to their versatility. Pelican provides a plugin that takes the various CSS and JavaScript files and compiles each group of them into a single file. Not only does this process reduce the number of calls to From 0fdebfdccbd3df780effb9cb986d4b82ef51a52e Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Tue, 23 Jul 2019 20:21:46 -0700 Subject: [PATCH 11/59] docs(change): addressing issues raised in https://github.com/Pelican-Elegant/elegant/pull/462 --- .../Appearance and Style/why-look-and-feel.md | 19 +++++++++-------- .../Supported Plugins/assets-plugin.md | 17 +++++---------- .../Supported Plugins/author-blurbs.md | 2 +- .../Supported Plugins/multi-part-plugin.md | 16 +++++--------- .../previous-and-next-article.md | 16 +++++++------- .../content/Supported Plugins/reading-time.md | 3 --- .../Supported Plugins/share-post-plugin.md | 21 ++++++++----------- 7 files changed, 37 insertions(+), 57 deletions(-) diff --git a/documentation/content/Appearance and Style/why-look-and-feel.md b/documentation/content/Appearance and Style/why-look-and-feel.md index 530b7505..8667eb18 100644 --- a/documentation/content/Appearance and Style/why-look-and-feel.md +++ b/documentation/content/Appearance and Style/why-look-and-feel.md @@ -41,16 +41,17 @@ a slightly darker font color is used. Instead of using bold colors for the text background of the admonitions and code blocks, lighter colors are used for both. Elegant also reduces the distractions by relocating the extra information contained in an -article's [Table of Contents]({filename}./table-of-contents.md) +article's [Table of Contents]({static}./table-of-contents.md) to the left sidebar and displaying it in a smaller font. This allows the table to retain it's usefulness to the reader while not intruding on the article. In a similar fashion, the right sidebar is used to relate any other extra information about the article to the user. Elements that regularly appear in the right sidebar include: -Category, -Last Updated time, -"Monthly Updates" opt-in, -Published time, -[Reading Time]({filename}../Supported Plugins/reading-time.md), and -[Series section]({filename}../Supported Plugins/multi-part-plugin.md) -"Stay in Touch" icons, -Tags. + +- Category +- Last Updated time +- "Monthly Updates" opt-in +- Published time +- [Reading Time]({static}../Supported Plugins/reading-time.md) +- [Series section]({static}../Supported Plugins/multi-part-plugin.md) +- ["Stay in Touch" icons]({static}../SEO and SMO/social-profiles-sidebar.md) +- Tags diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index 43385351..eb5b7882 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -5,26 +5,22 @@ Date: 2014-03-24 14:09 Slug: avoid-unnecessary-http-requests Comment_id: hk9m5eq-avoid-unnecessary-http-requests Subtitle: -Summary: Pelican can be configured to compile multiple assets for your website into one single asset. When these assets are combined together, they are reduce to only their necessary components, and can be fetch by the webpage in a single call. +Summary: Pelican can be configured to compile multiple assets for your website into one single asset. When these assets are combined together, they are reduce to only their necessary components, and can be fetched by the browser in a single call. Keywords: Authors: Talha Mansoor, Jack De Winter When a webpage is created, webpage authors and static page generators will often grab low-level asset files from a trusted location. Between Pelican and Elegant, these files will -often number between 8 and 15 CSS or JavaScript files[^css-java-script]. While these files are +often number between 8 and 15 CSS or JavaScript files. While these files are essential to the proper look and feel of a properly designed website, the overhead of this -content being in separate files is that one request is made from the browser to the server -for each file. - -[^css-java-script]: If you would like to learn more about these, [W3Schools](https://www.w3schools.com/) have some great introductions to these files and their affects. The important part about these files is that they change how the browser displays and reacts to a given webpage. These files are use on 99.9% of the websites in existence due to their versatility. +content being in separate files is that separate requests are made for each of them to the +server. Pelican provides a plugin that takes the various CSS and JavaScript files and compiles each group of them into a single file. Not only does this process reduce the number of calls to -retrieve files from the server, but it minifies[^minifies] or reduces the overall size of +retrieve files from the server, but it minifies or reduces the overall size of those files as well. -[^]: [Wikipedia]() has a good article on minification. The summary is that anything unnecessary over a series of files is removed and concatenated together to produce a single file that is the minimum size possible while not losing any understandability. - ## Configuration To enable Asset Management for your website, add `assets` to the `PLUGINS` configuration @@ -34,9 +30,6 @@ variable in your Pelican configuration. PLUGINS = ['assets'] ``` -Note that these values must be added to any existing values present for the `PLUGINS` -configuration variables. - !!! note The [assets plugin](https://github.com/getpelican/pelican-plugins/blob/master/assets/Readme.rst) requires the Python `webassets` and `cssmin` packages to be installed. diff --git a/documentation/content/Supported Plugins/author-blurbs.md b/documentation/content/Supported Plugins/author-blurbs.md index 7393cdd1..886972f9 100644 --- a/documentation/content/Supported Plugins/author-blurbs.md +++ b/documentation/content/Supported Plugins/author-blurbs.md @@ -72,7 +72,7 @@ above example, Talha's `avatar` URL is local, while Pablo's URL is remote. While the configuration for Author Blurbs is centralized in the configuration file, enabling this feature for a given article requires that the article contains either the `author` or -`authors` [metadata]({filename}../Extra Customization/meta-data.md) field values. If neither +`authors` [metadata]({static}../Extra Customization/meta-data.md) field values. If neither of these values are provided, the `AUTHOR` configuration variable will be used as a default. ```Python diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index eff3f5ba..bd2392d2 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -1,5 +1,5 @@ -Title: Add a Series Indicator to Your Multipart Articles -Tags: pelican-theme, pelican-plugin, navigation, web-design +Title: Displaying a Series Information for Your Multipart Articles +Tags: pelican-plugin, navigation, web-design Category: Supported Plugins Date: 2014-04-20 18:18 Slug: how-to-use-multi-part-plugin @@ -24,7 +24,7 @@ presented as links to their respective articles. Here is an example of what the Series section may look like: -![series example in the sidebar]({filename}/images/elegant-theme_multi-part-sidebar.png) +![series example in the sidebar]({static}/images/elegant-theme_multi-part-sidebar.png) ## Configuration @@ -35,9 +35,6 @@ configuration variable in your Pelican configuration. PLUGINS = ['series'] ``` -Note that these values must be added to any existing values present for the `PLUGINS` -configuration variables. - In addition, the `SERIES_TITLE` configuration variable can be set to specify the title used for the Series section, regardless of the series. @@ -45,14 +42,11 @@ the Series section, regardless of the series. SERIES_TITLE = "More In This Series" ``` -Note that this configuration variable will only change the name of the series for display as -the title of the Series section, and will not affect any aspect of the grouping of articles. - ## Article Metadata Once the configuration for Series is enabled in the configuration file, using this feature for a given set of articles requires that the article contains the `Series` -[metadata]({filename}../Extra Customization/meta-data.md) field value. +[metadata]({static}../Extra Customization/meta-data.md) field value. The text assigned to the `Series` metadata field is the title of the series. When the page is created, Pelican provides Elegant with a list of all pages that have the same value for the @@ -61,7 +55,7 @@ each article. The titles for those pages is then displayed in sorted order, with page presented in _italics_ and the other pages presented as a link to those pages. ```Markdown -Series: Maximizing Elegant +series: Maximizing Elegant series_index: 2 ``` diff --git a/documentation/content/Supported Plugins/previous-and-next-article.md b/documentation/content/Supported Plugins/previous-and-next-article.md index 5ae3f309..b2877093 100644 --- a/documentation/content/Supported Plugins/previous-and-next-article.md +++ b/documentation/content/Supported Plugins/previous-and-next-article.md @@ -1,5 +1,5 @@ -Title: Add Previous and Next Article Links to Your Articles -Tags: pelican-theme, pelican-plugin, navigation, web-design +Title: Add Previous and Next Article Links +Tags: pelican-plugin, navigation, web-design Category: Supported Plugins Date: 2014-01-27 00:02 Slug: how-to-show-previous-and-next-article @@ -10,7 +10,7 @@ Keywords: Authors: Talha Mansoor, Jack De Winter When reading a series of articles on a website, a reader often desires to view the articles in -the order in which they were published. +chronological order by publish date. Elegant provides the ability to provide navigation links to the previous and next articles at the bottom of each article. These links provide a powerful way to keep visitors engaged @@ -18,7 +18,7 @@ and guide them through your site. Here is an example of what the Previous and Next Articles section may look like: -![Show next and previous articles]({filename}/images/elegant-theme_previous-next-article.png) +![Show next and previous articles]({static}/images/elegant-theme_previous-next-article.png) ## Configuration @@ -29,11 +29,9 @@ To enable the Previous and Next Article links for your articles, add `neighbors` PLUGINS = ['neighbors'] ``` -Note that these values must be added to any existing values present for the `PLUGINS` -configuration variables. - When enabled, Elegant will show the links for Previous and Next articles at the very bottom of every article, after any footnotes for the article, but before the footer for the website. The link for the next oldest or Previous article is displayed on the left side and the next -youngest or Next article on the right side. If there is no article that is newer or older than -the current article, the respective link will not be shown. +youngest or Next article on the right side, being consistent with most languages being +Left-to-Right language. If there is no article that is newer or older than the current article, +the respective link will not be shown. diff --git a/documentation/content/Supported Plugins/reading-time.md b/documentation/content/Supported Plugins/reading-time.md index 2c520181..bdf5ca31 100644 --- a/documentation/content/Supported Plugins/reading-time.md +++ b/documentation/content/Supported Plugins/reading-time.md @@ -29,9 +29,6 @@ configuration variable in your Pelican configuration. PLUGINS = ['post_stats'] ``` -Note that these values must be added to any existing values present for the `PLUGINS` -configuration variables. - !!! note The [post_stats plugin](https://github.com/getpelican/pelican-plugins/blob/master/post_stats/readme.rst) requires the Python `beautifulsoup4` package to be installed. diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index cc9b5614..9f7c3ad0 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -1,11 +1,11 @@ -Title: Add Social Sharing Links to Your Articles +Title: Add Social Sharing Links Tags: pelican-theme, pelican-plugin, social-media Category: Supported Plugins Date: 2014-03-24 20:14 Slug: how-to-use-social-sharing-plugin Comment_id: x4jitcv-how-to-use-social-sharing-plugin Subtitle: -Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links are provide with a simple way to share on various Social Media platforms while endeavoring to not track users in the process. +Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links provide a simple way to share on various Social Media platforms while endeavoring to not track users in the process. Keywords: social networks, share posts, Authors: Talha Mansoor, Jack De Winter @@ -33,9 +33,6 @@ configuration variable in your Pelican configuration. PLUGINS = ['share_post'] ``` -Note that these values must be added to any existing values present for the `PLUGINS` -configuration variables. - !!! note The [share_post plugin](https://github.com/getpelican/pelican-plugins/blob/master/share_post/README.md) requires the Python `beautifulsoup4` package to be installed. @@ -53,11 +50,12 @@ Once the configuration for Sharing Media Links is enabled in the configuration f this feature to provide links for your readers to share your articles on social media is completed. -The only effect any [metadata]({filename}../Extra Customization/meta-data.md) field will have -on Sharing Media links is to change the test to lead into the Social Media Sharing links. -As documented above, there is a default that can be overridden using the `SHARE_POST_INTRO` -configuration variable. This can be further overridden for a specific article by providing -the `share_post_intro` metadata field value for an article. +The only effect any [metadata]({static}../Extra Customization/meta-data.md) field will have +on Sharing Media links is to change the text to lead into the Social Media Sharing links. +As documented above, the `SHARE_POST_INTRO` can be used to provide an alternate lead in text +for the Social Media Sharing links. This text can be further overridden on an +article-by-article basis by specifying the `share_post_intro` metadata field value for an +article as follows: ```yaml share_post_intro: Share this article on Elegant with @@ -88,5 +86,4 @@ result in a decrease in the number of shares of your articles on social networks Pelican (and therefore Elegant) uses a simple approach to work around this issue. By using plain URLs to provide it's ability to share with social media sites, the entire widget issue -is avoided. The only cost that seems to be present is that some social media sites **require** -some form of widget. +is avoided. From 67f4cc4ecc75213bcaa4d41091a942500f5c8838 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Wed, 24 Jul 2019 17:57:16 -0700 Subject: [PATCH 12/59] doc(changes): fixing validation errors --- .../content/Appearance and Style/why-look-and-feel.md | 8 ++++---- documentation/content/Development/documentation-status.md | 1 + documentation/content/Supported Plugins/author-blurbs.md | 2 +- .../content/Supported Plugins/multi-part-plugin.md | 2 +- .../content/Supported Plugins/share-post-plugin.md | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/documentation/content/Appearance and Style/why-look-and-feel.md b/documentation/content/Appearance and Style/why-look-and-feel.md index 8667eb18..0c75a1cb 100644 --- a/documentation/content/Appearance and Style/why-look-and-feel.md +++ b/documentation/content/Appearance and Style/why-look-and-feel.md @@ -41,7 +41,7 @@ a slightly darker font color is used. Instead of using bold colors for the text background of the admonitions and code blocks, lighter colors are used for both. Elegant also reduces the distractions by relocating the extra information contained in an -article's [Table of Contents]({static}./table-of-contents.md) +article's [Table of Contents]({filename}./table-of-contents.md) to the left sidebar and displaying it in a smaller font. This allows the table to retain it's usefulness to the reader while not intruding on the article. In a similar fashion, the right sidebar is used to relate any other extra information about the article to the user. Elements @@ -51,7 +51,7 @@ that regularly appear in the right sidebar include: - Last Updated time - "Monthly Updates" opt-in - Published time -- [Reading Time]({static}../Supported Plugins/reading-time.md) -- [Series section]({static}../Supported Plugins/multi-part-plugin.md) -- ["Stay in Touch" icons]({static}../SEO and SMO/social-profiles-sidebar.md) +- [Reading Time]({filename}../Supported Plugins/reading-time.md) +- [Series section]({filename}../Supported Plugins/multi-part-plugin.md) +- ["Stay in Touch" icons]({filename}../SEO and SMO/social-profiles-sidebar.md) - Tags diff --git a/documentation/content/Development/documentation-status.md b/documentation/content/Development/documentation-status.md index 739eff90..1c03fe5a 100644 --- a/documentation/content/Development/documentation-status.md +++ b/documentation/content/Development/documentation-status.md @@ -1,5 +1,6 @@ --- Title: Document Status +Date: 2019-07-01 10:49 Tags: Category: Development Subtitle: diff --git a/documentation/content/Supported Plugins/author-blurbs.md b/documentation/content/Supported Plugins/author-blurbs.md index 886972f9..7393cdd1 100644 --- a/documentation/content/Supported Plugins/author-blurbs.md +++ b/documentation/content/Supported Plugins/author-blurbs.md @@ -72,7 +72,7 @@ above example, Talha's `avatar` URL is local, while Pablo's URL is remote. While the configuration for Author Blurbs is centralized in the configuration file, enabling this feature for a given article requires that the article contains either the `author` or -`authors` [metadata]({static}../Extra Customization/meta-data.md) field values. If neither +`authors` [metadata]({filename}../Extra Customization/meta-data.md) field values. If neither of these values are provided, the `AUTHOR` configuration variable will be used as a default. ```Python diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index bd2392d2..876d32f6 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -46,7 +46,7 @@ SERIES_TITLE = "More In This Series" Once the configuration for Series is enabled in the configuration file, using this feature for a given set of articles requires that the article contains the `Series` -[metadata]({static}../Extra Customization/meta-data.md) field value. +[metadata]({filename}../Extra Customization/meta-data.md) field value. The text assigned to the `Series` metadata field is the title of the series. When the page is created, Pelican provides Elegant with a list of all pages that have the same value for the diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index 9f7c3ad0..89d90098 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -50,7 +50,7 @@ Once the configuration for Sharing Media Links is enabled in the configuration f this feature to provide links for your readers to share your articles on social media is completed. -The only effect any [metadata]({static}../Extra Customization/meta-data.md) field will have +The only effect any [metadata]({filename}../Extra Customization/meta-data.md) field will have on Sharing Media links is to change the text to lead into the Social Media Sharing links. As documented above, the `SHARE_POST_INTRO` can be used to provide an alternate lead in text for the Social Media Sharing links. This text can be further overridden on an From c1cc0c5ba66d6d28b305625c91652e1cca376292 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 28 Jul 2019 14:09:43 -0700 Subject: [PATCH 13/59] docs((changes)): updating photo plugin documentation Updating the photo plugin documentation. Broke it up into two articles. First one describes what you need to do to get a simple photo gallery up and running. Second one describes more advanced features. --- .../Supported Plugins/multi-part-plugin.md | 6 +- .../photo-gallery-advanced.md | 158 ++++++++++++++++++ .../content/Supported Plugins/photogallery.md | 136 +++++++++------ .../images/elegant-theme_photo-gallery.png | Bin 0 -> 388695 bytes 4 files changed, 248 insertions(+), 52 deletions(-) create mode 100644 documentation/content/Supported Plugins/photo-gallery-advanced.md create mode 100644 documentation/content/images/elegant-theme_photo-gallery.png diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index 876d32f6..7b8e3516 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -45,12 +45,12 @@ SERIES_TITLE = "More In This Series" ## Article Metadata Once the configuration for Series is enabled in the configuration file, using this feature for -a given set of articles requires that the article contains the `Series` +a given set of articles requires that the article contains the `series` [metadata]({filename}../Extra Customization/meta-data.md) field value. -The text assigned to the `Series` metadata field is the title of the series. When the page is +The text assigned to the `series` metadata field is the title of the series. When the page is created, Pelican provides Elegant with a list of all pages that have the same value for the -`Series` metadata field. By default, Elegant sorts that list according to the publish date for +`series` metadata field. By default, Elegant sorts that list according to the publish date for each article. The titles for those pages is then displayed in sorted order, with the current page presented in _italics_ and the other pages presented as a link to those pages. diff --git a/documentation/content/Supported Plugins/photo-gallery-advanced.md b/documentation/content/Supported Plugins/photo-gallery-advanced.md new file mode 100644 index 00000000..fdf6e9ba --- /dev/null +++ b/documentation/content/Supported Plugins/photo-gallery-advanced.md @@ -0,0 +1,158 @@ +Title: Advanced Configuration for an Image Gallery Article +Tags: pelican-theme, pelican-plugin, photo gallery +Category: Supported Plugins +Date: 2019-06-09 10:49 +Slug: how-to-use-photos-plugin-advanced +Subtitle: +Summary: Elegant can be configured to provide a simple display of a series of images, usually photos. Instead of asking the author to manually add a link for each photo, this feature provides basic gallery behavior at low cost to the author. +Keywords: photos, gallery, photogallery + +[TOC] + +## Introduction + +This article continues the documentation of the Photo Gallery configuration documented in the +article [Creating a Photo Gallery Article]({filename}./photogallery.md). + +While getting started with a default photo gallery is relatively easy (one configuration +variable and a metadata field per article), enabling some of the more advanced features +requires a little more effort. This effort will allow for the inclusion of single gallery +photos into articles and the fine tuning of the image transformations used to render the +photos for the photo galleries and articles. Together these changes will give you the power +to customize your photo gallery to your requirements. + +## Including Gallery Photos in Articles + +Prior to including single gallery photos in articles, the `PHOTO_LIBRARY` configuration +variable must first be set to the full path of the directory containing all of the galleries. +For example, in the previous article, +[Creating a Photo Gallery Article]({filename}./photogallery.md#article-metadata), +the gallery was added to the article as follows: + +```yaml +gallery: {filename}../gallery-source/dragondance +``` + +Assuming that you have installed a standard installation of Pelican in the directory +`/home/stuff/blog-content` and inferring from the above metadata that all photo galleries are +located in the `content/gallery-source` directory, the full path to the galleries should be as +follows: + +```Python +PHOTO_LIBRARY = '/home/stuff/blog-content/website/content/gallery-source' +``` + +### Adding a Single Photos to an Article + +Once the above configuration has been completed, add a photo into the body of an article using +the following format: `{photo}folder/image.jpg`. The `{photo}` part of the format calls out +this image as part of a gallery, and instructs the `Photos` plugin to resize a photo +specifically for use in articles. The `folder` part refers to the folder representing the +gallery, and the `image.jpg` is the filename of the photo within the `folder` directory. + +For example, say you want to highlight one of the photos, `photo-1.jpg`, that was contained +within the `dragondance` gallery presented in your article. To include it in a Markdown +article, add the following text to the article: + +```Markdown +![first image]({photo}dragondance/photo-1.jpg) +``` + +In addition, using the prefix `{lightbox}` instead of `{photo}` will cause the thumbnail of the +photo to be displayed in the article. Clicking on the thumbnail will bring up the full sized +image from the photo gallery, similar to how it was displayed in the photo gallery. + +## Modifying Image Display in Galleries + +There is a small amount of configuration that is available to modify how a single photo is +displayed in the galleries. These modifications include specifying captions for one or more +photos, specifying EXIF information for one or more photos, and specifying one or more photos +to not display as part of the gallery. + +All three of these modifications are controlled by text files that are located in the same +source directory as the photos. These text files provide extra information that is used when +the article containing the specified photo gallery is being generated. + +For the first two choices, there are two distinct files: `exif.txt` and `captions.txt`. In +both cases, the file format is simply the name of the image, a colon, and the information to +associate with the photo. + +For example, the information in the `exif.txt` may be: + +```text +best.jpg: Canon EOS 5D Mark II - 20mm f/8 1/250s ISO 100 +``` + +and the information in the `captions.txt` file may be: + +```text +best.jpg: My best photo ever! How lucky of me! +``` + +Elegant will display both of these pieces of information at the bottom of the popup for an +individual image. + +To remove keep the photo file in a gallery, but not show it as part of the gallery, the +`blacklist.txt` file is used. Even simpler than the previous two files, the file format is +simply the name of the photo to exclude, one photo to a line. + +For example, to keep the file `this-file-will-be-skipped.jpg` in the gallery directory but not +display it as part of the gallery, the `blacklist.txt` file would look like this: + +```text +this-file-will-be-skipped.jpg +``` + +## Caching Processed Images + +To reduce the need to reprocess images to fit into the gallery, article, and thumbnail sizes, +the `Photo` plugin only processes images if the output file is not already present in the +destination directory. As such, to apply any configuration changes to images that have already +been processed, their destination images need to deleted from the relevant directories under +the `photos` directory from the Pelican output. + +As both of the following sections change configuration variables that affect how the images +are processed, this note on caching applies to any changes of configuration variables +specified in the following sections. + +## Advanced Configuration Values + +The definitive list of the values and their defaults is located on the +[Photos Plugins](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md) +webpage. + +The definitive list has been pared down, tested, and documented with specific focus on the +Elegant theme. Testing was performed using the list from the Photos Plugin webpage along +with the source code for the Photos Plugin. Any significant difference between the behavior +documented below and the definitive list is usually attributed to differences between the +source code and the documentation for the Photos Plugin. + +As a decent part of this information is presented after testing and research, please feel free +to contact us if you see different behavior than is documented here. + +| Configuration Name | Default Value | Description | +| -------------------------------------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PHOTO_GALLERY` | `(1024, 768, 80)` | Three attributes, describing the maximum width, the maximum height, and the quality of the resized image. The specific set of attributes applies to the maximum size of the photo displayed when the reader clicks on a gallery's thumbnail | +| image in the article. Note that the quality of the resized image only applies to JPG images. | +| `PHOTO_ARTICLE` | `(760, 506, 80)` | The same attributes as `PHOTO_GALLERY`, but for the size of a photo from a gallery used in an article. | +| `PHOTO_THUMB` | `(192, 144, 60)` | The same attributes as `PHOTO_GALLERY`, but for the size of the thumbnails used to show the contents of the gallery. | +| `PHOTO_SQUARE_THUMB` | `False` | This setting controls whether or not the thumbnails retain their aspect ratio when resized. If this setting is `True`, the thumbnails will not retain their aspect ratio and will be cropped to fit into the rectangle defined by the `PHOTO_THUMB` configuration variable. | +| `PHOTO_RESIZE_JOBS` | `1` | Number of resize jobs to be run in parallel. If installed on a Windows machine, [read this](photo-gallery-advanced.md#boo). | +| `PHOTO_WATERMARK` | `True` | Add a watermark to all photos in articles and pages. The watermarks added are controlled by the `PHOTO_WATERMARK_TEXT` and `PHOTO_WATERMARK_IMG` configuration variables described below. Note that if both are specified, both will be used. | +| `PHOTO_WATERMARK_TEXT` | `SITENAME` | Text to use for the watermark. | +| `PHOTO_WATERMARK_TEXT_COLOR` | `(255, 255, 255)` | Color of the text used for the watermark. | +| `PHOTO_WATERMARK_IMG` | `''` | Full path to the image to use as a watermark. | +| `PHOTO_WATERMARK_IMG_SIZE` | `False` | Size to apply to the watermark image, expressed as `(width,height)`. | + +### JPG Specific EXIF Configuration Values + +!!! note +The [photos plugin](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md)requires the Python `piexif` package to provide control over any [EXIF](https://photographylife.com/what-is-exif-data) information in the images. + +| Configuration Name | Default Value | Description | +| ----------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PHOTO_EXIF_KEEP` | `False` | Keep the EXIF information from the input photo. | +| `PHOTO_EXIF_REMOVE_GPS` | `False` | Remove any EXIF GPS information from the photos. | +| `PHOTO_EXIF_AUTOROTATE` | `True` | Use the EXIF orientation field to determine how to rotate the photo so all photos are in a standard orientation. | +| `PHOTO_EXIF_COPYRIGHT` | `False` | If not `False` and no existing copyright information is provided in the image, attach an author and license to the file. Choices include: - COPYRIGHT, [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/), [CC-BY-NC-ND](https://creativecommons.org/licenses/by-nc-nd/2.0/), [CC-BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/3.0/), [CC-BY](https://creativecommons.org/licenses/by/4.0), [CC-BY-SA](https://creativecommons.org/licenses/by-sa/4.0), [CC-BY-NC](https://creativecommons.org/licenses/by-nc/4.0/), [CC-BY-ND](https://creativecommons.org/licenses/by-nd/4.0) | +| `PHOTO_EXIF_COPYRIGHT_AUTHOR` | `SITENAME` | If `PHOTO_EXIF_COPYRIGHT` is not `False` and no copyright author is present in the image, use this value as the author. | diff --git a/documentation/content/Supported Plugins/photogallery.md b/documentation/content/Supported Plugins/photogallery.md index 1d984c0f..498135d3 100644 --- a/documentation/content/Supported Plugins/photogallery.md +++ b/documentation/content/Supported Plugins/photogallery.md @@ -1,83 +1,121 @@ -Title: Photo gallery plugin -Tags: pelican-theme, pelican-plugin, photo-gallery +Title: Creating a Photo Gallery Article +Tags: pelican-theme, pelican-plugin, photo gallery Category: Supported Plugins Date: 2019-06-09 10:49 Slug: how-to-use-photos-plugin Subtitle: -Summary: Elegant integrates 'photos' gallery plugin of Pelican out of the box +Summary: Elegant can be configured to provide a simple display of a series of images, usually photos. Instead of asking the article's author to manually add a link for each photo, this feature provides basic gallery behavior with almost no cost to the author. Keywords: photos, gallery, photogallery -In order to easily work with Photos, Pelican has a plugin for [photos](https://github.com/getpelican/pelican-plugins/tree/master/photos) that allows to easily show folders of pictures inside an article. +[TOC] -The relevant template for article has been already incorporated in Pelican, so last steps are to add to you requirements the ones for this plugin `Pillow` and optionally `Piexif`. +In many cases, when an author writes an article and includes an image, there is a specific +reason that the image needs to be in that exact place. A good example of this is the image +at the end of this section, specifically part of this first section to give an early visual +on what visual change is contained within the article. However, in some cases, the author +wishes to provide a bit of preamble to a series of pictures, and then wants those pictures to +be displayed with little effort. This action is most frequently performed when an author +wants to share a series of photos on a given subject, similar to how they would display them +in a brick and mortar art gallery. -## Setup +Elegant provides for a simple, yet effective photo gallery that displays thumbnails, one for +each member of a set of images. These sets of images are defined by specifying a directory +containing the set of images to present to the reader. If that reader is then interested in +viewing one or more of the full images, clicking on the respective thumbnail creates a window +the size of the browser to display the image in. That window has a number of simple controls, +such as a close button, a previous image button and a next image button. -Elegant supports it out of the box. You just have to enable it in your Pelican -configuration, +Here is an example of what the Image Gallery section of such an article may look like: - :::python - PLUGINS = ['photos'] +![Photo Gallery Demonstration]({static}../images/elegant-theme_photo-gallery.png) -Refer to the plugin documentation for configuration, but at the time of this writing, the settings are: +Note that the photo gallery itself will be placed at the end of any text presented for the +article. -`PHOTO_LIBRARY = "~/Pictures"` -: Absolute path to the folder where the original photos are kept, organized in sub-folders. +## Configuration -`PHOTO_GALLERY = (1024, 768, 80)` -: For photos in galleries, maximum width and height, plus JPEG quality as a percentage. This would typically be the size of the photo displayed when the reader clicks a thumbnail. +To enable the Photo Gallery plugin, add `photos` to the `PLUGINS` configuration variable in +your Pelican configuration. -`PHOTO_ARTICLE = (760, 506, 80)` -: For photos associated with articles, maximum width, height, and quality. The maximum size would typically depend on the needs of the theme. 760px is suitable for the theme `notmyidea`. +```python +PLUGINS = ['photos'] +``` + +!!! note +The [photos plugin](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md) +requires the Python `pillow` package to be installed. -`PHOTO_THUMB = (192, 144, 60)` -: For thumbnails, maximum width, height, and quality. +### Pelican on Windows -`PHOTO_SQUARE_THUMB = False` -: Crops thumbnails to make them square. +If you are running Pelican on a Windows machine, include the following configuration in your +`pelicanconf.py` file: -`PHOTO_RESIZE_JOBS = 5` -: Number of parallel resize jobs to be run. Defaults to 1. +```Python +PHOTO_RESIZE_JOBS = -1 +``` -`PHOTO_WATERMARK = True` -: Adds a watermark to all photos in articles and pages. Defaults to using your site name. +Due to known issues in the +[Windows implementation of Python](https://stackoverflow.com/questions/41385708/multiprocessing-example-giving-attributeerror) +dealing with multiprocessing, a function being called within a multiprocessing context must be +written to a specific pattern. Currently, the Photo Plugins has not been written to that +pattern. Setting the `PHOTO_RESIZE_JOBS` configuration variable to `-1` +circumvents this issue by forcing the photo processing code to work in debug mode on a single +thread without invoking any of the multiprocessing code. -`PHOTO_WATERMARK_TEXT' = SITENAME` -: Allow the user to change the watermark text or remove it completely. By default it uses [SourceCodePro-Bold](http://www.adobe.com/products/type/font-information/source-code-pro-readme.html) as the font. +## Article Metadata -`PHOTO_WATERMARK_IMG = ''` -: Allows the user to add an image in addition to or as the only watermark. Set the variable to the location. +Once the configuration for Photo Gallery is enabled in the configuration file, using this +feature for a given article requires that the article contains the `gallery` +[metadata]({filename}../Extra Customization/meta-data.md) field value. -**The following features require the piexif library** -`PHOTO_EXIF_KEEP = True` -: Keeps the exif of the input photo. +The text assigned to the `gallery` metadata field is the location of the directory where the +images to be displayed resides. This location is relative to the article in which the +`gallery` metadata field is placed. -`PHOTO_EXIF_REMOVE_GPS = True` -: Removes any GPS information from the files exif data. +```yaml +gallery: {filename}../gallery-source/dragondance +``` -`PHOTO_EXIF_COPYRIGHT = 'COPYRIGHT'` -: Attaches an author and a license to the file. Choices include: - `COPYRIGHT`: Copyright - `CC0`: Public Domain - `CC-BY-NC-ND`: Creative Commons Attribution-NonCommercial-NoDerivatives - `CC-BY-NC-SA`: Creative Commons Attribution-NonCommercial-ShareAlike - `CC-BY`: Creative Commons Attribution - `CC-BY-SA`: Creative Commons Attribution-ShareAlike - `CC-BY-NC`: Creative Commons Attribution-NonCommercial - `CC-BY-ND`: Creative Commons Attribution-NoDerivatives +In the above example, the actual directory containing the images to display is the +`dragondance` directory. While not specified in the example, the directory `articles` and the +directory `gallery-source` are at the same directory depth, one directory to contain articles +and one directory to contain galleries. By that convention, the article containing the +`gallery` metadata is located in the the `articles` directory. Therefore, the path to the +directory containing the `dragondance` directory is `../gallery-source/`. Together, the entire +path to the `dragondance` directory from the article becomes `../gallery-source/dragondance`. -`PHOTO_EXIF_COPYRIGHT_AUTHOR = 'Your Name Here'` -: Adds an author name to the photo's exif and copyright statement. Defaults to `AUTHOR` value from the `pelicanconf.py` +### Photo Gallery Titles -Lightbox is enabled by default. You can disable it with `PHOTOS_LIGHTBOX` variable. Set it to `FALSE` in your configuration to disable. +Titles for a photo gallery are displayed in a large font directly above the first row of the +photo gallery. To specify the title for a gallery, add the required title to the metadata in +the `gallery` metadata field within curly braces ('{' and '}') as follows: -``` -PHOTOS_LIGHTBOX = False +```yaml +gallery: {filename}../gallery-source/dragondance{Dragon Dance} ``` -## How to use it in your articles +### Multiple Photo Galleries in the Same Article -In order to use it, in your `YAML` preamble of articles, add a line like this: +Multiple photo galleries can be display, in order, within a single article. This is +accomplished by specify a comma separated list of photo galleries to display in the `gallery` +metadata field. For example: -`gallery: {filename}gallery-source/foldername` +```yaml +gallery: {filename}../gallery-source/dragondance{Dragon Dance}, {filename}../gallery-source/hamsterdance{Hamster Dance} +``` -In order for the plugin to work, place your pictures in the folder defined by `PHOTO_LIBRARY`, for example: -`~/www/content/gallery-source/foldername` +will display the title `Dragon Dance`, the Dragon Dance photo gallery, the title +`Hamster Dance`, and finally the Hamster Dance photo gallery. The title of the specific +photo gallery is not required, but when including multiple galleries, is often desired. -The `photos` plugin will process the images, resize, include the watermark, etc and store in the output folder. Images will only be reprocessed if those are removed from the `output` folder, this allows to save time when processing big galleries. +# Advanced Configuration -This is an example of the final result: +!!! warning +Processing a quantity of photos in the 10,000s range can take multiple hours to complete. To reduce the effort needed to publish photo galleries, the `Photo` plugin will only process images if the output file is not already present in the destination directory. For more information, please refer to the [Caching Image Processing]({filename}./photo-gallery-advanced.md#caching-processed-images). -![Photo Gallery Demonstration]({static}../images/photogallery.png) +Using the above configuration, a photo gallery will be added to the end of the article +containing the `gallery` metadata using default settings. For additional ways to use photo +galleries and for modifications to those default settings, please consult the sibling article +on +[Advanced Configuration]({filename}./photo-gallery-advanced.md) +. diff --git a/documentation/content/images/elegant-theme_photo-gallery.png b/documentation/content/images/elegant-theme_photo-gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..6b165959f10935a6a50c67c4b97a9c5cf65b35e1 GIT binary patch literal 388695 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 z zz~ORZDd2TYEO+awZLcr+EaN?}PeM;YQ75dbqIqgYZPT399Q+MNo4@Vs8v(<;LJFYK zO
``` -The **header** is mandatory and the **scope** of the header is optional. - -Any line of the commit message cannot be longer 100 characters! This allows the message to be easier -to read on GitHub as well as in various git tools. +### Header -## Header +The header is mandatory. It has a special format that includes a required **type**, an +optional **scope** and a required **subject**: -### Revert Commits - -If the commit reverts a previous commit, it should begin with `revert:`, followed by the header -of the reverted commit. -In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit -being reverted. +```text +(): +``` -### Type +#### Type -Must be one of the following: +The type must be one of the following: - **feat**: A new feature - **fix**: A bug fix - **docs**: Documentation only changes -- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing - semi-colons, etc) +- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.) - **refactor**: A code change that neither fixes a bug nor adds a feature - **perf**: A code change that improves performance - **test**: Adding missing or correcting existing tests -- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation - generation +- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation +- **revert**: A revert to a previous commit. See the section [Revert Commits](#revert-commits) below. + +#### Scope + +The scope is intended to provide extra context on the changes included in the commit is for. +This context should provide useful information to someone reading the commit log, including +the reading of the commit log in the release notes. -### Scope +For example, if you fix something in the +[authors blurb]({filename}../Supported Plugins/author-blurbs.md) section, a scope of `authors` would be appropriate. If you are changing something with how the +[landing page]({filename}../Components/landing-page.md) +works, a scope of `landing page` or `home` would be appropriate. -The scope could be anything specifying place of the commit change. For example, `authors` if the change is about Elegant [authors blurb]({filename}../Supported Plugins/author-blurbs.md) feature or `home` if it refers to [landing page]({filename}../Components/landing-page.md). +#### Subject -## Subject Text +The subject part of the header must follow these rules: -1. use imperative, present tense: "change" not "changed" nor "changes" not "changing" -1. don't capitalize first letter -1. no dot (.) at the end +1. always use the imperative, present tense: "change" not "changed", "changes", or "changing" +1. do not capitalize the first letter +1. no period (`.`) at the end of the line -### What is Imperative mode +##### What is Imperative mode? -[Here](https://chris.beams.io/posts/git-commit/#imperative) is a very good explanation of imperative mode. +Chris Beams, in his article on +[how to write a good commit message](https://chris.beams.io/posts/git-commit/#imperative), +gives a very good explanation of imperative mode. > Imperative mood just means "spoken or written as if giving a command or instruction". A few examples: > -> 1. Clean your room -> 1. Close the door -> 1. Take out the trash +> 1. Clean your room +> 1. Close the door +> 1. Take out the trash > > The imperative can sound a little rude; that's why we don't often use it. But it's perfect for Git commit subject lines. -## Body +#### Revert Commits -1. just as in use imperative, present tense: “change” not “changed” nor “changes” -1. includes motivation for the change and contrasts with previous behavior +If the commit reverts a previous commit, it must be specified with the `revert` type, followed +by the complete header of the reverted commit as the subject. The body of the commit must +start with the text: `This reverts commit .`, where the hash is the SHA of the commit +being reverted. + +### Body -## Footer +The body of the commit message must follow these rules: + +1. always use the imperative, present tense: "change" not "changed", "changes", or "changing" +1. include your motivation for the change and how it contrasts with the previous behavior ### Breaking changes -All breaking changes have to be mentioned in footer with the description of the change, justification and migration notes. +All breaking changes have to be mentioned in the body with the description of the change, +justification and migration notes. The body must be prefixed with the text `BREAKING CHANGE:`. -Example, +The following example is from the +[Elegant project repository](https://github.com/Pelican-Elegant/elegant/commit/9b5b2eca2a34a5d9898173a8118cb5e37621dfd5). +After the required prefix, it describes the problem it is solving, and why it was needed. +In retrospect, while it does mention that `LANDING_PAGE_ABOUT` is no longer used, it should +have gone into more detail on where to look up information on what was replacing it. ```text feat(home): write about me in markdown, reST or asciidoc @@ -118,29 +157,33 @@ your configuration. Closes #85 ``` -### Referencing issues +### Footer + +#### Referencing issues -Closed bugs should be listed on a separate line in the footer prefixed with "Closes" keyword like this: +Closed bugs should be listed on a separate line in the footer prefixed with the `Closes` +keyword. ```text Closes #234 ``` -or in case of multiple issues: +If your commit closes multiple issues, list them on the same line separated by a comma. ```text Closes #123, #245, #992 ``` -In case your commit affects an issue, use "Updates" keyword +If your commit affects an issue, but does not fix it completely, use the "Updates" keyword ```text Updates #234 ``` -## Examples +## Good Message Format Examples -Following are few example commits that shows how Elegant has uses these guidelines. +The following are commits from our own repository that shows how Elegant has used these +guidelines. ### New Features @@ -175,7 +218,7 @@ ci(docs): add default tasks.py file refactor: move Google and Bing claims to their individual files ``` -## Examples of Incorrect Commit Messages +## Bad Message Format Examples This commit message starts with a capital letter and ends with a period diff --git a/documentation/content/Contributing/inviation.md b/documentation/content/Contributing/inviation.md index 1b67fd57..efca46ef 100644 --- a/documentation/content/Contributing/inviation.md +++ b/documentation/content/Contributing/inviation.md @@ -1,8 +1,12 @@ --- Title: Invitation to Participate -Date: 2019-07-03 20:07 +Subtitle: Slug: invitation-to-participate Category: Contributing +Tags: +Date: 2019-07-03 20:07 +Summary: Elegant has a mandatory Git commit message format that is described here. +Keywords: Authors: Talha Mansoor, Jack De Winter --- diff --git a/documentation/content/Contributing/jinja-style.md b/documentation/content/Contributing/jinja-style.md index e9923a71..bf7d1e1c 100644 --- a/documentation/content/Contributing/jinja-style.md +++ b/documentation/content/Contributing/jinja-style.md @@ -1,9 +1,13 @@ --- Title: Code Style for Jinja2 -Date: 2019-07-03 22:17 +Subtitle: Slug: code-style-for-jinja2 Category: Contributing -authors: Talha Mansoor +Tags: +Date: 2019-07-03 22:17 +Summary: Elegant's Jinja templates adhere to the code style described in this article. +Keywords: +Authors: Talha Mansoor --- Please make sure to follow the code style of the existing code base. diff --git a/documentation/content/Contributing/pre-commit.md b/documentation/content/Contributing/pre-commit.md index 676e89e2..e8f00991 100644 --- a/documentation/content/Contributing/pre-commit.md +++ b/documentation/content/Contributing/pre-commit.md @@ -1,43 +1,119 @@ --- -Title: Use Pre-Commit Git Hooks -Date: 2019-07-22 23:17 +Title: Using Pre-Commit Git Hooks +Subtitle: Slug: use-pre-commit-git-hooks Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-22 23:17 +Summary: Elegant use the Pre-commit tool to standardize on various concepts. This article gives more information about the tool and how to run it locally. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -Since Elegant has moved to [bazar development model]({filename}./community-driven-project.md), we want to make sure all patches follow the same stylistic guidelines. +[TOC] + +When there was a single developer working on the Elegant project, there were none of the +common problems associated with team projects: different styles and different processes. After +the project was moved to the current +[bazaar development model]({filename}./community-driven-project.md), the team thought it +best that all changes should follow the same set of stylistic guidelines. + +The Git clients provide a concept called +[Git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks). Git hooks allow for +custom code to be triggered when certain actions are performed with Git. One of the most +common triggers is the pre-commit trigger, used to activate a program between a client +request to commit and the actual act of committing the change. If the program reports a +failure, the commit is aborted, hopefully with the failed program providing enough information +for the user to diagnose the issue. + +## Aren't Git Hooks Hard to Get Right? + +If you have tried to set up Git hooks before, there are usually two problems you have faced: +the concept can be hard for people to understand and Git hooks are often frustrating difficult +to debug. Add onto this the different operating systems and versions of those systems on top +of that, and you can quickly get into nightmare territory for maintaining a Git hook. + +To solve most of these problems, the team decided to use the +[Pre-Commit](https://pre-commit.com/) +Python package which provides a simple layer of abstraction over the Git hooks. The Pre-commit +package makes managing, sharing and updating the Git hooks very easy. As it installs itself as +a Git hook, once you have installed it properly, you may easily confuse it as a part of Git's +commit process. + +## Why Use Pre-commit Locally? -We leverage Git hooks to auto format all the patches. But Git hooks are hard to manage and sync. Therefore we decided to use [Pre-Commit](https://pre-commit.com/) which provides an abstraction over the Git hooks. +Pre-commit runs Git hooks that among other things: -Pre-commit makes managing, sharing and updating the Git hooks very easy. You can set it up once and then forget about it. +- Run [Prettier](https://github.com/prettier/prettier) + - applies common styling for Markdown, CSS, JS and json files +- Run [Black](https://github.com/python/black) + - applies common styling for Python files +- Removes trailing whitespace on lines +- Fixes the end of files to a common style -To install pre-commit, +Addressing any failures reported by these hooks locally will result in a smaller turn around +time in getting those issues addressed. This in turn will save time when submitting changes +in a Pull Request, as you have already dealt with any errors that this tool may report. + +## How Do I Install It? + +The package itself is installed in typical Python fashion by using the Pip command: ```bash pip install pre-commit ``` -Then in the root of your Elegant repository run, +Once installed in your environment, you can install the Git hooks for your local repository +by changing your directory to the root of that repository and executing the following command: ```bash pre-commit install ``` -That's it. You don't have to worry about it anymore. +## How Do I Use It Locally? + +Once installed, Pre-commit appears to be part of the Git commit process. When you perform +your next `git commit` command (including using the `git-cz` command for the +[Commitizen tool]({filename}./commitizen.md)), the Pre-commit package will download any tools +it requires to properly run any required hooks. These tools are cached, so you will typically +only experience a long wait on the first time the Pre-commit package is executed. + +If the hooks run by the Pre-commit package fail for some reason, they will clearly notify +you of which of the hooks failed and typically present you with a reason why the hook failed. +Note that some of the hooks, such as the `prettier` hook, may make some changes to your +files to bring them in line with the project's common style. If any changes occur, they +will not be staged to your local repository, making any changes visible using the `git status` +command. -Next time when you will try to do a Git commit, pre-commit will download all the tools required for running the Git hooks. It may take sometime but this is a one time operation. Once tools are in the place, Git hooks will run before every Git commit. +If the hook failed due to an error, you need to fix that error before it will allow you to +continue. If the hook failed because it made a change, make sure to verify the change that +was made for you, after making sure it will not have a negative effect on your changes. It +is then your responsibility to stage all changes to the repository before committing the +change again. -In almost all cases, you will not have to do anything. It will run the hooks, format the files and notify you of error. You will then stage the changed files and retry your commit. +!!! warning "For Windows Users" -## Why use pre-commit at all? + If you run these checks on Windows, the `check-executables-have-shebangs` hook will fail as Windows does not require that executable files start with a [shebang](shebang) and all files implicitly have the `execute` or `+x` permission for Linux. -Pre-commit runs Git hooks that among other things, + To skip this check, enter `set SKIP=check-executables-have-shebangs` on the command line before you execute the Pre-commit package, either from a Git hook as detailed above, or manually, as detail in the following section. + +## Can I Run The Hooks Without a Commit? + +The full set of hooks are available by entering the following command: + +```text +pre-commit run -a +``` -1. Run [Prettier](https://github.com/prettier/prettier) on Markdown, CSS, JS and json files -1. Run [Black](https://github.com/python/black) on Python files -1. Removes trailing whitespace +This will run the full set of hooks and report any errors. It is often useful to run this +command before committing, even if you are using +[Commitizen](./commitizien.md) +for your commits as is recommended. -## Pull Requests and pre-commit +## How Does The Project Run the Hooks For Submissions? -We have setup pre-commit to run on all pull requests using Travis CI. Travis runs pre-commit and on error, reports build failure. +The Elegant team fully believes in the Git hooks and their benefit to the team. As such, the +Pre-commit package is executed on all of our team builds (using Travis CI) for any commits and +pull requests made on the Travis CI servers. For more information on how we use Travis CI to +build the project, check out the article on +[Elegant and Travis CI](./travis-ci-and-doc-website.md). diff --git a/documentation/content/Contributing/why-look-and-feel.md b/documentation/content/Contributing/why-look-and-feel.md index 0685be55..ff5002e1 100644 --- a/documentation/content/Contributing/why-look-and-feel.md +++ b/documentation/content/Contributing/why-look-and-feel.md @@ -1,13 +1,17 @@ --- -Authors: Jack De Winter Title: Why Does Elegant Look The Way It Does? +Subtitle: +Slug: look-and-feel +Category: Contributing Tags: design philosophy, distraction, cognitive overload, information overload Date: 2019-07-03 20:07 -Slug: look-and-feel Summary: Elegant has been purposefully crafted to follow a specific set of design principles. This article discusses those design principles. -Category: Contributing +Keywords: +Authors: Jack De Winter --- +[TOC] + ## Discussion Elegant is theme that is largely inspired by the following articles/tweets: diff --git a/documentation/content/Contributing/ya-spell-check.md b/documentation/content/Contributing/ya-spell-check.md new file mode 100644 index 00000000..22822142 --- /dev/null +++ b/documentation/content/Contributing/ya-spell-check.md @@ -0,0 +1,157 @@ +--- +Title: Using 'yaspeller' with Elegant +Subtitle: +Slug: yaspeller-for-elegant +Category: Contributing +Tags: +Date: 2019-08-04 23:17 +Summary: Elegant use the 'yaspeller' tool to scan for spelling mistakes. This article gives more information about the tool and how to run it locally. +Keywords: +Authors: Jack De Winter +--- + +[TOC] + +Even with most code editors having a spell checker installed and active by default, there is a +need to have the Elegant builds verify spelling against a known dictionary. The spell check +tool that was decided on by the team is the +[yaspeller tool](https://github.com/hcodes/yaspeller). + +This tool is useful in that it has a number of options for altering what it considers eligible +for scanning. In its default mode, the `yaspeller` tool will scan everything in a Markdown +document except for text encapsulated within code blocks, such as: + +````text +```text +[text ommitted for breverity] +``` + +OR + +this `yaspeller` tool is cool + +```` + +While `yaspeller` is a useful tool, it is not foolproof. When scanning the documentation +files, it often requires a bit of assistance in determining how to properly handle words which +do not appear in the standard dictionary. + +## What To Do With Spelling Mistakes? + +There are typically 4 categories of spelling mistakes: an honest mistake, a word to be added +to the project dictionary, a single situational misspelling, and intentional misspellings +within a block of text. + +The way to address mistakes in the first category is simple. Fix them. If you are not 100% +sure that the word is spelled properly, consider using +[dictionary.com](https://www.dictionary.com/) to verify the spelling. If you search for a +given word and a simpler form of that word appears, scroll down to the related words section +and see if it is there. + +## Adding A Word to the Project Dictionary + +If the spelling mistake has been verified to be a properly spelled word, then the word jumps +over to the second category: a word to be added to the project dictionary. The root directory +of the project contains +[the project dictionary](https://github.com/Pelican-Elegant/elegant/blob/master/.yaspeller.json) +with a list of words that `yaspeller` should consider acceptable. Words added to the +dictionary in lower case will match upper case and lower case versions of the word, while words +added with any capitalization will force `yaspeller` to perform a case-sensitive match. + +## A Single Intentional Misspellings within a Line of Text + +For the third category, a single situational misspelling, the best example is included in the +article [Git Commit Guidelines]({filename}./git-commit-guidelines.md). +In that article, there is [a section]({filename}./git-commit-guidelines.md#type) describing the +legal values that can be associated with a commit type. While most of the values are fine, +there is one value that is the short form for "performance": + +```text +- **perf**: A code change that improves performance +``` + +As this is the only word in the article that is intentionally spelled the way it is, the +line ends with the `` suffix to tell the `yaspeller` tool to ignore +the entire line. While we could add that single word to the project dictionary, it is more +clear to ignore the word for this given situation instead of adding it to the dictionary. + +## Intentional Misspellings within a Block of Text + +The final category, intentional misspellings within a block of text, is an extension of the +previous category, but dealing with multiple intentional misspellings, instead of a single +one. A good example of that would be specifying the contents for a table to show an example +to the user, such as the following: + + + +| Key | Value | File Name | +| --- | ----- | ---------------------------- | +| abc | 1 | stat-counter.md | +| def | 2 | favicons-speed-dial-icons.md | + + + +If you look at the [Markdown for this article]({static}/Contributing/ya-spell-check.md), +notice how the table is surrounded with two HTML comments: +`` and `` with blank lines between +the comments and the block they are there to ignore. + +With those comments in place, the `yaspeller` tool does not raise any issues with the Markdown +that generates this file, as it has been told to ignore everything starting with the first +comment and ending with the second comment. If these are removed, the `yaspeller` tool will +output the following errors: + +```text +[ERR] /enlistments/elegant/documentation/content/Contributing/ya-spell-check.md 3450 ms +----- +Typos: 2 +1. def (129:3) +2. favicons (129:13) + +Capitalization: 1 +1. abc (128:3, suggest: ABC) +----- +``` + +## Why Spell Check Locally? + +Similar to the other checks that are performed on every submission, a spell check failure will +cause the build to fail. + +Addressing any failures reported locally by this tool results in a smaller turn around time in +getting any spelling mistakes addressed. This in turn will save time when submitting changes +in a Pull Request, as you have already dealt with any errors that this tool may report. + +### Prerequisites For Local Installation + +Either [Node.js](https://nodejs.org/en/download/) or +[Yarn](https://yarnpkg.com/en/docs/install) must be installed on your system. + +### How Do I Install It Locally? + +You can install the `yaspeller` package using either NPM (Node.js) or Yarn as follows: + +```text +npm install -g yaspeller +``` + +OR + +```text +yarn global add yaspeller +``` + +### How Do I Use It Locally? + +To invoke the `yaspeller` package for the documentation files for the Elegant project, go to +the root directory of your local repository and enter the following command: + +```text +yaspeller --only-errors documentation/content/ *.md +``` + +When executed, the `yaspeller` tool will recursively scan all of the `*.md` files under the +`documentation/content/` directory from the root of your local repository. The `--only-errors` +flags merely restricts any of the output to any errors that occur, instead of an ongoing stream +of what files it is scanning. As omitting the `--only-errors` flag only affects the output +and not the detection of spelling mistakes, feel free to not use it when running locally. diff --git a/documentation/content/images/automated-release.png b/documentation/content/images/automated-release.png new file mode 100644 index 0000000000000000000000000000000000000000..fd98d760ee1871fca31d0a15561b4a506079f21c GIT binary patch literal 1459 zcmeAS@N?(olHy`uVBq!ia0vp^i9j6B!2~4BMeHX@$Zf-4sQk36TS+;mda$m`riG7xrG%bF;zHe?XtM~s$ z;>#uxmhK6bKZID_cRYXbML1lKfkRBOc&W=l!7HDxwl1_zDRu#CHfD5JXE&eD?-nyt z{_x+^+3q#Ak!ep})G+q2owjZkUN=Xyc**BnOR05#>wZqs-Y4t-e)aU4CjkeTueHBp zJ9B{fTl=EzlADFM`v&jay~%UZ;=Z5Gr+;M3jXsogr2WkG>Q$92kxLnp`W`qcy7DAH znbFa`$IkOdM^Lzm&8v*+=g+oPJo!=)DL$i1d1Kz6%9o0dn0`5Ze6aCSm5`~s(T{H` z50$-Q^CX?T1!fhUvUiZVaO!@hg_7f*s!U(0zFFC)cbGg}x7p&9nrGjwSOJls#TQ>6 zxj3iw&P1Pkg7c=X7Abq?VUpJ3yWC34_mKR=@<8ufpM0Bh)U)#qB;7Rw1=(yT?~jY` ze*JiR1OKJ?-H&pX^$JXyGub{w_L5+RztXgYSDvoU{%zNP=^5AR*-=O2Qq&&2*nM2) zj@#(R- z?D_ZP3ho~=R(4czpcxWD^mSXSN!tcyXPN&d`>WZ^=|)j zzfOq_yUNe>PBJ;*d*f`6%)`t-@%4-*zKi!(YwvCRU(WWd;PCdIZ)Q#j8>X$6;r}iD zaK2m@vy1Yxn675+GiL=~Tyych8}TG@{{)evZk#*wo<YPyB7R4nLedff)ueZN1Y}WRDHS0-PcAo7ecg>r(dMqQ2np{i2WWE1-x4r+| zYE9ROn}YAIM&H$(de60#W!~N!uP%If`XoEkzQ{(l`c=Tb7$K3$r_=6CTq8DPu5!R- zm&z|2{)82AwaI$N7G0Sub@txT%5?W4U)d&(U-OQwc5f-%bGtuig?WnOA26zDpLH91z_VYw;*N^i9x=X5|N_4`r8dMsYlQ%#ri= z8~e1vkF1S5Eq}Ec5EDVm9=$ky^7`}rd9i!TxLL(l6uFC*Z;{}SIPCAN(YyK8m3wyi zKF=?2+*ldooxW-9#D^xE>OP$XCb=F5Uc2AF-u~9u;jlGYnCV4s&NmCKN;UrSmnzbS zPklU6TwU1E|6_6dtoU8ub{zbBYfjTi>#A=_+;RWz{Jb4r*r+8{yOkkKuI$5+#HX2O z{~B(7U(|ap_Nn_k3m);0HCBEaX<{F|LiTd2J>yVHa{N`W`td8SrJ*`^PPN4Eo;C5q z%o>gvYdR%2Ew27}*<(gap68>o#3Q{vk}zpXBYUWLFjU2`tBni?`M~6T(oC%=M;CN2h-MfDNht(~(9g zk(d`v4n&i{{yDLwcqTAT&f$xb%%0=_nYBJXU}wy~ R2P&Q!JYD@<);T3K0RVNex+MSr literal 0 HcmV?d00001 diff --git a/documentation/content/images/compare-changes.png b/documentation/content/images/compare-changes.png new file mode 100644 index 0000000000000000000000000000000000000000..7be8214e0bc64b1812a89c635571e0f5f0d1622d GIT binary patch literal 7885 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 d)oL*2n-Qy8nv%9+mAvJr{{@PthNJ)h literal 0 HcmV?d00001 diff --git a/documentation/content/images/github-clone-button.png b/documentation/content/images/github-clone-button.png new file mode 100644 index 0000000000000000000000000000000000000000..6cd9834b0d063f283b4960b6e4a8d9eab3a9e65a GIT binary patch literal 2036 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 literal 0 HcmV?d00001 diff --git a/documentation/content/images/started-pull-request.png b/documentation/content/images/started-pull-request.png new file mode 100644 index 0000000000000000000000000000000000000000..938522b4b801a954133fb71420f34d97b00acc6d GIT binary patch literal 42727 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 literal 0 HcmV?d00001 diff --git a/documentation/content/pages/landing-page-about-me.md b/documentation/content/pages/landing-page-about-me.md index f351ec41..a5897f4e 100644 --- a/documentation/content/pages/landing-page-about-me.md +++ b/documentation/content/pages/landing-page-about-me.md @@ -41,3 +41,8 @@ To top it of, it is the only theme with comprehensive documentation and an autom This site is a demonstration and documentation of Elegant theme. To try out Elegant, you don't need to install anything. Just visit different pages of this site. Try the search function. Check out our categories. What you see here is what you get. + +## Want to Contribute? + +- [Invitation to Participate]({filename}/Contributing/inviation.md) +- [How Do I Contribute?]({filename}/Contributing/contributing-to-the-project.md) From 99ed48c8af071de4c89de4bcccb79ed8fab14f4b Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 25 Aug 2019 11:01:55 -0700 Subject: [PATCH 18/59] docs(update): updating contribution guidelines reorganized and restructured the contribution guidelines. --- CONTRIBUTING.md | 2 +- .../content/Contributing/automated-release.md | 16 ++++++---------- .../content/Contributing/beginners-guide.md | 4 ++-- documentation/content/Contributing/commitizen.md | 5 ++--- .../Contributing/git-commit-guidelines.md | 2 +- documentation/content/Contributing/pre-commit.md | 2 +- .../content/Contributing/ya-spell-check.md | 6 +++--- 7 files changed, 16 insertions(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9ef063d2..105c6ea0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,4 +4,4 @@ We welcome contributions to the Elegant project! If you are considering contributing, [please read this](https://elegant.oncrashreboot.com/invitation-to-participate.html). -If you are actively contributing, [please read this before contributing](https://elegant.oncrashreboot.com/how-to-contribute.html). +If you have a patch ready for pull request, [please read this before contributing](https://elegant.oncrashreboot.com/how-to-contribute.html). diff --git a/documentation/content/Contributing/automated-release.md b/documentation/content/Contributing/automated-release.md index 5db4a3a9..71a7a066 100644 --- a/documentation/content/Contributing/automated-release.md +++ b/documentation/content/Contributing/automated-release.md @@ -14,20 +14,18 @@ Authors: Talha Mansoor, Jack De Winter The Elegant project follows a "release early, release often" software development philosophy. By employing this philosophy, we are able to have each team member working on a different -aspect of the project with little friction from each other's changes. At any point, any team +aspect of the project with next to no friction from each other's changes. At any point, any team member can pull changes that have been made in another branch to their fork of the repository and exercise their changes with complete confidence. -Another benefit of this philosophy if that in order to attain this goal, our release process -must be fully automated. +Release process should be fully automated to materialize this goal. ## Release Versions Version management and publishing is accomplished using the [semantic-release](https://github.com/semantic-release/semantic-release) tool and it's [configuration file](https://github.com/Pelican-Elegant/elegant/blob/master/.releaserc.json). -This tool entirely removes any human intervention needed for determining how to label -the next release of the project. +This tool entirely removes human intervention from deciding the type and label of the next release of the project. ## CHANGELOG File Updates @@ -36,8 +34,7 @@ An integral part of the release is the generation of information to be added to By mandating that any commits for the project follow a [mandated format for the commit messages]({filename}./git-commit-guidelines.md), the commits being added to the release can have their commit messages scanned by a tool, -including relevant portions into the release notes. Similar to the previous paragraph on -version management, this can be accomplished without any need for human intervention. +including relevant portions into the release notes. This too is done automatically. ### Example of an Automated Release @@ -85,9 +82,8 @@ hexadecimal numbers. Each of these links is to a specific commit that was part o release. If you follow the link, you can verify that the correct text is being used for the release notes. -Additionally, there are links that are associated with text that starts with an octothorpe -(`#` character, sometimes referred to as the hash, hash-tag, or pound character) -followed by an integer. Each of these links is to an issue that was either updated or +Additionally, there are links that are associated with text that starts with the `#` +character followed by an integer. Each of these links is to an issue that was either updated or fixed by the given commit. As with the above paragraph, you can verify that the correct issue was associated with the commit in the release notes by following the commit links and looking for any issue number at the end of the commit text. diff --git a/documentation/content/Contributing/beginners-guide.md b/documentation/content/Contributing/beginners-guide.md index 172fe0fe..0bfd83f4 100644 --- a/documentation/content/Contributing/beginners-guide.md +++ b/documentation/content/Contributing/beginners-guide.md @@ -26,7 +26,7 @@ Here are some tips we have found useful for using Git to contribute to the proje 3. Create a directory to host your repository in and change to that directory. Run the following command to set your forked repository as `Upstream`: - ```text + ```bash git remote add upstream https://github.com/Pelican-Elegant/pelican-elegant.git ``` @@ -62,7 +62,7 @@ something to get it `just right`. To squash and rebase your commits, use the following command: -```text +```bash git rebase --interactive upstream/master ``` diff --git a/documentation/content/Contributing/commitizen.md b/documentation/content/Contributing/commitizen.md index 1ce06a50..0c55d6fb 100644 --- a/documentation/content/Contributing/commitizen.md +++ b/documentation/content/Contributing/commitizen.md @@ -27,7 +27,7 @@ formatting allows for our release process to be Both [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) must be installed on your system. -### Step 1: Install Commitizen +### Install Commitizen From your command line terminal, go into the directory containing your fork of the Elegant repository, then execute the following commands: @@ -42,8 +42,7 @@ yarn install As the Elegant team has already made the repository [Commitizen friendly](https://github.com/commitizen/cz-cli#making-your-repo-commitizen-friendly), you can start using it for your commits by entering `git-cz` in your command shell instead -of `git commit`. As such, you are responsible for making sure that the changes that you -want to commit to your fork are currently staged in the repository. +of `git commit`. Make sure the changes that you want to commit to your fork are staged. Once invoked, Commitizen will prompt you for answers to a number of questions. As mentioned previously, the answers to these questions are formatted according to the diff --git a/documentation/content/Contributing/git-commit-guidelines.md b/documentation/content/Contributing/git-commit-guidelines.md index 97fbe614..d6ccb4f1 100644 --- a/documentation/content/Contributing/git-commit-guidelines.md +++ b/documentation/content/Contributing/git-commit-guidelines.md @@ -48,7 +48,7 @@ prompts, following all of the rules in the following sections on the Commit Mess !!! tip - Use Commitizen. It does make life easier. + [Use Commitizen for Git commits]({filename}./commitizen.md). It does make life easier. It automatically formats the commit message to conform to our guidelines. ## Commit Message Format diff --git a/documentation/content/Contributing/pre-commit.md b/documentation/content/Contributing/pre-commit.md index e8f00991..bd8e3587 100644 --- a/documentation/content/Contributing/pre-commit.md +++ b/documentation/content/Contributing/pre-commit.md @@ -101,7 +101,7 @@ change again. The full set of hooks are available by entering the following command: -```text +```bash pre-commit run -a ``` diff --git a/documentation/content/Contributing/ya-spell-check.md b/documentation/content/Contributing/ya-spell-check.md index 22822142..aa5f8be6 100644 --- a/documentation/content/Contributing/ya-spell-check.md +++ b/documentation/content/Contributing/ya-spell-check.md @@ -131,13 +131,13 @@ Either [Node.js](https://nodejs.org/en/download/) or You can install the `yaspeller` package using either NPM (Node.js) or Yarn as follows: -```text +```bash npm install -g yaspeller ``` OR -```text +```bash yarn global add yaspeller ``` @@ -146,7 +146,7 @@ yarn global add yaspeller To invoke the `yaspeller` package for the documentation files for the Elegant project, go to the root directory of your local repository and enter the following command: -```text +```bash yaspeller --only-errors documentation/content/ *.md ``` From 9ef21cbef79c42fc5e85b10d6409cd87843f47eb Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Tue, 27 Aug 2019 20:51:27 -0700 Subject: [PATCH 19/59] docs(Addressing PR comments from Talha): Addressing PR comments from Talha --- .yaspeller.json | 1 + .../content/Contributing/automated-release.md | 41 +++++++++++++++++-- .../Contributing/git-commit-guidelines.md | 4 +- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/.yaspeller.json b/.yaspeller.json index cec9d6d2..7af4f3ae 100644 --- a/.yaspeller.json +++ b/.yaspeller.json @@ -223,6 +223,7 @@ "unhide", "unordered", "validator", + "versioning", "virtualenv", "w3c_validator", "webmasters", diff --git a/documentation/content/Contributing/automated-release.md b/documentation/content/Contributing/automated-release.md index 71a7a066..c4f065a6 100644 --- a/documentation/content/Contributing/automated-release.md +++ b/documentation/content/Contributing/automated-release.md @@ -1,7 +1,7 @@ --- -Title: Automated Version Management and Publishing +Title: Automated Version Management and Release Subtitle: -Slug: fully-automated-version-management-and-publishing +Slug: fully-automated-version-management-and-release Category: Contributing Tags: Date: 2019-07-20 23:17 @@ -27,10 +27,40 @@ Version management and publishing is accomplished using the [configuration file](https://github.com/Pelican-Elegant/elegant/blob/master/.releaserc.json). This tool entirely removes human intervention from deciding the type and label of the next release of the project. +### How Does Versioning Work? + +Semantic release bases it's decisions on the +[Semantic Versioning 2.0.0 specification](https://semver.org/), which is very specific. + +A quick summary is as follows. Each version is detailed in the form: `MAJOR.MINOR.PATCH`. +The **PATCH** version is incremented when only backwards compatible bug fixes are made in the +release. The **MINOR** version is incremented (and **PATCH** reset to 0) when functionality +is added in a backwards compatible manner to the release, along with any backwards compatible +bug fixes. The **MAJOR** version is incremented (and **MINOR** and **PATCH** reset to 0) when +incompatible API changes are introduced, along with any backwards compatible features or fixes. + +Here are some examples of release types that are generated based on commit messages: + + + +| Commit Message | Release Type | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | +| fix(pencil): stop graphite breaking when too much pressure applied | Patch Release | +| feat(pencil): add 'graphiteWidth' option | Minor Feature Release | +| perf(pencil): remove graphiteWidth option

BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reasons. | Major Breaking Release | + + + +Note that the release type is specified as if that commit was the only commit in the release. +If the first two commits were put together in the release, the `Minor Feature Release` of the +second commit would take precedence over the `Patch Release` of the first commit. In the same +manner, the `Major Breaking Release` of the third commit would take precedence if all three +commits were submitted in the same release. + ## CHANGELOG File Updates -An integral part of the release is the generation of information to be added to the -[CHANGELOG file](https://github.com/Pelican-Elegant/elegant/blob/master/CHANGELOG.md). +An integral part of the release is updating the +[CHANGELOG](https://github.com/Pelican-Elegant/elegant/blob/master/CHANGELOG.md). By mandating that any commits for the project follow a [mandated format for the commit messages]({filename}./git-commit-guidelines.md), the commits being added to the release can have their commit messages scanned by a tool, @@ -87,3 +117,6 @@ character followed by an integer. Each of these links is to an issue that was ei fixed by the given commit. As with the above paragraph, you can verify that the correct issue was associated with the commit in the release notes by following the commit links and looking for any issue number at the end of the commit text. + +As the commits added in to this release included features, the `Minor Feature Release` release +type was used, incrementing the minor part of the version number from 3.1.0 to 3.2.0. diff --git a/documentation/content/Contributing/git-commit-guidelines.md b/documentation/content/Contributing/git-commit-guidelines.md index d6ccb4f1..28c1027f 100644 --- a/documentation/content/Contributing/git-commit-guidelines.md +++ b/documentation/content/Contributing/git-commit-guidelines.md @@ -180,7 +180,7 @@ If your commit affects an issue, but does not fix it completely, use the "Update Updates #234 ``` -## Good Message Format Examples +## Correct Message Format Examples The following are commits from our own repository that shows how Elegant has used these guidelines. @@ -218,7 +218,7 @@ ci(docs): add default tasks.py file refactor: move Google and Bing claims to their individual files ``` -## Bad Message Format Examples +## Incorrect Message Format Examples This commit message starts with a capital letter and ends with a period From 1b6facea34af2d7aa32f07d84d8a1f33920d09e0 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Wed, 28 Aug 2019 20:05:33 -0700 Subject: [PATCH 20/59] docs(adding extra wording per Talha): changed wording of intro for automated releases --- documentation/content/Contributing/automated-release.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/documentation/content/Contributing/automated-release.md b/documentation/content/Contributing/automated-release.md index c4f065a6..ee14e3a2 100644 --- a/documentation/content/Contributing/automated-release.md +++ b/documentation/content/Contributing/automated-release.md @@ -14,9 +14,9 @@ Authors: Talha Mansoor, Jack De Winter The Elegant project follows a "release early, release often" software development philosophy. By employing this philosophy, we are able to have each team member working on a different -aspect of the project with next to no friction from each other's changes. At any point, any team -member can pull changes that have been made in another branch to their fork of the repository -and exercise their changes with complete confidence. +aspect of the project with next to no friction from each other's changes. At any point, any +team member can pull changes that have been made in another branch to their fork of the +repository and exercise their changes with complete confidence. Release process should be fully automated to materialize this goal. From b7cd2cae631b76e1ded16fbf221d6074fddf3719 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 1 Sep 2019 13:14:07 -0700 Subject: [PATCH 21/59] docs(supported plugins): Ensuring that supported plugins have metadata section on top. --- documentation/content/Supported Plugins/assets-plugin.md | 2 ++ documentation/content/Supported Plugins/multi-part-plugin.md | 2 ++ .../content/Supported Plugins/photo-gallery-advanced.md | 3 +++ documentation/content/Supported Plugins/photogallery.md | 3 +++ .../content/Supported Plugins/previous-and-next-article.md | 2 ++ documentation/content/Supported Plugins/share-post-plugin.md | 2 ++ 6 files changed, 14 insertions(+) diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index 2f3374ed..2f60be03 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -1,3 +1,4 @@ +--- Title: How To Improve the Download Time For Your Pages Tags: pelican-theme, pelican-plugin, page-speed Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Pelican can be configured to compile multiple assets for your website into one single asset. When these assets are combined together, they are reduce to only their necessary components, and can be fetched by the browser in a single call. Keywords: Authors: Talha Mansoor, Jack De Winter +--- When a webpage is created, webpage authors and static page generators will often grab low-level asset files from a trusted location. Between Pelican and Elegant, these files will diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index 994e07f8..0362d1b9 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -1,3 +1,4 @@ +--- Title: Displaying a Series Information for Your Multipart Articles Tags: pelican-plugin, navigation, web-design Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Elegant can be configured to provide a series section on the right sidebar. Only visible in articles that are labelled as part of a series, this indicator allows navigation between the articles in the series. Keywords: Authors: Talha Mansoor, Jack De Winter +--- When writing articles about certain topics, it is advantageous to split a single article into multiple articles. Without splitting the article up, the author would be forced to cram all diff --git a/documentation/content/Supported Plugins/photo-gallery-advanced.md b/documentation/content/Supported Plugins/photo-gallery-advanced.md index 180262c9..a36f4176 100644 --- a/documentation/content/Supported Plugins/photo-gallery-advanced.md +++ b/documentation/content/Supported Plugins/photo-gallery-advanced.md @@ -1,3 +1,4 @@ +--- Title: Advanced Configuration for an Image Gallery Article Tags: pelican-theme, pelican-plugin, photo gallery Category: Supported Plugins @@ -6,6 +7,8 @@ Slug: how-to-use-photos-plugin-advanced Subtitle: Summary: Elegant can be configured to provide a simple display of a series of images, usually photos. Instead of asking the author to manually add a link for each photo, this feature provides basic gallery behavior at low cost to the author. Keywords: photos, gallery, photogallery +Authors: Talha Mansoor, Jack De Winter +--- [TOC] diff --git a/documentation/content/Supported Plugins/photogallery.md b/documentation/content/Supported Plugins/photogallery.md index 0df169e1..49a30cf0 100644 --- a/documentation/content/Supported Plugins/photogallery.md +++ b/documentation/content/Supported Plugins/photogallery.md @@ -1,3 +1,4 @@ +--- Title: Creating a Photo Gallery Article Tags: pelican-theme, pelican-plugin, photo gallery Category: Supported Plugins @@ -6,6 +7,8 @@ Slug: how-to-use-photos-plugin Subtitle: Summary: Elegant can be configured to provide a simple display of a series of images, usually photos. Instead of asking the article's author to manually add a link for each photo, this feature provides basic gallery behavior with almost no cost to the author. Keywords: photos, gallery, photogallery +Authors: Talha Mansoor, Jack De Winter +--- [TOC] diff --git a/documentation/content/Supported Plugins/previous-and-next-article.md b/documentation/content/Supported Plugins/previous-and-next-article.md index b2877093..f20647c9 100644 --- a/documentation/content/Supported Plugins/previous-and-next-article.md +++ b/documentation/content/Supported Plugins/previous-and-next-article.md @@ -1,3 +1,4 @@ +--- Title: Add Previous and Next Article Links Tags: pelican-plugin, navigation, web-design Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Elegant can be configured to provide a Previous and Next article link at the bottom of your articles. This allows for easier navigation through the site if you are looking at articles in published date order. Keywords: Authors: Talha Mansoor, Jack De Winter +--- When reading a series of articles on a website, a reader often desires to view the articles in chronological order by publish date. diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index 1fc51450..6bec1fe8 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -1,3 +1,4 @@ +--- Title: Add Social Sharing Links Tags: pelican-theme, pelican-plugin, social-media Category: Supported Plugins @@ -8,6 +9,7 @@ Subtitle: Summary: Elegant can be configured to provide Social Media sharing links for each of your articles. These links provide a simple way to share on various Social Media platforms while endeavoring to not track users in the process. Keywords: social networks, share posts, Authors: Talha Mansoor, Jack De Winter +--- No blog is complete without buttons or links that invites a reader to share your articles with the friend and colleagues on various social media sites. The problem with these buttons From 0f41d8532c66552e3b71afcba513298a22e259a8 Mon Sep 17 00:00:00 2001 From: Jean Jordaan Date: Tue, 29 Oct 2019 21:46:49 +0700 Subject: [PATCH 22/59] Fix typo in filename --- .../content/Contributing/{inviation.md => invitation.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename documentation/content/Contributing/{inviation.md => invitation.md} (100%) diff --git a/documentation/content/Contributing/inviation.md b/documentation/content/Contributing/invitation.md similarity index 100% rename from documentation/content/Contributing/inviation.md rename to documentation/content/Contributing/invitation.md From 2ba22321b35961ebc18dbb2c25f1db535fad64ed Mon Sep 17 00:00:00 2001 From: Ji Zhou Date: Sun, 6 Oct 2019 18:38:27 +0800 Subject: [PATCH 23/59] feat(code-block): minor refine code-block style --- static/css/admonition.css | 15 +++++++++++++-- static/css/elegant.css | 9 +++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/static/css/admonition.css b/static/css/admonition.css index 98113406..0a2b5653 100644 --- a/static/css/admonition.css +++ b/static/css/admonition.css @@ -17,8 +17,19 @@ div.admonition p a { color: inherit !important; } -div.admonition pre { - margin: 0.4em 1em 0.4em 1em; +div.admonition div.highlight { + margin-left: 1em; + margin-right: 1em; +} + +div.admonition table.highlighttable { + padding-left: 1em; + padding-right: 1em; +} + +div.admonition table.highlighttable div.highlight { + margin-left: 0; + margin-right: 0; } div.admonition p.admonition-title { diff --git a/static/css/elegant.css b/static/css/elegant.css index 6afa22ac..b1f0f4c7 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -145,6 +145,15 @@ td.code { div.highlight { margin-bottom: 20px; } +table.highlighttable { + border: none; +} +table.highlighttable td { + border: none; +} +table.highlighttable tbody > tr:nth-child(odd) > td { + background-color: transparent; +} /* Tags */ .list-of-tags { font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif; From ca28fc8f9d128f2dc6d7e0e3eb969bfa862b2bb0 Mon Sep 17 00:00:00 2001 From: Talha Mansoor Date: Wed, 30 Oct 2019 18:13:34 +0500 Subject: [PATCH 24/59] chore: update packages --- documentation/requirements.txt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/documentation/requirements.txt b/documentation/requirements.txt index 3e8108de..5f6b78f6 100644 --- a/documentation/requirements.txt +++ b/documentation/requirements.txt @@ -1,24 +1,24 @@ -beautifulsoup4==4.8.0 +beautifulsoup4==4.8.1 blinker==1.4 cssmin==0.2.0 ddt==1.2.1 docutils==0.15.2 feedgenerator==1.9 -gitdb2==2.0.5 -GitPython==3.0.1 +gitdb2==2.0.6 +GitPython==3.0.4 invoke==1.3.0 -Jinja2==2.10.1 +Jinja2==2.10.3 livereload==2.6.1 Markdown==3.1.1 MarkupSafe==1.1.1 -pelican==4.1.0 +pelican==4.2.0 Pygments==2.4.2 -python-dateutil==2.8.0 -pytz==2019.2 -six==1.12.0 +python-dateutil==2.8.1 +pytz==2019.3 +six==1.13.0 smartypants==2.0.1 smmap2==2.0.5 -soupsieve==1.9.2 +soupsieve==1.9.5 tornado==6.0.3 typogrify==2.0.7 Unidecode==1.1.1 From 687f77f99e13f06c3985e525b39f08d73e614b64 Mon Sep 17 00:00:00 2001 From: Talha Mansoor Date: Wed, 13 Nov 2019 22:50:02 +0500 Subject: [PATCH 25/59] docs(yaspeller): moved one-off spelling and one-article-off spelling additions to own articles --- .yaspeller.json | 112 +----------------- CHANGELOG.md | 29 +++-- .../content/101 Quick Start/testimonials.md | 42 +++---- .../favicons-speed-dial-icons.md | 5 +- .../{meta-data.md => metadata.md} | 0 .../Advanced Features/modified-date.md | 2 +- .../seo-social-media-tags.md | 2 +- .../content/Components/article-subtitle.md | 4 +- .../content/Components/filter-tags.md | 10 +- .../Components/line-numbers-code-snippet.md | 8 +- .../content/Components/web-safe-fonts.md | 11 +- .../Connecting With Your Readers/rss-feeds.md | 9 +- .../social-profiles-sidebar-svg.md | 4 +- .../Contributing/community-driven-project.md | 11 +- .../contributing-to-the-project.md | 4 +- .../Contributing/documentation-status.md | 2 +- .../content/Contributing/elegant-logo.md | 22 +++- .../content/Contributing/invitation.md | 2 +- .../content/Contributing/live-reload-gulp.md | 8 +- .../Contributing/travis-ci-and-doc-website.md | 4 +- ...travis-to-trigger-build-in-another-repo.md | 4 +- .../content/Contributing/why-look-and-feel.md | 12 +- .../Release Notes/release-notes-2.0.0.md | 37 +++--- .../Release Notes/release-notes-2.3.0.md | 4 +- .../Release Notes/release-notes-2.4.0.md | 6 +- .../Release Notes/release-notes-2.5.0.md | 2 +- .../Release Notes/release-notes-3.2.0.md | 6 +- .../Release Notes/release-notes-4.0.0.md | 9 +- .../Supported Plugins/assets-plugin.md | 4 +- .../Supported Plugins/author-blurbs.md | 2 +- .../Supported Plugins/multi-part-plugin.md | 2 +- .../content/Supported Plugins/photogallery.md | 2 +- .../Supported Plugins/share-post-plugin.md | 2 +- 33 files changed, 159 insertions(+), 224 deletions(-) rename documentation/content/Advanced Features/{meta-data.md => metadata.md} (100%) diff --git a/.yaspeller.json b/.yaspeller.json index 90db88e3..9023b5ae 100644 --- a/.yaspeller.json +++ b/.yaspeller.json @@ -15,163 +15,78 @@ "ignoreUppercase": true, "maxRequests": 5, "dictionary": [ - "7rack", - "aggregators", - "Alexandr", - "amongst", "analytics", - "andreburgaud", - "André", "AsciiDoc", - "Ashwin", - "ashwinvis", - "Astori", - "autoprefixer", - "AWegnerGitHub", - "Ayub", - "Baskerville", "BestAzon", "bestazon", "bing", - "Blais", "blog-o-matic", - "bnice5000", "BrowserSync", - "Burgaud", - "cahuk", - "calfzhou", - "calibre", - "Carr", - "Carr's", "cd", "changelog", "ci", "codebase", - "CodeHilite", - "codehilite", "commitizen", - "committer", "config", "crafted", "customizable", "customizations", - "debiatan", "delinkification", "dev", - "Dijk", "disqus", - "disqus_identifier", "div", - "dogfooding", - "emoji", "exif", "extract_toc", - "Fami", "favicon", - "Fayad", - "fayadfami", - "flexbox", - "FontAwesome", "foss", "FreeLists", "freelists", "fucking", - "Gan", - "Garamond", - "Gert", - "gertvdijk", "GitHub", "github", "github.com", "google", - "gravatar", - "gshen42", "gulpjs", "Gómez", - "Hi Talha", - "Hi", - "html5validator", "https", - "Iconifier.net", - "ijvxwtg", - "ImageOptim", - "imgur", - "Inkscape", - "io", "iOS", "iranzo", - "Jed", - "Jeremy", - "jerith", "Jinja", "jinja2", - "Jinkun", "jQuery", "js", - "Jérémie", - "kafran", - "Kamran", - "Kolmar", "LaTeX", - "Lauwers", - "Lechón", - "Lekhonkhobe", - "leotrs", - "liangfu", "lightbox", - "Lin", - "LinkedIn", - "linuxabc", "LiveReload", "MacBook", "mailchimp", "maintainer", "maintainers", "Makefile", - "mansoor", + "Mansoor", "markdown", "matic", "Matija", "md", "Melissa", - "meta", "metadata", - "metatag", - "metatags", "Miguel", - "minification", - "Mohamed", - "Mohanan", "monetization", - "Morehead", - "Métaireau", - "Narula", "navbar", - "Ndung'u", - "Neha", "netlify", "newbies", "newline", - "NodeJS", - "NoDerivatives", "nofollow", - "NonCommercial", - "octothorpe", "OneLink", "onelink", "organizational", - "os", "Pablo", "Pablo's", "pelicanconf", "permalinks", "peru", - "phdbreak", "photogallery", "piexif", - "piwik", - "PostCSS", - "Pubcon", "Pygments", "README", "rebase", @@ -180,37 +95,29 @@ "reST", "reStructuredText", "resubmitting", - "rmorehead", "roadmap", "rss", "screenshots", "setuptools", - "ShareAlike", - "Shen", "sidebar", "sidebar's", "sidebars", - "silverhook", "sitemap", "situational", - "Smalllike", "solarized", - "SourceCodePro", "StatCounter", "statcounter", "submitter", "sudo", - "svg", - "svgexport", - "svgo", + "Šuklje", "takeaways", "talha", + "Talha", "Talha's", "talha131", "talham", "talham_", "themed", - "Thurgood", "timestamps", "Tipue", "tipue", @@ -218,8 +125,6 @@ "toc", "tox", "travis", - "tshepang", - "tshepang_dev", "uncollapsed", "understandability", "unhide", @@ -227,19 +132,10 @@ "validator", "versioning", "virtualenv", - "w3c_validator", "webmasters", "Wegner", "whitespace", - "xiang", - "xiaoweiz", - "Xin", "yaml", - "yaspeller", - "Yanxin", - "Yue", - "yuex", - "Zhou", - "Šuklje" + "yaspeller" ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 628e4466..adf778a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ - **clean URL:** default URL of categories, tags and archives fails on some servers ([3c7df6a](https://github.com/Pelican-Elegant/elegant/commit/3c7df6a)), closes [#280](https://github.com/Pelican-Elegant/elegant/issues/280) [#276](https://github.com/Pelican-Elegant/elegant/issues/276) - **comments:** W3C validation errors ([76a1f26](https://github.com/Pelican-Elegant/elegant/commit/76a1f26)) - **disqus:** remove SITEURL condition to show Disqus comments section ([753d5a5](https://github.com/Pelican-Elegant/elegant/commit/753d5a5)) -- **lang:** do not override default value of DEFAULT_LANG set by Pelican ([d6c60c2](https://github.com/Pelican-Elegant/elegant/commit/d6c60c2)) +- **lang:** do not override default value of DEFAULT_LANG set by Pelican ([d6c60c2](https://github.com/Pelican-Elegant/elegant/commit/d6c60c2)) - **social:** reduce icon sizes in the sidebar ([c769ba3](https://github.com/Pelican-Elegant/elegant/commit/c769ba3)) - **social:** use nofollow for social links in the sidebar ([50cff87](https://github.com/Pelican-Elegant/elegant/commit/50cff87)) - **social:** W3C validation error ([ec4521e](https://github.com/Pelican-Elegant/elegant/commit/ec4521e)) @@ -27,23 +27,22 @@ - **admonition:** add box shadow ([246f826](https://github.com/Pelican-Elegant/elegant/commit/246f826)) - **admonition:** border color should match the title color ([1adadbe](https://github.com/Pelican-Elegant/elegant/commit/1adadbe)) - **admonition:** increase contrast of title ([7fb82cc](https://github.com/Pelican-Elegant/elegant/commit/7fb82cc)) -- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) +- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) - **clean url:** support clean URL for search page ([088791e](https://github.com/Pelican-Elegant/elegant/commit/088791e)) - **comments:** add support for utterances comment system ([a2151cc](https://github.com/Pelican-Elegant/elegant/commit/a2151cc)), closes [#288](https://github.com/Pelican-Elegant/elegant/issues/288) - **quotes:** improve style and remove font-awesome for quote icon ([9ef3ac8](https://github.com/Pelican-Elegant/elegant/commit/9ef3ac8)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) - **social:** add icons for 7 more websites ([8dcf8fa](https://github.com/Pelican-Elegant/elegant/commit/8dcf8fa)), closes [#494](https://github.com/Pelican-Elegant/elegant/issues/494) -- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) +- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) - **table:** add style rule to make tables pop out ([6a8500b](https://github.com/Pelican-Elegant/elegant/commit/6a8500b)), closes [#440](https://github.com/Pelican-Elegant/elegant/issues/440) ### Performance Improvements -- **admonition:** add attributes to svg iamges ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) +- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) - **requests:** remove font awesome ([7c20145](https://github.com/Pelican-Elegant/elegant/commit/7c20145)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) ### BREAKING CHANGES -- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result - in one less web request, which in turn will improve your websites performance. +- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result in one less web request, which in turn will improve your websites performance. - **social:** Style customization and configuration of social icons in the sidebar has changed. @@ -58,7 +57,7 @@ New icons have better colors and bigger sizes. ### Bug Fixes -- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) +- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) - **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) - **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) @@ -126,8 +125,8 @@ New icons have better colors and bigger sizes. - **footer:** open exit links in new tab ([8fd9f28](https://github.com/Pelican-Elegant/elegant/commit/8fd9f28)) - **footer:** optionally show the host information ([9de2dab](https://github.com/Pelican-Elegant/elegant/commit/9de2dab)) - **footer:** powered by message is always aligned to the right ([5e47b7c](https://github.com/Pelican-Elegant/elegant/commit/5e47b7c)) -- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) -- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) +- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) +- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) - **onelink:** add Amazon Affiliate Disclosure ([cbfa6ac](https://github.com/Pelican-Elegant/elegant/commit/cbfa6ac)) # Version 2.3.0 @@ -141,7 +140,7 @@ New icons have better colors and bigger sizes. ## Features -- New: FontAwesome updated to version 4.7.0 +- New: FontAwesome updated to version 4.7.0 - New: `Photos` plugin support for photo gallery creation - New: Lightbox support for `Photos` plugin - Fixed: Amazon One Link div is in the header @@ -242,7 +241,7 @@ New icons have better colors and bigger sizes. - Next and previous article navigation is placed below comments section so that article's content and comments appear together - Article title and site name in `` tag is separated by `·` which is cleaner and more subtle than `-` - Subtitle of articles and pages is added in `<title>` tag along with main title -- Description meta tag on Home Page uses `SITE_DESCRIPTION` +- Description metadata tag on Home Page uses `SITE_DESCRIPTION` - Bug fix: Expand comments section if URL points to a comment - Bug fix: CSS style of links in an unordered list inside article content is different from article links @@ -258,13 +257,13 @@ New icons have better colors and bigger sizes. # Version 1.1 - Add template for pages. Pages do not have tags, category and Disqus comments -- Keep style of a hyperlink in `modified` meta data consisted with the theme -- Add `keywords` meta tag that uses keywords, tags and category attribute of articles and pages +- Keep style of a hyperlink in `modified` metadata consisted with the theme +- Add `keywords` metadata tag that uses keywords, tags and category attribute of articles and pages - Validate search form for empty strings - If `RECENT_ARTICLES_COUNT` is undefined, set it to 10. So that Pelican does not throw critical error - Bug fix: Path of search.html in search form action should always be absolute -- Bug fix: Copyright meta tag should be set to the author, instead of the license -- Bug fix: Close meta tags +- Bug fix: Copyright metadata tag should be set to the author, instead of the license +- Bug fix: Close metadata tags - Bug fix: ID of search form in 404 page should be different from the ID of search form in main navigation - Bug fix: Links in ordered list in an article do not conform to the link style in rest of the article diff --git a/documentation/content/101 Quick Start/testimonials.md b/documentation/content/101 Quick Start/testimonials.md index 81b0a0de..f5e5f14b 100644 --- a/documentation/content/101 Quick Start/testimonials.md +++ b/documentation/content/101 Quick Start/testimonials.md @@ -11,27 +11,27 @@ authors: Talha Mansoor > Thanks for this amazing project. -[Sebastian Lauwers](https://github.com/Pelican-Elegant/elegant/issues/111#issuecomment-40943827) +[Sebastian Lauwers](https://github.com/Pelican-Elegant/elegant/issues/111#issuecomment-40943827) <!-- yaspeller ignore --> > Let me start by saying your theme is awesome. I would like to use it for my blog. -[bnice5000](https://github.com/Pelican-Elegant/elegant/issues/115#issue-30103539) +[bnice5000](https://github.com/Pelican-Elegant/elegant/issues/115#issue-30103539) <!-- yaspeller ignore --> > i love the elegant theme -[7rack](https://github.com/Pelican-Elegant/elegant/issues/118#issue-32226954) +[7rack](https://github.com/Pelican-Elegant/elegant/issues/118#issue-32226954) <!-- yaspeller ignore --> > I tried your pelican theme elegant, it's awesome, clean and elegant. [悟道洞穴人](https://github.com/Pelican-Elegant/elegant/pull/2#issue-19502670) -<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> yours is the most innovative Pelican theme I've seen yet: <a href="http://t.co/worboJFRuX">http://t.co/worboJFRuX</a>. I love the search feature.</p>— Tshepang Lekhonkhobe (@tshepang_dev) <a href="https://twitter.com/tshepang_dev/statuses/384347807387095040">September 29, 2013</a></blockquote> +<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> yours is the most innovative Pelican theme I've seen yet: <a href="http://t.co/worboJFRuX">http://t.co/worboJFRuX</a>. I love the search feature.</p>— Tshepang Lekhonkhobe (@tshepang_dev) <a href="https://twitter.com/tshepang_dev/statuses/384347807387095040">September 29, 2013</a></blockquote> <!-- yaspeller ignore --> <script async src="//platform.twitter.com/widgets.js"></script> -<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Thanks for the Elegant theme. It is really elegant :).</p>— Simon Cahuk (@cahuk) <a href="https://twitter.com/cahuk/statuses/391533360830775296">October 19, 2013</a></blockquote> +<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Thanks for the Elegant theme. It is really elegant :).</p>— Simon Cahuk (@cahuk) <a href="https://twitter.com/cahuk/statuses/391533360830775296">October 19, 2013</a></blockquote> <!-- yaspeller ignore --> <script async src="//platform.twitter.com/widgets.js"></script> -<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Hi, Elegant is a cool theme. Checking it out.</p>— Fayad Fami (@fayadfami) <a href="https://twitter.com/fayadfami/statuses/451420620241137664">April 2, 2014</a></blockquote> +<blockquote class="twitter-tweet" lang="en"><p><a href="https://twitter.com/talham_">@talham_</a> Hi, Elegant is a cool theme. Checking it out.</p>— Fayad Fami (@fayadfami) <a href="https://twitter.com/fayadfami/statuses/451420620241137664">April 2, 2014</a></blockquote> <!-- yaspeller ignore --> <script async src="//platform.twitter.com/widgets.js"></script> > I'm hugely impressed with your work on the theme; thank you for opening the @@ -41,58 +41,58 @@ J L > Thank you very much for your reply and for your great Pelican theme !) -Alexandr +Alexandr <!-- yaspeller ignore --> > pelican-elegant is the best pelican theme -vim xiang +vim xiang <!-- yaspeller ignore --> > as I'm just starting using Pelican, I have to say: great work on the elegant theme. -Yanxin +Yanxin <!-- yaspeller ignore --> > I am using the very nice elegant theme for pelican that you wrote. -Brian Blais +Brian Blais <!-- yaspeller ignore --> > It is really awesome! -Jinkun Lin +Jinkun Lin <!-- yaspeller ignore --> > thanks for writing the "elegant" theme -[Jed Brown](https://plus.google.com/u/0/+JedBrown/) +[Jed Brown](https://plus.google.com/u/0/+JedBrown/) <!-- yaspeller ignore --> -> Hi Talha, thanks to your great theme, I made my homepage better :) I was once +> Hi Talha, thanks to your great theme, I made my homepage better :) I was once <!-- yaspeller ignore --> > trying to make a theme of my own. But never can i make such an awesome one > like #Elegant#. -[liangfu](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1451253675) +[liangfu](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1451253675) <!-- yaspeller ignore --> > Thanks for your beautiful work! -[xiaoweiz](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1429880788) +[xiaoweiz](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1429880788) <!-- yaspeller ignore --> > Awesome work -[Kevin Ndung'u](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1364943390) +[Kevin Ndung'u](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1364943390) <!-- yaspeller ignore --> > Nice work! -[Mohamed](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1340387082) +[Mohamed](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1340387082) <!-- yaspeller ignore --> > Thanks dude, an awesome theme! -[linuxabc](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1123824877) +[linuxabc](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1123824877) <!-- yaspeller ignore --> > Really cool theme. [Calf](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1117848663) -> This theme is fucking awesome. I will start using it =). Thank you +> This theme is fucking awesome. I will start using it =). Thank you <!-- yaspeller ignore --> -[Kolmar Kafran](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1116584083) +[Kolmar Kafran](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1116584083) <!-- yaspeller ignore --> > Thank you so much for this wonderful pelican theme -[phdbreak](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1080851511) +[phdbreak](http://oncrashreboot.com/elegant-best-pelican-theme-features#comment-1080851511) <!-- yaspeller ignore --> diff --git a/documentation/content/Advanced Features/favicons-speed-dial-icons.md b/documentation/content/Advanced Features/favicons-speed-dial-icons.md index d6cbb834..4d210aa3 100644 --- a/documentation/content/Advanced Features/favicons-speed-dial-icons.md +++ b/documentation/content/Advanced Features/favicons-speed-dial-icons.md @@ -36,5 +36,6 @@ Your images should have these names, 1. `apple-touch-icon.png` 1. `favicon.ico` -I highly recommend you to use [Iconifier.net](http://iconifier.net/) to -generate the set of images. +I highly recommend you to use +[Iconifier.net](http://iconifier.net/) <!-- yaspeller ignore --> +to generate the set of images. diff --git a/documentation/content/Advanced Features/meta-data.md b/documentation/content/Advanced Features/metadata.md similarity index 100% rename from documentation/content/Advanced Features/meta-data.md rename to documentation/content/Advanced Features/metadata.md diff --git a/documentation/content/Advanced Features/modified-date.md b/documentation/content/Advanced Features/modified-date.md index 91c822c3..42258fd2 100644 --- a/documentation/content/Advanced Features/modified-date.md +++ b/documentation/content/Advanced Features/modified-date.md @@ -1,6 +1,6 @@ --- Title: How does modified metadata works -Tags: web-design, meta-data, date +Tags: web-design, metadata, date Category: Advanced Features Date: 2014-04-19 14:52 Slug: how-does-modified-metadata-works diff --git a/documentation/content/Analytics SEO SMO/seo-social-media-tags.md b/documentation/content/Analytics SEO SMO/seo-social-media-tags.md index 413d6c08..c04e91d6 100644 --- a/documentation/content/Analytics SEO SMO/seo-social-media-tags.md +++ b/documentation/content/Analytics SEO SMO/seo-social-media-tags.md @@ -23,7 +23,7 @@ social media. ## Social Media Optimization (SMO) -Inspired by the post ["What is the New SEO? Pubcon 2013 +Inspired by the post ["What is the New SEO? Pubcon 2013 <!-- yaspeller ignore --> Takeaways"](https://medium.com/on-startups/f15264e5d790), I looked into the tags that social media sites use. They can be broadly divided into two categories, [Open Graph protocol](http://ogp.me/) and [Twitter diff --git a/documentation/content/Components/article-subtitle.md b/documentation/content/Components/article-subtitle.md index 3b774b33..fc11543c 100644 --- a/documentation/content/Components/article-subtitle.md +++ b/documentation/content/Components/article-subtitle.md @@ -8,8 +8,8 @@ Category: Components authors: Talha Mansoor --- -Pelican lets you define title of your article in the meta data. Elegant adds -subtitle support. Just define `subtitle` in your article's meta data and it +Pelican lets you define title of your article in the metadata. Elegant adds +subtitle support. Just define `subtitle` in your article's metadata and it will appear along with your title. Here is an example, ![Article subtitle diff --git a/documentation/content/Components/filter-tags.md b/documentation/content/Components/filter-tags.md index bf9f5e3e..a1a9a0b4 100644 --- a/documentation/content/Components/filter-tags.md +++ b/documentation/content/Components/filter-tags.md @@ -18,13 +18,13 @@ will automatically filter the list. For example, this is how my tags page looks like -![Tags view -unfiltered]({static}/images/elegant-theme_tags-live-filter-default.png) +![Tags view unfiltered]({static}/images/elegant-theme_tags-live-filter-default.png) -As soon as I type "os", all other tags are filtered out +As soon as I type +"os", <!-- yaspeller ignore --> +all other tags are filtered out -![Tags view filtered for -"os"]({static}/images/elegant-theme_tags-live-filter-filtered.png) +![Tags view filtered for "os"]({static}/images/elegant-theme_tags-live-filter-filtered.png) <!-- yaspeller ignore --> With live filter, your reader will have no difficulty in picking up his desired tag from the list, even if your site has hundreds of tags. diff --git a/documentation/content/Components/line-numbers-code-snippet.md b/documentation/content/Components/line-numbers-code-snippet.md index b8641e41..2014ca55 100644 --- a/documentation/content/Components/line-numbers-code-snippet.md +++ b/documentation/content/Components/line-numbers-code-snippet.md @@ -5,7 +5,7 @@ Category: Components Date: 2013-11-05 17:36 Slug: display-line-numbers-in-code-snippets Summary: reStructuredText and Markdown have directives that generate line numbers for code blocks. Use them to display line numbers in code snippets. -Keywords: codehilite, python-markdown +Keywords: code-snippets, python-markdown authors: Talha Mansoor --- @@ -33,8 +33,10 @@ markup. Use `linenos` flag to switch on line numbers for the snippet. ## Markdown [Python-Markdown](https://github.com/Python-Markdown/markdown/) uses -[CodeHilite](https://python-markdown.github.io/extensions/code_hilite/) -extension for syntax highlighting. Setup CodeHilite, then use Shebang `!#` to +[CodeHilite](https://python-markdown.github.io/extensions/code_hilite/) <!-- yaspeller ignore --> +extension for syntax highlighting. Setup +CodeHilite <!-- yaspeller ignore --> +, then use Shebang `!#` to generate line numbers. :::markdown diff --git a/documentation/content/Components/web-safe-fonts.md b/documentation/content/Components/web-safe-fonts.md index 67813245..a24dee23 100644 --- a/documentation/content/Components/web-safe-fonts.md +++ b/documentation/content/Components/web-safe-fonts.md @@ -10,6 +10,11 @@ authors: Talha Mansoor Elegant uses commonly available typefaces in every style rule. It has a list of closely matching fonts in the fallback list. -For examples Baskerville is the -first choice for headings. But if reader does not have Baskerville installed, -Garamond will be used. If that too fails then Georgia will be used. +For examples +Baskerville <!-- yaspeller ignore --> +is the +first choice for headings. But if reader does not have +Baskerville <!-- yaspeller ignore --> +installed, +Garamond <!-- yaspeller ignore --> +will be used. If that too fails then Georgia will be used. diff --git a/documentation/content/Connecting With Your Readers/rss-feeds.md b/documentation/content/Connecting With Your Readers/rss-feeds.md index be5e3bd7..e11e3f70 100644 --- a/documentation/content/Connecting With Your Readers/rss-feeds.md +++ b/documentation/content/Connecting With Your Readers/rss-feeds.md @@ -4,15 +4,18 @@ Tags: pelican-theme, font-awesome, web-design Category: Connecting With Your Readers Date: 2014-03-17 15:28 Slug: how-to-show-rss-feeds-icon -Comment_id: ijvxwtg-how-to-show-rss-feeds-icon +Comment_id: how-to-show-rss-feeds-icon Summary: Elegant supports RSS and Atom feeds for your posts, categories and tags authors: Talha Mansoor --- RSS feeds is the oldest and arguably the most used format to publish blog -updates. Its use is not limited to RSS aggregators and readers. Tools like +updates. Its use is not limited to RSS +aggregators <!-- yaspeller ignore --> +and readers. Tools like [IFTTT](https://ifttt.com/recipes?channel=feed) and -[Calibre](http://manual.calibre-ebook.com/news.html) increases RSS feeds' power +[Calibre](http://manual.calibre-ebook.com/news.html) <!-- yaspeller ignore --> +increases RSS feeds' power and versatility by manifolds. To enable RSS feeds, see [Feed diff --git a/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md b/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md index bf8b237b..fc82be2a 100644 --- a/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md +++ b/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md @@ -28,7 +28,9 @@ Elegant displays the widget in the sidebar. Each icon is a link to a social media profile with an optional title attribute. Icons use muted color which changes when user hovers over them. -Here is an example of hovering over LinkedIn icon. +Here is an example of hovering over +LinkedIn <!-- yaspeller ignore --> +icon. <img style="width: 177px; height: 201px" src="{static}/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png" alt="Hover over LinkedIn in the Sidebar" /> diff --git a/documentation/content/Contributing/community-driven-project.md b/documentation/content/Contributing/community-driven-project.md index d4bc8fb1..1f5706ad 100644 --- a/documentation/content/Contributing/community-driven-project.md +++ b/documentation/content/Contributing/community-driven-project.md @@ -16,7 +16,9 @@ Authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje [Talha Mansoor][talha131] published the first version of Elegant in 2012. It grew in popularity in a short time, due to its clean and functional style. -In November 2018, [Matija Šuklje][silverhook] called Elegant's community into a [discussion about the future of the theme][future]. Response was immense. Talha was the first to support the proposal of changing the development model from a single-developer to a community-led project following the [bazaar development model](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar). +In November 2018, +[Matija Šuklje][silverhook] <!-- yaspeller ignore --> +called Elegant's community into a [discussion about the future of the theme][future]. Response was immense. Talha was the first to support the proposal of changing the development model from a single-developer to a community-led project following the [bazaar development model](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar). [He][talha131] moved Elegant from a personal repository to a separate organization [Pelican-Elegant][elegant-org], and added active community members to the [team][team]. @@ -25,11 +27,12 @@ This way, the bus factor of the project has greatly improved. [team]: https://github.com/orgs/Pelican-Elegant/people [elegant-org]: https://github.com/Pelican-Elegant/ [pelican]: https://getpelican.com -[ashwinvis]: https://ashwinvis.github.io/ -[calfzhou]: http://gocalf.com + +[ashwinvis]: https://ashwinvis.github.io/ <!-- yaspeller ignore --> +[calfzhou]: http://gocalf.com <!-- yaspeller ignore --> [talha131]: https://www.oncrashreboot.com [iranzo]: https://iranzo.github.io/ -[silverhook]: https://matija.suklje.name +[silverhook]: https://matija.suklje.name <!-- yaspeller ignore --> [future]: https://github.com/talha131/pelican-elegant/issues/173 ## New Governance Model diff --git a/documentation/content/Contributing/contributing-to-the-project.md b/documentation/content/Contributing/contributing-to-the-project.md index 136ac0cd..5612c960 100644 --- a/documentation/content/Contributing/contributing-to-the-project.md +++ b/documentation/content/Contributing/contributing-to-the-project.md @@ -192,8 +192,8 @@ sure that the submitted changes are solid. - [Pre-commit]({filename}./pre-commit.md) on the project source - [yaspeller]({filename}./ya-spell-check.md) on the project source - publish for the documentation site -- [w3c_validator](https://pypi.org/project/Online-W3C-Validator/) on the documentation site -- [html5validator](https://pypi.org/project/html5validator/) on the documentation site +- [w3c_validator](https://pypi.org/project/Online-W3C-Validator/) on the documentation site <!-- yaspeller ignore --> +- [html5validator](https://pypi.org/project/html5validator/) on the documentation site <!-- yaspeller ignore --> More information on how our team uses Travis CI is detailed [in this article]({filename}./travis-ci-and-doc-website.md). diff --git a/documentation/content/Contributing/documentation-status.md b/documentation/content/Contributing/documentation-status.md index ed049a8a..d8588890 100644 --- a/documentation/content/Contributing/documentation-status.md +++ b/documentation/content/Contributing/documentation-status.md @@ -40,7 +40,7 @@ Status: draft | Extra Customization | custom-404.md | Rewritten | Add A Custom 404 Error Page to Your Site | - | | Extra Customization | custom-style.md | - | Customize Style | - | | Extra Customization | customize-elegant.md | old? | How to Customize Elegant | - | -| Extra Customization | meta-data.md | - | Metadata | - | +| Extra Customization | metadata.md | - | Metadata | - | | Extra Customization | reading-time.md | Rewritten, Pending, [302](https://github.com/Pelican-Elegant/elegant/issues/302) | Add A Reading Time Estimate to Your Articles | - | | Footer | add-license.md | - | Add License to your Site | - | | Footer | hosted-on.md | - | Show Your Host Information | - | diff --git a/documentation/content/Contributing/elegant-logo.md b/documentation/content/Contributing/elegant-logo.md index 4d5c8f35..a160126a 100644 --- a/documentation/content/Contributing/elegant-logo.md +++ b/documentation/content/Contributing/elegant-logo.md @@ -10,11 +10,15 @@ Keywords: Authors: Talha Mansoor --- -Elegant community held a [discussion](https://github.com/Pelican-Elegant/elegant/issues/190) to decide a Logo for the project. We settled on following icon from [Pelican by Smalllike from the Noun Project](https://thenounproject.com/search/?q=pelican&i=2213839). +Elegant community held a [discussion](https://github.com/Pelican-Elegant/elegant/issues/190) to decide a Logo for the project. We settled on following icon from +[Pelican by Smalllike from the Noun Project](https://thenounproject.com/search/?q=pelican&i=2213839) <!-- yaspeller ignore --> +. -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 80" x="0px" y="0px" width="250" height="250"><g><path d="M39,25H24V20H35A11.013,11.013,0,0,0,46,9V3a1,1,0,0,0-1-1H19a5.006,5.006,0,0,0-5,5V38A11.013,11.013,0,0,0,25,49h4v7H27a3,3,0,0,0,0,6H37a3,3,0,0,0,0-6H35V49H50V36A11.013,11.013,0,0,0,39,25Zm0,2a8.953,8.953,0,0,1,5.644,2H35v2H46.478a8.962,8.962,0,0,1,1,2H39v2h8.941A8.935,8.935,0,0,1,48,36v1H44v2h4v2H29a3,3,0,0,1-3-3V27Zm-4-9H24V10H43.941A9.01,9.01,0,0,1,35,18ZM24,4H44V8H24ZM16,7a3,3,0,0,1,3-3h3V25H16ZM37,58a1,1,0,0,1,0,2H27a1,1,0,0,1,0-2Zm-4-2H31V49h2Zm15-9H25a9.01,9.01,0,0,1-9-9V27h2v7h2V27h4V38a5.006,5.006,0,0,0,5,5H48Z"/><rect x="18" y="36" width="2" height="2"/><circle cx="20.5" cy="7.5" r="1.5"/></g><text x="0" y="79" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">Created by Smalllike</text><text x="0" y="84" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">from the Noun Project</text></svg> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 80" x="0px" y="0px" width="250" height="250"><g><path d="M39,25H24V20H35A11.013,11.013,0,0,0,46,9V3a1,1,0,0,0-1-1H19a5.006,5.006,0,0,0-5,5V38A11.013,11.013,0,0,0,25,49h4v7H27a3,3,0,0,0,0,6H37a3,3,0,0,0,0-6H35V49H50V36A11.013,11.013,0,0,0,39,25Zm0,2a8.953,8.953,0,0,1,5.644,2H35v2H46.478a8.962,8.962,0,0,1,1,2H39v2h8.941A8.935,8.935,0,0,1,48,36v1H44v2h4v2H29a3,3,0,0,1-3-3V27Zm-4-9H24V10H43.941A9.01,9.01,0,0,1,35,18ZM24,4H44V8H24ZM16,7a3,3,0,0,1,3-3h3V25H16ZM37,58a1,1,0,0,1,0,2H27a1,1,0,0,1,0-2Zm-4-2H31V49h2Zm15-9H25a9.01,9.01,0,0,1-9-9V27h2v7h2V27h4V38a5.006,5.006,0,0,0,5,5H48Z"/><rect x="18" y="36" width="2" height="2"/><circle cx="20.5" cy="7.5" r="1.5"/></g><text x="0" y="79" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">Created by Smalllike</text><text x="0" y="84" fill="#000000" font-size="5px" font-weight="bold" font-family="'Helvetica Neue', Helvetica, Arial-Unicode, Arial, Sans-serif">from the Noun Project</text></svg> <!-- yaspeller ignore --> -Building on top of it, some modifications were made to it using [Inkscape](https://inkscape.org/). +Building on top of it, some modifications were made to it using +[Inkscape](https://inkscape.org/) <!-- yaspeller ignore --> +. <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 67 67" width="250" height="250"> <rect width="57.681" height="62.899" x="2.802" y="-11.841" ry="0" fill="none"/> @@ -32,7 +36,9 @@ Building on top of it, some modifications were made to it using [Inkscape](https <path d="M26.5 48.525c-1.283-.147-2.925-.767-4.049-1.53-1.516-1.03-2.8-2.727-3.402-4.497-.47-1.38-.478-1.525-.478-7.973V28.63h1.942v7.04H22.536v-7.04H26.5v5.846c.002 6.462-.004 6.38.519 7.404.604 1.186 1.532 2.001 2.87 2.522l.535.209 10.014.022 10.013.022V48.615l-11.672-.01c-6.42-.006-11.946-.042-12.28-.08zm-3.964-9.903v-1.011H20.513V39.634H22.536zM18.57 17.394c0-10.175-.029-9.59.525-10.425.316-.475.804-.863 1.403-1.115.329-.138.616-.163 2.18-.19l1.8-.03v1.342c0 .739-.033 1.342-.072 1.342-.04 0-.128-.087-.198-.193-.214-.326-.805-.56-1.308-.518-1.841.153-1.884 2.863-.048 3.039.513.05.9-.085 1.234-.429.148-.153.298-.279.331-.28.033 0 .06 3.75.06 8.334v8.335h-5.906z" fill="#fff" stroke="#fff" stroke-width=".08093600000000001"/> </svg> -The we cleaned it using [svgo](https://github.com/svg/svgo) tool. It reduced file size by around 50%. +The we cleaned it using +[svgo](https://github.com/svg/svgo) <!-- yaspeller ignore --> +tool. It reduced file size by around 50%. ```bash $ svgo -i elegant_logo.svg --pretty @@ -42,13 +48,17 @@ Done in 80 ms! 8.029 KiB - 52.5% = 3.815 KiB ``` -Then, we converted SVG to PNG using [svgexport](https://github.com/shakiba/svgexport). +Then, we converted SVG to PNG using +[svgexport](https://github.com/shakiba/svgexport) <!-- yaspeller ignore --> +. ```bash $ svgexport elegant_logo.svg elegant_logo.png 100% ``` -The resultant file was around 1MB is size. So we optimized it using [ImageOptim](https://imageoptim.com/mac), which reduced the file size by 98%. +The resultant file was around 1MB is size. So we optimized it using +[ImageOptim](https://imageoptim.com/mac) <!-- yaspeller ignore --> +, which reduced the file size by 98%. Your can download the files from our Git repository. diff --git a/documentation/content/Contributing/invitation.md b/documentation/content/Contributing/invitation.md index efca46ef..c3641631 100644 --- a/documentation/content/Contributing/invitation.md +++ b/documentation/content/Contributing/invitation.md @@ -39,7 +39,7 @@ If using the Elegant theme and reading this invitation inspires you to contribut the addition of your creativity to our team. No coding skills are required to volunteer to help with Elegant. The theme is mostly composed of templates written in [Jinja](http://jinja.pocoo.org/) utilizing -[metadata]({filename}../Advanced Features/meta-data.md) associated with each article. We are +[metadata]({filename}../Advanced Features/metadata.md) associated with each article. We are confident that if you want to help, we can get you up and running in no time! ## Where Do I Start? diff --git a/documentation/content/Contributing/live-reload-gulp.md b/documentation/content/Contributing/live-reload-gulp.md index e74c2042..e8310d74 100644 --- a/documentation/content/Contributing/live-reload-gulp.md +++ b/documentation/content/Contributing/live-reload-gulp.md @@ -12,7 +12,7 @@ Elegant has setup [gulp.js](https://gulpjs.com/) and [BrowserSync](https://www.b You need to run following steps only once, to setup the LiveReload using gulp. -### Step 1: Install NodeJS and Yarn +### Step 1: Install NodeJS and Yarn <!-- yaspeller ignore --> Install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) on your system. @@ -78,7 +78,11 @@ You can test website on a slower network connection. To access open <http://loca ## Is gulp.js necessary to use? -We have plans to use gulp.js to utilize tools like PostCSS and Autoprefixer, in future. Currently we use gulp.js to watch for file changes. +We have plans to use gulp.js to utilize tools like +PostCSS <!-- yaspeller ignore --> +and +Autoprefixer <!-- yaspeller ignore --> +, in future. Currently we use gulp.js to watch for file changes. Pelican helper scripts does not watch for file changes. BrowserSync only watches the files that it servers, i.e. HTML, CSS and JS files. This means you need an external tool like gulp.js to watch Markdown and Jinja2 files. diff --git a/documentation/content/Contributing/travis-ci-and-doc-website.md b/documentation/content/Contributing/travis-ci-and-doc-website.md index 15b29897..ce27140c 100644 --- a/documentation/content/Contributing/travis-ci-and-doc-website.md +++ b/documentation/content/Contributing/travis-ci-and-doc-website.md @@ -19,7 +19,9 @@ comment_id: travis-ci-and-doc-website [Elegant](https://github.com/Pelican-Elegant/elegant) theme for pelican has been undergoing a big change from individual-driven effort to community, as part of this, one of the tasks to accomplish, has been the decoupling from author blog to project site for documentation. -As we wanted this process to be both automated and allowed us to demonstrate via dogfooding that the theme works and how it looks, the idea was to automate the rendering of pelican website with new documents. +As we wanted this process to be both automated and allowed us to demonstrate via +dogfooding <!-- yaspeller ignore --> +that the theme works and how it looks, the idea was to automate the rendering of pelican website with new documents. # Under the hood diff --git a/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md b/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md index f49981e5..d2a29ad5 100644 --- a/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md +++ b/documentation/content/Contributing/travis-to-trigger-build-in-another-repo.md @@ -69,7 +69,9 @@ after_success: This installs Travis-CI utilities and runs a custom script 'trigger-build.js' with node, which in turn actually triggers Travis build. -The script, downloaded from [Kamran Ayub blog](https://kamranicus.com/posts/2015-02-26-continuous-deployment-with-travis-ci) has been edited to specify the 'repository' we will trigger and the name of the environment variable containing the token: +The script, downloaded from +[Kamran Ayub blog](https://kamranicus.com/posts/2015-02-26-continuous-deployment-with-travis-ci) <!-- yaspeller ignore --> +has been edited to specify the 'repository' we will trigger and the name of the environment variable containing the token: <!-- yaspeller ignore:start --> diff --git a/documentation/content/Contributing/why-look-and-feel.md b/documentation/content/Contributing/why-look-and-feel.md index 941ca80d..54425bf2 100644 --- a/documentation/content/Contributing/why-look-and-feel.md +++ b/documentation/content/Contributing/why-look-and-feel.md @@ -16,9 +16,9 @@ Authors: Jack De Winter Elegant is theme that is largely inspired by the following articles/tweets: -- [Nicholas Carr's Experiments in delinkification](http://www.roughtype.com/?p=1378) -- [Neha Narula response to Carr's Article](https://pdos.csail.mit.edu/~neha/hyperlinks/main-no.html) -- [Collection of responses to Carr's Article](https://aroundthesphere.wordpress.com/2010/06/08/give-your-blog-posts-some-ritalin/) +- [Nicholas Carr's Experiments in delinkification](http://www.roughtype.com/?p=1378) <!-- yaspeller ignore --> +- [Neha Narula response to Carr Article](https://pdos.csail.mit.edu/~neha/hyperlinks/main-no.html) <!-- yaspeller ignore --> +- [Collection of responses to Carr Article](https://aroundthesphere.wordpress.com/2010/06/08/give-your-blog-posts-some-ritalin/) <!-- yaspeller ignore --> In the first source, Nicholas makes a solid argument that embedded hyperlink tags, <a href="http://www.roughtype.com/?p=1378">such as this one</a>, break the reader's @@ -30,7 +30,9 @@ From his article: > Even if you don’t click on a link, your eyes notice it, and your frontal cortex has to fire up a bunch of neurons to decide whether to click or not. You may not notice the little extra cognitive load placed on your brain, but it’s there and it matters. People who read hypertext comprehend and learn less, studies show, than those who read the same material in printed form. The more links in a piece of writing, the bigger the hit on comprehension. Inspired by the article, the Elegant theme was created as an extension of the suggestions in -the Carr article combined with some of the concerns of the responses. Allowing the user a +the +Carr <!-- yaspeller ignore --> +article combined with some of the concerns of the responses. Allowing the user a clean flow of reading through the body of the article is considered the highest priority for Elegant theme decisions. @@ -57,5 +59,5 @@ that regularly appear in the right sidebar include: - Published time - [Reading Time]({filename}../Supported Plugins/reading-time.md) - [Series section]({filename}../Supported Plugins/multi-part-plugin.md) -- ["Stay in Touch" icons]({filename}../Connecting With Your Readers/social-profiles-sidebar-svg.md) +- ["Stay in Touch" icons]({filename}../Connecting With Your Readers/social-profiles-sidebar-svg.md) <!-- yaspeller ignore --> - Tags diff --git a/documentation/content/Release Notes/release-notes-2.0.0.md b/documentation/content/Release Notes/release-notes-2.0.0.md index c0d45807..03605737 100644 --- a/documentation/content/Release Notes/release-notes-2.0.0.md +++ b/documentation/content/Release Notes/release-notes-2.0.0.md @@ -47,21 +47,21 @@ Thanks to all our contributors mentioned either at Authors document <https://git [milestone-2.0]: https://github.com/Pelican-Elegant/elegant/milestone/3?closed=1 [milestone-1.3]: https://github.com/Pelican-Elegant/elegant/milestone/1?closed=1 -Up until [1.3 release][contrib_to-1.3], the only committer was [Talha Mansoor][talha131] with 357 commits. +Up until [1.3 release][contrib_to-1.3], the only person to commit was [Talha Mansoor][talha131] with 357 commits. From 1.3 release until the [2.0 release][contrib_to-2.0] there were **316 new commits in total** and divided as follows (excluding merge commits): - [Talha Mansoor – "talha131"][talha131]: 264 commits - [Pablo Iranzo Gómez – "iranzo"][iranzo]: 8 commits -- [Calf Zhou – "calfzhou"][calfzhou]: 7 commits -- [Andrew Wegner – "AWegnerGitHub"][awegnergithub]: 6 commits -- [Matija Šuklje – "silverhook"][silverhook]: 5 commits -- [Jeremy Thurgood – "jerith"][jerith]: 1 commit +- [Calf Zhou – "calfzhou"][calfzhou]: 7 commits <!-- yaspeller ignore --> +- [Andrew Wegner – "AWegnerGitHub"][awegnergithub]: 6 commits <!-- yaspeller ignore --> +- [Matija Šuklje – "silverhook"][silverhook]: 5 commits <!-- yaspeller ignore --> +- [Jeremy Thurgood – "jerith"][jerith]: 1 commit <!-- yaspeller ignore --> - [Mobile Developer – "0x8BADFOOD"][0x8badfood]: 1 commit -- [Leo Torres – "leotrs"][leotrs]: 1 commit -- [Gan Shen – "gshen42"][gshen42]: 1 commit -- [Gert van Dijk – "gertvdijk"][gertvdijk]: 1 commit -- [Miguel Lechón – "debiatan"][debiatan]: 1 commit +- [Leo Torres – "leotrs"][leotrs]: 1 commit <!-- yaspeller ignore --> +- [Gan Shen – "gshen42"][gshen42]: 1 commit <!-- yaspeller ignore --> +- [Gert van Dijk – "gertvdijk"][gertvdijk]: 1 commit <!-- yaspeller ignore --> +- [Miguel Lechón – "debiatan"][debiatan]: 1 commit <!-- yaspeller ignore --> [contrib_to-1.3]: https://github.com/Pelican-Elegant/elegant/graphs/contributors?to=2013-10-11&type=c [contrib_to-2.0]: https://github.com/Pelican-Elegant/elegant/graphs/contributors?from=2013-10-12&to=2018-12-27&type=c @@ -70,21 +70,24 @@ As we can clearly see, by any metric this is a huge milestone for Elegant. [pelican]: https://getpelican.com [awegnergithub]: https://andrewwegner.com -[ashwinvis]: https://ashwinvis.github.io/ -[calfzhou]: http://gocalf.com + +[ashwinvis]: https://ashwinvis.github.io/ <!-- yaspeller ignore --> +[calfzhou]: http://gocalf.com <!-- yaspeller ignore --> [talha131]: http://oncrashreboot.com -[iranzo]: https://iranzo.github.io/ -[silverhook]: https://matija.suklje.name -[jerith]: http://rhetoric.jerith.org/ +[iranzo]: https://iranzo.github.io/ <!-- yaspeller ignore --> +[silverhook]: https://matija.suklje.name <!-- yaspeller ignore --> +[jerith]: http://rhetoric.jerith.org/ <!-- yaspeller ignore --> [0x8badfood]: https://0x8badfood.github.io/blog/ [leotrs]: http://leotrs.com/ -[gshen42]: https://gshen42.github.io/ -[gertvdijk]: https://blog.g3rt.nl/ +[gshen42]: https://gshen42.github.io/ <!-- yaspeller ignore --> +[gertvdijk]: https://blog.g3rt.nl/ <!-- yaspeller ignore --> [debiatan]: https://blog.debiatan.net/ # Highlights -Most issues belonged to bugs and dependency updates, amongst the biggest: +Most issues belonged to bugs and dependency updates, +amongst <!-- yaspeller ignore --> +the biggest: - support for HTTPS out of the box by making the links protocol agnostic - fix for search to work again diff --git a/documentation/content/Release Notes/release-notes-2.3.0.md b/documentation/content/Release Notes/release-notes-2.3.0.md index f3e90f4b..7cc65e0e 100644 --- a/documentation/content/Release Notes/release-notes-2.3.0.md +++ b/documentation/content/Release Notes/release-notes-2.3.0.md @@ -24,7 +24,7 @@ We are also planning to automate our release process. We have made several chang ## Features -- New: FontAwesome updated to version 4.7.0 +- New: FontAwesome updated to version 4.7.0 <!-- yaspeller ignore --> - New: `Photos` plugin support for photo gallery creation - New: Lightbox support for `Photos` plugin - Fixed: Amazon One Link div is in the header @@ -40,7 +40,7 @@ We are also planning to automate our release process. We have made several chang - New: Add spell check for every pull request, and `master` and `next` branches - New: Add git hooks to format the code - New: Add commit Zen support -- New: Add html5validator, which along with w3c_validator, makes for two html validation tools in the CI +- New: Add html5validator, which along with w3c_validator, makes for two html validation tools in the CI <!-- yaspeller ignore --> - New: Improve CI build times - Remove: peru for downloading plugins and themes - New: Add pull request template diff --git a/documentation/content/Release Notes/release-notes-2.4.0.md b/documentation/content/Release Notes/release-notes-2.4.0.md index 96f94201..e58d1e0f 100644 --- a/documentation/content/Release Notes/release-notes-2.4.0.md +++ b/documentation/content/Release Notes/release-notes-2.4.0.md @@ -9,7 +9,7 @@ Summary: Improvements in footer and automate release process Category: Release Notes --- -We focused on making changes in the footer of the site. This release is our first step towards using modern CSS properties like flexbox and grid for layout. +We focused on making changes in the footer of the site. This release is our first step towards using modern CSS properties like flexbox and grid for layout. <!-- yaspeller ignore --> We have also automated the release process. This is the first of many release that is published by the release bot. @@ -22,6 +22,6 @@ We have also automated the release process. This is the first of many release th - **footer:** open exit links in new tab ([8fd9f28](https://github.com/Pelican-Elegant/elegant/commit/8fd9f28)) - **footer:** optionally show the host information ([9de2dab](https://github.com/Pelican-Elegant/elegant/commit/9de2dab)) - **footer:** powered by message is always aligned to the right ([5e47b7c](https://github.com/Pelican-Elegant/elegant/commit/5e47b7c)) -- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) -- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) +- **footer:** remove fixed height by using flexbox for sticky footer ([d9d84e1](https://github.com/Pelican-Elegant/elegant/commit/d9d84e1)) <!-- yaspeller ignore --> +- **footer:** use flexbox instead of list for items in the footer ([bef7db9](https://github.com/Pelican-Elegant/elegant/commit/bef7db9)) <!-- yaspeller ignore --> - **onelink:** add Amazon Affiliate Disclosure ([cbfa6ac](https://github.com/Pelican-Elegant/elegant/commit/cbfa6ac)) diff --git a/documentation/content/Release Notes/release-notes-2.5.0.md b/documentation/content/Release Notes/release-notes-2.5.0.md index 3d9971cb..34520e0b 100644 --- a/documentation/content/Release Notes/release-notes-2.5.0.md +++ b/documentation/content/Release Notes/release-notes-2.5.0.md @@ -17,4 +17,4 @@ In this release we also resolved an issue in our automated release process. From ### Features -- **comments:** replace disqus_identifier with comment_id ([3aa4e24](https://github.com/Pelican-Elegant/elegant/commit/3aa4e24)) +- **comments:** replace disqus_identifier with comment_id ([3aa4e24](https://github.com/Pelican-Elegant/elegant/commit/3aa4e24)) <!-- yaspeller ignore --> diff --git a/documentation/content/Release Notes/release-notes-3.2.0.md b/documentation/content/Release Notes/release-notes-3.2.0.md index 5a82a8c8..dbd1d462 100644 --- a/documentation/content/Release Notes/release-notes-3.2.0.md +++ b/documentation/content/Release Notes/release-notes-3.2.0.md @@ -12,9 +12,9 @@ Category: Release Notes ### Bug Fixes -- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) -- **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) -- **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) +- **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) <!-- yaspeller ignore --> +- **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) <!-- yaspeller ignore --> +- **freelists:** remove unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) <!-- yaspeller ignore --> ### Features diff --git a/documentation/content/Release Notes/release-notes-4.0.0.md b/documentation/content/Release Notes/release-notes-4.0.0.md index 1f4990ce..02598998 100644 --- a/documentation/content/Release Notes/release-notes-4.0.0.md +++ b/documentation/content/Release Notes/release-notes-4.0.0.md @@ -36,23 +36,22 @@ Category: Release Notes - **admonition:** add box shadow ([246f826](https://github.com/Pelican-Elegant/elegant/commit/246f826)) - **admonition:** border color should match the title color ([1adadbe](https://github.com/Pelican-Elegant/elegant/commit/1adadbe)) - **admonition:** increase contrast of title ([7fb82cc](https://github.com/Pelican-Elegant/elegant/commit/7fb82cc)) -- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) +- **admonition:** use svg image instead of font-awesome icon ([e7c4029](https://github.com/Pelican-Elegant/elegant/commit/e7c4029)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) <!-- yaspeller ignore --> - **clean url:** support clean URL for search page ([088791e](https://github.com/Pelican-Elegant/elegant/commit/088791e)) - **comments:** add support for utterances comment system ([a2151cc](https://github.com/Pelican-Elegant/elegant/commit/a2151cc)), closes [#288](https://github.com/Pelican-Elegant/elegant/issues/288) - **quotes:** improve style and remove font-awesome for quote icon ([9ef3ac8](https://github.com/Pelican-Elegant/elegant/commit/9ef3ac8)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) - **social:** add icons for 7 more websites ([8dcf8fa](https://github.com/Pelican-Elegant/elegant/commit/8dcf8fa)), closes [#494](https://github.com/Pelican-Elegant/elegant/issues/494) -- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) +- **social:** use svg icons instead of font-awesome ([19f458b](https://github.com/Pelican-Elegant/elegant/commit/19f458b)) <!-- yaspeller ignore --> - **table:** add style rule to make tables pop out ([6a8500b](https://github.com/Pelican-Elegant/elegant/commit/6a8500b)), closes [#440](https://github.com/Pelican-Elegant/elegant/issues/440) ### Performance Improvements -- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) +- **admonition:** add attributes to svg images ([a740a60](https://github.com/Pelican-Elegant/elegant/commit/a740a60)) <!-- yaspeller ignore --> - **requests:** remove font awesome ([7c20145](https://github.com/Pelican-Elegant/elegant/commit/7c20145)), closes [#487](https://github.com/Pelican-Elegant/elegant/issues/487) ### BREAKING CHANGES -- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result - in one less web request, which in turn will improve your websites performance. +- **requests:** We have removed font awesome. Now we use svg images for all icons. This will result in one less web request, which in turn will improve your websites performance. <!-- yaspeller ignore --> - **social:** Style customization and configuration of social icons in the sidebar has changed. New icons have better colors and bigger sizes. diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index 2f60be03..b14991e8 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -82,7 +82,9 @@ replaced with a line like: If you are developing a new feature (for the theme or for your own website), you may need to add a new CSS file to make sure that it renders properly on the webpage. Elegant ships with -the ability support minification of CSS files through the `minify_css.html` file. This file +the ability support +minification <!-- yaspeller ignore --> +of CSS files through the `minify_css.html` file. This file is located in the `templates/_includes` directory of the theme and has the following contents: diff --git a/documentation/content/Supported Plugins/author-blurbs.md b/documentation/content/Supported Plugins/author-blurbs.md index 8045dfe6..9f6bc867 100644 --- a/documentation/content/Supported Plugins/author-blurbs.md +++ b/documentation/content/Supported Plugins/author-blurbs.md @@ -72,7 +72,7 @@ above example, Talha's `avatar` URL is local, while Pablo's URL is remote. While the configuration for Author Blurbs is centralized in the configuration file, enabling this feature for a given article requires that the article contains either the `author` or -`authors` [metadata]({filename}../Advanced Features/meta-data.md) field values. If neither +`authors` [metadata]({filename}../Advanced Features/metadata.md) field values. If neither of these values are provided, the `AUTHOR` configuration variable will be used as a default. ```Python diff --git a/documentation/content/Supported Plugins/multi-part-plugin.md b/documentation/content/Supported Plugins/multi-part-plugin.md index 0362d1b9..2060959c 100644 --- a/documentation/content/Supported Plugins/multi-part-plugin.md +++ b/documentation/content/Supported Plugins/multi-part-plugin.md @@ -48,7 +48,7 @@ SERIES_TITLE = "More In This Series" Once the configuration for Series is enabled in the configuration file, using this feature for a given set of articles requires that the article contains the `series` -[metadata]({filename}../Advanced Features/meta-data.md) field value. +[metadata]({filename}../Advanced Features/metadata.md) field value. The text assigned to the `series` metadata field is the title of the series. When the page is created, Pelican provides Elegant with a list of all pages that have the same value for the diff --git a/documentation/content/Supported Plugins/photogallery.md b/documentation/content/Supported Plugins/photogallery.md index 49a30cf0..c8255434 100644 --- a/documentation/content/Supported Plugins/photogallery.md +++ b/documentation/content/Supported Plugins/photogallery.md @@ -69,7 +69,7 @@ thread without invoking any of the multiprocessing code. Once the configuration for Photo Gallery is enabled in the configuration file, using this feature for a given article requires that the article contains the `gallery` -[metadata]({filename}../Advanced Features/meta-data.md) field value. +[metadata]({filename}../Advanced Features/metadata.md) field value. The text assigned to the `gallery` metadata field is the location of the directory where the images to be displayed resides. This location is relative to the article in which the diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index 6bec1fe8..6b410be8 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -53,7 +53,7 @@ Once the configuration for Sharing Media Links is enabled in the configuration f this feature to provide links for your readers to share your articles on social media is completed. -The only effect any [metadata]({filename}../Advanced Features/meta-data.md) field will have +The only effect any [metadata]({filename}../Advanced Features/metadata.md) field will have on Sharing Media links is to change the text to lead into the Social Media Sharing links. As documented above, the `SHARE_POST_INTRO` can be used to provide an alternate lead in text for the Social Media Sharing links. This text can be further overridden on an From 110244062400e5029d98b791e1f3360125431e58 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Wed, 13 Nov 2019 23:02:02 +0500 Subject: [PATCH 26/59] docs(spellcheck): fix filename --- .../content/Contributing/contributing-to-the-project.md | 2 +- documentation/content/pages/landing-page-about-me.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/content/Contributing/contributing-to-the-project.md b/documentation/content/Contributing/contributing-to-the-project.md index 5612c960..b74a7da3 100644 --- a/documentation/content/Contributing/contributing-to-the-project.md +++ b/documentation/content/Contributing/contributing-to-the-project.md @@ -12,7 +12,7 @@ Authors: Jack De Winter [TOC] -Once you have decided to [contribute to the project]({filename}./inviation.md), we need to +Once you have decided to [contribute to the project]({filename}./invitation.md), we need to go over some rules and guidelines before you can start. These rules and guidelines help us work together as a team and give us a common set of directions that keep us all on the same page. In the case of any disagreements on what needs to be done, we can always refer to the diff --git a/documentation/content/pages/landing-page-about-me.md b/documentation/content/pages/landing-page-about-me.md index a5897f4e..f2c7bc24 100644 --- a/documentation/content/pages/landing-page-about-me.md +++ b/documentation/content/pages/landing-page-about-me.md @@ -44,5 +44,5 @@ To try out Elegant, you don't need to install anything. Just visit different pag ## Want to Contribute? -- [Invitation to Participate]({filename}/Contributing/inviation.md) +- [Invitation to Participate]({filename}/Contributing/invitation.md) - [How Do I Contribute?]({filename}/Contributing/contributing-to-the-project.md) From 8c731807b1baa222416f8df8c912584a73bfff18 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sat, 30 Nov 2019 11:56:21 +0500 Subject: [PATCH 27/59] chore: update dependencies --- documentation/requirements.txt | 4 +- package.json | 10 +- yarn.lock | 1895 ++++++++++++++++++++------------ 3 files changed, 1210 insertions(+), 699 deletions(-) diff --git a/documentation/requirements.txt b/documentation/requirements.txt index 5f6b78f6..3ad67fae 100644 --- a/documentation/requirements.txt +++ b/documentation/requirements.txt @@ -5,14 +5,14 @@ ddt==1.2.1 docutils==0.15.2 feedgenerator==1.9 gitdb2==2.0.6 -GitPython==3.0.4 +GitPython==3.0.5 invoke==1.3.0 Jinja2==2.10.3 livereload==2.6.1 Markdown==3.1.1 MarkupSafe==1.1.1 pelican==4.2.0 -Pygments==2.4.2 +Pygments==2.5.2 python-dateutil==2.8.1 pytz==2019.3 six==1.13.0 diff --git a/package.json b/package.json index eafc62ff..0f96f638 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,15 @@ { "name": "Pelican-Elegant", "devDependencies": { - "@semantic-release/changelog": "^3.0.4", - "@semantic-release/exec": "^3.3.5", - "@semantic-release/git": "^7.0.16", + "@semantic-release/changelog": "^3.0.6", + "@semantic-release/exec": "^3.3.8", + "@semantic-release/git": "^7.0.18", "babel-core": "^6.26.3", "babel-preset-es2015": "^6.24.1", "browser-sync": "^2.26.7", - "cz-conventional-changelog": "2.1.0", + "cz-conventional-changelog": "3.0.2", "gulp": "^4.0.2", - "semantic-release": "^15.13.18" + "semantic-release": "^15.13.31" }, "config": { "commitizen": { diff --git a/yarn.lock b/yarn.lock index 4f85d6f7..0e7766d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" @@ -18,64 +18,101 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@nodelib/fs.scandir@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb" - integrity sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg== +"@babel/runtime@^7.6.3": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" + integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== + dependencies: + regenerator-runtime "^0.13.2" + +"@commitlint/execute-rule@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-8.2.0.tgz#aefb3744e22613660adefb7ebcccaa60bd24e78d" + integrity sha512-9MBRthHaulbWTa8ReG2Oii2qc117NuvzhZdnkuKuYLhker7sUXGFcVhLanuWUKGyfyI2o9zVr/NHsNbCCsTzAA== + +"@commitlint/load@>6.1.1": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-8.2.0.tgz#9ca53a0c795e4f63d796b4d42279e856549add1a" + integrity sha512-EV6PfAY/p83QynNd1llHxJiNxKmp43g8+7dZbyfHFbsGOdokrCnoelAVZ+WGgktXwLN/uXyfkcIAxwac015UYw== + dependencies: + "@commitlint/execute-rule" "^8.2.0" + "@commitlint/resolve-extends" "^8.2.0" + babel-runtime "^6.23.0" + chalk "2.4.2" + cosmiconfig "^5.2.0" + lodash "4.17.14" + resolve-from "^5.0.0" + +"@commitlint/resolve-extends@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-8.2.0.tgz#b7f2f0c71c10f24b98a199ed11d2c14cfd7a318f" + integrity sha512-cwi0HUsDcD502HBP8huXfTkVuWmeo1Fiz3GKxNwMBBsJV4+bKa7QrtxbNpXhVuarX7QjWfNTvmW6KmFS7YK9uw== + dependencies: + "@types/node" "^12.0.2" + import-fresh "^3.0.0" + lodash "4.17.14" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - "@nodelib/fs.stat" "2.0.1" + "@nodelib/fs.stat" "2.0.3" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.1", "@nodelib/fs.stat@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz#814f71b1167390cfcb6a6b3d9cdeb0951a192c14" - integrity sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw== +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== -"@nodelib/fs.walk@^1.2.1": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz#6a6450c5e17012abd81450eb74949a4d970d2807" - integrity sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ== +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: - "@nodelib/fs.scandir" "2.1.1" + "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@octokit/endpoint@^5.1.0": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.2.2.tgz#8fbb2e99ae0d8e6b30099f73063801e64467e761" - integrity sha512-VhKxM4CQanIUZDffExqpdpgqu3heF51qbY1wazoNtvIKXAAVoFjqLq2BOhesXkTqxXMO1Ze1XbS8DkIjUxAB+g== +"@octokit/endpoint@^5.5.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.5.1.tgz#2eea81e110ca754ff2de11c79154ccab4ae16b3f" + integrity sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg== dependencies: - deepmerge "4.0.0" + "@octokit/types" "^2.0.0" is-plain-object "^3.0.0" - universal-user-agent "^3.0.0" - url-template "^2.0.8" + universal-user-agent "^4.0.0" "@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.0.4.tgz#15e1dc22123ba4a9a4391914d80ec1e5303a23be" - integrity sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig== + version "1.2.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.0.tgz#a64d2a9d7a13555570cd79722de4a4d76371baaa" + integrity sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg== dependencies: + "@octokit/types" "^2.0.0" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.0.1.tgz#6705c9a883db0ac0f58cee717e806b6575d4a199" - integrity sha512-SHOk/APYpfrzV1RNf7Ux8SZi+vZXhMIB2dBr4TQR6ExMX8R4jcy/0gHw26HLe1dWV7Wxe9WzYyDSEC0XwnoCSQ== +"@octokit/request@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.1.tgz#3a1ace45e6f88b1be4749c5da963b3a3b4a2f120" + integrity sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg== dependencies: - "@octokit/endpoint" "^5.1.0" + "@octokit/endpoint" "^5.5.0" "@octokit/request-error" "^1.0.1" + "@octokit/types" "^2.0.0" deprecation "^2.0.0" is-plain-object "^3.0.0" node-fetch "^2.3.0" once "^1.4.0" - universal-user-agent "^3.0.0" + universal-user-agent "^4.0.0" "@octokit/rest@^16.27.0": - version "16.28.4" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.28.4.tgz#2f8ef08305033bc91256530d6a3c98eada700660" - integrity sha512-ZBsfD46t3VNkwealxm5zloVgQta8d8o4KYBR/hMAZ582IgjmSDKZdkjyv5w37IUCM3tcPZWKUT+kml9pEIC2GA== + version "16.35.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.35.0.tgz#7ccc1f802f407d5b8eb21768c6deca44e7b4c0d8" + integrity sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w== dependencies: - "@octokit/request" "^5.0.0" + "@octokit/request" "^5.2.0" "@octokit/request-error" "^1.0.2" atob-lite "^2.0.0" before-after-hook "^2.0.0" @@ -86,13 +123,19 @@ lodash.uniq "^4.5.0" octokit-pagination-methods "^1.1.0" once "^1.4.0" - universal-user-agent "^3.0.0" - url-template "^2.0.8" + universal-user-agent "^4.0.0" -"@semantic-release/changelog@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-3.0.4.tgz#8fc578b76bca5b23c3000694277c38e0fa835edd" - integrity sha512-UqEPahcZSW0IKtzOglyjeEZCN99ku6Wb/yH/iOKEBJ7Vkw0/+Fc3VRiGoXTkMfHSFUJk+4UkoQKTlYuwf61C2w== +"@octokit/types@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.0.2.tgz#0888497f5a664e28b0449731d5e88e19b2a74f90" + integrity sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ== + dependencies: + "@types/node" ">= 8" + +"@semantic-release/changelog@^3.0.6": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-3.0.6.tgz#9d68d68bf732cbba1034c028bb6720091f783b2a" + integrity sha512-9TqPL/VarLLj6WkUqbIqFiY3nwPmLuKFHy9fe/LamAW5s4MEW/ig9zW9vzYGOUVtWdErGJ1J62E3Edkamh3xaQ== dependencies: "@semantic-release/error" "^2.1.0" aggregate-error "^3.0.0" @@ -100,13 +143,13 @@ lodash "^4.17.4" "@semantic-release/commit-analyzer@^6.1.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.2.0.tgz#5cd25ce67ba9ba5b46e47457505e63629e186695" - integrity sha512-oUtPydYcbtJsEY6WCPi4wynTgRecK5zCkKaGmHi+9Xl7d6jGf7LomnJCg++6dNF1tyavrbGMSdXTCPH6Dx9LbA== + version "6.3.3" + resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.3.tgz#885f7e46e2f0aef23a23be0904dbf18d6ece45ca" + integrity sha512-Pyv1ZL2u5AIOY4YbxFCAB5J1PEh5yON8ylbfiPiriDGGW6Uu1U3Y8lysMtWu+FUD5x7tSnyIzhqx0+fxPxqbgw== dependencies: conventional-changelog-angular "^5.0.0" conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.0" + conventional-commits-parser "^3.0.7" debug "^4.0.0" import-from "^3.0.0" lodash "^4.17.4" @@ -116,28 +159,28 @@ resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" integrity sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg== -"@semantic-release/exec@^3.3.5": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@semantic-release/exec/-/exec-3.3.5.tgz#19fa9d6852ff77a70966a972510c4ad0c4ae3147" - integrity sha512-P4/IUL5SY6l9av0VCZEc1GjKG0LJshigvvpL/gxIUCTgGNahi+ZtP2Um9RXOc/3elekg1SDEXFUKlTEu2+JTyQ== +"@semantic-release/exec@^3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@semantic-release/exec/-/exec-3.3.8.tgz#4e759818c47bdb36e0199d8fad0f5343421f6d8f" + integrity sha512-GH1v5BwXRIUAnvrXjil+R+9DjI+ELgk2NMdQUAnp2/qZ6YItZt6KI8HrY3zAFDrG0YGaOwC9XxuUNKeldsOK7A== dependencies: "@semantic-release/error" "^2.1.0" aggregate-error "^3.0.0" debug "^4.0.0" - execa "^1.0.0" + execa "^3.2.0" lodash "^4.17.4" - parse-json "^4.0.0" + parse-json "^5.0.0" -"@semantic-release/git@^7.0.16": - version "7.0.16" - resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-7.0.16.tgz#19921d2fdc75d712ae1706330dba8ebec8ced52d" - integrity sha512-Bw/npxTVTeFPnQZmuczWRGRdxqJpWOOFZENx38ykyp42InwDFm4n72bfcCwmP/J4WqkPmMR4p+IracWruz/RUw== +"@semantic-release/git@^7.0.18": + version "7.0.18" + resolved "https://registry.yarnpkg.com/@semantic-release/git/-/git-7.0.18.tgz#f37c076bc094762cb343dab49ab893d31de961e8" + integrity sha512-VwnsGUXpNdvPcsq05BQyLBZxGUlEiJCMKNi8ttLvZZAhjI1mAp9dwypOeyxSJ5eFQ+iGMBLdoKF1LL0pmA/d0A== dependencies: "@semantic-release/error" "^2.1.0" aggregate-error "^3.0.0" debug "^4.0.0" dir-glob "^3.0.0" - execa "^1.0.0" + execa "^3.2.0" fs-extra "^8.0.0" globby "^10.0.0" lodash "^4.17.4" @@ -145,9 +188,9 @@ p-reduce "^2.0.0" "@semantic-release/github@^5.1.0": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.4.2.tgz#1dbde876228c03ff9a000893a18aff5c6ab2cd61" - integrity sha512-8gkOa5tED/+sjAPwZRYsLaGr6VuAGLZinSvLsuF9/l4qLeYV8gvj7fhjFJepGu6y31t7PR2J9SWzmsqsBAyyKQ== + version "5.5.5" + resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.5.5.tgz#4666367f16d8ad91fd1d3c71a7238498de14ec38" + integrity sha512-Wo9OIULMRydbq+HpFh9yiLvra1XyEULPro9Tp4T5MQJ0WZyAQ3YQm74IdT8Pe/UmVDq2nfpT1oHrWkwOc4loHg== dependencies: "@octokit/rest" "^16.27.0" "@semantic-release/error" "^2.2.0" @@ -158,36 +201,36 @@ fs-extra "^8.0.0" globby "^10.0.0" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - issue-parser "^4.0.0" + https-proxy-agent "^3.0.0" + issue-parser "^5.0.0" lodash "^4.17.4" mime "^2.4.3" p-filter "^2.0.0" p-retry "^4.0.0" - parse-github-url "^1.0.1" url-join "^4.0.0" "@semantic-release/npm@^5.0.5": - version "5.1.13" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.1.13.tgz#7b06d62b4d9c8336ae5a5c85eede26fb89f19e3b" - integrity sha512-pONvpoEtGH1nd6Wj3SryACNJ/YXXsvSSekE9Pdk6mnaRv7lGhXdaeJJr6Lr4L8WK98oZv4aJOr68vTac2Oc+dA== + version "5.3.4" + resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.3.4.tgz#2998cd9455aaedf278334d4a5b56f8e0b715919d" + integrity sha512-XjITNRA/oOpJ7BfHk/WaOHs1WniYBszTde/bwADjjk1Luacpxg87jbDQVVt/oA3Zlx+MelxACRIEuRiPC5gu8g== dependencies: "@semantic-release/error" "^2.2.0" aggregate-error "^3.0.0" - execa "^1.0.0" + execa "^3.2.0" fs-extra "^8.0.0" - lodash "^4.17.4" + lodash "^4.17.15" nerf-dart "^1.0.0" normalize-url "^4.0.0" - npm "^6.8.0" + npm "^6.10.3" rc "^1.2.8" read-pkg "^5.0.0" registry-auth-token "^4.0.0" + tempy "^0.3.0" "@semantic-release/release-notes-generator@^7.1.2": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.2.1.tgz#2c0c340e7be2a3d27c28cb869b6737a70f2862fe" - integrity sha512-TdlYgYH6amhE80i9L9HPcTwYzk4Rma7qM1g7XJEEfip7dNXWgmrBeibN4DJmTg/qrUFDd4GD86lFDcYXNZDNow== + version "7.3.5" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.3.5.tgz#ed0941d5b594f18fa1d2667493c03e811f97c0ff" + integrity sha512-LGjgPBGjjmjap/76O0Md3wc04Y7IlLnzZceLsAkcYRwGQdRPTTFUJKqDQTuieWTs7zfHzQoZqsqPfFxEN+g2+Q== dependencies: conventional-changelog-angular "^5.0.0" conventional-changelog-writer "^4.0.0" @@ -198,7 +241,12 @@ import-from "^3.0.0" into-stream "^5.0.0" lodash "^4.17.4" - read-pkg-up "^6.0.0" + read-pkg-up "^7.0.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== "@types/events@*": version "3.0.0" @@ -219,16 +267,21 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*": - version "12.6.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.2.tgz#a5ccec6abb6060d5f20d256fb03ed743e9774999" - integrity sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== +"@types/node@*", "@types/node@>= 8", "@types/node@^12.0.2": + version "12.12.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.14.tgz#1c1d6e3c75dba466e0326948d56e8bd72a1903d2" + integrity sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA== "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/retry@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -282,12 +335,12 @@ agentkeepalive@^3.4.1: humanize-ms "^1.2.1" aggregate-error@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.0.tgz#5b5a3c95e9095f311c9ab16c19fb4f3527cd3f79" - integrity sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA== + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== dependencies: clean-stack "^2.0.0" - indent-string "^3.2.0" + indent-string "^4.0.0" ajv@^6.5.5: version "6.10.2" @@ -313,7 +366,7 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" -ansi-escapes@^3.1.0: +ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -340,18 +393,31 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172" + integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -495,11 +561,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-2.1.0.tgz#46603d5e28e79bfd02b046fcc1d77c6820bd8e98" - integrity sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -558,9 +619,9 @@ async-each@^1.0.1: integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-settle@^1.0.0: version "1.0.0" @@ -595,9 +656,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c" + integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A== axios@0.19.0: version "0.19.0" @@ -1001,7 +1062,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -1122,15 +1183,15 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" -bin-links@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" - integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg== +bin-links@^1.1.2, bin-links@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.3.tgz#702fd59552703727313bc624bdbc4c0d3431c2ca" + integrity sha512-TEwmH4PHU/D009stP+fkkazMJgkBNCv60z01lQ/Mn8E6+ThHoD03svMnBVuCowwXo2nP2qKyKZxKxp58OHRzxw== dependencies: - bluebird "^3.5.0" - cmd-shim "^2.0.2" - gentle-fs "^2.0.0" - graceful-fs "^4.1.11" + bluebird "^3.5.3" + cmd-shim "^3.0.0" + gentle-fs "^2.0.1" + graceful-fs "^4.1.15" write-file-atomic "^2.3.0" binary-extensions@^1.0.0: @@ -1143,15 +1204,15 @@ blob@0.0.5: resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bottleneck@^2.18.1: - version "2.19.2" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.2.tgz#a84d2709288ef6527aee3d228067e180493b657a" - integrity sha512-19LN3Gz1m26S/M4aFyaGfMLIUoVsVDSW3H2anKvR/ijh2c6/3lRzhXn3xUPnPlqVsEwfvhMbMoqz9BpawJcXsg== + version "2.19.5" + resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" + integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== boxen@^1.2.1: version "1.3.0" @@ -1300,16 +1361,17 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^11.3.2, cacache@^11.3.3: - version "11.3.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" - integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: bluebird "^3.5.5" chownr "^1.1.1" figgy-pudding "^3.5.1" glob "^7.1.4" graceful-fs "^4.1.15" + infer-owner "^1.0.3" lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" @@ -1335,6 +1397,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cachedir@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" + integrity sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ== + call-limit@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4" @@ -1364,6 +1431,11 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" @@ -1406,6 +1478,15 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -1417,19 +1498,15 @@ chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== chokidar@^2.0.0, chokidar@^2.0.4: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1445,10 +1522,10 @@ chokidar@^2.0.0, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== ci-info@^1.5.0: version "1.6.0" @@ -1478,9 +1555,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-stack@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.1.0.tgz#9e7fec7f3f8340a2ab4f127c80273085e8fbbdd0" - integrity sha512-uQWrpRm+iZZUCAp7ZZJQbd4Za9I3AjR/3YTjmcnAtkauaIm/T5CT6U8zVI6e60T6OANqBFAzuR9/HB3NzuZCRA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^1.0.0: version "1.0.0" @@ -1495,6 +1572,13 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-table3@^0.5.0, cli-table3@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" @@ -1512,6 +1596,11 @@ cli-table@^0.3.1: dependencies: colors "1.0.3" +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -1530,14 +1619,14 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" clone-buffer@^1.0.0: version "1.0.0" @@ -1568,10 +1657,10 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" -cmd-shim@^2.0.2, cmd-shim@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" - integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= +cmd-shim@^3.0.0, cmd-shim@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" + integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA== dependencies: graceful-fs "^4.1.2" mkdirp "~0.5.0" @@ -1605,11 +1694,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" @@ -1621,9 +1722,9 @@ colors@1.0.3: integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== columnify@~1.5.4: version "1.5.4" @@ -1640,10 +1741,31 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.2.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.2.0, commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commitizen@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.0.3.tgz#c19a4213257d0525b85139e2f36db7cc3b4f6dae" + integrity sha512-lxu0F/Iq4dudoFeIl5pY3h3CQJzkmQuh3ygnaOvqhAD8Wu2pYBI17ofqSuPHNsBTEOh1r1AVa9kR4Hp0FAHKcQ== + dependencies: + cachedir "2.2.0" + cz-conventional-changelog "3.0.1" + dedent "0.7.0" + detect-indent "6.0.0" + find-node-modules "2.0.0" + find-root "1.1.0" + fs-extra "8.1.0" + glob "7.1.4" + inquirer "6.5.0" + is-utf8 "^0.2.1" + lodash "4.17.15" + minimist "1.2.0" + shelljs "0.7.6" + strip-bom "4.0.0" + strip-json-comments "3.0.1" compare-func@^1.3.1: version "1.3.2" @@ -1729,59 +1851,59 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= conventional-changelog-angular@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" - integrity sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA== + version "5.0.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059" + integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA== dependencies: compare-func "^1.3.1" q "^1.5.1" conventional-changelog-writer@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz#916a2b302d0bb5ef18efd236a034c13fb273cde1" - integrity sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA== + version "4.0.11" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4" + integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw== dependencies: compare-func "^1.3.1" - conventional-commits-filter "^2.0.1" + conventional-commits-filter "^2.0.2" dateformat "^3.0.0" - handlebars "^4.1.0" + handlebars "^4.4.0" json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" - semver "^5.5.0" + lodash "^4.17.15" + meow "^5.0.0" + semver "^6.0.0" split "^1.0.0" - through2 "^2.0.0" + through2 "^3.0.0" conventional-commit-types@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.1.1.tgz#352eb53f56fbc7c1a6c1ba059c2b6670c90b2a8a" - integrity sha512-0Ts+fEdmjqYDOQ1yZ+LNgdSPO335XZw9qC10M7CxtLP3nIMGmeMhmkM8Taffa4+MXN13bRPlp0CtH+QfOzKTzw== + version "2.3.0" + resolved "https://registry.yarnpkg.com/conventional-commit-types/-/conventional-commit-types-2.3.0.tgz#bc3c8ebba0a9e4b3ecc548f1d0674e251ab8be22" + integrity sha512-6iB39PrcGYdz0n3z31kj6/Km6mK9hm9oMRhwcLnKxE7WNoeRKZbTAobliKrbYZ5jqyCvtcVEfjCiaEzhL3AVmQ== -conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3" - integrity sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A== +conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1" + integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ== dependencies: - is-subset "^0.1.1" + lodash.ismatch "^4.4.0" modify-values "^1.0.0" -conventional-commits-parser@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#fe1c49753df3f98edb2285a5e485e11ffa7f2e4c" - integrity sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg== +conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" + integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== dependencies: JSONStream "^1.0.4" - is-text-path "^1.0.0" - lodash "^4.2.1" - meow "^4.0.0" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^5.0.0" split2 "^2.0.0" - through2 "^2.0.0" + through2 "^3.0.0" trim-off-newlines "^1.0.0" convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -1816,16 +1938,16 @@ copy-props@^2.0.1: is-plain-object "^2.0.1" core-js@^2.4.0, core-js@^2.5.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + version "2.6.10" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.1: +cosmiconfig@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -1835,6 +1957,17 @@ cosmiconfig@^5.0.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" @@ -1862,6 +1995,15 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" @@ -1874,23 +2016,41 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= -cz-conventional-changelog@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-2.1.0.tgz#2f4bc7390e3244e4df293e6ba351e4c740a7c764" - integrity sha1-L0vHOQ4yROTfKT5ro1Hkx0Cnx2Q= +cz-conventional-changelog@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.0.1.tgz#b1f207ae050355e7ada65aad5c52e9de3d0c8e5b" + integrity sha512-7KASIwB8/ClEyCRvQrCPbN7WkQnUSjSSVNyPM+gDJ0jskLi8h8N2hrdpyeCk7fIqKMRzziqVSOBTB8yyLTMHGQ== + dependencies: + chalk "^2.4.1" + conventional-commit-types "^2.0.0" + lodash.map "^4.5.1" + longest "^2.0.1" + right-pad "^1.0.1" + word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" + +cz-conventional-changelog@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/cz-conventional-changelog/-/cz-conventional-changelog-3.0.2.tgz#f6b9a406177ab07f9a3a087e06103a045b376260" + integrity sha512-MPxERbtQyVp0nnpCBiwzKGKmMBSswmCV3Jpef3Axqd5f3c/SOc6VFiSUlclOyZXBn3Xtf4snzt4O15hBTRb2gA== dependencies: + chalk "^2.4.1" + commitizen "^4.0.3" conventional-commit-types "^2.0.0" lodash.map "^4.5.1" - longest "^1.0.1" + longest "^2.0.1" right-pad "^1.0.1" word-wrap "^1.0.3" + optionalDependencies: + "@commitlint/load" ">6.1.1" -d@1: +d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== @@ -1924,7 +2084,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@4.1.1, debug@^4.0.0: +debug@4.1.1, debug@^4.0.0, debug@~4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1961,16 +2121,16 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +dedent@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.0.0.tgz#3e3110ca29205f120d7cb064960a39c3d2087c09" - integrity sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww== - default-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" @@ -1990,7 +2150,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -2049,6 +2209,11 @@ detect-file@^1.0.0: resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= +detect-indent@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -2172,10 +2337,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" @@ -2190,9 +2355,9 @@ encoding@^0.1.11: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -2213,15 +2378,15 @@ engine.io-client@~3.2.0: xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-client@~3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.3.2.tgz#04e068798d75beda14375a264bb3d742d7bc33aa" - integrity sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ== +engine.io-client@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.0.tgz#82a642b42862a9b3f7a188f41776b2deab643700" + integrity sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.1.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" has-cors "1.1.0" indexof "0.0.1" parseqs "0.0.5" @@ -2241,6 +2406,17 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.5" has-binary2 "~1.0.2" +engine.io-parser@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" + integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.5" + has-binary2 "~1.0.2" + engine.io@~3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" @@ -2254,11 +2430,11 @@ engine.io@~3.2.0: ws "~3.3.1" env-ci@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.1.1.tgz#b8438fc7258a0dc7a4f4c4816de730767946a718" - integrity sha512-eTgpkALDeYRGNhYM2fO9LKsWDifoUgKL7hxpPZqFMP2IU7f+r89DtKqCmk3yQB/jxS8CmZTfKnWO5TiIDFs9Hw== + version "4.5.1" + resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.5.1.tgz#2ef014dcb974728b46d1244e491e9e6ccc1923ef" + integrity sha512-Xtmr+ordf8POu3NcNzx3eOa2zHyfD4h3fPHX5fLklkWa86ck35n1c9oZmyUnVPUl9zHnpZWdWtCUBPSWEagjCQ== dependencies: - execa "^1.0.0" + execa "^3.2.0" java-properties "^1.0.0" env-paths@^1.0.0: @@ -2286,34 +2462,38 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + version "1.16.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" + integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" + has-symbols "^1.0.1" is-callable "^1.1.4" is-regex "^1.0.4" - object-keys "^1.0.12" + object-inspect "^1.7.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.1.0" + string.prototype.trimright "^2.1.0" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.50" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" - integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" + es6-symbol "~3.1.3" + next-tick "~1.0.0" es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" @@ -2336,13 +2516,13 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: - d "1" - es5-ext "~0.10.14" + d "^1.0.1" + ext "^1.1.2" es6-weak-map@^2.0.1: version "2.0.3" @@ -2370,9 +2550,9 @@ esprima@^4.0.0, esprima@~4.0.0: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@1.8.1, etag@^1.8.1, etag@~1.8.1: version "1.8.1" @@ -2410,6 +2590,22 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2430,6 +2626,13 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -2450,6 +2653,15 @@ extend@^3.0.0, extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -2490,15 +2702,14 @@ fast-deep-equal@^2.0.1: integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-glob@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.0.4.tgz#d484a41005cb6faeb399b951fd1bd70ddaebb602" - integrity sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.0.tgz#77375a7e3e6f6fc9b18f061cddd28b8d1eec75ae" + integrity sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw== dependencies: - "@nodelib/fs.stat" "^2.0.1" - "@nodelib/fs.walk" "^1.2.1" - glob-parent "^5.0.0" - is-glob "^4.0.1" - merge2 "^1.2.3" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" micromatch "^4.0.2" fast-json-stable-stringify@^2.0.0: @@ -2526,9 +2737,9 @@ figures@^2.0.0: escape-string-regexp "^1.0.5" figures@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9" - integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g== + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== dependencies: escape-string-regexp "^1.0.5" @@ -2562,11 +2773,24 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" +find-node-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.0.0.tgz#5db1fb9e668a3d451db3d618cd167cdd59e41b69" + integrity sha512-8MWIBRgJi/WpjjfVXumjPKCtmQ10B+fjx6zmSA+770GMJirLhWIzg8l763rhjl9xaeaHbnxPNRQKq2mgMhr+aw== + dependencies: + findup-sync "^3.0.0" + merge "^1.2.1" + find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== +find-root@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2589,7 +2813,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2598,11 +2822,10 @@ find-up@^4.0.0: path-exists "^4.0.0" find-versions@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.1.0.tgz#10161f29cf3eb4350dec10a29bdde75bff0df32d" - integrity sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== dependencies: - array-uniq "^2.1.0" semver-regex "^2.0.0" findup-sync@^2.0.0: @@ -2719,7 +2942,7 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-extra@^8.0.0: +fs-extra@8.1.0, fs-extra@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -2729,11 +2952,11 @@ fs-extra@^8.0.0: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" - integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - minipass "^2.2.1" + minipass "^2.6.0" fs-mkdirp-stream@^1.0.0: version "1.0.0" @@ -2799,15 +3022,17 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== -gentle-fs@^2.0.0, gentle-fs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" - integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew== +gentle-fs@^2.0.1, gentle-fs@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.2.1.tgz#1f38df4b4ead685566257201fd526de401ebb215" + integrity sha512-e7dRgUM5fsS+7wm2oggZpgcRx6sEvJHXujPH5RzgQ1ziQY4+HuVBYsnUzJwJ+C7mjOJN27DjiFy1TaL+TNltow== dependencies: aproba "^1.1.2" + chownr "^1.1.2" fs-vacuum "^1.2.10" graceful-fs "^4.1.11" iferr "^0.1.5" + infer-owner "^1.0.4" mkdirp "^0.5.1" path-is-inside "^1.0.2" read-cmd-shim "^1.0.1" @@ -2874,10 +3099,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== +glob-parent@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" @@ -2909,7 +3134,7 @@ glob-watcher@^5.0.3: just-debounce "^1.0.0" object.defaults "^1.1.0" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: +glob@7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -2921,7 +3146,19 @@ glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0, global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= @@ -2991,10 +3228,10 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" - integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== gulp-cli@^2.2.0: version "2.2.0" @@ -3037,10 +3274,10 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== +handlebars@^4.4.0: + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -3090,10 +3327,10 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-unicode@^2.0.0, has-unicode@~2.0.1: version "2.0.1" @@ -3158,10 +3395,17 @@ hook-std@^2.0.0: resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + +hosted-git-info@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz#8b7e3bd114b59b51786f8bade0f39ddc80275a97" + integrity sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw== + dependencies: + lru-cache "^5.1.1" http-cache-semantics@^3.8.1: version "3.8.1" @@ -3214,14 +3458,27 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" - integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +https-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" + integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== dependencies: agent-base "^4.3.0" debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -3229,7 +3486,7 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3247,16 +3504,16 @@ iferr@^1.0.2: integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" ignore@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" - integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== immutable@^3: version "3.8.2" @@ -3271,6 +3528,14 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" @@ -3288,16 +3553,26 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0, indent-string@^3.2.0: +indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -3335,18 +3610,37 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" -interpret@^1.1.0: +inquirer@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" + integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +interpret@^1.0.0, interpret@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== into-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.0.tgz#b05f37d8fed05c06a0b43b556d74e53e5af23878" - integrity sha512-cbDhb8qlxKMxPBk/QxTtYg1DQ4CwXmadu7quG3B7nrJsgSncEreF2kwWKZFdnjc/lSNNIkFPsjI7SM0Cx/QXPw== + version "5.1.1" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8" + integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA== dependencies: from2 "^2.3.0" - p-is-promise "^2.0.0" + p-is-promise "^3.0.0" invariant@^2.2.2: version "2.2.4" @@ -3370,7 +3664,7 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@^1.1.5: +ip@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= @@ -3415,9 +3709,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== is-callable@^1.1.4: version "1.1.4" @@ -3432,9 +3726,9 @@ is-ci@^1.0.10: ci-info "^1.5.0" is-cidr@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.0.0.tgz#1acf35c9e881063cd5f696d48959b30fed3eed56" - integrity sha512-8Xnnbjsb0x462VoYiGlhEi+drY8SFwrHiSYuzc/CEwco55vkehTaxAyIjEdpi3EMvLPPJAJi9FlzP+h+03gp0Q== + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f" + integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g== dependencies: cidr-regex "^2.0.10" @@ -3516,6 +3810,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -3603,6 +3902,11 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -3623,28 +3927,28 @@ is-relative@^1.0.0: is-unc-path "^1.0.0" is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-subset@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" - integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" -is-text-path@^1.0.0: +is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= @@ -3725,10 +4029,10 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -issue-parser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-4.0.0.tgz#397817323abbb70c7c29cea2ff62448cf83b686c" - integrity sha512-1RmmAXHl5+cqTZ9dRr861xWy0Gkc9TWTEklgjKv+nhlB1dY1NmGBV8b20jTWRL5cPGpOIXkz84kEcDBM8Nc0cw== +issue-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-5.0.0.tgz#0e22a40bc275b6c7da6ddf4a9b979e8ca9faf0d4" + integrity sha512-q/16W7EPHRL0FKVz9NU++TUsoygXGj6JOi88oulyAcQG+IEZ0T6teVdE+VLbe19OfL/tbV8Wi3Dfo0HedeHW0Q== dependencies: lodash.capitalize "^4.2.1" lodash.escaperegexp "^4.1.2" @@ -3910,10 +4214,10 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" -libcipm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.0.tgz#30053bee09b0b1f4df855137d631a6d27f5d59de" - integrity sha512-5IIamvUIqWYjfNscYdirKisXyaTMw7Mf7yuGrjHH2isz7xBZDCUOIdujZxNk2g6lBBs8AGxYW6lHpNnnt92bww== +libcipm@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz#76cd675c98bdaae64db88b782b01b804b6d02c8a" + integrity sha512-fTq33otU3PNXxxCTCYCYe7V96o59v/o7bvtspmbORXpgFk+wcWrGf5x6tBgui5gCed/45/wtPomBsZBYm5KbIw== dependencies: bin-links "^1.1.2" bluebird "^3.5.1" @@ -3931,41 +4235,41 @@ libcipm@^4.0.0: rimraf "^2.6.2" worker-farm "^1.6.0" -libnpm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.0.tgz#9a4b5e1b1d4af68c168c9cbfbc4364529cb0a8dc" - integrity sha512-H8N3GiytH6rtrBSIyWIL9/kOK5eGp3y8uKvoB8m/fR0UUzRpmJasTkQ4c/E/wwI5adL9l49rf/K7cUctcTHmRw== +libnpm@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2" + integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ== dependencies: bin-links "^1.1.2" bluebird "^3.5.3" find-npm-prefix "^1.0.2" - libnpmaccess "^3.0.1" + libnpmaccess "^3.0.2" libnpmconfig "^1.2.1" - libnpmhook "^5.0.2" - libnpmorg "^1.0.0" - libnpmpublish "^1.1.0" - libnpmsearch "^2.0.0" - libnpmteam "^1.0.1" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmpublish "^1.1.2" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" lock-verify "^2.0.2" npm-lifecycle "^3.0.0" npm-logical-tree "^1.2.1" npm-package-arg "^6.1.0" - npm-profile "^4.0.1" - npm-registry-fetch "^3.8.0" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.0" npmlog "^4.1.2" - pacote "^9.2.3" + pacote "^9.5.3" read-package-json "^2.0.13" stringify-package "^1.0.0" -libnpmaccess@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" - integrity sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA== +libnpmaccess@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" + integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== dependencies: aproba "^2.0.0" get-stream "^4.0.0" npm-package-arg "^6.1.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" libnpmconfig@^1.2.1: version "1.2.1" @@ -3976,30 +4280,30 @@ libnpmconfig@^1.2.1: find-up "^3.0.0" ini "^1.3.5" -libnpmhook@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.2.tgz#d12817b0fb893f36f1d5be20017f2aea25825d94" - integrity sha512-vLenmdFWhRfnnZiNFPNMog6CK7Ujofy2TWiM2CrpZUjBRIhHkJeDaAbJdYCT6W4lcHtyrJR8yXW8KFyq6UAp1g== +libnpmhook@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7" + integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -libnpmorg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.0.tgz#979b868c48ba28c5820e3bb9d9e73c883c16a232" - integrity sha512-o+4eVJBoDGMgRwh2lJY0a8pRV2c/tQM/SxlqXezjcAg26Qe9jigYVs+Xk0vvlYDWCDhP0g74J8UwWeAgsB7gGw== +libnpmorg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087" + integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -libnpmpublish@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.1.tgz#ff0c6bb0b4ad2bda2ad1f5fba6760a4af37125f0" - integrity sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g== +libnpmpublish@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" + integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== dependencies: aproba "^2.0.0" figgy-pudding "^3.5.1" @@ -4007,28 +4311,28 @@ libnpmpublish@^1.1.0: lodash.clonedeep "^4.5.0" normalize-package-data "^2.4.0" npm-package-arg "^6.1.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" semver "^5.5.1" ssri "^6.0.1" -libnpmsearch@^2.0.0, libnpmsearch@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.1.tgz#eccc73a8fbf267d765d18082b85daa2512501f96" - integrity sha512-K0yXyut9MHHCAH+DOiglQCpmBKPZXSUu76+BE2maSEfQN15OwNaA/Aiioe9lRFlVFOr7WcuJCY+VSl+gLi9NTA== +libnpmsearch@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf" + integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg== dependencies: figgy-pudding "^3.5.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -libnpmteam@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.1.tgz#ff704b1b6c06ea674b3b1101ac3e305f5114f213" - integrity sha512-gDdrflKFCX7TNwOMX1snWojCoDE5LoRWcfOC0C/fqF7mBq8Uz9zWAX4B2RllYETNO7pBupBaSyBDkTAC15cAMg== +libnpmteam@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820" + integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA== dependencies: aproba "^2.0.0" figgy-pudding "^3.4.1" get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" libnpx@^10.2.0: version "10.2.0" @@ -4180,6 +4484,11 @@ lodash.isfinite@^3.3.2: resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" integrity sha1-+4m2WpqAKBgz8LdHizpRBPiY67M= +lodash.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -4225,20 +4534,20 @@ lodash.without@~4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@^4.17.10: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.4, lodash@^4.2.1: +lodash@4.17.14: version "4.17.14" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= +lodash@4.17.15, lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +longest@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" + integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= loose-envify@^1.0.0: version "1.4.0" @@ -4287,16 +4596,16 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-fetch-happen@^4.0.1, make-fetch-happen@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.2.tgz#2d156b11696fb32bffbafe1ac1bc085dd6c78a79" - integrity sha512-YMJrAjHSb/BordlsDEcVcPyTbiJKkzqMf48N8dAJZT9Zjctrkb6Yg4TY9Sq2AwSIQJFn5qBBKVTYt3vP5FMIHA== +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== dependencies: agentkeepalive "^3.4.1" - cacache "^11.3.3" + cacache "^12.0.0" http-cache-semantics "^3.8.1" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" + https-proxy-agent "^2.2.3" lru-cache "^5.1.1" mississippi "^3.0.0" node-fetch-npm "^2.0.2" @@ -4341,9 +4650,9 @@ map-visit@^1.0.0: object-visit "^1.0.0" marked-terminal@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.2.0.tgz#3fc91d54569332bcf096292af178d82219000474" - integrity sha512-Yr1yVS0BbDG55vx7be1D0mdv+jGs9AW563o/Tt/7FTsId2J0yqhrTeXAqq/Q0DyyXltIn6CSxzesQuFqXgafjQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" + integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== dependencies: ansi-escapes "^3.1.0" cardinal "^2.1.1" @@ -4352,10 +4661,10 @@ marked-terminal@^3.2.0: node-emoji "^1.4.1" supports-hyperlinks "^1.0.1" -marked@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.6.3.tgz#79babad78af638ba4d522a9e715cdfdd2429e946" - integrity sha512-Fqa7eq+UaxfMriqzYLayfqAE40WN03jf+zHjT18/uXNuzjq3TY0XTbrAoPeqSJrAmPz11VuUA+kBPYOhHt9oOQ== +marked@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== matchdep@^2.0.0: version "2.0.0" @@ -4372,13 +4681,6 @@ meant@~1.0.1: resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -4388,25 +4690,35 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -meow@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" - integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== dependencies: camelcase-keys "^4.0.0" decamelize-keys "^1.0.0" loud-rejection "^1.0.0" - minimist "^1.1.3" minimist-options "^3.0.1" normalize-package-data "^2.3.4" read-pkg-up "^3.0.0" redent "^2.0.0" trim-newlines "^2.0.0" + yargs-parser "^10.0.0" -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +merge@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -4435,17 +4747,17 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.42.0: + version "1.42.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" + integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.25" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" + integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== dependencies: - mime-db "1.40.0" + mime-db "1.42.0" mime@1.4.1: version "1.4.1" @@ -4462,7 +4774,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: +mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -4487,7 +4799,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -4497,20 +4809,20 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -4529,9 +4841,9 @@ mississippi@^3.0.0: through2 "^2.0.0" mitt@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" - integrity sha512-mUDCnVNsAi+eD6qA0HkRkwYczbLHJ49z17BGe2PYRhZL4wpZUFZGJHU7/5tmvohoma+Hdn0Vh/oJTiPEmgSruA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== mixin-deep@^1.2.0: version "1.3.2" @@ -4580,6 +4892,11 @@ mute-stdout@^1.0.0: resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -4631,7 +4948,7 @@ nerf-dart@^1.0.0: resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" integrity sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo= -next-tick@^1.0.0: +next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= @@ -4662,10 +4979,10 @@ node-fetch@^2.3.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-gyp@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.2.tgz#422f7b7550d2c37952ac184e2a5a2d9fe49a8b77" - integrity sha512-sNcb5O7eJ9XiNAhWZ/UE2bWsBJn3Jb7rayMqMP4wjenlr1DwzZxUmbtmIrl04EU0p5fN2rU9WIDV+u0EbsI8oQ== +node-gyp@^5.0.2, node-gyp@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.5.tgz#f6cf1da246eb8c42b097d7cd4d6c3ce23a4163af" + integrity sha512-WABl9s4/mqQdZneZHVWVG4TVr6QQJZUC6PAx47ITSk9lreZ1n+7Z9mMAIbA3vnO4J9W20P7LhCxtzfWsAD/KDw== dependencies: env-paths "^1.0.0" glob "^7.0.3" @@ -4676,7 +4993,7 @@ node-gyp@^5.0.2: request "^2.87.0" rimraf "2" semver "~5.3.0" - tar "^4.4.8" + tar "^4.4.12" which "1" node-pre-gyp@^0.12.0: @@ -4733,9 +5050,9 @@ normalize-path@^3.0.0: integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-url@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.3.0.tgz#9c49e10fc1876aeb76dba88bf1b2b5d9fa57b2ee" - integrity sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== now-and-later@^2.0.0: version "2.0.1" @@ -4762,17 +5079,17 @@ npm-cache-filename@~1.0.2: resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= -npm-install-checks@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" - integrity sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc= +npm-install-checks@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9" + integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg== dependencies: semver "^2.3.0 || 3.x || 4 || 5" -npm-lifecycle@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.0.0.tgz#a3018cb8f1bc5e63a7f85d79f58f7701b2699ac2" - integrity sha512-/x/8zxo5Tn3qWj1eSUXgyr2pLBnEoFkpJQE/8pRwrEpJI4irZM0+YSp7W8NGDLzN6SaBOGOPaJV9O2dhY1IWwQ== +npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c" + integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A== dependencies: byline "^5.0.0" graceful-fs "^4.1.15" @@ -4788,53 +5105,54 @@ npm-logical-tree@^1.2.1: resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== dependencies: - hosted-git-info "^2.6.0" + hosted-git-info "^2.7.1" osenv "^0.1.5" - semver "^5.5.0" + semver "^5.6.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" - integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== +npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.6: + version "1.4.6" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" + integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-pick-manifest@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" - integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== +npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== dependencies: figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" semver "^5.4.1" -npm-profile@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.1.tgz#d350f7a5e6b60691c7168fbb8392c3603583f5aa" - integrity sha512-NQ1I/1Q7YRtHZXkcuU1/IyHeLy6pd+ScKg4+DQHdfsm769TGq6HPrkbuNJVJS4zwE+0mvvmeULzQdWn2L2EsVA== +npm-profile@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.2.tgz#8272a71c19634d0dce9c35a5daf8ee589cbb0f52" + integrity sha512-VRsC04pvRH+9cF+PoVh2nTmJjiG21yu59IHpsBpkxk+jaGAV8lxx96G4SDc0jOHAkfWLXbc6kIph3dGAuRnotQ== dependencies: aproba "^1.1.2 || 2" figgy-pudding "^3.4.1" - npm-registry-fetch "^3.8.0" + npm-registry-fetch "^4.0.0" -npm-registry-fetch@^3.8.0, npm-registry-fetch@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.1.tgz#00ff6e4e35d3f75a172b332440b53e93f4cb67de" - integrity sha512-VQCEZlydXw4AwLROAXWUR7QDfe2Y8Id/vpAgp6TI1/H78a4SiQ1kQrKZALm5/zxM5n4HIi+aYb+idUAV/RuY0Q== +npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" + integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" figgy-pudding "^3.4.1" lru-cache "^5.1.1" - make-fetch-happen "^4.0.2" + make-fetch-happen "^5.0.0" npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" npm-run-path@^2.0.0: version "2.0.2" @@ -4843,15 +5161,22 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.0.tgz#d644ec1bd0569187d2a52909971023a0a58e8438" + integrity sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ== + dependencies: + path-key "^3.0.0" + npm-user-validate@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= -npm@^6.8.0: - version "6.10.1" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.10.1.tgz#2ee87146028d4f2bfa0bbae56c5f188c5099dfe9" - integrity sha512-ejR83c5aPTip5hPhziypqkJu06vb5tDIugCXx1c5+04RbMjtZeMA6BfsuGnV9EBdEwzKoaHkQ9sJWQAq+LjHYw== +npm@^6.10.3: + version "6.13.1" + resolved "https://registry.yarnpkg.com/npm/-/npm-6.13.1.tgz#6a2658392b70aa1266ddfe256ef21d0de2f4d8dc" + integrity sha512-2awiDZ9JuV/UoF4oXGhekCURC2X+eLLRz9/e58AGrPDlpzyn7e4oCaZmkzyEaisxM7jSoFKNnZhzB4xbmbM0Yw== dependencies: JSONStream "^1.3.5" abbrev "~1.1.1" @@ -4859,16 +5184,16 @@ npm@^6.8.0: ansistyles "~0.1.3" aproba "^2.0.0" archy "~1.0.0" - bin-links "^1.1.2" + bin-links "^1.1.3" bluebird "^3.5.5" byte-size "^5.0.1" - cacache "^11.3.3" + cacache "^12.0.3" call-limit "^1.1.1" - chownr "^1.1.2" + chownr "^1.1.3" ci-info "^2.0.0" cli-columns "^3.1.2" cli-table3 "^0.5.1" - cmd-shim "~2.0.2" + cmd-shim "^3.0.3" columnify "~1.5.4" config-chain "^1.1.12" detect-indent "~5.0.0" @@ -4879,12 +5204,13 @@ npm@^6.8.0: find-npm-prefix "^1.0.2" fs-vacuum "~1.2.10" fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.0.1" + gentle-fs "^2.2.1" glob "^7.1.4" - graceful-fs "^4.2.0" + graceful-fs "^4.2.3" has-unicode "~2.0.1" - hosted-git-info "^2.7.1" + hosted-git-info "^2.8.5" iferr "^1.0.2" + infer-owner "^1.0.4" inflight "~1.0.6" inherits "^2.0.4" ini "^1.3.5" @@ -4892,10 +5218,13 @@ npm@^6.8.0: is-cidr "^3.0.0" json-parse-better-errors "^1.0.2" lazy-property "~1.0.0" - libcipm "^4.0.0" - libnpm "^3.0.0" - libnpmhook "^5.0.2" - libnpmsearch "^2.0.1" + libcipm "^4.0.7" + libnpm "^3.0.1" + libnpmaccess "^3.0.2" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" libnpx "^10.2.0" lock-verify "^2.1.0" lockfile "^1.0.4" @@ -4909,32 +5238,33 @@ npm@^6.8.0: mississippi "^3.0.0" mkdirp "~0.5.1" move-concurrently "^1.0.1" - node-gyp "^5.0.2" + node-gyp "^5.0.5" nopt "~4.0.1" normalize-package-data "^2.5.0" npm-audit-report "^1.3.2" npm-cache-filename "~1.0.2" - npm-install-checks "~3.0.0" - npm-lifecycle "^3.0.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.4.4" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.9.1" + npm-install-checks "^3.0.2" + npm-lifecycle "^3.1.4" + npm-package-arg "^6.1.1" + npm-packlist "^1.4.6" + npm-pick-manifest "^3.0.2" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.2" npm-user-validate "~1.0.0" npmlog "~4.1.2" once "~1.4.0" opener "^1.5.1" osenv "^0.1.5" - pacote "^9.5.1" + pacote "^9.5.9" path-is-inside "~1.0.2" promise-inflight "~1.0.1" qrcode-terminal "^0.12.0" - query-string "^6.8.1" + query-string "^6.8.2" qw "~1.0.1" read "~1.0.7" - read-cmd-shim "~1.0.1" + read-cmd-shim "^1.0.5" read-installed "~4.0.3" - read-package-json "^2.0.13" + read-package-json "^2.1.0" read-package-tree "^5.3.1" readable-stream "^3.4.0" readdir-scoped-modules "^1.1.0" @@ -4942,14 +5272,14 @@ npm@^6.8.0: retry "^0.12.0" rimraf "^2.6.3" safe-buffer "^5.1.2" - semver "^5.7.0" + semver "^5.7.1" sha "^3.0.0" slide "~1.1.6" sorted-object "~2.0.1" sorted-union-stream "~2.1.3" ssri "^6.0.1" - stringify-package "^1.0.0" - tar "^4.4.10" + stringify-package "^1.0.1" + tar "^4.4.13" text-table "~0.2.0" tiny-relative-date "^1.3.0" uid-number "0.0.6" @@ -4957,7 +5287,7 @@ npm@^6.8.0: unique-filename "^1.1.1" unpipe "~1.0.0" update-notifier "^2.5.0" - uuid "^3.3.2" + uuid "^3.3.3" validate-npm-package-license "^3.0.4" validate-npm-package-name "~3.0.0" which "^1.3.1" @@ -5003,7 +5333,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.11, object-keys@^1.0.12: +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -5090,6 +5425,20 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0, once@~1.4.0: dependencies: wrappy "1" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + opener@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" @@ -5134,15 +5483,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -5152,7 +5492,7 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-name@^3.0.0: +os-name@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== @@ -5160,7 +5500,7 @@ os-name@^3.0.0: macos-release "^2.2.0" windows-release "^3.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -5190,11 +5530,21 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +p-is-promise@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" + integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -5203,9 +5553,9 @@ p-limit@^1.1.0: p-try "^1.0.0" p-limit@^2.0.0, p-limit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== dependencies: p-try "^2.0.0" @@ -5241,9 +5591,9 @@ p-reduce@^2.0.0: integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== p-retry@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.1.0.tgz#9ce7cef2069e84bf590df3b8ec18d740109338d6" - integrity sha512-oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.2.0.tgz#ea9066c6b44f23cab4cd42f6147cdbbc6604da5d" + integrity sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA== dependencies: "@types/retry" "^0.12.0" retry "^0.12.0" @@ -5268,18 +5618,20 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.1: - version "9.5.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.2.tgz#6132afe7a53bb6fa189df72572c87bb03ab2cc5f" - integrity sha512-KVxalD57jaHnWIBQKPeU/eFU4UoMqUOj3h5AXvVMp9oJd8BZvIdTm8qmazy4jpYBf7RX9xCFmeFcU3ebvrUSZQ== +pacote@^9.1.0, pacote@^9.5.3, pacote@^9.5.9: + version "9.5.9" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.9.tgz#fa3a08629c9390b2b99769c55b2cc137e1a24df3" + integrity sha512-S1nYW9ly+3btn3VmwRAk2LG3TEh8mkrFdY+psbnHSk8oPODbZ28uG0Z0d3yI0EpqcpLR6BukoVRf3H4IbGCkPQ== dependencies: bluebird "^3.5.3" - cacache "^11.3.2" + cacache "^12.0.2" + chownr "^1.1.2" figgy-pudding "^3.5.1" get-stream "^4.1.0" glob "^7.1.3" + infer-owner "^1.0.4" lru-cache "^5.1.1" - make-fetch-happen "^4.0.1" + make-fetch-happen "^5.0.0" minimatch "^3.0.4" minipass "^2.3.5" mississippi "^3.0.0" @@ -5287,8 +5639,8 @@ pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.1: normalize-package-data "^2.4.0" npm-package-arg "^6.1.0" npm-packlist "^1.1.12" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.8.0" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" osenv "^0.1.5" promise-inflight "^1.0.1" promise-retry "^1.1.1" @@ -5297,19 +5649,26 @@ pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.1: safe-buffer "^5.1.2" semver "^5.6.0" ssri "^6.0.1" - tar "^4.4.8" + tar "^4.4.10" unique-filename "^1.1.1" which "^1.3.1" parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - cyclist "~0.2.2" + cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-filepath@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" @@ -5319,11 +5678,6 @@ parse-filepath@^1.0.1: map-cache "^0.2.0" path-root "^0.1.1" -parse-github-url@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" - integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== - parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" @@ -5420,6 +5774,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -5464,9 +5823,9 @@ performance-now@^2.1.0: integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.5: - version "2.0.7" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" - integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" + integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== pify@^2.0.0: version "2.3.0" @@ -5574,9 +5933,9 @@ pseudomap@^1.0.2: integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24: - version "1.2.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" - integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.5.0.tgz#47fd1292def7fdb1e138cd78afa8814cebcf7b13" + integrity sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA== pump@^2.0.0: version "2.0.1" @@ -5633,10 +5992,10 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^6.8.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.8.1.tgz#62c54a7ef37d01b538c8fd56f95740c81d438a26" - integrity sha512-g6y0Lbq10a5pPQpjlFuojfMfV1Pd2Jw9h75ypiYPPia3Gcq2rgkKiIwbkS6JxH7c5f5u/B/sB+d13PU+g1eu4Q== +query-string@^6.8.2: + version "6.9.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd" + integrity sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" @@ -5677,10 +6036,10 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" - integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= +read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== dependencies: graceful-fs "^4.1.2" @@ -5698,10 +6057,10 @@ read-installed@~4.0.3: optionalDependencies: graceful-fs "^4.1.2" -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" - integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.0.tgz#e3d42e6c35ea5ae820d9a03ab0c7291217fc51d5" + integrity sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" @@ -5735,14 +6094,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-6.0.0.tgz#da75ce72762f2fa1f20c5a40d4dd80c77db969e3" - integrity sha512-odtTvLl+EXo1eTsMnoUHRmg/XmXdTkwXVxy4VFE9Kp6cCq7b3l7QMdBndND3eAFzrbSAXC/WCUOQQ9rLjifKZw== +read-pkg-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.0.tgz#3f3e53858ec5ae5e6fe14bc479da0a7c98f85ff3" + integrity sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w== dependencies: - find-up "^4.0.0" - read-pkg "^5.1.1" - type-fest "^0.5.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" read-pkg@^1.0.0: version "1.1.0" @@ -5762,7 +6121,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.0.0, read-pkg@^5.1.1: +read-pkg@^5.0.0, read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -5792,7 +6151,7 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0: +"readable-stream@2 || 3", readable-stream@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== @@ -5862,6 +6221,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -6045,6 +6409,13 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" + resolve-options@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" @@ -6058,9 +6429,9 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" - integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + version "1.13.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" + integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== dependencies: path-parse "^1.0.6" @@ -6072,6 +6443,14 @@ resp-modifier@6.0.2: debug "^2.2.0" minimatch "^3.0.2" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -6098,12 +6477,19 @@ right-pad@^1.0.1: integrity sha1-jKCMLLtbVedNr6lr9/0aJ9VoyNA= rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" @@ -6128,7 +6514,14 @@ rxjs@^5.5.6: dependencies: symbol-observable "1.0.1" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: +rxjs@^6.4.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" + integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== @@ -6155,10 +6548,10 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -semantic-release@^15.13.18: - version "15.13.18" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.13.18.tgz#72e284c6f7cb7817e1aaaa0a9d73600a9447d146" - integrity sha512-JtfdrhF1zRm91nJH/Rg3taftbWGwktJqqrJJdbmZGKYx63cfC4PoaS0jxRifGJUdmmgW/Kxz8f5bhtB+p1bu8A== +semantic-release@^15.13.31: + version "15.13.31" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.13.31.tgz#75560e61562b5b7aa3e66256fd3454683c6508a6" + integrity sha512-mrtYkH4p0FvXIRFCsr2r5il/A+Uj7oeeq+dgyojAbr4Tzywv9AlCYHeE3A8U3eE4bMJPiBV4YnQRsk1QS8yDDw== dependencies: "@semantic-release/commit-analyzer" "^6.1.0" "@semantic-release/error" "^2.2.0" @@ -6166,26 +6559,26 @@ semantic-release@^15.13.18: "@semantic-release/npm" "^5.0.5" "@semantic-release/release-notes-generator" "^7.1.2" aggregate-error "^3.0.0" - cosmiconfig "^5.0.1" + cosmiconfig "^6.0.0" debug "^4.0.0" env-ci "^4.0.0" - execa "^1.0.0" + execa "^3.2.0" figures "^3.0.0" find-versions "^3.0.0" get-stream "^5.0.0" git-log-parser "^1.2.0" hook-std "^2.0.0" - hosted-git-info "^2.7.1" - lodash "^4.17.4" - marked "^0.6.0" + hosted-git-info "^3.0.0" + lodash "^4.17.15" + marked "^0.7.0" marked-terminal "^3.2.0" p-locate "^4.0.0" p-reduce "^2.0.0" - read-pkg-up "^6.0.0" + read-pkg-up "^7.0.0" resolve-from "^5.0.0" semver "^6.0.0" signale "^1.2.1" - yargs "^13.1.0" + yargs "^15.0.1" semver-diff@^2.0.0: version "2.1.0" @@ -6206,15 +6599,15 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== semver@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@~5.3.0: version "5.3.0" @@ -6307,11 +6700,32 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.6.tgz#379cccfb56b91c8601e4793356eb5382924de9ad" + integrity sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0= + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -6341,10 +6755,10 @@ slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" - integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== snapdragon-node@^2.0.1: version "2.1.1" @@ -6377,9 +6791,9 @@ snapdragon@^0.8.1: use "^3.1.0" socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== socket.io-client@2.1.1: version "2.1.1" @@ -6402,16 +6816,16 @@ socket.io-client@2.1.1: to-array "0.1.4" socket.io-client@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.2.0.tgz#84e73ee3c43d5020ccc1a258faeeb9aec2723af7" - integrity sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~3.1.0" - engine.io-client "~3.3.1" + debug "~4.1.0" + engine.io-client "~3.4.0" has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" @@ -6460,12 +6874,12 @@ socks-proxy-agent@^4.0.0: socks "~2.3.2" socks@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" - integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" + integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== dependencies: - ip "^1.1.5" - smart-buffer "4.0.2" + ip "1.1.5" + smart-buffer "^4.1.0" sorted-object@~2.0.1: version "2.0.1" @@ -6693,7 +7107,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6701,21 +7115,37 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimleft@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" string_decoder@~0.10.x: version "0.10.31" @@ -6729,10 +7159,10 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-package@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" - integrity sha512-JIQqiWmLiEozOC0b0BtxZ/AOUtdUZHCBPgqIZ2kSJJqGwgb9neo44XdTHUC4HZSGqi03hOeB7W/E8rAlKnGe9g== +stringify-package@^1.0.0, stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" @@ -6748,13 +7178,25 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -6772,11 +7214,21 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +strip-json-comments@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -6815,19 +7267,33 @@ symbol-observable@1.0.1: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= -tar@^4, tar@^4.4.10, tar@^4.4.8: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== +tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" yallist "^3.0.3" +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -6869,7 +7335,14 @@ through2@^2.0.0, through2@^2.0.2, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3": +through2@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + +through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -6889,6 +7362,13 @@ tiny-relative-date@^1.3.0: resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -6979,6 +7459,11 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -6991,20 +7476,30 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-fest@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/type/-/type-1.0.1.tgz#084c9a17fcc9151a2cdb1459905c2e45e4bb7d61" - integrity sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw== + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" + integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== typedarray@^0.0.6: version "0.0.6" @@ -7017,11 +7512,11 @@ ua-parser-js@0.7.17: integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + version "3.7.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.1.tgz#35c7de17971a4aa7689cd2eae0a5b39bb838c0c5" + integrity sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g== dependencies: - commander "~2.20.0" + commander "~2.20.3" source-map "~0.6.1" uid-number@0.0.6: @@ -7103,12 +7598,12 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -universal-user-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-3.0.0.tgz#4cc88d68097bffd7ac42e3b7c903e7481424b4b9" - integrity sha512-T3siHThqoj5X0benA5H0qcDnrKGXzU8TKoX15x/tQHw1hQBvIEBHjxQ2klizYsqBOO/Q+WuxoQUihadeeqDnoA== +universal-user-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16" + integrity sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA== dependencies: - os-name "^3.0.0" + os-name "^3.1.0" universalify@^0.1.0: version "0.1.2" @@ -7134,9 +7629,9 @@ unzip-response@^2.0.1: integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-notifier@^2.3.0, update-notifier@^2.5.0: version "2.5.0" @@ -7178,11 +7673,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -7210,10 +7700,10 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^3.3.2, uuid@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== v8flags@^3.0.1: version "3.1.3" @@ -7323,6 +7813,13 @@ which@1, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -7374,14 +7871,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -7444,14 +7941,28 @@ yallist@^2.1.2: integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -7517,15 +8028,15 @@ yargs@6.6.0: yargs-parser "^4.2.0" yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" + integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== dependencies: cliui "^4.0.0" decamelize "^1.1.1" find-up "^2.1.0" get-caller-file "^1.0.1" - os-locale "^2.0.0" + os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" @@ -7534,22 +8045,22 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^13.1.0: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== +yargs@^15.0.1: + version "15.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.0.2.tgz#4248bf218ef050385c4f7e14ebdf425653d13bd3" + integrity sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" get-caller-file "^2.0.1" - os-locale "^3.1.0" require-directory "^2.1.1" require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.0" + yargs-parser "^16.1.0" yargs@^7.1.0: version "7.1.0" From c17077cbd24811bb91e48610ac13d76328e5398d Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sat, 30 Nov 2019 11:59:56 +0500 Subject: [PATCH 28/59] fix(page): social profiles appear in the sidebar We do not show sidebar in the Pages. Therefore, social profiles should not be displayed in it. fix #534 --- templates/page.html | 7 ------- 1 file changed, 7 deletions(-) diff --git a/templates/page.html b/templates/page.html index d286783a..223177e8 100644 --- a/templates/page.html +++ b/templates/page.html @@ -45,13 +45,6 @@ <h4>Contents</h4> {% from '_includes/comments.html' import comments_section with context %} {{ comments_section(page) }} </div> - <section> - <div class="span2" style="float:right;font-size:0.9em;"> - {% include '_includes/social_links.html' %} - {% include '_includes/mailchimp.html' %} - {% include '_includes/freelists.html' %} - </div> - </section> </div> </article> {% endblock content %} From 50c21e15e5358b0a4fb017f397223022f7798312 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 08:30:56 +0500 Subject: [PATCH 29/59] chore(gulp): check if 404.html exists before reading it --- gulpfile.babel.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 1275a8d9..8db19d3f 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -5,9 +5,10 @@ import { exec } from "child_process"; import { create as browserSyncCreate } from "browser-sync"; const browserSync = browserSyncCreate(); -const content_404 = fs.readFileSync( - path.join(__dirname, "documentation/output/404.html") -); +const path404 = path.join(__dirname, "documentation/output/404.html"); +const content_404 = () => + fs.existsSync(path404) ? fs.readFileSync(path404) : null; + const buildAll = () => exec("cd documentation && invoke build"); @@ -28,7 +29,7 @@ const reload = cb => { }, (_, bs) => { bs.addMiddleware("*", (_, res) => { - res.write(content_404); + res.write(content_404()); res.end(); }); } From 19af5e3823f1856015940c83a2d7cd866fce8f03 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 08:32:43 +0500 Subject: [PATCH 30/59] chore(gulp): add cleanOutput command. Clean and build before watching --- gulpfile.babel.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 8db19d3f..63169098 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -1,6 +1,6 @@ import fs from "fs"; import path from "path"; -import { watch, parallel } from "gulp"; +import { watch, parallel, series } from "gulp"; import { exec } from "child_process"; import { create as browserSyncCreate } from "browser-sync"; const browserSync = browserSyncCreate(); @@ -9,6 +9,7 @@ const path404 = path.join(__dirname, "documentation/output/404.html"); const content_404 = () => fs.existsSync(path404) ? fs.readFileSync(path404) : null; +const cleanOutput = () => exec("cd documentation && rm -rf outout/"); const buildAll = () => exec("cd documentation && invoke build"); @@ -53,7 +54,7 @@ const watchFiles = () => { ); }; -const elegant = parallel(watchFiles, reload); +const elegant = series(cleanOutput, buildAll, parallel(watchFiles, reload)); exports.elegant = elegant; exports.default = elegant; From 4e0dc415c114bb07304605c9b1c153e372f1fa4b Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 08:44:31 +0500 Subject: [PATCH 31/59] fix(social): reduce icon size in the sidebar fix #490 --- .../social-profiles-sidebar-svg.md | 17 ++++++++--------- ...ial-profiles-sidebar-default-2019-08-12.png | Bin 9427 -> 0 bytes ...ocial-profiles-sidebar-hover-2019-08-12.png | Bin 18027 -> 0 bytes ...files-sidebar-hover-linkedin-2019-08-12.png | Bin 16395 -> 0 bytes .../social-profiles-sidebar-svg-default.png | Bin 0 -> 24983 bytes ...ial-profiles-sidebar-svg-hover-linkedin.png | Bin 0 -> 24825 bytes .../social-profiles-sidebar-svg-hover.png | Bin 0 -> 43833 bytes static/css/elegant.css | 11 ++++++++--- 8 files changed, 16 insertions(+), 12 deletions(-) delete mode 100644 documentation/content/images/social-profiles-sidebar-default-2019-08-12.png delete mode 100644 documentation/content/images/social-profiles-sidebar-hover-2019-08-12.png delete mode 100644 documentation/content/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png create mode 100644 documentation/content/images/social-profiles-sidebar-svg-default.png create mode 100644 documentation/content/images/social-profiles-sidebar-svg-hover-linkedin.png create mode 100644 documentation/content/images/social-profiles-sidebar-svg-hover.png diff --git a/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md b/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md index fc82be2a..f36981bd 100644 --- a/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md +++ b/documentation/content/Connecting With Your Readers/social-profiles-sidebar-svg.md @@ -17,8 +17,8 @@ social media profiles; inviting readers to engage with them else where on the web too. Most social widgets are loud and obtrusive. Their colors and placement takes away readers' attention from the actual content. -<img class="align-right" style="width: 179px; height: 202px" -src="{static}/images/social-profiles-sidebar-default-2019-08-12.png" alt="Social +<img class="align-right" style="width: 35%;" +src="{static}/images/social-profiles-sidebar-svg-default.png" alt="Social Profiles in the Sidebar" /> Elegant understands the importance of readers engagement but it makes sure @@ -26,20 +26,19 @@ not to push author's _"online social karma"_ down readers' throats. Elegant displays the widget in the sidebar. Each icon is a link to a social media profile with an optional title attribute. Icons use muted color which -changes when user hovers over them. +changes when user hovers over them. On hover, icon is also scaled up in size. Here is an example of hovering over LinkedIn <!-- yaspeller ignore --> icon. -<img style="width: 177px; height: 201px" -src="{static}/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png" alt="Hover over LinkedIn in the Sidebar" /> +<img style="width:35%;" +src="{static}/images/social-profiles-sidebar-svg-hover-linkedin.png" alt="Hover over LinkedIn in the Sidebar" /> -Following image shows what each of them look like when user hovers over them. +Following image shows these icons in color. -<img style="width: 177px; height: 205px" -src="{static}/images/social-profiles-sidebar-hover-2019-08-12.png" alt="Hover over all Social -Profiles in the Sidebar" /> +<img style="width:35%;" +src="{static}/images/social-profiles-sidebar-svg-hover.png" alt="Social Profiles in color" /> These SVG icons are [Super Tiny](https://github.com/edent/SuperTinyIcons). Most of them have sizes less than 500 bytes, and none of them exceeds 1 K bytes in size. This gives you increased website speed. diff --git a/documentation/content/images/social-profiles-sidebar-default-2019-08-12.png b/documentation/content/images/social-profiles-sidebar-default-2019-08-12.png deleted file mode 100644 index f48ae566fb9617c59c30413b97ca988cf8ee41d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 VV!Mdcv;Tf8X{zd~R4ZA9{y(Kjc>n+a diff --git a/documentation/content/images/social-profiles-sidebar-hover-2019-08-12.png b/documentation/content/images/social-profiles-sidebar-hover-2019-08-12.png deleted file mode 100644 index c40ce8c7d742c759402864ecf67d846535dd36ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18027 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 diff --git a/documentation/content/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png b/documentation/content/images/social-profiles-sidebar-hover-linkedin-2019-08-12.png deleted file mode 100644 index ffa1d9c1b3a93dfa8a6666b3cecec5e019db243a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16395 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 G@qYlVVN6#5 diff --git a/documentation/content/images/social-profiles-sidebar-svg-default.png b/documentation/content/images/social-profiles-sidebar-svg-default.png new file mode 100644 index 0000000000000000000000000000000000000000..2d6c935c4e64f4b3800822a900245185802ea215 GIT binary patch literal 24983 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 literal 0 HcmV?d00001 diff --git a/documentation/content/images/social-profiles-sidebar-svg-hover-linkedin.png b/documentation/content/images/social-profiles-sidebar-svg-hover-linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..e6664f82633870f185b5d61f8a514a6c0e0cd0fa GIT binary patch literal 24825 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�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 a`!}=i%Ph5rQzY=bLUgrInw9GJqyGm+X6tYO literal 0 HcmV?d00001 diff --git a/documentation/content/images/social-profiles-sidebar-svg-hover.png b/documentation/content/images/social-profiles-sidebar-svg-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..fce4d29c2d4fae2afa13a3a1da6001734ea5bad0 GIT binary patch literal 43833 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 literal 0 HcmV?d00001 diff --git a/static/css/elegant.css b/static/css/elegant.css index b1f0f4c7..e8b0c68e 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -306,15 +306,20 @@ ul.articles-timeline .previous-article { } div#sidebar-social-link a svg { filter: saturate(0%) brightness(0.7); - height: 30px; - width: 30px; - margin-right: 4px; + height: 20px; + width: 20px; + margin-right: 3px; + transition: all 0.2s ease-in-out; + z-index: 0; + position: relative; } div#sidebar-social-link a { text-decoration: none; } div#sidebar-social-link a svg:hover { filter: none; + transform: scale(2.5); + z-index: 1; } ul.multi-parts-list a { color: black; From 10fbe5c1784587457f6da164440c22f1ee832689 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 10:26:17 +0500 Subject: [PATCH 32/59] refactor(css): extract CSS rules of social links in sidebar to its own file --- static/css/elegant.css | 17 ----------------- static/css/sidebar-social.css | 17 +++++++++++++++++ templates/_includes/minify_css.html | 8 +++++++- 3 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 static/css/sidebar-social.css diff --git a/static/css/elegant.css b/static/css/elegant.css index e8b0c68e..62cac073 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -304,23 +304,6 @@ ul.articles-timeline .previous-article { float: left; margin: 0; } -div#sidebar-social-link a svg { - filter: saturate(0%) brightness(0.7); - height: 20px; - width: 20px; - margin-right: 3px; - transition: all 0.2s ease-in-out; - z-index: 0; - position: relative; -} -div#sidebar-social-link a { - text-decoration: none; -} -div#sidebar-social-link a svg:hover { - filter: none; - transform: scale(2.5); - z-index: 1; -} ul.multi-parts-list a { color: black; } diff --git a/static/css/sidebar-social.css b/static/css/sidebar-social.css new file mode 100644 index 00000000..b89d6e23 --- /dev/null +++ b/static/css/sidebar-social.css @@ -0,0 +1,17 @@ +div#sidebar-social-link a svg { + filter: saturate(0%) brightness(0.7); + height: 20px; + width: 20px; + margin-right: 3px; + transition: all 0.2s ease-in-out; + z-index: 0; + position: relative; +} +div#sidebar-social-link a { + text-decoration: none; +} +div#sidebar-social-link a svg:hover { + filter: none; + transform: scale(2.5); + z-index: 1; +} diff --git a/templates/_includes/minify_css.html b/templates/_includes/minify_css.html index 1d162f60..3f5318ec 100644 --- a/templates/_includes/minify_css.html +++ b/templates/_includes/minify_css.html @@ -1,3 +1,9 @@ -{% assets filters="cssmin", output="css/style.min.css", "css/pygments.css", "tipuesearch/tipuesearch.css","css/elegant.css", "css/admonition.css", "css/custom.css" %} +{% assets filters="cssmin", output="css/style.min.css", +"css/pygments.css", +"tipuesearch/tipuesearch.css", +"css/elegant.css", +"css/admonition.css", +"css/sidebar-social.css", +"css/custom.css" %} <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> {% endassets %} From b47daf2b8304b9b8bc9e260b726c2ec651fde9c4 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 10:30:23 +0500 Subject: [PATCH 33/59] refactor(css): extract typography rules to its own file --- static/css/typography.css | 34 +++++++++++++++++++++++++++++ templates/_includes/minify_css.html | 1 + 2 files changed, 35 insertions(+) create mode 100644 static/css/typography.css diff --git a/static/css/typography.css b/static/css/typography.css new file mode 100644 index 00000000..b132dccb --- /dev/null +++ b/static/css/typography.css @@ -0,0 +1,34 @@ +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", + Times, Serif; + font-weight: normal; +} +h1 small, +h1 a, +h1 a:hover, +h2 small, +h2 a, +h2 a:hover, +h3 small, +h3 a, +h3 a:hover, +h4 small, +h4 a, +h4 a:hover, +h5 small, +h5 a, +h5 a:hover, +h6 small, +h6 a, +h6 a:hover { + color: inherit; + text-decoration: none; +} +small.subtitle { + font-style: italic; +} diff --git a/templates/_includes/minify_css.html b/templates/_includes/minify_css.html index 3f5318ec..3f7587ea 100644 --- a/templates/_includes/minify_css.html +++ b/templates/_includes/minify_css.html @@ -2,6 +2,7 @@ "css/pygments.css", "tipuesearch/tipuesearch.css", "css/elegant.css", +"css/typography.css", "css/admonition.css", "css/sidebar-social.css", "css/custom.css" %} From 19220758aabf431ae3566b950436fe04a3ee21a8 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 11:52:47 +0500 Subject: [PATCH 34/59] feat(typography): use darker color for article heading and increase border size --- static/css/elegant.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/css/elegant.css b/static/css/elegant.css index 62cac073..445a8466 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -282,8 +282,8 @@ blockquote p { font-size: inherit; } .page-header { - border-bottom: 1px solid #8f8686; - color: #8b0000; + border-bottom: 2px solid maroon; + color: maroon; margin: 10px 10px 20px; padding: 5px; } From 2a97dcf0fea88cbf400fb81f8f48e427e0dd86df Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 11:55:55 +0500 Subject: [PATCH 35/59] refactor(css): remove redundant div from sidebar Move style to its own CSS file. --- static/css/sidebar.css | 7 +++++++ templates/_includes/minify_css.html | 1 + templates/article.html | 4 +--- 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 static/css/sidebar.css diff --git a/static/css/sidebar.css b/static/css/sidebar.css new file mode 100644 index 00000000..4cf06610 --- /dev/null +++ b/static/css/sidebar.css @@ -0,0 +1,7 @@ +section#article-sidebar { + float: right; + font-size: 0.9em; +} +section#article-sidebar h4 { + font-size: 1.1rem; +} diff --git a/templates/_includes/minify_css.html b/templates/_includes/minify_css.html index 3f7587ea..600e82e3 100644 --- a/templates/_includes/minify_css.html +++ b/templates/_includes/minify_css.html @@ -4,6 +4,7 @@ "css/elegant.css", "css/typography.css", "css/admonition.css", +"css/sidebar.css", "css/sidebar-social.css", "css/custom.css" %} <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> diff --git a/templates/article.html b/templates/article.html index 9e31d187..e40d6edd 100644 --- a/templates/article.html +++ b/templates/article.html @@ -108,8 +108,7 @@ <h1>{{ title }}</h1> </aside> {% endif %} </div> - <section> - <div class="span2" style="float:right;font-size:0.9em;"> + <section id="article-sidebar" class="span2"> {% include '_includes/post_stats.html' %} {% if article.date %} <h4>Published</h4> @@ -140,7 +139,6 @@ <h4>Tags</h4> {{ mailchimp(article) }} {% from '_includes/freelists.html' import freelists with context %} {{ freelists(article) }} - </div> </section> </div> </article> From a5f5c8170a61683edf5737918b7fe3cae1b67c00 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 18:03:45 +0500 Subject: [PATCH 36/59] fix(css): linter warning --- static/css/elegant.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/css/elegant.css b/static/css/elegant.css index 445a8466..53adbf54 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -521,7 +521,7 @@ div.recent-posts-time { white-space: nowrap; width: auto; } -#mc-embed-signup.button: hover { +#mc-embed-signup.button:hover { background-color: #dfdfdf; } #mc-embed-signup .clear { From afa99ab89baf715a68627552152b7163ea0534b9 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 18:33:52 +0500 Subject: [PATCH 37/59] feat(typography): headings sizes and other properties are consistent Headings have consistent size. Code inside headings have proper size. Small inside headings have consistent size. fix #508 fix #521 --- documentation/content/Components/heading.md | 39 ++++++++++ static/css/elegant.css | 38 +--------- static/css/sidebar.css | 3 - static/css/typography.css | 82 +++++++++++++++++++++ 4 files changed, 123 insertions(+), 39 deletions(-) create mode 100644 documentation/content/Components/heading.md diff --git a/documentation/content/Components/heading.md b/documentation/content/Components/heading.md new file mode 100644 index 00000000..932e86df --- /dev/null +++ b/documentation/content/Components/heading.md @@ -0,0 +1,39 @@ +Title: Headings Style +Tags: style, typography +Category: Components +Date: 2019-12-01 10:38 +Slug: headings-style +comment_id: 3tb82h9vziuw-headings-style +Subtitle: +Summary: +Keywords: + +Following are the examples of headings as they appear inside an article. + +<!-- yaspeller ignore:start --> + +# Heading 1 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +## Heading 2 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +### Heading 3 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +#### Heading 4 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +##### Heading 5 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +###### Heading 6 `code` <small>small</small> + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. + +<!-- yaspeller ignore:end --> diff --git a/static/css/elegant.css b/static/css/elegant.css index 53adbf54..b68b6e37 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -34,37 +34,6 @@ footer div#fpowered { margin-left: auto; margin-right: unset; } -h1, -h2, -h3, -h4, -h5, -h6 { - font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", - Times, Serif; - font-weight: normal; -} -h1 small, -h1 a, -h1 a:hover, -h2 small, -h2 a, -h2 a:hover, -h3 small, -h3 a, -h3 a:hover, -h4 small, -h4 a, -h4 a:hover, -h5 small, -h5 a, -h5 a:hover, -h6 small, -h6 a, -h6 a:hover { - color: inherit; - text-decoration: none; -} :lang(zh) { font-family: "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", Helvetica, Arial, sans-serif; @@ -75,9 +44,6 @@ a { hr { border-width: 3px; } -small.subtitle { - font-style: italic; -} /* site title */ .site-name { font-family: "Monaco", "Inconsolata", "Andale Mono", "Lucida Console", @@ -288,8 +254,8 @@ blockquote p { padding: 5px; } .page-header h1 { - font-size: 3em; - font-weight: normal; + border: none; + line-height: 1em; } ul.articles-timeline { list-style: none; diff --git a/static/css/sidebar.css b/static/css/sidebar.css index 4cf06610..fbfb83af 100644 --- a/static/css/sidebar.css +++ b/static/css/sidebar.css @@ -2,6 +2,3 @@ section#article-sidebar { float: right; font-size: 0.9em; } -section#article-sidebar h4 { - font-size: 1.1rem; -} diff --git a/static/css/typography.css b/static/css/typography.css index b132dccb..33637f39 100644 --- a/static/css/typography.css +++ b/static/css/typography.css @@ -1,3 +1,10 @@ +:root { + --heading-border-bottom-width: 1px; + --heading-border-bottom-style: solid; + /* Headings that are not inside article. Like in sidebar are "others" */ + --heading-others-line-height: 1.3rem; + --heading-others-h4-font-size: 1.1rem; +} h1, h2, h3, @@ -7,6 +14,67 @@ h6 { font-family: Baskerville, Garamond, Georgia, "DejaVu Serif", "Times New Roman", Times, Serif; font-weight: normal; + margin: 10px 0px; +} +h1 { + font-size: 3rem; + border-bottom: var(--heading-border-bottom-width) + var(--heading-border-bottom-style) darkgray; +} +h1 code { + font-size: 2.5rem; +} +h2 { + font-size: 2.5rem; + border-bottom: var(--heading-border-bottom-width) + var(--heading-border-bottom-style) silver; +} +h2 code { + font-size: 2rem; +} +h3 { + border-bottom: var(--heading-border-bottom-width) + var(--heading-border-bottom-style) lightgray; + font-size: 2.3rem; +} +h3 code { + font-size: 1.8rem; +} +h4 { + font-size: 2rem; +} +h4 code { + font-size: 1.6rem; +} +h5 { + font-size: 1.8rem; +} +h5 code { + font-size: 1.4rem; +} +h6 { + font-size: 1.6rem; +} +h6 code { + font-size: 1.2rem; +} +h1, +h2, +h3 { + line-height: 1.3em; +} +h4, +h5, +h6 { + line-height: 1.1em; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-size: 70%; } h1 small, h1 a, @@ -32,3 +100,17 @@ h6 a:hover { small.subtitle { font-style: italic; } +h1#my-projects, +h1#recent-posts { + border: none; + font-size: 2.4rem; + line-height: var(--heading-others-line-height); +} +nav h4 { + font-size: var(--heading-others-h4-font-size); + line-height: var(--heading-others-line-height); +} +section#article-sidebar h4 { + font-size: var(--heading-others-h4-font-size); + line-height: var(--heading-others-line-height); +} From 7180b49ebb659d00a82f10769269e6236057e42c Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 18:39:14 +0500 Subject: [PATCH 38/59] feat(typography): code inside heading is consistently 80% of the size Previously code inside heading was too small fix #508 --- static/css/typography.css | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/static/css/typography.css b/static/css/typography.css index 33637f39..74fb7244 100644 --- a/static/css/typography.css +++ b/static/css/typography.css @@ -21,43 +21,25 @@ h1 { border-bottom: var(--heading-border-bottom-width) var(--heading-border-bottom-style) darkgray; } -h1 code { - font-size: 2.5rem; -} h2 { font-size: 2.5rem; border-bottom: var(--heading-border-bottom-width) var(--heading-border-bottom-style) silver; } -h2 code { - font-size: 2rem; -} h3 { border-bottom: var(--heading-border-bottom-width) var(--heading-border-bottom-style) lightgray; font-size: 2.3rem; } -h3 code { - font-size: 1.8rem; -} h4 { font-size: 2rem; } -h4 code { - font-size: 1.6rem; -} h5 { font-size: 1.8rem; } -h5 code { - font-size: 1.4rem; -} h6 { font-size: 1.6rem; } -h6 code { - font-size: 1.2rem; -} h1, h2, h3 { @@ -68,6 +50,14 @@ h5, h6 { line-height: 1.1em; } +h1 code, +h2 code, +h3 code, +h4 code, +h5 code, +h6 code { + font-size: 80%; +} h1 small, h2 small, h3 small, From 007fcdb1215bfec5e06850bc8ec0b5b07faf36ff Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 18:40:42 +0500 Subject: [PATCH 39/59] refactor: remove redundant comment_id from the article --- documentation/content/Components/heading.md | 1 - 1 file changed, 1 deletion(-) diff --git a/documentation/content/Components/heading.md b/documentation/content/Components/heading.md index 932e86df..c34ee2f0 100644 --- a/documentation/content/Components/heading.md +++ b/documentation/content/Components/heading.md @@ -3,7 +3,6 @@ Tags: style, typography Category: Components Date: 2019-12-01 10:38 Slug: headings-style -comment_id: 3tb82h9vziuw-headings-style Subtitle: Summary: Keywords: From cd3bec047c1053cff21c71fe3976cb6101c6112e Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 18:46:43 +0500 Subject: [PATCH 40/59] refactor(css): merge classes --- static/css/typography.css | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/static/css/typography.css b/static/css/typography.css index 74fb7244..aaaa8618 100644 --- a/static/css/typography.css +++ b/static/css/typography.css @@ -96,11 +96,8 @@ h1#recent-posts { font-size: 2.4rem; line-height: var(--heading-others-line-height); } +section#article-sidebar h4, nav h4 { font-size: var(--heading-others-h4-font-size); line-height: var(--heading-others-line-height); } -section#article-sidebar h4 { - font-size: var(--heading-others-h4-font-size); - line-height: var(--heading-others-line-height); -} From 7307467579d4ab1931987e48b83224eb666e9e5e Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 19:34:00 +0500 Subject: [PATCH 41/59] feat(border): have consistent border radius fix #521 --- static/css/admonition.css | 4 ++-- static/css/elegant.css | 29 ++++++++++++++++------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/static/css/admonition.css b/static/css/admonition.css index 0a2b5653..ef8f3e6d 100644 --- a/static/css/admonition.css +++ b/static/css/admonition.css @@ -4,8 +4,8 @@ div.admonition { margin-bottom: 20px; background-color: #fcf8e3; border: 1px solid; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); } div.admonition p { diff --git a/static/css/elegant.css b/static/css/elegant.css index b68b6e37..a84753ea 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -1,4 +1,7 @@ /* Base */ +:root { + --border-radius: 4px; +} html, body { height: 100%; @@ -342,7 +345,7 @@ a.list-of-categories { } a.list-of-categories:hover { background-color: #08c; - border-radius: 4px; + border-radius: var(--border-radius); color: #fff; } /* Archives */ @@ -469,7 +472,7 @@ div.recent-posts-time { } #mc-embed-signup .button { background-color: #eee; - border-radius: 4px; + border-radius: var(--border-radius); border: 1px solid #d3d3d3; clear: both; color: #000; @@ -585,9 +588,9 @@ table { border-collapse: separate; *border-collapse: collapse; border-left: 0; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; + -webkit-border-radius: var(--border-radius); + -moz-border-radius: var(--border-radius); + border-radius: var(--border-radius); } table th, @@ -602,26 +605,26 @@ table thead:first-child tr:first-child th { } table thead:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: 4px; - border-top-left-radius: 4px; + -webkit-border-top-left-radius: var(--border-radius); + border-top-left-radius: var(--border-radius); -moz-border-radius-topleft: 6px; } table thead:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: 4px; - border-top-right-radius: 4px; + -webkit-border-top-right-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); -moz-border-radius-topright: 6px; } table tbody:last-child tr:last-child > td:first-child { - -webkit-border-bottom-left-radius: 4px; - border-bottom-left-radius: 4px; + -webkit-border-bottom-left-radius: var(--border-radius); + border-bottom-left-radius: var(--border-radius); -moz-border-radius-bottomleft: 6px; } table tbody:last-child tr:last-child > td:last-child { - -webkit-border-bottom-right-radius: 4px; - border-bottom-right-radius: 4px; + -webkit-border-bottom-right-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); -moz-border-radius-bottomright: 6px; } From 5d0285f156a5da734b438868674c632b897625ef Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 19:47:38 +0500 Subject: [PATCH 42/59] feat(border): change border radius of tags and code blocks to match rest of the theme fix: #521 --- static/css/elegant.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/static/css/elegant.css b/static/css/elegant.css index a84753ea..6fef2922 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -101,14 +101,14 @@ pre { word-wrap: normal; } td.code .highlight pre { - border-radius: 0 3px 3px 0; + border-radius: 0 var(--border-radius) var(--border-radius) 0; } td.code { width: 100%; } .linenodiv pre { background-color: #eee8d5; - border-radius: 3px 0 0 3px; + border-radius: var(--border-radius) 0 0 var(--border-radius); color: #657b83; } div.highlight { @@ -137,7 +137,7 @@ table.highlighttable tbody > tr:nth-child(odd) > td { } .list-of-tags a { background: #eee; - border-radius: 3px; + border-radius: var(--border-radius); color: #222; margin: 2px; padding: 3px 6px; @@ -516,7 +516,7 @@ a#allposts:hover { -moz-border-radius: 3px; -webkit-border-radius: 3px; background-color: #f7f7f9; - border-radius: 3px; + border-radius: var(--border-radius); border: 1px solid #e1e1e8; color: #d14; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; @@ -612,7 +612,7 @@ table thead:first-child tr:first-child > th:first-child { table thead:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: var(--border-radius); - border-top-right-radius: var(--border-radius); + border-top-right-adius: var(--border-radius); -moz-border-radius-topright: 6px; } From 56f00692a9fdd02b30b4a132b3b7c14b0f69ce20 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 23:31:37 +0500 Subject: [PATCH 43/59] docs(update): add author --- documentation/content/Components/heading.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/content/Components/heading.md b/documentation/content/Components/heading.md index c34ee2f0..10c3f51f 100644 --- a/documentation/content/Components/heading.md +++ b/documentation/content/Components/heading.md @@ -3,6 +3,7 @@ Tags: style, typography Category: Components Date: 2019-12-01 10:38 Slug: headings-style +Authors: Talha Mansoor Subtitle: Summary: Keywords: From 8e633054c30a6f685c77a2ae54e17c9c6239802a Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 23:34:31 +0500 Subject: [PATCH 44/59] docs(update): add tag --- documentation/content/Contributing/live-reload-gulp.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/content/Contributing/live-reload-gulp.md b/documentation/content/Contributing/live-reload-gulp.md index e8310d74..15c06508 100644 --- a/documentation/content/Contributing/live-reload-gulp.md +++ b/documentation/content/Contributing/live-reload-gulp.md @@ -1,5 +1,6 @@ --- Title: LiveReload Elegant Documentation Using Gulp.js +Tags: gulp Date: 2019-07-19 23:17 Slug: live-reload-elegant-documentation-using-gulpjs Category: Contributing From 1e90a5d6ef79c5f470dea9ab7a932068562c6cc5 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 09:12:25 +0500 Subject: [PATCH 45/59] chore: exclude elegant.prod.css from pre-commit hook --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ca09066b..3a0bac38 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: hooks: - id: prettier files: \.(css|js|md|markdown|json) - exclude: ^static/(tipuesearch|magnific) + exclude: ^static/(tipuesearch|magnific|css/elegant.prod.css) - repo: https://github.com/python/black rev: master hooks: From 2b88865a36780257ac42173b949b5d7b4df516e9 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Sun, 1 Dec 2019 23:59:10 +0500 Subject: [PATCH 46/59] feat(css): use PostCSS for processing CSS files fix #354 --- documentation/content/Contributing/postcss.md | 75 ++ .../Supported Plugins/assets-plugin.md | 81 +- documentation/pelicanconf.py | 1 - gulpfile.babel.js | 43 +- package.json | 11 +- static/css/elegant.prod.css | 8 + templates/_includes/minify_css.html | 8 +- templates/base.html | 5 +- yarn.lock | 1141 ++++++++++++++++- 9 files changed, 1272 insertions(+), 101 deletions(-) create mode 100644 documentation/content/Contributing/postcss.md create mode 100644 static/css/elegant.prod.css diff --git a/documentation/content/Contributing/postcss.md b/documentation/content/Contributing/postcss.md new file mode 100644 index 00000000..a7a83572 --- /dev/null +++ b/documentation/content/Contributing/postcss.md @@ -0,0 +1,75 @@ +Title: Use PostCSS To Compile CSS Stylesheets +Tags: postcss, gulp +Category: Contributing +Date: 2019-12-01 23:13 +Slug: use-postcss-to-compile-css-stylesheets +Subtitle: Mandatory +Authors: Talha Mansoor +Summary: +Keywords: + +Elegant uses [GulpJS](https://gulpjs.com/) and [PostCSS](https://postcss.org/) to do pre and post processing, like [adding vendor prefixes](https://github.com/postcss/autoprefixer) or [compressing the CSS file](https://cssnano.co/). + +## Why not use Pelican assets plugin? + +[Pelican's assets plugin](https://github.com/getpelican/pelican-plugins/tree/master/assets) uses [Python's webassets package](https://github.com/miracle2k/webassets). + +Unfortunately, webassets have not had a release [since early 2017](https://github.com/miracle2k/webassets/releases). Requests to revive the project have [gone unheeded](https://github.com/miracle2k/webassets/issues/505). + +I tired to install webassets from the Git repository to use its PostCSS filter but it didn't work. Instead of wasting time in wrestling the code of an unmaintained project, I decided to use PostCSS which is modern and actively maintained. + +## How to use PostCSS + +This is closely related to [LiveReload Elegant Documentation Using Gulp.js]({filename}./live-reload-gulp.md) + +### Prerequisites + +You need to run following steps only once, to setup the LiveReload using gulp. + +#### Step 1: Install NodeJS and Yarn <!-- yaspeller ignore --> + +Install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) on your system. + +If you are on Windows then try installing them with [scoop.sh](https://scoop.sh/). It saves time and makes update easier. + +#### Step 2: Install gulp + +Run this command from your command line terminal. + +```bash +yarn global add gulp-cli +``` + +#### Step 3: Install Dependencies + +In the root of the Elegant repository, run + +```bash +yarn install +``` + +`yarn` will create `node_modules` folder in the root. + +#### Step 4: Run `gulp` + +In the root of the Elegant repository, run + +```bash +gulp css +``` + +It will compile the CSS present in [`static/css`](https://github.com/Pelican-Elegant/elegant/tree/master/static/css) folder into `static/css/elegant.prod.css`. + +To live preview your changes, use + +```bash +gulp +``` + +## How does it work? + +Gulp and PostCSS, takes all the CSS files present inside `static/css` folder. It applies PostCSS plugins on it like CSS compression. + +It then writes the generated version in `static/css/elegant.prod.css` file. This is the file a Pelican blog uses when it uses Elegant theme. + +If user has enabled [`assets` plugin]({filename}../Supported Plugins/assets-plugin.md), then this file is again made to go through webassets cssmin filter. Although this step is redundant because `elegant.prod.css` is already compressed. But it is necessary in case user has decided [to customize the theme using `custom.css`]({filename}../Advanced Features/custom-style.md). In which, assets cssmin filter will combine `elegant.prod.css` and `custom.css` into one file `style.min.css`. diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index b14991e8..54cc9c36 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -18,6 +18,12 @@ essential to the proper look and feel of a properly designed website, the overhe content being in separate files is that separate requests are made for each of them to the server. +!!! Important + + **Elegant comes with a compressed and concatenated CSS stylesheet**, so that only one request is made to fetch the CSS stylesheets. **Following instruction is redundant for most users.** + + But if you have decided to [customize the theme using `custom.css`]({filename}../Advanced Features/custom-style.md) then follow these instruction. + Pelican provides a plugin that takes the various CSS and JavaScript files and compiles each group of them into a single file. Not only does this process reduce the number of calls to retrieve files from the server, but it minifies or reduces the overall size of @@ -35,78 +41,3 @@ PLUGINS = ['assets'] !!! note The [assets plugin](https://github.com/getpelican/pelican-plugins/blob/master/assets/Readme.rst) requires the Python `webassets` and `cssmin` packages to be installed. - -## Debugging Notes - -Note that you will not see the full power of the Assets Management plugin if you are working in -debug mode, that is building the website while using `--debug` on the Pelican command line. -In debug mode, some of the files may be minified into the `style.min.css` file, but the -original files will be included in the HTML page they are referenced from. - -This will look something like the following: - -```html -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/f89ba5f14545a8fa0e81c1c6e2b5fc13_pygments.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/96b04e88b0ba11363f4f2e2f59b5fb18_tipuesearch.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/9c80344d72edcf2ebb95daecd6dfa24c_elegant.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/d8877b08872b9883b67fbef219dfdebb_admonition.css" -/> -<link - rel="stylesheet" - href="http://localhost:8000/theme/webassets-external/78ddd4ea7393d1ac1fd9f91c21aa8b5f_custom.css" -/> -``` - -When the `--debug` command line option is removed, the lines described above will be -replaced with a line like: - -```html -<link - rel="stylesheet" - href="https://jackdewinter.github.io/theme/css/style.min.css?c4027515" -/> -``` - -## Improving Elegant - -If you are developing a new feature (for the theme or for your own website), you may need to -add a new CSS file to make sure that it renders properly on the webpage. Elegant ships with -the ability support -minification <!-- yaspeller ignore --> -of CSS files through the `minify_css.html` file. This file -is located in the `templates/_includes` directory of the theme and has the following -contents: - -```text -{% assets filters="cssmin", output="css/style.min.css", "css/pygments.css", "tipuesearch/tipuesearch.css","css/elegant.css", "css/admonition.css", "css/custom.css" %} -<link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> -{% endassets %} -``` - -To ensure that your new CSS file is minified, we advise you to follow one of these two -suggestions. - -If you are planning to add a new feature to your own website, consider placing the changes in -the Elegant theme's `custom.css` file. This file is also located in the `templates/_includes` -directory, and is blank in a standard Elegant theme. As the `custom.css` file is already in -the list of files to minify, no addition modifications are required. If you are not sure -whether or not the feature will be submitted as part of Elegant, this is a good place to -start at. - -If you are planning to add a new feature to Elegant and share it with others, you will be asked -to place any CSS changes for your feature in a new CSS file. This new file should be saved in -the theme's `templates/_includes` directory with the other CSS files. To ensure that the new -file is minified, a reference to it must be added to the first line of the `minify_css.html` -file, after the `css/admonition.css` file reference and before the `css/custom.css` file -reference. diff --git a/documentation/pelicanconf.py b/documentation/pelicanconf.py index 41a4ff57..54732126 100644 --- a/documentation/pelicanconf.py +++ b/documentation/pelicanconf.py @@ -27,7 +27,6 @@ PLUGIN_PATHS = ["plugins"] PLUGINS = [ - "assets", "extract_toc", "just_table", "liquid_tags.img", diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 63169098..556c02b5 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -1,8 +1,13 @@ import fs from "fs"; import path from "path"; -import { watch, parallel, series } from "gulp"; +import { src, dest, watch, parallel, series } from "gulp"; import { exec } from "child_process"; import { create as browserSyncCreate } from "browser-sync"; +import postcss from "gulp-postcss"; +import cssnano from "cssnano"; +import postcssPresetEnv from "postcss-preset-env"; +import concat from "gulp-concat"; + const browserSync = browserSyncCreate(); const path404 = path.join(__dirname, "documentation/output/404.html"); @@ -11,7 +16,7 @@ const content_404 = () => const cleanOutput = () => exec("cd documentation && rm -rf outout/"); -const buildAll = () => exec("cd documentation && invoke build"); +const buildContent = () => exec("cd documentation && invoke build"); const reload = cb => { browserSync.init( @@ -47,6 +52,7 @@ const watchFiles = () => { "documentation/publishconf.py", "templates/**/*.html", "static/**/*.css", + "!static/**/elegant.prod.css", "static/**/*.js" ], { ignoreInitial: false }, @@ -54,7 +60,38 @@ const watchFiles = () => { ); }; -const elegant = series(cleanOutput, buildAll, parallel(watchFiles, reload)); +const pathProdCSS = path.join(__dirname, "static/css/elegant.prod.css"); +const rmProdCSS = cb => { + if (fs.existsSync(pathProdCSS)) { + fs.unlinkSync(pathProdCSS); + } + cb(); +}; + +const compileCSS = () => { + const plugins = [ + // postcssPresetEnv comes with autoprefixer + postcssPresetEnv(), + cssnano() + ]; + return src([ + "static/tipuesearch/tipuesearch.css", + "static/css/*.css", + "!static/css/elegant.prod.css" + ]) + .pipe(postcss(plugins)) + .pipe(concat("elegant.prod.css")) + .pipe(dest("static/css/")); +}; + +const buildAll = series(rmProdCSS, compileCSS, buildContent); +const elegant = series( + compileCSS, + cleanOutput, + buildContent, + parallel(watchFiles, reload) +); +exports.css = series(rmProdCSS, compileCSS); exports.elegant = elegant; exports.default = elegant; diff --git a/package.json b/package.json index 0f96f638..29a883a3 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,12 @@ "babel-core": "^6.26.3", "babel-preset-es2015": "^6.24.1", "browser-sync": "^2.26.7", + "cssnano": "^4.1.10", "cz-conventional-changelog": "3.0.2", "gulp": "^4.0.2", + "gulp-concat": "^2.6.1", + "gulp-postcss": "^8.0.0", + "postcss-preset-env": "^6.7.0", "semantic-release": "^15.13.31" }, "config": { @@ -20,5 +24,10 @@ "presets": [ "es2015" ] - } + }, + "dependencies": {}, + "browserslist": [ + "defaults", + "IE 10" + ] } diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css new file mode 100644 index 00000000..d6a58313 --- /dev/null +++ b/static/css/elegant.prod.css @@ -0,0 +1,8 @@ +@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} +div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>');vertical-align:-20%} + +:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a,article p:not(#list-of-translations):not(#post-share-links) a,blockquote a{border-bottom:thin dashed #a9a9a9;color:#000}article div.article-content ul:not(.articles-timeline) a:hover,article ol a:hover,article p a:hover{border-bottom:none;text-decoration:none;text-shadow:none}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}blockquote{margin:2em 0 0 2em;padding:0 0 0 7px}blockquote:before{content:open-quote;vertical-align:top;font-size:4em;margin-left:-.8em;color:#646464;position:absolute}blockquote:after{visibility:hidden;content:close-quote}blockquote p{display:inline;font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{text-decoration:none;visibility:visible}a.headerlink{color:grey;padding-left:.5em;visibility:hidden}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius);-moz-border-radius-topleft:6px}table thead:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-webkit-border-top-right-radius:var(--border-radius);border-top-right-adius:4px;border-top-right-adius:var(--border-radius);-moz-border-radius-topright:6px}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius);-moz-border-radius-bottomleft:6px}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius);-moz-border-radius-bottomright:6px}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +.highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} +div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} +section#article-sidebar{float:right;font-size:.9em} +:root{--heading-border-bottom-width:1px;--heading-border-bottom-style:solid;--heading-others-line-height:1.3rem;--heading-others-h4-font-size:1.1rem}h1,h2,h3,h4,h5,h6{font-family:Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;font-weight:400;margin:10px 0}h1{font-size:3rem;border-bottom:1px solid #a9a9a9;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #a9a9a9}h2{font-size:2.5rem;border-bottom:1px solid silver;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) silver}h3{border-bottom:1px solid #d3d3d3;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #d3d3d3;font-size:2.3rem}h4{font-size:2rem}h5{font-size:1.8rem}h6{font-size:1.6rem}h1,h2,h3{line-height:1.3em}h4,h5,h6{line-height:1.1em}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:80%}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:70%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}h1#my-projects,h1#recent-posts{border:none;font-size:2.4rem;line-height:1.3rem;line-height:var(--heading-others-line-height)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--heading-others-h4-font-size);line-height:1.3rem;line-height:var(--heading-others-line-height)} diff --git a/templates/_includes/minify_css.html b/templates/_includes/minify_css.html index 600e82e3..6d70e508 100644 --- a/templates/_includes/minify_css.html +++ b/templates/_includes/minify_css.html @@ -1,11 +1,5 @@ {% assets filters="cssmin", output="css/style.min.css", -"css/pygments.css", -"tipuesearch/tipuesearch.css", -"css/elegant.css", -"css/typography.css", -"css/admonition.css", -"css/sidebar.css", -"css/sidebar-social.css", +"css/elegant.prod.css", "css/custom.css" %} <link rel="stylesheet" href="{{ SITEURL }}/{{ ASSET_URL }}"> {% endassets %} diff --git a/templates/base.html b/templates/base.html index c9f032fb..887965e5 100644 --- a/templates/base.html +++ b/templates/base.html @@ -37,10 +37,7 @@ {% if 'assets' in PLUGINS %} {% include '_includes/minify_css.html' with context %} {% else %} - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/pygments.css" media="screen"> - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/tipuesearch/tipuesearch.css" media="screen"> - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/elegant.css" media="screen"> - <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/admonition.css" media="screen"> + <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/elegant.prod.css" media="screen"> <link rel="stylesheet" type="text/css" href="{{ SITEURL }}/theme/css/custom.css" media="screen"> {% endif %} {% endblock head_links %} diff --git a/yarn.lock b/yarn.lock index 0e7766d5..f109d3af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -54,6 +54,11 @@ resolve-from "^5.0.0" resolve-global "^1.0.0" +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -282,6 +287,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + "@types/retry@^0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -352,6 +362,11 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -650,6 +665,19 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +autoprefixer@^9.6.1: + version "9.7.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.3.tgz#fd42ed03f53de9beb4ca0d61fb4f7268a9bb50b4" + integrity sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q== + dependencies: + browserslist "^4.8.0" + caniuse-lite "^1.0.30001012" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.23" + postcss-value-parser "^4.0.2" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1209,6 +1237,11 @@ bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + bottleneck@^2.18.1: version "2.19.5" resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" @@ -1316,6 +1349,15 @@ browser-sync@^2.26.7: ua-parser-js "0.7.17" yargs "6.4.0" +browserslist@^4.0.0, browserslist@^4.6.4, browserslist@^4.8.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.0.tgz#6f06b0f974a7cc3a84babc2ccc56493668e3c789" + integrity sha512-HYnxc/oLRWvJ3TsGegR0SRL/UDnknGq2s/a8dYYEO+kOQ9m9apKoS5oiathLKZdh/e9uE+/J3j92qPlGD/vTqA== + dependencies: + caniuse-lite "^1.0.30001012" + electron-to-chromium "^1.3.317" + node-releases "^1.1.41" + bs-recipes@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" @@ -1460,6 +1502,21 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001012: + version "1.0.30001012" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001012.tgz#653ec635e815b9e0fb801890923b0c2079eb34ec" + integrity sha512-7RR4Uh04t9K1uYRWzOJmzplgEOAXbfK72oVNokCdMzA67trrhPzy93ahKk1AWHiA0c58tD2P+NHqxrA8FZ+Trg== + capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" @@ -1665,6 +1722,15 @@ cmd-shim@^3.0.0, cmd-shim@^3.0.3: graceful-fs "^4.1.2" mkdirp "~0.5.0" +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1687,7 +1753,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -1706,16 +1772,32 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -1810,6 +1892,13 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-with-sourcemaps@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + config-chain@^1.1.12: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" @@ -1947,7 +2036,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.2.0: +cosmiconfig@^5.0.0, cosmiconfig@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -2009,6 +2098,159 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.2.tgz#e5f81ab3a56b8eefb7f0092ce7279329f454de3d" + integrity sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg== + dependencies: + css-tree "1.0.0-alpha.37" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -2256,6 +2498,32 @@ dir-glob@^3.0.0, dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -2263,7 +2531,7 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" -dot-prop@^4.1.0: +dot-prop@^4.1.0, dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== @@ -2337,6 +2605,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.317: + version "1.3.319" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.319.tgz#b7d59a93b6959fcf50a526f50ef637d045ebcb19" + integrity sha512-t/lYNZPwS9jLJ9SBLGd6ERYtCtsYPAXzsE1VYLshrUWpQCTAswO1pERZV4iOZipW2uVsGQrJtm2iWiYVp1zTZw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -2429,6 +2702,11 @@ engine.io@~3.2.0: engine.io-parser "~2.1.0" ws "~3.3.1" +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + env-ci@^4.0.0: version "4.5.1" resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.5.1.tgz#2ef014dcb974728b46d1244e491e9e6ccc1923ef" @@ -2461,7 +2739,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1: +es-abstract@^1.12.0, es-abstract@^1.5.1: version "1.16.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34" integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA== @@ -2864,6 +3142,11 @@ flagged-respawn@^1.0.0: resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -3257,6 +3540,26 @@ gulp-cli@^2.2.0: v8flags "^3.0.1" yargs "^7.1.0" +gulp-concat@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/gulp-concat/-/gulp-concat-2.6.1.tgz#633d16c95d88504628ad02665663cee5a4793353" + integrity sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M= + dependencies: + concat-with-sourcemaps "^1.0.0" + through2 "^2.0.0" + vinyl "^2.0.0" + +gulp-postcss@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/gulp-postcss/-/gulp-postcss-8.0.0.tgz#8d3772cd4d27bca55ec8cb4c8e576e3bde4dc550" + integrity sha512-Wtl6vH7a+8IS/fU5W9IbOpcaLqKxd5L1DUOzaPmlnCbX1CrG0aWdwVnC3Spn8th0m8D59YbysV5zPUe1n/GJYg== + dependencies: + fancy-log "^1.3.2" + plugin-error "^1.0.1" + postcss "^7.0.2" + postcss-load-config "^2.0.0" + vinyl-sourcemaps-apply "^0.2.1" + gulp@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" @@ -3368,13 +3671,18 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3407,6 +3715,21 @@ hosted-git-info@^3.0.0: dependencies: lru-cache "^5.1.1" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -3520,6 +3843,13 @@ immutable@^3: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -3536,6 +3866,13 @@ import-fresh@^3.0.0, import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" @@ -3563,6 +3900,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -3669,6 +4011,11 @@ ip@1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -3696,6 +4043,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -3732,6 +4084,18 @@ is-cidr@^3.0.0: dependencies: cidr-regex "^2.0.10" +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -3926,6 +4290,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + is-retry-allowed@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" @@ -3941,6 +4310,13 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -4454,6 +4830,11 @@ lodash._createset@~4.0.0: resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" @@ -4504,11 +4885,31 @@ lodash.map@^4.5.1: resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + lodash.set@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -4676,6 +5077,11 @@ matchdep@^2.0.0: resolve "^1.4.0" stack-trace "0.0.10" +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + meant@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" @@ -5012,6 +5418,13 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" +node-releases@^1.1.41: + version "1.1.41" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.41.tgz#57674a82a37f812d18e3b26118aefaf53a00afed" + integrity sha512-+IctMa7wIs8Cfsa8iYzeaLTFwv5Y4r5jZud+4AnfymzeEXKBCavFX0KBgzVaPVqf0ywa6PrO8/b+bPqdwjGBSg== + dependencies: + semver "^6.3.0" + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -5049,6 +5462,16 @@ normalize-path@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + normalize-url@^4.0.0: version "4.5.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" @@ -5304,6 +5727,18 @@ npm@^6.10.3: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5406,6 +5841,16 @@ object.reduce@^1.0.0: for-own "^1.0.0" make-iterator "^1.0.0" +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -5857,6 +6302,16 @@ pkg-conf@^2.1.0: find-up "^2.0.0" load-json-file "^4.0.0" +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + portscanner@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" @@ -5870,6 +6325,575 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz#b2a721a0d279c2f9103a36331c88981526428cc7" + integrity sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0" + +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.23.tgz#9f9759fad661b15964f3cfc3140f66f1e05eadc1" + integrity sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" @@ -5972,7 +6996,7 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.5.1: +q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= @@ -6471,6 +7495,16 @@ reusify@^1.0.0: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + right-pad@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/right-pad/-/right-pad-1.0.1.tgz#8ca08c2cbb5b55e74dafa96bf7fd1a27d568c8d0" @@ -6543,7 +7577,7 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: +sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -6604,7 +7638,7 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -6740,6 +7774,13 @@ signale@^1.2.1: figures "^2.0.0" pkg-conf "^2.1.0" +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -6917,7 +7958,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -7023,6 +8064,11 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-trace@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" @@ -7234,6 +8280,15 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -7246,6 +8301,13 @@ supports-color@^5.0.0, supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" @@ -7262,6 +8324,25 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" @@ -7357,6 +8438,11 @@ timed-out@^4.0.0: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" @@ -7569,6 +8655,16 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -7615,6 +8711,11 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -7695,6 +8796,14 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -7732,6 +8841,11 @@ value-or-function@^3.0.0: resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= +vendors@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -7777,6 +8891,13 @@ vinyl-sourcemap@^1.1.0: remove-bom-buffer "^3.0.0" vinyl "^2.0.0" +vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= + dependencies: + source-map "^0.5.1" + vinyl@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" From 068d50a455d57e4706525908b174bbc4606c6fb6 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 09:08:24 +0500 Subject: [PATCH 47/59] feat(blockquote): improve blockquote look 1. Open and Close quotes are displayed 2. Set background color of the quote 3. Respect paragraph breaks inisde the quote --- .../content/Components/blockquote.md | 23 +++++++++++ static/css/blockquote.css | 32 +++++++++++++++ static/css/elegant.css | 39 +------------------ static/css/elegant.prod.css | 3 +- 4 files changed, 58 insertions(+), 39 deletions(-) create mode 100644 documentation/content/Components/blockquote.md create mode 100644 static/css/blockquote.css diff --git a/documentation/content/Components/blockquote.md b/documentation/content/Components/blockquote.md new file mode 100644 index 00000000..15abd0ec --- /dev/null +++ b/documentation/content/Components/blockquote.md @@ -0,0 +1,23 @@ +Title: Blockquote Style +Tags: style, typography +Category: Components +Date: 2019-12-01 18:41 +Slug: blockquote-style +Authors: Talha Mansoor +Subtitle: +Summary: +Keywords: + +This is how blockquotes appear in the Elegant theme. + +> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. +> +> Lobortis feugiat vivamus at augue. Sed augue lacus viverra vitae congue eu consequat. Elit pellentesque habitant morbi tristique senectus et. Netus et malesuada fames ac turpis egestas. +> +> Porttitor rhoncus dolor purus non enim praesent elementum facilisis. Augue eget arcu dictum varius duis at consectetur. +> +> Pharetra pharetra massa massa ultricies mi quis. Vulputate enim nulla aliquet porttitor lacus luctus accumsan. Pulvinar neque laoreet suspendisse interdum. +> +> Ultrices eros in cursus turpis massa tincidunt dui ut ornare. Sem et tortor consequat id porta nibh venenatis. Nulla facilisi morbi tempus iaculis urna id volutpat lacus. +> +> Arcu ac tortor dignissim convallis aenean. Mauris pharetra et ultrices neque ornare. Scelerisque fermentum dui faucibus in ornare. Nibh tellus molestie nunc non blandit. diff --git a/static/css/blockquote.css b/static/css/blockquote.css new file mode 100644 index 00000000..87513402 --- /dev/null +++ b/static/css/blockquote.css @@ -0,0 +1,32 @@ +blockquote { + margin: 3em 0 3em 2em; + padding: 0 7px; + background: Cornsilk; + border-radius: var(--border-radius); + border-left: 5px solid goldenrod; +} +blockquote:before, +blockquote:after { + font-size: 4em; + color: dimgray; + vertical-align: top; +} +blockquote:before { + content: open-quote; + margin-left: -0.8em; + position: absolute; +} +blockquote:after { + content: close-quote; + position: relative; + right: -97%; + top: 45px; +} +blockquote p { + font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif; + font-size: inherit; + font-variant: normal; + line-height: 1.7em; + text-transform: none; + font-weight: 300; +} diff --git a/static/css/elegant.css b/static/css/elegant.css index 6fef2922..7d51031f 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -195,31 +195,6 @@ div.recent-posts p { .article-content p { margin: 20px 0; } -blockquote { - margin: 2em 0 0 2em; - padding: 0 0 0 7px; -} -blockquote:before { - content: open-quote; - vertical-align: top; - font-size: 4em; - margin-left: -0.8em; - color: #646464; - position: absolute; -} -blockquote:after { - visibility: hidden; - content: close-quote; -} -blockquote p { - display: inline; - font-family: "Helvetica Neue", Helvetica, Arial, Sans-Serif; - font-size: inherit; - font-variant: normal; - line-height: 1.7em; - text-transform: none; - font-weight: 300; -} .article-content ul:not(.related-posts-list):not(.articles-timeline) { font-size: inherit; list-style-type: disc; @@ -513,8 +488,6 @@ a#allposts:hover { } /* reST specific rules*/ .literal { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; background-color: #f7f7f9; border-radius: var(--border-radius); border: 1px solid #e1e1e8; @@ -588,8 +561,6 @@ table { border-collapse: separate; *border-collapse: collapse; border-left: 0; - -webkit-border-radius: var(--border-radius); - -moz-border-radius: var(--border-radius); border-radius: var(--border-radius); } @@ -605,27 +576,19 @@ table thead:first-child tr:first-child th { } table thead:first-child tr:first-child > th:first-child { - -webkit-border-top-left-radius: var(--border-radius); border-top-left-radius: var(--border-radius); - -moz-border-radius-topleft: 6px; } table thead:first-child tr:first-child > th:last-child { - -webkit-border-top-right-radius: var(--border-radius); - border-top-right-adius: var(--border-radius); - -moz-border-radius-topright: 6px; + border-top-right-radius: var(--border-radius); } table tbody:last-child tr:last-child > td:first-child { - -webkit-border-bottom-left-radius: var(--border-radius); border-bottom-left-radius: var(--border-radius); - -moz-border-radius-bottomleft: 6px; } table tbody:last-child tr:last-child > td:last-child { - -webkit-border-bottom-right-radius: var(--border-radius); border-bottom-right-radius: var(--border-radius); - -moz-border-radius-bottomright: 6px; } table tbody > tr:nth-child(odd) > td { diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css index d6a58313..a9b6498b 100644 --- a/static/css/elegant.prod.css +++ b/static/css/elegant.prod.css @@ -1,7 +1,8 @@ @import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>');vertical-align:-20%} +blockquote{margin:3em 0 3em 2em;padding:0 7px;background:#fff8dc;border-radius:var(--border-radius)}blockquote:after,blockquote:before{font-size:4em;color:#696969;vertical-align:top}blockquote:before{content:open-quote;margin-left:-.8em;position:absolute}blockquote:after{content:close-quote;position:relative;right:-97%;top:45px}blockquote p{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300} -:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a,article p:not(#list-of-translations):not(#post-share-links) a,blockquote a{border-bottom:thin dashed #a9a9a9;color:#000}article div.article-content ul:not(.articles-timeline) a:hover,article ol a:hover,article p a:hover{border-bottom:none;text-decoration:none;text-shadow:none}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}blockquote{margin:2em 0 0 2em;padding:0 0 0 7px}blockquote:before{content:open-quote;vertical-align:top;font-size:4em;margin-left:-.8em;color:#646464;position:absolute}blockquote:after{visibility:hidden;content:close-quote}blockquote p{display:inline;font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{text-decoration:none;visibility:visible}a.headerlink{color:grey;padding-left:.5em;visibility:hidden}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius);-moz-border-radius-topleft:6px}table thead:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;-webkit-border-top-right-radius:var(--border-radius);border-top-right-adius:4px;border-top-right-adius:var(--border-radius);-moz-border-radius-topright:6px}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius);-moz-border-radius-bottomleft:6px}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius);-moz-border-radius-bottomright:6px}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a,article p:not(#list-of-translations):not(#post-share-links) a,blockquote a{border-bottom:thin dashed #a9a9a9;color:#000}article div.article-content ul:not(.articles-timeline) a:hover,article ol a:hover,article p a:hover{border-bottom:none;text-decoration:none;text-shadow:none}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{text-decoration:none;visibility:visible}a.headerlink{color:grey;padding-left:.5em;visibility:hidden}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} .highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} section#article-sidebar{float:right;font-size:.9em} From 8059ca84b77ab82bffd1ed80f010235f9ca57ed6 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 11:17:05 +0500 Subject: [PATCH 48/59] feat(permalink): improve permalink look MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Fix issue ¶ in the RSS feed 2. Use animation to show the icon --- documentation/content/Components/permalink.md | 57 ++++++++++++++++++ .../content/Components/table-of-contents.md | 23 ------- .../images/elegant-theme-toc-permalinks.png | Bin 6458 -> 5982 bytes documentation/pelicanconf.py | 2 +- static/css/elegant.css | 16 ----- static/css/elegant.prod.css | 5 +- static/css/permalink.css | 20 ++++++ 7 files changed, 81 insertions(+), 42 deletions(-) create mode 100644 documentation/content/Components/permalink.md create mode 100644 static/css/permalink.css diff --git a/documentation/content/Components/permalink.md b/documentation/content/Components/permalink.md new file mode 100644 index 00000000..ee157be0 --- /dev/null +++ b/documentation/content/Components/permalink.md @@ -0,0 +1,57 @@ +Title: Permalinks To Headings +Tags: navigation, +Category: Components +Date: 2019-12-02 11:05 +Slug: permalinks-to-headings +Subtitle: +Summary: +Keywords: + +First, you need to enable the `toc` extension for Markdown in your Pelican configuration. + +```python +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.toc': {} + } +} +``` + +Then enable `permalink` option available for the `toc` extension. + +```python +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.toc': { + 'permalink': 'true', + } + } +} +``` + +Enabling the `permalink` option will provide direct links to each heading. + +Hover over following example heading to see the permalink. + +## Example Heading + +You would get this, + +![Permalinks example using Markdown]({static}/images/elegant-theme-toc-permalinks.png) + +!!! Tip Recommendation + + When set to True the paragraph symbol `¶` or `¶` is used by Python markdown. + This becomes part of the RSS feed. + + We recommend setting permalink option to a space. + +```python +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.toc': { + 'permalink': ' ', + } + } +} +``` diff --git a/documentation/content/Components/table-of-contents.md b/documentation/content/Components/table-of-contents.md index 636c9535..4aca4434 100644 --- a/documentation/content/Components/table-of-contents.md +++ b/documentation/content/Components/table-of-contents.md @@ -71,29 +71,6 @@ This is the content of my sample blog post. I will end my example here. ``` -### Enabling Permalinks - -Although it is not required, we recommend you to take advantage of `permalink` option available for the -`toc` extension. - -Enabling the `permalink` option will -provide direct links to each section. - -![Permalinks example using Markdown]({static}/images/elegant-theme-toc-permalinks.png) - -To enable this option, you need to add the `'permalink': 'true'` property to the -`'markdown.extensions.toc'` section that was added in the previous section. - -```python -MARKDOWN = { - 'extension_configs': { - 'markdown.extensions.toc': { - 'permalink': 'true', - } - } -} -``` - ### Other Options For other options available for the Markdown Table of Contents extension, refer to the diff --git a/documentation/content/images/elegant-theme-toc-permalinks.png b/documentation/content/images/elegant-theme-toc-permalinks.png index 3e20f00cf3432d57ea1f5a8d763323e2259630e2..21003efcdb0138d68d753d1bcbbd850e0ebd19a4 100644 GIT binary patch literal 5982 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 M07*qoM6N<$f-jK%dH?_b literal 6458 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 diff --git a/documentation/pelicanconf.py b/documentation/pelicanconf.py index 54732126..a6529a01 100644 --- a/documentation/pelicanconf.py +++ b/documentation/pelicanconf.py @@ -21,7 +21,7 @@ "markdown.extensions.codehilite": {"css_class": "highlight"}, "markdown.extensions.extra": {}, "markdown.extensions.meta": {}, - "markdown.extensions.toc": {"permalink": "true"}, + "markdown.extensions.toc": {"permalink": " "}, } } diff --git a/static/css/elegant.css b/static/css/elegant.css index 7d51031f..fca28f89 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -273,22 +273,6 @@ ul.multi-parts-list li.active-part { p#post-share-links { text-align: right; } -/* Perma link in article */ -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink { - text-decoration: none; - visibility: visible; -} -a.headerlink { - color: grey; - padding-left: 0.5em; - visibility: hidden; -} /* Categories */ .list-of-categories span { font-size: 0.7em; diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css index a9b6498b..63ff681f 100644 --- a/static/css/elegant.prod.css +++ b/static/css/elegant.prod.css @@ -1,8 +1,9 @@ @import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>');vertical-align:-20%} -blockquote{margin:3em 0 3em 2em;padding:0 7px;background:#fff8dc;border-radius:var(--border-radius)}blockquote:after,blockquote:before{font-size:4em;color:#696969;vertical-align:top}blockquote:before{content:open-quote;margin-left:-.8em;position:absolute}blockquote:after{content:close-quote;position:relative;right:-97%;top:45px}blockquote p{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300} +blockquote{margin:3em 0 3em 2em;padding:0 7px;background:#fff8dc;border-radius:var(--border-radius);border-left:5px solid #daa520}blockquote:after,blockquote:before{font-size:4em;color:#696969;vertical-align:top}blockquote:before{content:open-quote;margin-left:-.8em;position:absolute}blockquote:after{content:close-quote;position:relative;right:-97%;top:45px}blockquote p{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300} -:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a,article p:not(#list-of-translations):not(#post-share-links) a,blockquote a{border-bottom:thin dashed #a9a9a9;color:#000}article div.article-content ul:not(.articles-timeline) a:hover,article ol a:hover,article p a:hover{border-bottom:none;text-decoration:none;text-shadow:none}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{text-decoration:none;visibility:visible}a.headerlink{color:grey;padding-left:.5em;visibility:hidden}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a,article p:not(#list-of-translations):not(#post-share-links) a,blockquote a{border-bottom:thin dashed #a9a9a9;color:#000}article div.article-content ul:not(.articles-timeline) a:hover,article ol a:hover,article p a:hover{border-bottom:none;text-decoration:none;text-shadow:none}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{opacity:1;text-decoration:none;visibility:visible}a.headerlink{content:url('data:image/svg+xml;utf8,<svg fill="darkgray" viewBox="0 0 80 80" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="m29.298 63.471-4.048 4.02c-3.509 3.478-9.216 3.481-12.723 0-1.686-1.673-2.612-3.895-2.612-6.257s.927-4.585 2.611-6.258l14.9-14.783c3.088-3.062 8.897-7.571 13.131-3.372 1.943 1.93 5.081 1.917 7.01-.025 1.93-1.942 1.918-5.081-.025-7.009-7.197-7.142-17.834-5.822-27.098 3.37l-14.901 14.784c-3.575 3.549-5.543 8.269-5.543 13.293s1.968 9.743 5.544 13.292c3.679 3.65 8.51 5.474 13.343 5.474 4.834 0 9.667-1.824 13.348-5.476l4.051-4.021c1.942-1.928 1.953-5.066.023-7.009-1.927-1.941-5.068-1.952-7.011-.023zm45.156-57.427c-7.73-7.67-18.538-8.086-25.694-.986l-5.046 5.009c-1.943 1.929-1.955 5.066-.025 7.009s5.068 1.954 7.011.025l5.044-5.006c3.707-3.681 8.561-2.155 11.727.986 1.688 1.673 2.615 3.896 2.615 6.258 0 2.363-.928 4.586-2.613 6.259l-15.897 15.77c-7.269 7.212-10.679 3.827-12.134 2.383-1.943-1.929-5.08-1.917-7.01.025s-1.918 5.081.025 7.009c3.337 3.312 7.146 4.954 11.139 4.954 4.889 0 10.053-2.462 14.963-7.337l15.897-15.77c3.574-3.549 5.544-8.27 5.544-13.294 0-5.022-1.97-9.743-5.546-13.294z"/></svg>');display:inline-block;margin-left:5px;opacity:0;-webkit-transition:visibility 0s,opacity .2s ease-in;transition:visibility 0s,opacity .2s ease-in;visibility:hidden;width:20px} .highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} section#article-sidebar{float:right;font-size:.9em} diff --git a/static/css/permalink.css b/static/css/permalink.css new file mode 100644 index 00000000..cc644bca --- /dev/null +++ b/static/css/permalink.css @@ -0,0 +1,20 @@ +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + opacity: 1; + text-decoration: none; + visibility: visible; +} +a.headerlink { + content: url('data:image/svg+xml;utf8,<svg fill="darkgray" viewBox="0 0 80 80" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="m29.298 63.471-4.048 4.02c-3.509 3.478-9.216 3.481-12.723 0-1.686-1.673-2.612-3.895-2.612-6.257s.927-4.585 2.611-6.258l14.9-14.783c3.088-3.062 8.897-7.571 13.131-3.372 1.943 1.93 5.081 1.917 7.01-.025 1.93-1.942 1.918-5.081-.025-7.009-7.197-7.142-17.834-5.822-27.098 3.37l-14.901 14.784c-3.575 3.549-5.543 8.269-5.543 13.293s1.968 9.743 5.544 13.292c3.679 3.65 8.51 5.474 13.343 5.474 4.834 0 9.667-1.824 13.348-5.476l4.051-4.021c1.942-1.928 1.953-5.066.023-7.009-1.927-1.941-5.068-1.952-7.011-.023zm45.156-57.427c-7.73-7.67-18.538-8.086-25.694-.986l-5.046 5.009c-1.943 1.929-1.955 5.066-.025 7.009s5.068 1.954 7.011.025l5.044-5.006c3.707-3.681 8.561-2.155 11.727.986 1.688 1.673 2.615 3.896 2.615 6.258 0 2.363-.928 4.586-2.613 6.259l-15.897 15.77c-7.269 7.212-10.679 3.827-12.134 2.383-1.943-1.929-5.08-1.917-7.01.025s-1.918 5.081.025 7.009c3.337 3.312 7.146 4.954 11.139 4.954 4.889 0 10.053-2.462 14.963-7.337l15.897-15.77c3.574-3.549 5.544-8.27 5.544-13.294 0-5.022-1.97-9.743-5.546-13.294z"/></svg>'); + display: inline-block; + margin-left: 5px; + opacity: 0; + transition: visibility 0s, opacity 0.2s ease-in; + visibility: hidden; + width: 20px; +} From 5710d11fd489fcf9d780a85c41e76bb75ef37da3 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 11:38:51 +0500 Subject: [PATCH 49/59] chore(hook): all hooks should ignore elegant.prod.css file. Update hooks --- .pre-commit-config.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3a0bac38..5d039822 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,17 +1,20 @@ +exclude: '^static/css/elegant.prod.css' fail_fast: true repos: +- repo: meta + hooks: + - id: check-useless-excludes - repo: https://github.com/prettier/prettier - rev: master + rev: 1.19.1 hooks: - id: prettier files: \.(css|js|md|markdown|json) - exclude: ^static/(tipuesearch|magnific|css/elegant.prod.css) - repo: https://github.com/python/black - rev: master + rev: 19.10b0 hooks: - id: black - repo: https://github.com/pre-commit/pre-commit-hooks - rev: master + rev: v2.4.0 hooks: - id: check-added-large-files - id: check-ast From 4c843e9a0c66bb2656ef5df4411d4c891c493a11 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 11:58:10 +0500 Subject: [PATCH 50/59] feat(security): use rel="noopener noreferrer" with all target="_blank" --- .../content/101 Quick Start/security.md | 18 ++++++++ .../content/Components/add-license.md | 2 +- documentation/pelicanconf.py | 2 +- templates/_includes/article_author.html | 2 +- templates/_includes/footer.html | 6 +-- templates/_includes/share_links.html | 6 +-- templates/_includes/social_links.html | 42 +++++++++---------- templates/_includes/stat_counter.html | 2 +- 8 files changed, 49 insertions(+), 31 deletions(-) create mode 100644 documentation/content/101 Quick Start/security.md diff --git a/documentation/content/101 Quick Start/security.md b/documentation/content/101 Quick Start/security.md new file mode 100644 index 00000000..f667d701 --- /dev/null +++ b/documentation/content/101 Quick Start/security.md @@ -0,0 +1,18 @@ +Title: Elegant Is Safe +Tags: security, +Category: 101 — Quick Start +Date: 2019-12-02 11:45 +Slug: elegant-is-safe +Subtitle: +Summary: +Keywords: +Authors: Talha Mansoor + +Static sites are usually safer than server side rendered sites. There can be some edge cases though even for a static site. + +We came to know about a potential security issue that involves, `target="_blank"`. We have updated our code to follow the recommended fix. + +You can read more about the issue and its fix at these links, + +1. [About rel=noopener](https://mathiasbynens.github.io/rel-noopener/) +1. [react/jsx-no-target-blank](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md) diff --git a/documentation/content/Components/add-license.md b/documentation/content/Components/add-license.md index 0fd8926e..8cb5c5a0 100644 --- a/documentation/content/Components/add-license.md +++ b/documentation/content/Components/add-license.md @@ -14,7 +14,7 @@ For example, ```python SITE_LICENSE = """Content licensed under <a rel="license" - href="http://creativecommons.org/licenses/by/4.0/" target="_blank"> + href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener noreferrer"> Creative Commons Attribution 4.0 International License</a>.""" ``` diff --git a/documentation/pelicanconf.py b/documentation/pelicanconf.py index a6529a01..4733d7c5 100644 --- a/documentation/pelicanconf.py +++ b/documentation/pelicanconf.py @@ -113,7 +113,7 @@ # Legal SITE_LICENSE = """Content licensed under <a rel="license" - href="http://creativecommons.org/licenses/by/4.0/" target="_blank"> + href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener noreferrer"> Creative Commons Attribution 4.0 International License</a>.""" HOSTED_ON = {"name": "Netlify", "url": "https://www.netlify.com/"} diff --git a/templates/_includes/article_author.html b/templates/_includes/article_author.html index 86ab027a..5567ff96 100644 --- a/templates/_includes/article_author.html +++ b/templates/_includes/article_author.html @@ -9,7 +9,7 @@ {% endif %} {% set auth = AUTHORS.get(author|string) %} <div class="author_blurb"> - <a href="{{ auth.url }}" target="_blank" rel="nofollow"> + <a href="{{ auth.url }}" target="_blank" rel="nofollow noopener noreferrer"> {% if AUTHORS.get(author|string).avatar %} <img src={{auth.avatar}} alt="{{author}} Avatar" title="{{author}}"> {% endif %} diff --git a/templates/_includes/footer.html b/templates/_includes/footer.html index 1d1d9f02..57b36955 100644 --- a/templates/_includes/footer.html +++ b/templates/_includes/footer.html @@ -25,12 +25,12 @@ {% endif %} <div id="fpowered"> - Powered by: <a href="http://getpelican.com/" title="Pelican Home Page" target="_blank" rel="nofollow">Pelican</a> - Theme: <a href="https://elegant.oncrashreboot.com/" title="Theme Elegant Home Page" target="_blank" rel="nofollow">Elegant</a> + Powered by: <a href="http://getpelican.com/" title="Pelican Home Page" target="_blank" rel="nofollow noopener noreferrer">Pelican</a> + Theme: <a href="https://elegant.oncrashreboot.com/" title="Theme Elegant Home Page" target="_blank" rel="nofollow noopener noreferrer">Elegant</a> {% if HOSTED_ON and HOSTED_ON.name %} Hosted on: {% if HOSTED_ON.url %} - <a href={{HOSTED_ON.url}} target="_blank" rel="nofollow"> + <a href={{HOSTED_ON.url}} target="_blank" rel="nofollow noopener noreferrer"> {{HOSTED_ON.name}} </a> {% else %} diff --git a/templates/_includes/share_links.html b/templates/_includes/share_links.html index 3092cb5e..6f01846c 100644 --- a/templates/_includes/share_links.html +++ b/templates/_includes/share_links.html @@ -7,11 +7,11 @@ {% from '_includes/_defaults.html' import SHARE_POST_INTRO with context %} {{ SHARE_POST_INTRO }} {% endif %} - <a href="{{article.share_post['twitter']}}" target="_blank" title="Share on Twitter">Twitter</a> + <a href="{{article.share_post['twitter']}}" target="_blank" rel="nofollow noopener noreferrer" title="Share on Twitter">Twitter</a> ❄ - <a href="{{article.share_post['facebook']}}" target="_blank" title="Share on Facebook">Facebook</a> + <a href="{{article.share_post['facebook']}}" target="_blank" rel="nofollow noopener noreferrer" title="Share on Facebook">Facebook</a> ❄ - <a href="{{article.share_post['email']}}" target="_blank" title="Share via Email">Email</a> + <a href="{{article.share_post['email']}}" target="_blank" rel="nofollow noopener noreferrer" title="Share via Email">Email</a> </p> {% endif %} {% endmacro %} diff --git a/templates/_includes/social_links.html b/templates/_includes/social_links.html index 1e66eb3b..71fe8d7b 100644 --- a/templates/_includes/social_links.html +++ b/templates/_includes/social_links.html @@ -4,108 +4,108 @@ <h4>{{ SOCIAL_PROFILE_LABEL }}</h4> <div id="sidebar-social-link"> {% for entry in SOCIAL %} {% if entry[0]|lower == 'email' %} - <a href="mailto:{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="mailto:{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Mail" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#328cff"/><path d="m250 186c-46 0-69 35-69 74 0 44 29 72 68 72 43 0 73-32 73-75 0-44-34-71-72-71zm-1-37c30 0 57 13 77 33 0-22 35-22 35 1v150c-1 10 10 16 16 9 25-25 54-128-14-187-64-56-149-47-195-15-48 33-79 107-49 175 33 76 126 99 182 76 28-12 41 26 12 39-45 19-168 17-225-82-38-68-36-185 67-248 78-46 182-33 244 32 66 69 62 197-2 246-28 23-71 1-71-32v-11c-20 20-47 32-77 32-57 0-108-51-108-108 0-58 51-110 108-110" fill="#fff"/></svg> </a> {% endif %} {% if entry[0]|lower == 'github' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="GitHub" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#1B1817"/><path fill="#fff" d="M335 499c14 0 12 17 12 17H165s-2-17 12-17c13 0 16-6 16-12l-1-50c-71 16-86-28-86-28-12-30-28-37-28-37-24-16 1-16 1-16 26 2 40 26 40 26 22 39 59 28 74 22 2-17 9-28 16-35-57-6-116-28-116-126 0-28 10-51 26-69-3-6-11-32 3-67 0 0 21-7 70 26 42-12 86-12 128 0 49-33 70-26 70-26 14 35 6 61 3 67 16 18 26 41 26 69 0 98-60 120-117 126 10 8 18 24 18 48l-1 70c0 6 3 12 16 12z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'rss' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="RSS" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f80"/><circle cx="145" cy="367" r="35" fill="#fff"/><path fill="none" stroke="#fff" stroke-width="60" d="M109 241c89 0 162 73 162 162M109 127c152 0 276 124 276 276"/></svg> </a> {% endif %} {% if entry[0]|lower == 'facebook' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Facebook" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#1877f2"/><path d="M355.6 330l11.4-74h-71v-48c0-20.2 9.9-40 41.7-40H370v-63s-29.3-5-57.3-5c-58.5 0-96.7 35.4-96.7 99.6V256h-65v74h65v182h80V330h59.6z" fill="#fff"/></svg> </a> {% endif %} {% if entry[0]|lower == 'twitter' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Twitter" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#1da1f3"/><path fill="#fff" d="M437 152a72 72 0 0 1-40 12 72 72 0 0 0 32-40 72 72 0 0 1-45 17 72 72 0 0 0-122 65 200 200 0 0 1-145-74 72 72 0 0 0 22 94 72 72 0 0 1-32-7 72 72 0 0 0 56 69 72 72 0 0 1-32 1 72 72 0 0 0 67 50 200 200 0 0 1-105 29 200 200 0 0 0 309-179 200 200 0 0 0 35-37"/></svg> </a> {% endif %} {% if entry[0]|lower == 'linkedin' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="LinkedIn" role="img" viewBox="0 0 512 512" fill="#fff"><rect width="512" height="512" rx="15%" fill="#0077b5"/><circle cx="142" cy="138" r="37"/><path stroke="#fff" stroke-width="66" d="M244 194v198M142 194v198"/><path d="M276 282c0-20 13-40 36-40 24 0 33 18 33 45v105h66V279c0-61-32-89-76-89-34 0-51 19-59 32"/></svg> </a> {% endif %} {% if entry[0]|lower == 'instagram' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Instagram" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#d43377"/><g fill="none" stroke="#fff" stroke-width="29"><rect height="296" rx="78" width="296" x="108" y="108"/><circle cx="256" cy="256" r="69"/></g><circle cx="343" cy="169" fill="#fff" r="19"/></svg> </a> {% endif %} {% if entry[0]|lower == 'reddit' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Reddit" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f40"/><g fill="#fff"><ellipse cx="256" cy="307" rx="166" ry="117"/><circle cx="106" cy="256" r="42"/><circle cx="407" cy="256" r="42"/><circle cx="375" cy="114" r="32"/></g><g stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="m256 196 23-101 73 15" stroke="#fff" stroke-width="16"/><path d="m191 359c33 25 97 26 130 0" stroke="#f40" stroke-width="13"/></g><g fill="#f40"><circle cx="191" cy="287" r="31"/><circle cx="321" cy="287" r="31"/></g></svg> </a> {% endif %} {% if entry[0]|lower == 'youtube' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="YouTube" role="img" viewBox="0 0 512 512" fill="#ed1d24"><rect width="512" height="512" rx="15%"/><path d="m427 169c-4-15-17-27-32-31-34-9-239-10-278 0-15 4-28 16-32 31-9 38-10 135 0 174 4 15 17 27 32 31 36 10 241 10 278 0 15-4 28-16 32-31 9-36 9-137 0-174" fill="#fff"/><path d="m220 203v106l93-53"/></svg> </a> {% endif %} {% if entry[0]|lower == 'gmail' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Gmail" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><rect width="362" height="272" x="75" y="120" fill="#f2f2f2" rx="8%"/><path fill="#d54c3f" d="M120 392H97c-12 0-22-10-22-23V143h45z"/><path fill="#b63524" d="M392 392h23c12 0 22-10 22-23V143h-45z"/><path fill-opacity=".05" d="M256 286L120 392V187z"/><path fill-opacity=".08" d="M82 159l235 233h75V159z"/><path stroke-linecap="round" fill="none" stroke="#de5145" stroke-width="45" d="M97 143l159 115 159-115"/><path fill="#f2f2f2" d="M415 120c-5 0-10 2-13 4L256 230 110 124c-3-2-8-4-13-4z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'stackoverflow' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Stack Overflow" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f58025"/><path stroke="#fff" stroke-width="30" fill="none" d="M293 89l90 120zm-53 50l115 97zm-41 65l136 64zm-23 69l148 31zm-6 68h150zm-45-44v105h241V297"/></svg> </a> {% endif %} {% if entry[0]|lower == 'hackernews' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Hacker News" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#f60"/><path fill="#fff" d="M124 91h51l81 162 81-164h51L276 293v136h-40V293z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'gitlab' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="GitLab" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#30353e"/><path fill="#e24329" d="M84 215l43-133c2-7 12-7 14 0l115 353L371 82c2-7 12-7 14 0l43 133"/><path fill="#fc6d26" d="M256 435L84 215h100.4zm71.7-220H428L256 435l71.6-220z"/><path fill="#fca326" d="M84 215l-22 67c-2 6 0 13 6 16l188 137zm344 0l22 67c2 6 0 13-6 16L256 435z"/></svg> </a> {% endif %} {% if entry[0]|lower == 'calendar' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg onload="w()" xmlns="http://www.w3.org/2000/svg" aria-label="Calendar" role="img" viewBox="0 0 512 512" font-family="monospace" text-anchor="middle" fill="#667777"><script type="text/ecmascript"><![CDATA[w=()=>{c=0;for (i in e={weekday:"long",month:"short",day:'numeric'}) document.getElementsByTagName('text')[c++].textContent=(new Date).toLocaleString(undefined,{[i]:e[i]})}]]></script><defs><clipPath id="c"><rect width="512" height="512" rx="15%"/></clipPath></defs><g clip-path="url(#c)"><rect width="512" height="512" fill="#dee"/><rect width="512" height="180" fill="#d34"/></g><g id="b"><circle fill="#eab" cx="384" cy="100" r="14" id="a"/><use x="43"/><use x="86"/></g><use y="43"/><text font-size="64" x="256" y="480" id="w">Sunday</text><text fill="#fff" font-size="140" x="140" y="164" id="m">FEB</text><text font-size="256" x="256" y="400" id="d">29</text></svg> </a> {% endif %} {% if entry[0]|lower == 'wire' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Wire" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><path fill="none" stroke="#000" stroke-width="19" d="M99 127v163a1 1 0 0 0 186 0V157a1 1 0 0 0-58 0v133a1 1 0 0 0 186 0V127"/></svg> </a> {% endif %} {% if entry[0]|lower == 'telegram' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Telegram" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#37aee2"/><path fill="#c8daea" d="M199 404c-11 0-10-4-13-14l-32-105 245-144"/><path fill="#a9c9dd" d="M199 404c7 0 11-4 16-8l45-43-56-34"/><path fill="#f6fbfe" d="M204 319l135 99c14 9 26 4 30-14l55-258c5-22-9-32-24-25L79 245c-21 8-21 21-4 26l83 26 190-121c9-5 17-3 11 4"/></svg> </a> {% endif %} {% if entry[0]|lower == 'spotify' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Spotify" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#3bd75f"/><circle cx="256" cy="256" fill="#fff" r="192"/><g fill="none" stroke="#3bd75f" stroke-linecap="round"><path d="m141 195c75-20 164-15 238 24" stroke-width="36"/><path d="m152 257c61-17 144-13 203 24" stroke-width="31"/><path d="m156 315c54-12 116-17 178 20" stroke-width="24"/></g></svg> </a> {% endif %} {% if entry[0]|lower == 'twitch' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Twitch" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><path d="m115 101-22 56v228h78v42h44l41-42h63l85-85v-199zm260 185-48 48h-78l-42 42v-42h-65v-204h233zm-48-100v85h-30v-85zm-78 0v85h-29v-85z" fill="#6441a4"/></svg> </a> {% endif %} {% if entry[0]|lower == 'mastodon' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Mastodon" role="img" viewBox="0 0 512 512" fill="#fff"><rect width="512" height="512" rx="15%"/><path d="m409 290c-5 24-43 50-85 56-86 11-137-6-137-6 3 13-4 54 70 52 31 0 58-7 58-7l2 27c-51 24-107 15-140 6-67-17-79-90-81-162v-59c0-74 49-96 49-96 50-24 180-22 222 0 0 0 49 22 49 96 0 0 1 55-7 93" fill="#3088d4"/><path d="m358 202v91h-35v-88c0-18-8-27-23-27-18 0-27 11-27 33v47h-34v-47c0-22-9-33-27-33-15 0-23 9-23 27v88h-35v-91c0-18 5-60 52-60 39 0 50 37 50 37s10-37 50-37c45 0 52 42 52 60"/></svg> </a> {% endif %} {% if entry[0]|lower == 'keybase' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" aria-label="Keybase" role="img" viewBox="0 0 512 512"><rect width="512" height="512" rx="15%" fill="#fff"/><g fill="#282828"><path d="m201 80 22-31 18 10c-9 18-8 24-8 26 8-3 81 10 59 80 0 0 44 12 76 57 29 39 11 104-57 84-58-17-111-13-177 40l32-81-79 102c-3-99 10-140 79-190-23-1-41-18-40-38l2-27c1-19 17-35 37-34 1-1 36 1 36 2zm36 96c-5-6-15 1-9 7l21 25-10 8c-2 2-3 5-1 7l2 3c3 3 6 0 6 0l10-9 10 10-22 17c-2 2-2 5-1 7l9 11c2 2 5 2 7 1l22-17 6 7c5 6 14-1 9-7zm-50-70-21-2c-5 0-10 4-11 9l-1 27c0 6 4 10 9 10l16 1c-1-6 4-36 8-45z"/><circle cx="215" cy="348" r="14"/><circle cx="298" cy="348" r="14"/></g></svg> </a> {% endif %} {% if entry[0]|lower == 'goodreads' %} - <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow"> + <a href="{{entry[1]}}" title="{{entry[2]}}" target="_blank" rel="nofollow noopener noreferrer"> <svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><rect fill="#EAE6CF" height="512" rx="64" width="512"/><path d="m254.92444 336.92444c43.2889-.36 74.07112-22.01333 92.33334-64.95111h.95556v65.48889c0 4.88-.32 12.44889-.95556 22.73333-1.30222 10.64445-4.78222 22.10223-10.42666 34.36889-5.65778 11.54667-14.79112 21.38667-27.37778 29.49778-12.44889 8.84-29.81778 13.44-52.12001 13.80444-21.48444 0-39.65333-5.59555-54.52444-16.77777-15.2-11.00889-24.08001-28.87111-26.65778-53.58667h-18.89778c1.93778 32.11111 12.18667 55.02667 30.76444 68.74222 18.08889 13.16445 41.04001 19.75556 68.83556 19.75556 27.45778 0 48.87112-5.14223 64.21778-15.43111 15.18223-9.92 26.08445-22.28445 32.71556-37.08 6.62222-14.79111 10.58222-28.86667 11.86667-42.21334.98222-13.35555 1.45778-22.91555 1.45778-28.68889v-270.088875h-18.90667v59.537775h-.95556c-7.27555-21.82667-19.30666-38.333335-36.12-49.524445-16.96-11.00445-35.70222-16.51111-56.21333-16.51111-35.72001.72444-62.85779 14.52444-81.43112 41.40889-19.07111 26.697775-28.59556 59.631105-28.59556 98.782195 0 40.23557 9.04445 73.52001 27.13334 99.86224 18.27555 26.88889 45.89778 40.51111 82.90222 40.87111zm-68.34222-224.89777c14.85333-24.359995 37.63111-36.986665 68.34222-37.888885 31.50223.90666 54.83556 13.17333 70.03556 36.808885 15.18223 23.64 22.77778 52.05331 22.77778 85.25331s-7.59555 61.43112-22.77778 84.70668c-15.2 24.72444-38.53333 37.34667-70.03556 37.88889-29.72889-.54667-52.36-12.81778-67.86222-36.80889-15.67556-23.27556-23.50667-51.87112-23.50667-85.79112-.004-31.75556 7.67111-59.81332 23.02667-84.16887z" fill="#743901"/></svg> </a> {% endif %} diff --git a/templates/_includes/stat_counter.html b/templates/_includes/stat_counter.html index 58716eb9..08c9f630 100644 --- a/templates/_includes/stat_counter.html +++ b/templates/_includes/stat_counter.html @@ -11,7 +11,7 @@ "statcounter.com/counter/counter.js'></"+"script>"); </script> <noscript><div class="statcounter"><a title="web analytics" -href="http://statcounter.com/" target="_blank"><img +href="http://statcounter.com/" target="_blank" rel="nofollow noopener noreferrer"><img class="statcounter" src="//c.statcounter.com/{{ STAT_COUNTER_PROJECT }}/0/{{ STAT_COUNTER_SECURITY }}/1/" alt="web analytics"></a></div></noscript> From 817bea8d091e99b6d6e5fc3dcc63ba6f627c5b66 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 12:01:48 +0500 Subject: [PATCH 51/59] fix(typography): remove border from headings in archive page --- static/css/elegant.prod.css | 4 ++-- static/css/typography.css | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css index 63ff681f..53585aa3 100644 --- a/static/css/elegant.prod.css +++ b/static/css/elegant.prod.css @@ -1,4 +1,4 @@ -@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} +@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current{background:#252525;color:#ccc}#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>');vertical-align:-20%} blockquote{margin:3em 0 3em 2em;padding:0 7px;background:#fff8dc;border-radius:var(--border-radius);border-left:5px solid #daa520}blockquote:after,blockquote:before{font-size:4em;color:#696969;vertical-align:top}blockquote:before{content:open-quote;margin-left:-.8em;position:absolute}blockquote:after{content:close-quote;position:relative;right:-97%;top:45px}blockquote p{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300} @@ -7,4 +7,4 @@ dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.hea .highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} section#article-sidebar{float:right;font-size:.9em} -:root{--heading-border-bottom-width:1px;--heading-border-bottom-style:solid;--heading-others-line-height:1.3rem;--heading-others-h4-font-size:1.1rem}h1,h2,h3,h4,h5,h6{font-family:Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;font-weight:400;margin:10px 0}h1{font-size:3rem;border-bottom:1px solid #a9a9a9;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #a9a9a9}h2{font-size:2.5rem;border-bottom:1px solid silver;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) silver}h3{border-bottom:1px solid #d3d3d3;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #d3d3d3;font-size:2.3rem}h4{font-size:2rem}h5{font-size:1.8rem}h6{font-size:1.6rem}h1,h2,h3{line-height:1.3em}h4,h5,h6{line-height:1.1em}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:80%}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:70%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}h1#my-projects,h1#recent-posts{border:none;font-size:2.4rem;line-height:1.3rem;line-height:var(--heading-others-line-height)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--heading-others-h4-font-size);line-height:1.3rem;line-height:var(--heading-others-line-height)} +:root{--heading-border-bottom-width:1px;--heading-border-bottom-style:solid;--heading-others-line-height:1.3rem;--heading-others-h4-font-size:1.1rem}h1,h2,h3,h4,h5,h6{font-family:Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;font-weight:400;margin:10px 0}h1{font-size:3rem;border-bottom:1px solid #a9a9a9;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #a9a9a9}h2{font-size:2.5rem;border-bottom:1px solid silver;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) silver}h3{border-bottom:1px solid #d3d3d3;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #d3d3d3;font-size:2.3rem}h4{font-size:2rem}h5{font-size:1.8rem}h6{font-size:1.6rem}h1,h2,h3{line-height:1.3em}h4,h5,h6{line-height:1.1em}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:80%}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:70%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}div.blog-archives h2,h1#my-projects,h1#recent-posts{border:none}h1#my-projects,h1#recent-posts{font-size:2.4rem;line-height:1.3rem;line-height:var(--heading-others-line-height)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--heading-others-h4-font-size);line-height:1.3rem;line-height:var(--heading-others-line-height)} \ No newline at end of file diff --git a/static/css/typography.css b/static/css/typography.css index aaaa8618..13676398 100644 --- a/static/css/typography.css +++ b/static/css/typography.css @@ -91,8 +91,12 @@ small.subtitle { font-style: italic; } h1#my-projects, -h1#recent-posts { +h1#recent-posts, +div.blog-archives h2 { border: none; +} +h1#my-projects, +h1#recent-posts { font-size: 2.4rem; line-height: var(--heading-others-line-height); } From e673f3da064a9a94dbd30a40f641f6d50ba5d6f8 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 12:08:07 +0500 Subject: [PATCH 52/59] chore(travis): fix travis build error --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index a3c058c1..ef611791 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,9 @@ dist: trusty python: - '3.6' +env: +- NODE_VERSION="12.13.1" + branches: only: - master @@ -20,6 +23,9 @@ cache: - directories: - $HOME/.cache/pre-commit +before_install: +- nvm install $NODE_VERSION + install: - pip install -r documentation/requirements.txt - pip install -U html5validator From b27135e50527097897d24bd04af9165ec8b06622 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 15:07:16 +0500 Subject: [PATCH 53/59] chore(spellcheck): add words to ignore --- .yaspeller.json | 17 ++++++++++++++--- documentation/content/Components/blockquote.md | 4 ++++ documentation/content/Contributing/postcss.md | 4 ++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/.yaspeller.json b/.yaspeller.json index 9023b5ae..52b3701d 100644 --- a/.yaspeller.json +++ b/.yaspeller.json @@ -20,6 +20,7 @@ "BestAzon", "bestazon", "bing", + "blockquote", "blog-o-matic", "BrowserSync", "cd", @@ -29,6 +30,7 @@ "commitizen", "config", "crafted", + "cssmin", "customizable", "customizations", "delinkification", @@ -46,6 +48,7 @@ "github", "github.com", "google", + "GulpJS", "gulpjs", "Gómez", "https", @@ -55,6 +58,7 @@ "jinja2", "jQuery", "js", + "jsx", "LaTeX", "lightbox", "LiveReload", @@ -77,21 +81,26 @@ "newbies", "newline", "nofollow", + "noopener", "OneLink", "onelink", "organizational", "Pablo", "Pablo's", "pelicanconf", + "permalink", "permalinks", "peru", "photogallery", "piexif", + "PostCSS", + "postcss", "Pygments", "README", "rebase", "rebasing", "refactor", + "rel", "reST", "reStructuredText", "resubmitting", @@ -109,10 +118,9 @@ "statcounter", "submitter", "sudo", - "Šuklje", "takeaways", - "talha", "Talha", + "talha", "Talha's", "talha131", "talham", @@ -128,14 +136,17 @@ "uncollapsed", "understandability", "unhide", + "unmaintained", "unordered", "validator", "versioning", "virtualenv", + "webassets", "webmasters", "Wegner", "whitespace", "yaml", - "yaspeller" + "yaspeller", + "Šuklje" ] } diff --git a/documentation/content/Components/blockquote.md b/documentation/content/Components/blockquote.md index 15abd0ec..adfef2f7 100644 --- a/documentation/content/Components/blockquote.md +++ b/documentation/content/Components/blockquote.md @@ -8,6 +8,8 @@ Subtitle: Summary: Keywords: +<!-- yaspeller ignore:start --> + This is how blockquotes appear in the Elegant theme. > Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pellentesque eu tincidunt tortor aliquam nulla facilisi. Nibh tortor id aliquet lectus proin nibh nisl condimentum id. @@ -21,3 +23,5 @@ This is how blockquotes appear in the Elegant theme. > Ultrices eros in cursus turpis massa tincidunt dui ut ornare. Sem et tortor consequat id porta nibh venenatis. Nulla facilisi morbi tempus iaculis urna id volutpat lacus. > > Arcu ac tortor dignissim convallis aenean. Mauris pharetra et ultrices neque ornare. Scelerisque fermentum dui faucibus in ornare. Nibh tellus molestie nunc non blandit. + +<!-- yaspeller ignore:end --> diff --git a/documentation/content/Contributing/postcss.md b/documentation/content/Contributing/postcss.md index a7a83572..eb7f2791 100644 --- a/documentation/content/Contributing/postcss.md +++ b/documentation/content/Contributing/postcss.md @@ -1,8 +1,8 @@ -Title: Use PostCSS To Compile CSS Stylesheets +Title: Use PostCSS To Compile CSS Style Sheets Tags: postcss, gulp Category: Contributing Date: 2019-12-01 23:13 -Slug: use-postcss-to-compile-css-stylesheets +Slug: use-postcss-to-compile-css-style-sheets Subtitle: Mandatory Authors: Talha Mansoor Summary: From 7c96bf45a78c28f9ed69e63309ea5bf390a3816b Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 15:13:58 +0500 Subject: [PATCH 54/59] docs(update): remove duplicate attribute rel --- documentation/content/Components/add-license.md | 4 ++-- documentation/pelicanconf.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/content/Components/add-license.md b/documentation/content/Components/add-license.md index 8cb5c5a0..246485fe 100644 --- a/documentation/content/Components/add-license.md +++ b/documentation/content/Components/add-license.md @@ -13,8 +13,8 @@ You can optionally define `SITE_LICENSE` variable in Pelican configuration. It w For example, ```python -SITE_LICENSE = """Content licensed under <a rel="license" - href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener noreferrer"> +SITE_LICENSE = """Content licensed under <a rel="license nofollow noopener noreferrer" + href="http://creativecommons.org/licenses/by/4.0/" target="_blank"> Creative Commons Attribution 4.0 International License</a>.""" ``` diff --git a/documentation/pelicanconf.py b/documentation/pelicanconf.py index 4733d7c5..5e20c3b8 100644 --- a/documentation/pelicanconf.py +++ b/documentation/pelicanconf.py @@ -112,8 +112,8 @@ FEATURED_IMAGE = SITEURL + "/theme/images/apple-touch-icon-152x152.png" # Legal -SITE_LICENSE = """Content licensed under <a rel="license" - href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="nofollow noopener noreferrer"> +SITE_LICENSE = """Content licensed under <a rel="license nofollow noopener noreferrer" + href="http://creativecommons.org/licenses/by/4.0/" target="_blank"> Creative Commons Attribution 4.0 International License</a>.""" HOSTED_ON = {"name": "Netlify", "url": "https://www.netlify.com/"} From 6e617e17f434662da3a52578d591ab70ff5d646b Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 16:51:53 +0500 Subject: [PATCH 55/59] chore(postcss): enable stage 1 so that nesting-rules feature can be used --- gulpfile.babel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 556c02b5..36b31aa0 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -71,7 +71,7 @@ const rmProdCSS = cb => { const compileCSS = () => { const plugins = [ // postcssPresetEnv comes with autoprefixer - postcssPresetEnv(), + postcssPresetEnv({ stage: 1 }), cssnano() ]; return src([ From 87fd3d3f88cebac83ca04460ef41e7356df0ccd2 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 16:52:24 +0500 Subject: [PATCH 56/59] feat(links): add new style and improve existing style for hyperlinks BREAKING CHANGE: Style of muted links have been changed slightly. It is still muted but has modern animation. fix: #533 fix: #519 --- documentation/content/Components/links.md | 43 +++++++++++++ static/css/elegant.css | 25 -------- static/css/elegant.prod.css | 5 +- static/css/links.css | 75 +++++++++++++++++++++++ 4 files changed, 121 insertions(+), 27 deletions(-) create mode 100644 documentation/content/Components/links.md create mode 100644 static/css/links.css diff --git a/documentation/content/Components/links.md b/documentation/content/Components/links.md new file mode 100644 index 00000000..b0650697 --- /dev/null +++ b/documentation/content/Components/links.md @@ -0,0 +1,43 @@ +Title: Hyperlinks Styles +Tags: style +Category: Components +Date: 2019-12-02 15:09 +Slug: hyperlinks-styles +Authors: Talha Mansoor +Subtitle: +Summary: +Keywords: + +Elegant has three styles for hyperlinks that you can use. + +## Muted Style + +This is the default style of link. + +[Example Link - Use Firefox Browser](https://www.mozilla.org/en-US/firefox/new/) to support open web standards. + +This style is very suitable for long-form articles. To read the rationale behind this choice, read our help article [Why Does Elegant Look The Way It Does?]({filename}../Contributing/why-look-and-feel.md). + +## Amplified Style + +We understand not all links should be muted. Some links require attention. + +[Example Link - Use Firefox Browser](https://www.mozilla.org/en-US/firefox/new/){: class="ampl"} to support open web standards. + +To use this style, you need to enable [Markdown attribute list extension](https://python-markdown.github.io/extensions/attr_list/){:class="ampl"}. + +``` +# Plugins and extensions +MARKDOWN = { + "extension_configs": { + "markdown.extensions.extra": {}, + "markdown.extensions.meta": {}, + } +} +``` + +Then use this style using `ampl` class. + +```text +[Example Link](https://www.mozilla.org/){: class="ampl"} blah blah +``` diff --git a/static/css/elegant.css b/static/css/elegant.css index fca28f89..cec38318 100644 --- a/static/css/elegant.css +++ b/static/css/elegant.css @@ -160,23 +160,6 @@ table.highlighttable tbody > tr:nth-child(odd) > td { "Lucida Grande", "Lucida Sans", Arial, Sans-Serif; } /* Article */ -article p:not(#list-of-translations):not(#post-share-links) a, -article ol a, -blockquote a, -article - div.article-content - ul:not(.articles-timeline):not(.related-posts-list) - a { - border-bottom: thin dashed #a9a9a9; - color: #000; -} -article p a:hover, -article ol a:hover, -article div.article-content ul:not(.articles-timeline) a:hover { - border-bottom: none; - text-decoration: none; - text-shadow: none; -} .article-content, div.recent-posts p { font: 1.2em/1.6em "PT Serif", Georgia, "Times New Roman", Times, Serif; @@ -359,14 +342,6 @@ div.recent-posts-posted { color: #8f8f8f; font: 0.9em "PT Sans", "Helvetica Neue", Arial, Sans-Serif; } -div.recent-posts-posted a { - color: inherit; - padding-left: 0.3em; -} -div.recent-posts-posted a:hover { - border-bottom: 1px dashed; - text-decoration: none; -} div.recent-posts time { font-size: inherit; } diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css index 53585aa3..68fb9312 100644 --- a/static/css/elegant.prod.css +++ b/static/css/elegant.prod.css @@ -1,8 +1,9 @@ -@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current{background:#252525;color:#ccc}#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} +@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro");#tipue_search_input:-webkit-autofill,#tipue_search_input:-webkit-autofill:focus,#tipue_search_input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #f3f3f3 inset}.tipue_search_button{position:relative;width:49px;height:56px;margin-left:-3px;background-color:#f3f3f3;border:none;border-top-right-radius:3px;border-bottom-right-radius:3px;cursor:pointer}.tipue_search_button,.tipue_search_icon{float:left;box-sizing:border-box;outline:0}.tipue_search_icon{font:24px/1 Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-moz-appearance:none;-webkit-appearance:none;box-shadow:none;margin:-1px 0 0 16px}.tipue_search_group:after{content:"";display:table;clear:both}#tipue_search_content{max-width:100%;margin:0}.tipue_search_content_title{font:300 31.5px/40px Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;color:#111}.tipue_search_content_title a{color:#111;text-decoration:none}.tipue_search_content_title a:hover{border-bottom:1px solid #333}.tipue_search_result{padding-top:27px}#tipue_search_results_count,.tipue_search_content_debug{font:13px/1.5 Source Code Pro,monospace;text-transform:uppercase;color:#999;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#tipue_search_results_count{padding-top:9px}#tipue_search_error,#tipue_search_replace,.tipue_search_content_url,.tipue_search_note,.tipue_search_related{font:300 16px/1.4 Merriweather,serif;color:#666;padding-top:7px;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}#tipue_search_replace a,#tipue_search_replace a:hover,.tipue_search_content_url a,.tipue_search_note a,.tipue_search_related a{text-decoration:none}.tipue_search_content_url a:hover,.tipue_search_note a:hover,.tipue_search_related a:hover{color:#666}#tipue_search_replace,.tipue_search_related{margin-top:7px}#tipue_search_error{color:#333;margin-top:17px}.tipue_search_content_text{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;color:#333;word-wrap:break-word;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin-top:9px}.tipue_search_content_bold{font-weight:400;font-family:Open Sans,sans-serif;color:#333}.tipue_search_content_debug{margin:7px 0 2px}.tipue_search_image{padding:17px 0 6px}.tipue_search_img{width:100%;max-width:330px;height:auto;-webkit-transition:.5s;transition:.5s;border-radius:2px}.tipue_search_img:hover{opacity:.9}#tipue_search_zoom_text{font:12px/1.7 Source Code Pro,monospace;color:#ccc;text-transform:uppercase;letter-spacing:1px;padding-top:9px}#tipue_search_zoom_text a{color:#ccc;text-decoration:none;border-bottom:2px solid #f7f7f7}#tipue_search_zoom_text a:hover{border:0}.tipue_search_image_zoom{cursor:pointer}#tipue_search_image_modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,.9)}.tipue_search_image_close{position:absolute;top:0;right:0;font:22px/1 Source Code Pro,monospace;color:#ccc;padding:25px 30px;cursor:pointer}.tipue_search_image_block{margin:0 auto;max-width:900px;padding:73px 30px 30px;box-sizing:border-box;color:#fff}#tipue_search_zoom_img{max-width:100%;height:auto}#tipue_search_zoom_text,.tipue_search_zoom_options{padding-top:9px}#tipue_search_foot{margin:51px 0 21px}#tipue_search_foot_boxes{font:14px Source Code Pro,sans-serif;text-transform:uppercase;color:#333;padding:0;margin:0;cursor:pointer}#tipue_search_foot_boxes li{display:inline;list-style:none;margin:0;padding:0}#tipue_search_foot_boxes li a{background-color:#f7f7f7;color:#666;text-decoration:none;-webkit-transition:.3s;transition:.3s}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a{padding:10px 17px 11px;border-radius:3px;margin-right:7px;text-align:center}#tipue_search_foot_boxes li.current,#tipue_search_foot_boxes li a:hover{background:#252525;color:#ccc} div.admonition{padding:0;margin-bottom:20px;background-color:#fcf8e3;border:1px solid;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}div.admonition p{margin:.5em 1em;padding:0}div.admonition p a{color:inherit!important}div.admonition div.highlight{margin-left:1em;margin-right:1em}div.admonition table.highlighttable{padding-left:1em;padding-right:1em}div.admonition table.highlighttable div.highlight{margin-left:0;margin-right:0}div.admonition p.admonition-title{color:#fff;margin:0;padding:.1em 0 .1em .5em;font-weight:700}div.admonition ol,div.admonition ul{margin:.1em .5em .5em 3em;padding:0}div.danger,div.error{color:#b94a48;background-color:#f2dede}div.danger p.admonition-title,div.error p.admonition-title{background-color:#b94a48}div.attention,div.caution,div.warning{color:#c09853}div.attention p.admonition-title,div.caution p.admonition-title,div.warning p.admonition-title{background-color:#c09853}div.important,div.note{color:#468847;background-color:#dff0d8}div.important p.admonition-title,div.note p.admonition-title{background-color:#468847}div.hint,div.tip{color:#3a87ad;background-color:#d9edf7}div.hint p.admonition-title,div.tip p.admonition-title{background-color:#3a87ad}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.danger p.admonition-title:before,div.error p.admonition-title:before,div.hint p.admonition-title:before,div.important p.admonition-title:before,div.note p.admonition-title:before,div.tip p.admonition-title:before,div.warning p.admonition-title:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}div.danger p.admonition-title:before,div.error p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.attention p.admonition-title:before,div.caution p.admonition-title:before,div.warning p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="white" d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>');vertical-align:-20%}div.important p.admonition-title:before,div.note p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="white" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>');vertical-align:-20%}div.hint p.admonition-title:before,div.tip p.admonition-title:before{height:20px;width:23px;background-size:20px 20px;content:"";background-repeat:no-repeat;background-image:url('data:image/svg+xml; utf8, <svg aria-hidden="true" focusable="false" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 352 512"><path fill="white" d="M176 80c-52.94 0-96 43.06-96 96 0 8.84 7.16 16 16 16s16-7.16 16-16c0-35.3 28.72-64 64-64 8.84 0 16-7.16 16-16s-7.16-16-16-16zM96.06 459.17c0 3.15.93 6.22 2.68 8.84l24.51 36.84c2.97 4.46 7.97 7.14 13.32 7.14h78.85c5.36 0 10.36-2.68 13.32-7.14l24.51-36.84c1.74-2.62 2.67-5.7 2.68-8.84l.05-43.18H96.02l.04 43.18zM176 0C73.72 0 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.64 18.99 42.74 58.8 52.42 92.16v.06h48v-.12c-.01-4.77-.72-9.51-2.15-14.07-5.59-17.81-22.82-64.77-62.17-109.67-20.54-23.43-31.52-53.15-31.61-84.14-.2-73.64 59.67-128 127.95-128 70.58 0 128 57.42 128 128 0 30.97-11.24 60.85-31.65 84.14-39.11 44.61-56.42 91.47-62.1 109.46a47.507 47.507 0 0 0-2.22 14.3v.1h48v-.05c9.68-33.37 35.78-73.18 52.42-92.16C335.55 260.85 352 220.37 352 176 352 78.8 273.2 0 176 0z"></path></svg>');vertical-align:-20%} blockquote{margin:3em 0 3em 2em;padding:0 7px;background:#fff8dc;border-radius:var(--border-radius);border-left:5px solid #daa520}blockquote:after,blockquote:before{font-size:4em;color:#696969;vertical-align:top}blockquote:before{content:open-quote;margin-left:-.8em;position:absolute}blockquote:after{content:close-quote;position:relative;right:-97%;top:45px}blockquote p{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.7em;text-transform:none;font-weight:300} -:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a,article p:not(#list-of-translations):not(#post-share-links) a,blockquote a{border-bottom:thin dashed #a9a9a9;color:#000}article div.article-content ul:not(.articles-timeline) a:hover,article ol a:hover,article p a:hover{border-bottom:none;text-decoration:none;text-shadow:none}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +:root{--border-radius:4px}body,html{height:100%}body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}div#content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}footer{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid rgba(0,0,0,.2);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;font:.8em Calibri,Tahoma,Arial,Sans-Serif;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin:15px 0 0;min-height:40px;padding:0 3px}footer div{margin:3px 0}footer div:first-child{margin-right:auto}footer div#fpowered{margin-left:auto;margin-right:unset}:lang(zh){font-family:Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,Helvetica,Arial,sans-serif}a{color:#3875d7}hr{border-width:3px}.site-name{font-family:Monaco,Inconsolata,Andale Mono,Lucida Console,Bitstream Vera Sans Mono,Courier New,Courier,Monospace}.top-menu li a{font-weight:700}#comment-message,#post-share-links:not(a){color:#6f6f6f;text-shadow:1px 1px 3px rgba(50,50,50,.15)}#post-share-links a{text-shadow:0 0}.comment-count{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:.9em}#comment_thread{padding-left:10px;padding-right:10px}table{table-layout:fixed;width:100%}td{vertical-align:top}@media (max-width:979px){.linenos{display:none!important}}.linenos{width:30px}.linenos div pre{text-align:right;overflow:hidden}pre{overflow:auto;white-space:pre;word-break:normal;word-wrap:normal}td.code .highlight pre{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius) var(--border-radius) 0}td.code{width:100%}.linenodiv pre{background-color:#eee8d5;border-radius:4px 0 0 4px;border-radius:var(--border-radius) 0 0 var(--border-radius);color:#657b83}div.highlight{margin-bottom:20px}table.highlighttable,table.highlighttable td{border:none}table.highlighttable tbody>tr:nth-child(odd)>td{background-color:transparent}.list-of-tags{font-family:Helvetica Neue,Helvetica,Arial,Sans-Serif;list-style:none;margin:0;overflow:hidden}.list-of-tags li{float:left;line-height:28px;margin:0}.list-of-tags a{background:#eee;border-radius:4px;border-radius:var(--border-radius);color:#222;margin:2px;padding:3px 6px;text-decoration:none}.list-of-tags a span{font-size:.8em;vertical-align:super}.tags-in-article li{float:none;line-height:28px}.tag-title{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.articles-in-tag li{font:1.1em/1.6em Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif}.article-content,div.recent-posts p{font:1.2em/1.6em "PT Serif",Georgia,Times New Roman,Times,Serif;text-align:justify}.article-content{max-width:50em}.article-content p,div.recent-posts p{font-size:inherit;font-feature-settings:normal;font-variant:normal;line-height:1.6em;text-transform:none}.article-content p{margin:20px 0}.article-content ul:not(.related-posts-list):not(.articles-timeline){font-size:inherit;list-style-type:disc}.article-content ul.related-posts-list{list-style-type:square}.article-content ol{font-size:inherit;list-style-type:decimal}.article-content li{line-height:1.7em;list-style-position:outside;margin:1px 0 1px 20px}.article-content dl{font-size:inherit;list-style-position:outside;list-style-type:decimal;margin:20px 0 20px 20px}.article-content dd{line-height:1.7em;margin:1px 0 1px 20px;padding:3px 0}.article-content dt{font-size:inherit}.page-header{border-bottom:2px solid maroon;color:maroon;margin:10px 10px 20px;padding:5px}.page-header h1{border:none;line-height:1em}ul.articles-timeline{list-style:none;margin:0;padding-bottom:30px}ul.articles-timeline .next-article{float:right;margin:0}ul.articles-timeline .previous-article{float:left;margin:0}ul.multi-parts-list a{color:#000}ul.multi-parts-list a:hover{text-decoration:none}ul.multi-parts-list li.active-part{font-style:italic}.table-of-content .toc{font-size:.7em}.last-updated a{color:#333}.last-updated a:hover{text-decoration:none}.article-content img{border:2px solid #eee;padding:5px}p#post-share-links{text-align:right}.list-of-categories span{font-size:.7em;vertical-align:super}a.list-of-categories{text-decoration:none}ul.list-articles-category{list-style:none outside none;margin:0 0 0 5px}ul.list-articles-category li time{color:#8f8f8f;display:inline-block;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif;width:7em}a.category-link{color:#333}a.category-link:hover{text-decoration:none}a.list-of-categories{font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em}a.list-of-categories:hover{background-color:#08c;border-radius:4px;border-radius:var(--border-radius);color:#fff}ul.list-all-articles{list-style:none;margin:0}ul.list-all-articles li{border-bottom:1px dotted #000;font-family:Trebuchet MS,Trebuchet,Lucida Sans Unicode,Lucida Grande,Lucida Sans,Arial,Sans-Serif;font-size:1.1em;padding:.3em 0;overflow:auto}ul.list-all-articles li time{color:#aaa;float:right;font-family:PT Sans,Helvetica Neue,Arial,Sans-Serif;font-size:.9em}div.blog-archives h2{float:left;position:relative;margin:0}div.blog-archives div,div.recent-posts-article{border-bottom:1px dotted #aaa;font-size:1.1em;padding:.3em .2em;position:relative;overflow:auto}div.blog-archives div{margin-left:6em}div.blog-archives div.last-entry-of-year{margin-bottom:1em}div.blog-archives time,div.recent-posts time{float:right;text-align:right}div.blog-archives time,div.recent-posts-posted,div.recent-posts time{color:#8f8f8f;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}div.recent-posts time{font-size:inherit}div.recent-posts-time{display:inline}@media (max-width:767px){div.blog-archives h2{float:none}div.blog-archives article{margin-left:0;padding-left:0}div.recent-posts time{float:none}div.recent-posts-time{display:block}ul.list-articles-category li time{width:100%}}#mc-embed-signup{font-family:inherit;font-size:inherit;margin:10px 0}#mc-embed-signup form{display:block;padding:0;position:relative;text-align:left}#mc-embed-signup input{-moz-appearance:none;-webkit-appearance:none;border:1px solid #999}#mc-embed-signup input:focus{border-color:#333}#mc-embed-signup input.email{display:block;font-size:.9em;margin:0 4% 10px 0;min-width:130px;padding:8px 0;text-indent:5px;width:100%}#mc-embed-signup input.button{display:block;margin:0 0 10px;min-width:130px;width:100%}#mc-embed-signup input[type=email]{height:100%}#mc-embed-signup .button{background-color:#eee;border-radius:4px;border-radius:var(--border-radius);border:1px solid #d3d3d3;clear:both;color:#000;cursor:pointer;display:inline-block;font-size:1em;font-weight:400;height:32px;line-height:32px;margin:0 5px 10px 0;padding:0;text-align:center;text-decoration:none;vertical-align:top;white-space:nowrap;width:auto}#mc-embed-signup.button:hover{background-color:#dfdfdf}#mc-embed-signup .clear{clear:none;display:inline}#allposts{color:#999;float:right;font-size:75%;font-weight:400}a#allposts:hover{color:#333}.proj-desc{color:#999;font:.9em PT Sans,Helvetica Neue,Arial,Sans-Serif}.literal{background-color:#f7f7f9;border-radius:4px;border-radius:var(--border-radius);border:1px solid #e1e1e8;color:#d14;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;padding:2px 4px;white-space:nowrap}div.line-block div.line-block{margin-left:1.5em}.amp{font-family:Warnock Pro,Goudy Old Style,Palatino,Book Antiqua,Serif;font-style:italic}.article-content img,div.figure{text-align:center}div.figure img{width:100%}div.figure p.caption{color:grey;font-size:.6em;margin:0}div.figure p.caption a{border:none;color:grey}.article-content img.align-right,div.figure.align-right{float:right;margin-left:1.5em}.article-content img.align-left,div.figure.align-left{float:left;margin-right:1.5em}.author_blurb{font-style:italic;padding:5px 0}.author_blurb img{padding:0;width:32px;height:32px}.author_name{font-weight:700;font-feature-settings:"c2sc";font-variant:small-caps}.gist table{table-layout:auto}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;border:1px solid #bfbfbf;border-collapse:separate;*border-collapse:collapse;border-left:0;border-radius:4px;border-radius:var(--border-radius)}table td,table th{border-left:1px solid #bfbfbf;padding-left:2px;padding-right:2px}table thead:first-child tr:first-child th{border-top:0}table thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px;border-top-left-radius:var(--border-radius)}table thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px;border-top-right-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:first-child{border-bottom-left-radius:4px;border-bottom-left-radius:var(--border-radius)}table tbody:last-child tr:last-child>td:last-child{border-bottom-right-radius:4px;border-bottom-right-radius:var(--border-radius)}table tbody>tr:nth-child(odd)>td{background-color:#ebebeb} +article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a,article ol a:not(.ampl),article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl),blockquote a:not(.ampl){color:#000;display:inline-block;position:relative}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:after,article ol a:not(.ampl):after,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):after,blockquote a:not(.ampl):after{position:absolute;top:100%;left:0;width:100%;height:1px;background:silver;content:"";opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translateY(0);transform:translateY(0)}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:hover,article ol a:not(.ampl):hover,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):hover,blockquote a:not(.ampl):hover{color:#4169e1;text-decoration:none;-webkit-transition:color .1s;transition:color .1s}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:hover:after,article ol a:not(.ampl):hover:after,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):hover:after,blockquote a:not(.ampl):hover:after{opacity:0;-webkit-transform:translateY(5px);transform:translateY(5px)}article div.article-content ul:not(.articles-timeline):not(.related-posts-list) a:focus,article ol a:not(.ampl):focus,article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl):focus,blockquote a:not(.ampl):focus{text-decoration:none}div.recent-posts-posted a{color:inherit;padding-left:.3em}div.recent-posts-posted a:hover{border-bottom:1px dashed;text-decoration:none}div.recent-posts-posted a:focus{text-decoration:none}a.ampl{color:#4169e1;display:inline-block;position:relative}a.ampl:focus,a.ampl:hover{text-decoration:none}a.ampl:hover{color:#1e90ff;-webkit-transition:color .1s;transition:color .1s}a.ampl:hover:after{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}a.ampl:after{position:absolute;top:100%;left:0;width:100%;height:2px;background:#1e90ff;content:"";opacity:0;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translateY(5px);transform:translateY(5px)} dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.headerlink,h4:hover>a.headerlink,h5:hover>a.headerlink,h6:hover>a.headerlink{opacity:1;text-decoration:none;visibility:visible}a.headerlink{content:url('data:image/svg+xml;utf8,<svg fill="darkgray" viewBox="0 0 80 80" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="m29.298 63.471-4.048 4.02c-3.509 3.478-9.216 3.481-12.723 0-1.686-1.673-2.612-3.895-2.612-6.257s.927-4.585 2.611-6.258l14.9-14.783c3.088-3.062 8.897-7.571 13.131-3.372 1.943 1.93 5.081 1.917 7.01-.025 1.93-1.942 1.918-5.081-.025-7.009-7.197-7.142-17.834-5.822-27.098 3.37l-14.901 14.784c-3.575 3.549-5.543 8.269-5.543 13.293s1.968 9.743 5.544 13.292c3.679 3.65 8.51 5.474 13.343 5.474 4.834 0 9.667-1.824 13.348-5.476l4.051-4.021c1.942-1.928 1.953-5.066.023-7.009-1.927-1.941-5.068-1.952-7.011-.023zm45.156-57.427c-7.73-7.67-18.538-8.086-25.694-.986l-5.046 5.009c-1.943 1.929-1.955 5.066-.025 7.009s5.068 1.954 7.011.025l5.044-5.006c3.707-3.681 8.561-2.155 11.727.986 1.688 1.673 2.615 3.896 2.615 6.258 0 2.363-.928 4.586-2.613 6.259l-15.897 15.77c-7.269 7.212-10.679 3.827-12.134 2.383-1.943-1.929-5.08-1.917-7.01.025s-1.918 5.081.025 7.009c3.337 3.312 7.146 4.954 11.139 4.954 4.889 0 10.053-2.462 14.963-7.337l15.897-15.77c3.574-3.549 5.544-8.27 5.544-13.294 0-5.022-1.97-9.743-5.546-13.294z"/></svg>');display:inline-block;margin-left:5px;opacity:0;-webkit-transition:visibility 0s,opacity .2s ease-in;transition:visibility 0s,opacity .2s ease-in;visibility:hidden;width:20px} .highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} diff --git a/static/css/links.css b/static/css/links.css new file mode 100644 index 00000000..90709aee --- /dev/null +++ b/static/css/links.css @@ -0,0 +1,75 @@ +article p:not(#list-of-translations):not(#post-share-links) a:not(.ampl), +article ol a:not(.ampl), +blockquote a:not(.ampl), +article + div.article-content + ul:not(.articles-timeline):not(.related-posts-list) + a { + color: black; + display: inline-block; + position: relative; + &:after { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 1px; + background: silver; + content: ""; + opacity: 1; + transition: opacity 0.3s, transform 0.3s; + transform: translateY(0px); + } + &:hover { + color: royalblue; + text-decoration: none; + transition: color 0.1s; + &:after { + opacity: 0; + transform: translateY(5px); + } + } + &:focus { + text-decoration: none; + } +} +div.recent-posts-posted a { + color: inherit; + padding-left: 0.3em; + &:hover { + border-bottom: 1px dashed; + text-decoration: none; + } + &:focus { + text-decoration: none; + } +} +a.ampl { + color: royalblue; + display: inline-block; + position: relative; + &:focus { + text-decoration: none; + } + &:hover { + color: dodgerblue; + text-decoration: none; + transition: color 0.1s; + &:after { + opacity: 1; + transform: translateY(0px); + } + } + &:after { + position: absolute; + top: 100%; + left: 0; + width: 100%; + height: 2px; + background: dodgerblue; + content: ""; + opacity: 0; + transition: opacity 0.3s, transform 0.3s; + transform: translateY(5px); + } +} From d63160383e778be2b0fbcd3cafb2e7be4b73cb17 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 17:58:55 +0500 Subject: [PATCH 57/59] chore(spellcheck): add ignore rule --- documentation/content/Components/links.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/content/Components/links.md b/documentation/content/Components/links.md index b0650697..2d7fe575 100644 --- a/documentation/content/Components/links.md +++ b/documentation/content/Components/links.md @@ -22,9 +22,9 @@ This style is very suitable for long-form articles. To read the rationale behind We understand not all links should be muted. Some links require attention. -[Example Link - Use Firefox Browser](https://www.mozilla.org/en-US/firefox/new/){: class="ampl"} to support open web standards. +[Example Link - Use Firefox Browser](https://www.mozilla.org/en-US/firefox/new/){: class="ampl"} to support open web standards. <!-- yaspeller ignore --> -To use this style, you need to enable [Markdown attribute list extension](https://python-markdown.github.io/extensions/attr_list/){:class="ampl"}. +To use this style, you need to enable [Markdown attribute list extension](https://python-markdown.github.io/extensions/attr_list/){:class="ampl"}. <!-- yaspeller ignore --> ``` # Plugins and extensions From d3bbf04eabcd89bdb2f039b11fac7a6150729e90 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 18:16:55 +0500 Subject: [PATCH 58/59] fix(typography): adjust heading sizes and set small font-style to italic --- static/css/elegant.prod.css | 2 +- static/css/typography.css | 51 +++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/static/css/elegant.prod.css b/static/css/elegant.prod.css index 68fb9312..65c3a31c 100644 --- a/static/css/elegant.prod.css +++ b/static/css/elegant.prod.css @@ -8,4 +8,4 @@ dt:hover>a.headerlink,h1:hover>a.headerlink,h2:hover>a.headerlink,h3:hover>a.hea .highlight,pre{background-color:#fdf6e3;color:#586e75}.highlight .c{color:#93a1a1}.highlight .err,.highlight .g{color:#586e75}.highlight .k{color:#859900}.highlight .l,.highlight .n{color:#586e75}.highlight .o{color:#859900}.highlight .x{color:#cb4b16}.highlight .p{color:#586e75}.highlight .cm{color:#93a1a1}.highlight .cp{color:#859900}.highlight .c1{color:#93a1a1}.highlight .cs{color:#859900}.highlight .gd{color:#2aa198}.highlight .ge{color:#586e75;font-style:italic}.highlight .gr{color:#dc322f}.highlight .gh{color:#cb4b16}.highlight .gi{color:#859900}.highlight .go,.highlight .gp{color:#586e75}.highlight .gs{color:#586e75;font-weight:700}.highlight .gu{color:#cb4b16}.highlight .gt{color:#586e75}.highlight .kc{color:#cb4b16}.highlight .kd{color:#268bd2}.highlight .kn,.highlight .kp{color:#859900}.highlight .kr{color:#268bd2}.highlight .kt{color:#dc322f}.highlight .ld{color:#586e75}.highlight .m,.highlight .s{color:#2aa198}.highlight .na{color:#586e75}.highlight .nb{color:#b58900}.highlight .nc{color:#268bd2}.highlight .no{color:#cb4b16}.highlight .nd{color:#268bd2}.highlight .ne,.highlight .ni{color:#cb4b16}.highlight .nf{color:#268bd2}.highlight .nl,.highlight .nn,.highlight .nx,.highlight .py{color:#586e75}.highlight .nt,.highlight .nv{color:#268bd2}.highlight .ow{color:#859900}.highlight .w{color:#586e75}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#2aa198}.highlight .sb{color:#93a1a1}.highlight .sc{color:#2aa198}.highlight .sd{color:#586e75}.highlight .s2{color:#2aa198}.highlight .se{color:#cb4b16}.highlight .sh{color:#586e75}.highlight .si,.highlight .sx{color:#2aa198}.highlight .sr{color:#dc322f}.highlight .s1,.highlight .ss{color:#2aa198}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#268bd2}.highlight .il{color:#2aa198} div#sidebar-social-link a svg{-webkit-filter:saturate(0) brightness(.7);filter:saturate(0) brightness(.7);height:20px;width:20px;margin-right:3px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;z-index:0;position:relative}div#sidebar-social-link a{text-decoration:none}div#sidebar-social-link a svg:hover{-webkit-filter:none;filter:none;-webkit-transform:scale(2.5);transform:scale(2.5);z-index:1} section#article-sidebar{float:right;font-size:.9em} -:root{--heading-border-bottom-width:1px;--heading-border-bottom-style:solid;--heading-others-line-height:1.3rem;--heading-others-h4-font-size:1.1rem}h1,h2,h3,h4,h5,h6{font-family:Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;font-weight:400;margin:10px 0}h1{font-size:3rem;border-bottom:1px solid #a9a9a9;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #a9a9a9}h2{font-size:2.5rem;border-bottom:1px solid silver;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) silver}h3{border-bottom:1px solid #d3d3d3;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #d3d3d3;font-size:2.3rem}h4{font-size:2rem}h5{font-size:1.8rem}h6{font-size:1.6rem}h1,h2,h3{line-height:1.3em}h4,h5,h6{line-height:1.1em}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:80%}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:70%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}div.blog-archives h2,h1#my-projects,h1#recent-posts{border:none}h1#my-projects,h1#recent-posts{font-size:2.4rem;line-height:1.3rem;line-height:var(--heading-others-line-height)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--heading-others-h4-font-size);line-height:1.3rem;line-height:var(--heading-others-line-height)} \ No newline at end of file +:root{--heading-border-bottom-width:1px;--heading-border-bottom-style:solid;--heading-others-line-height:1.3rem;--heading-others-h4-font-size:1.1rem}h1,h2,h3,h4,h5,h6{font-family:Baskerville,Garamond,Georgia,"DejaVu Serif",Times New Roman,Times,Serif;font-weight:400;margin:10px 0}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-style:italic}h1{font-size:2.5rem}h2{font-size:2.2rem}h3{font-size:2rem}h4{font-size:1.8rem}h5{font-size:1.6rem}h6{font-size:1.4rem}h1,h2,h3{line-height:1.3em;border-bottom:1px solid #d3d3d3;border-bottom:var(--heading-border-bottom-width) var(--heading-border-bottom-style) #d3d3d3}h1 code,h2 code,h3 code{font-size:80%}h1 small,h2 small,h3 small{font-size:70%}h4,h5,h6{line-height:1.1em}h4 code,h4 small,h5 code,h5 small,h6 code,h6 small{font-size:80%}h1 a,h1 a:hover,h1 small,h2 a,h2 a:hover,h2 small,h3 a,h3 a:hover,h3 small,h4 a,h4 a:hover,h4 small,h5 a,h5 a:hover,h5 small,h6 a,h6 a:hover,h6 small{color:inherit;text-decoration:none}small.subtitle{font-style:italic}div.blog-archives h2,h1#my-projects,h1#recent-posts{border:none}h1#my-projects,h1#recent-posts{font-size:2.4rem;line-height:1.3rem;line-height:var(--heading-others-line-height)}nav h4,section#article-sidebar h4{font-size:1.1rem;font-size:var(--heading-others-h4-font-size);line-height:1.3rem;line-height:var(--heading-others-line-height)} \ No newline at end of file diff --git a/static/css/typography.css b/static/css/typography.css index 13676398..8b7f74f1 100644 --- a/static/css/typography.css +++ b/static/css/typography.css @@ -15,56 +15,51 @@ h6 { Times, Serif; font-weight: normal; margin: 10px 0px; + & small { + font-style: italic; + } } h1 { - font-size: 3rem; - border-bottom: var(--heading-border-bottom-width) - var(--heading-border-bottom-style) darkgray; + font-size: 2.5rem; } h2 { - font-size: 2.5rem; - border-bottom: var(--heading-border-bottom-width) - var(--heading-border-bottom-style) silver; + font-size: 2.2rem; } h3 { - border-bottom: var(--heading-border-bottom-width) - var(--heading-border-bottom-style) lightgray; - font-size: 2.3rem; + font-size: 2rem; } h4 { - font-size: 2rem; + font-size: 1.8rem; } h5 { - font-size: 1.8rem; + font-size: 1.6rem; } h6 { - font-size: 1.6rem; + font-size: 1.4rem; } h1, h2, h3 { line-height: 1.3em; + border-bottom: var(--heading-border-bottom-width) + var(--heading-border-bottom-style) lightgray; + & code { + font-size: 80%; + } + & small { + font-size: 70%; + } } h4, h5, h6 { line-height: 1.1em; -} -h1 code, -h2 code, -h3 code, -h4 code, -h5 code, -h6 code { - font-size: 80%; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small { - font-size: 70%; + & code { + font-size: 80%; + } + & small { + font-size: 80%; + } } h1 small, h1 a, From ecdfc53d3fb97591c587942c010bc7e3d4025d31 Mon Sep 17 00:00:00 2001 From: Talha Mansoor <talha131@gmail.com> Date: Mon, 2 Dec 2019 18:24:56 +0500 Subject: [PATCH 59/59] refactor: run prettier on files --- static/magnific/magnific-popup.css | 339 +- static/magnific/magnific-popup.js | 3532 +++++++++++---------- static/tipuesearch/tipuesearch.css | 462 ++- static/tipuesearch/tipuesearch.js | 1210 +++---- static/tipuesearch/tipuesearch.min.js | 740 +++-- static/tipuesearch/tipuesearch_content.js | 124 +- static/tipuesearch/tipuesearch_set.js | 273 +- 7 files changed, 3693 insertions(+), 2987 deletions(-) diff --git a/static/magnific/magnific-popup.css b/static/magnific/magnific-popup.css index 8561e181..e5600f8c 100644 --- a/static/magnific/magnific-popup.css +++ b/static/magnific/magnific-popup.css @@ -8,7 +8,8 @@ overflow: hidden; position: fixed; background: #0b0b0b; - opacity: 0.8; } + opacity: 0.8; +} .mfp-wrap { top: 0; @@ -18,7 +19,8 @@ z-index: 1043; position: fixed; outline: none !important; - -webkit-backface-visibility: hidden; } + -webkit-backface-visibility: hidden; +} .mfp-container { text-align: center; @@ -28,16 +30,19 @@ left: 0; top: 0; padding: 0 8px; - box-sizing: border-box; } + box-sizing: border-box; +} .mfp-container:before { - content: ''; + content: ""; display: inline-block; height: 100%; - vertical-align: middle; } + vertical-align: middle; +} .mfp-align-top .mfp-container:before { - display: none; } + display: none; +} .mfp-content { position: relative; @@ -45,29 +50,36 @@ vertical-align: middle; margin: 0 auto; text-align: left; - z-index: 1045; } + z-index: 1045; +} .mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content { width: 100%; - cursor: auto; } + cursor: auto; +} .mfp-ajax-cur { - cursor: progress; } + cursor: progress; +} -.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { +.mfp-zoom-out-cur, +.mfp-zoom-out-cur .mfp-image-holder .mfp-close { cursor: -moz-zoom-out; cursor: -webkit-zoom-out; - cursor: zoom-out; } + cursor: zoom-out; +} .mfp-zoom { cursor: pointer; cursor: -webkit-zoom-in; cursor: -moz-zoom-in; - cursor: zoom-in; } + cursor: zoom-in; +} .mfp-auto-cursor .mfp-content { - cursor: auto; } + cursor: auto; +} .mfp-close, .mfp-arrow, @@ -75,16 +87,19 @@ .mfp-counter { -webkit-user-select: none; -moz-user-select: none; - user-select: none; } + user-select: none; +} .mfp-loading.mfp-figure { - display: none; } + display: none; +} .mfp-hide { - display: none !important; } + display: none !important; +} .mfp-preloader { - color: #CCC; + color: #ccc; position: absolute; top: 50%; width: auto; @@ -92,17 +107,22 @@ margin-top: -0.8em; left: 8px; right: 8px; - z-index: 1044; } - .mfp-preloader a { - color: #CCC; } - .mfp-preloader a:hover { - color: #FFF; } + z-index: 1044; +} +.mfp-preloader a { + color: #ccc; +} +.mfp-preloader a:hover { + color: #fff; +} .mfp-s-ready .mfp-preloader { - display: none; } + display: none; +} .mfp-s-error .mfp-content { - display: none; } + display: none; +} button.mfp-close, button.mfp-arrow { @@ -116,11 +136,13 @@ button.mfp-arrow { padding: 0; z-index: 1046; box-shadow: none; - touch-action: manipulation; } + touch-action: manipulation; +} button::-moz-focus-inner { padding: 0; - border: 0; } + border: 0; +} .mfp-close { width: 44px; @@ -133,35 +155,41 @@ button::-moz-focus-inner { text-align: center; opacity: 0.65; padding: 0 0 18px 10px; - color: #FFF; + color: #fff; font-style: normal; font-size: 28px; - font-family: Arial, Baskerville, monospace; } - .mfp-close:hover, - .mfp-close:focus { - opacity: 1; } - .mfp-close:active { - top: 1px; } + font-family: Arial, Baskerville, monospace; +} +.mfp-close:hover, +.mfp-close:focus { + opacity: 1; +} +.mfp-close:active { + top: 1px; +} .mfp-close-btn-in .mfp-close { - color: #333; } + color: #333; +} .mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close { - color: #FFF; + color: #fff; right: -6px; text-align: right; padding-right: 6px; - width: 100%; } + width: 100%; +} .mfp-counter { position: absolute; top: 0; right: 0; - color: #CCC; + color: #ccc; font-size: 12px; line-height: 18px; - white-space: nowrap; } + white-space: nowrap; +} .mfp-arrow { position: absolute; @@ -172,74 +200,91 @@ button::-moz-focus-inner { padding: 0; width: 90px; height: 110px; - -webkit-tap-highlight-color: transparent; } - .mfp-arrow:active { - margin-top: -54px; } - .mfp-arrow:hover, - .mfp-arrow:focus { - opacity: 1; } - .mfp-arrow:before, - .mfp-arrow:after { - content: ''; - display: block; - width: 0; - height: 0; - position: absolute; - left: 0; - top: 0; - margin-top: 35px; - margin-left: 35px; - border: medium inset transparent; } - .mfp-arrow:after { - border-top-width: 13px; - border-bottom-width: 13px; - top: 8px; } - .mfp-arrow:before { - border-top-width: 21px; - border-bottom-width: 21px; - opacity: 0.7; } + -webkit-tap-highlight-color: transparent; +} +.mfp-arrow:active { + margin-top: -54px; +} +.mfp-arrow:hover, +.mfp-arrow:focus { + opacity: 1; +} +.mfp-arrow:before, +.mfp-arrow:after { + content: ""; + display: block; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + margin-top: 35px; + margin-left: 35px; + border: medium inset transparent; +} +.mfp-arrow:after { + border-top-width: 13px; + border-bottom-width: 13px; + top: 8px; +} +.mfp-arrow:before { + border-top-width: 21px; + border-bottom-width: 21px; + opacity: 0.7; +} .mfp-arrow-left { - left: 0; } - .mfp-arrow-left:after { - border-right: 17px solid #FFF; - margin-left: 31px; } - .mfp-arrow-left:before { - margin-left: 25px; - border-right: 27px solid #3F3F3F; } + left: 0; +} +.mfp-arrow-left:after { + border-right: 17px solid #fff; + margin-left: 31px; +} +.mfp-arrow-left:before { + margin-left: 25px; + border-right: 27px solid #3f3f3f; +} .mfp-arrow-right { - right: 0; } - .mfp-arrow-right:after { - border-left: 17px solid #FFF; - margin-left: 39px; } - .mfp-arrow-right:before { - border-left: 27px solid #3F3F3F; } + right: 0; +} +.mfp-arrow-right:after { + border-left: 17px solid #fff; + margin-left: 39px; +} +.mfp-arrow-right:before { + border-left: 27px solid #3f3f3f; +} .mfp-iframe-holder { padding-top: 40px; - padding-bottom: 40px; } - .mfp-iframe-holder .mfp-content { - line-height: 0; - width: 100%; - max-width: 900px; } - .mfp-iframe-holder .mfp-close { - top: -40px; } + padding-bottom: 40px; +} +.mfp-iframe-holder .mfp-content { + line-height: 0; + width: 100%; + max-width: 900px; +} +.mfp-iframe-holder .mfp-close { + top: -40px; +} .mfp-iframe-scaler { width: 100%; height: 0; overflow: hidden; - padding-top: 56.25%; } - .mfp-iframe-scaler iframe { - position: absolute; - display: block; - top: 0; - left: 0; - width: 100%; - height: 100%; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); - background: #000; } + padding-top: 56.25%; +} +.mfp-iframe-scaler iframe { + position: absolute; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #000; +} /* Main image in popup */ img.mfp-img { @@ -250,31 +295,36 @@ img.mfp-img { line-height: 0; box-sizing: border-box; padding: 40px 0 40px; - margin: 0 auto; } + margin: 0 auto; +} /* The shadow behind the image */ .mfp-figure { - line-height: 0; } - .mfp-figure:after { - content: ''; - position: absolute; - left: 0; - top: 40px; - bottom: 40px; - display: block; - right: 0; - width: auto; - height: auto; - z-index: -1; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); - background: #444; } - .mfp-figure small { - color: #BDBDBD; - display: block; - font-size: 12px; - line-height: 14px; } - .mfp-figure figure { - margin: 0; } + line-height: 0; +} +.mfp-figure:after { + content: ""; + position: absolute; + left: 0; + top: 40px; + bottom: 40px; + display: block; + right: 0; + width: auto; + height: auto; + z-index: -1; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #444; +} +.mfp-figure small { + color: #bdbdbd; + display: block; + font-size: 12px; + line-height: 14px; +} +.mfp-figure figure { + margin: 0; +} .mfp-bottom-bar { margin-top: -36px; @@ -282,36 +332,45 @@ img.mfp-img { top: 100%; left: 0; width: 100%; - cursor: auto; } + cursor: auto; +} .mfp-title { text-align: left; line-height: 18px; - color: #F3F3F3; + color: #f3f3f3; word-wrap: break-word; - padding-right: 36px; } + padding-right: 36px; +} .mfp-image-holder .mfp-content { - max-width: 100%; } + max-width: 100%; +} .mfp-gallery .mfp-image-holder .mfp-figure { - cursor: pointer; } + cursor: pointer; +} -@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { +@media screen and (max-width: 800px) and (orientation: landscape), + screen and (max-height: 300px) { /** * Remove all paddings around the image on small screen */ .mfp-img-mobile .mfp-image-holder { padding-left: 0; - padding-right: 0; } + padding-right: 0; + } .mfp-img-mobile img.mfp-img { - padding: 0; } + padding: 0; + } .mfp-img-mobile .mfp-figure:after { top: 0; - bottom: 0; } + bottom: 0; + } .mfp-img-mobile .mfp-figure small { display: inline; - margin-left: 5px; } + margin-left: 5px; + } .mfp-img-mobile .mfp-bottom-bar { background: rgba(0, 0, 0, 0.6); bottom: 0; @@ -319,12 +378,15 @@ img.mfp-img { top: auto; padding: 3px 5px; position: fixed; - box-sizing: border-box; } - .mfp-img-mobile .mfp-bottom-bar:empty { - padding: 0; } + box-sizing: border-box; + } + .mfp-img-mobile .mfp-bottom-bar:empty { + padding: 0; + } .mfp-img-mobile .mfp-counter { right: 5px; - top: 3px; } + top: 3px; + } .mfp-img-mobile .mfp-close { top: 0; right: 0; @@ -334,18 +396,25 @@ img.mfp-img { background: rgba(0, 0, 0, 0.6); position: fixed; text-align: center; - padding: 0; } } + padding: 0; + } +} @media all and (max-width: 900px) { .mfp-arrow { -webkit-transform: scale(0.75); - transform: scale(0.75); } + transform: scale(0.75); + } .mfp-arrow-left { -webkit-transform-origin: 0; - transform-origin: 0; } + transform-origin: 0; + } .mfp-arrow-right { -webkit-transform-origin: 100%; - transform-origin: 100%; } + transform-origin: 100%; + } .mfp-container { padding-left: 6px; - padding-right: 6px; } } + padding-right: 6px; + } +} diff --git a/static/magnific/magnific-popup.js b/static/magnific/magnific-popup.js index 9ee4a039..4fd63da7 100644 --- a/static/magnific/magnific-popup.js +++ b/static/magnific/magnific-popup.js @@ -1,1860 +1,1874 @@ /*! Magnific Popup - v1.1.0 - 2016-02-20 -* http://dimsemenov.com/plugins/magnific-popup/ -* Copyright (c) 2016 Dmitry Semenov; */ -;(function (factory) { -if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(window.jQuery || window.Zepto); - } - }(function($) { - -/*>>core*/ -/** - * - * Magnific Popup Core JS file - * - */ - - -/** - * Private static constants - */ -var CLOSE_EVENT = 'Close', - BEFORE_CLOSE_EVENT = 'BeforeClose', - AFTER_CLOSE_EVENT = 'AfterClose', - BEFORE_APPEND_EVENT = 'BeforeAppend', - MARKUP_PARSE_EVENT = 'MarkupParse', - OPEN_EVENT = 'Open', - CHANGE_EVENT = 'Change', - NS = 'mfp', - EVENT_NS = '.' + NS, - READY_CLASS = 'mfp-ready', - REMOVING_CLASS = 'mfp-removing', - PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; - - -/** - * Private vars - */ -/*jshint -W079 */ -var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' - MagnificPopup = function(){}, - _isJQ = !!(window.jQuery), - _prevStatus, - _window = $(window), - _document, - _prevContentType, - _wrapClasses, - _currPopupType; - - -/** - * Private functions - */ -var _mfpOn = function(name, f) { - mfp.ev.on(NS + name + EVENT_NS, f); - }, - _getEl = function(className, appendTo, html, raw) { - var el = document.createElement('div'); - el.className = 'mfp-'+className; - if(html) { - el.innerHTML = html; - } - if(!raw) { - el = $(el); - if(appendTo) { - el.appendTo(appendTo); - } - } else if(appendTo) { - appendTo.appendChild(el); - } - return el; - }, - _mfpTrigger = function(e, data) { - mfp.ev.triggerHandler(NS + e, data); - - if(mfp.st.callbacks) { - // converts "mfpEventName" to "eventName" callback and triggers it if it's present - e = e.charAt(0).toLowerCase() + e.slice(1); - if(mfp.st.callbacks[e]) { - mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); - } - } - }, - _getCloseBtn = function(type) { - if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { - mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); - _currPopupType = type; - } - return mfp.currTemplate.closeBtn; - }, - // Initialize Magnific Popup only when called at least once - _checkInstance = function() { - if(!$.magnificPopup.instance) { - /*jshint -W020 */ - mfp = new MagnificPopup(); - mfp.init(); - $.magnificPopup.instance = mfp; - } - }, - // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr - supportsTransitions = function() { - var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist - v = ['ms','O','Moz','Webkit']; // 'v' for vendor - - if( s['transition'] !== undefined ) { - return true; - } - - while( v.length ) { - if( v.pop() + 'Transition' in s ) { - return true; - } - } - - return false; - }; - - - -/** - * Public functions - */ -MagnificPopup.prototype = { - - constructor: MagnificPopup, - - /** - * Initializes Magnific Popup plugin. - * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed - */ - init: function() { - var appVersion = navigator.appVersion; - mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; - mfp.isAndroid = (/android/gi).test(appVersion); - mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); - mfp.supportsTransition = supportsTransitions(); - - // We disable fixed positioned lightbox on devices that don't handle it nicely. - // If you know a better way of detecting this - let me know. - mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); - _document = $(document); - - mfp.popupsCache = {}; - }, - - /** - * Opens popup - * @param data [description] - */ - open: function(data) { - - var i; - - if(data.isObj === false) { - // convert jQuery collection to array to avoid conflicts later - mfp.items = data.items.toArray(); - - mfp.index = 0; - var items = data.items, - item; - for(i = 0; i < items.length; i++) { - item = items[i]; - if(item.parsed) { - item = item.el[0]; - } - if(item === data.el[0]) { - mfp.index = i; - break; - } - } - } else { - mfp.items = $.isArray(data.items) ? data.items : [data.items]; - mfp.index = data.index || 0; - } - - // if popup is already opened - we just update the content - if(mfp.isOpen) { - mfp.updateItemHTML(); - return; - } - - mfp.types = []; - _wrapClasses = ''; - if(data.mainEl && data.mainEl.length) { - mfp.ev = data.mainEl.eq(0); - } else { - mfp.ev = _document; - } - - if(data.key) { - if(!mfp.popupsCache[data.key]) { - mfp.popupsCache[data.key] = {}; - } - mfp.currTemplate = mfp.popupsCache[data.key]; - } else { - mfp.currTemplate = {}; - } - - - - mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); - mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; - - if(mfp.st.modal) { - mfp.st.closeOnContentClick = false; - mfp.st.closeOnBgClick = false; - mfp.st.showCloseBtn = false; - mfp.st.enableEscapeKey = false; - } - - - // Building markup - // main containers are created only once - if(!mfp.bgOverlay) { - - // Dark overlay - mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { - mfp.close(); - }); - - mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { - if(mfp._checkIfClose(e.target)) { - mfp.close(); - } - }); - - mfp.container = _getEl('container', mfp.wrap); - } - - mfp.contentContainer = _getEl('content'); - if(mfp.st.preloader) { - mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); - } - - - // Initializing modules - var modules = $.magnificPopup.modules; - for(i = 0; i < modules.length; i++) { - var n = modules[i]; - n = n.charAt(0).toUpperCase() + n.slice(1); - mfp['init'+n].call(mfp); - } - _mfpTrigger('BeforeOpen'); - - - if(mfp.st.showCloseBtn) { - // Close button - if(!mfp.st.closeBtnInside) { - mfp.wrap.append( _getCloseBtn() ); - } else { - _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { - values.close_replaceWith = _getCloseBtn(item.type); - }); - _wrapClasses += ' mfp-close-btn-in'; - } - } - - if(mfp.st.alignTop) { - _wrapClasses += ' mfp-align-top'; - } - - - - if(mfp.fixedContentPos) { - mfp.wrap.css({ - overflow: mfp.st.overflowY, - overflowX: 'hidden', - overflowY: mfp.st.overflowY - }); - } else { - mfp.wrap.css({ - top: _window.scrollTop(), - position: 'absolute' - }); - } - if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { - mfp.bgOverlay.css({ - height: _document.height(), - position: 'absolute' - }); - } - - - - if(mfp.st.enableEscapeKey) { - // Close on ESC key - _document.on('keyup' + EVENT_NS, function(e) { - if(e.keyCode === 27) { - mfp.close(); - } - }); - } - - _window.on('resize' + EVENT_NS, function() { - mfp.updateSize(); - }); - - - if(!mfp.st.closeOnContentClick) { - _wrapClasses += ' mfp-auto-cursor'; - } - - if(_wrapClasses) - mfp.wrap.addClass(_wrapClasses); - - - // this triggers recalculation of layout, so we get it once to not to trigger twice - var windowHeight = mfp.wH = _window.height(); - - - var windowStyles = {}; - - if( mfp.fixedContentPos ) { - if(mfp._hasScrollBar(windowHeight)){ - var s = mfp._getScrollbarSize(); - if(s) { - windowStyles.marginRight = s; - } + * http://dimsemenov.com/plugins/magnific-popup/ + * Copyright (c) 2016 Dmitry Semenov; */ +(function(factory) { + if (typeof define === "function" && define.amd) { + // AMD. Register as an anonymous module. + define(["jquery"], factory); + } else if (typeof exports === "object") { + // Node/CommonJS + factory(require("jquery")); + } else { + // Browser globals + factory(window.jQuery || window.Zepto); + } +})(function($) { + /*>>core*/ + /** + * + * Magnific Popup Core JS file + * + */ + + /** + * Private static constants + */ + var CLOSE_EVENT = "Close", + BEFORE_CLOSE_EVENT = "BeforeClose", + AFTER_CLOSE_EVENT = "AfterClose", + BEFORE_APPEND_EVENT = "BeforeAppend", + MARKUP_PARSE_EVENT = "MarkupParse", + OPEN_EVENT = "Open", + CHANGE_EVENT = "Change", + NS = "mfp", + EVENT_NS = "." + NS, + READY_CLASS = "mfp-ready", + REMOVING_CLASS = "mfp-removing", + PREVENT_CLOSE_CLASS = "mfp-prevent-close"; + + /** + * Private vars + */ + /*jshint -W079 */ + var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' + MagnificPopup = function() {}, + _isJQ = !!window.jQuery, + _prevStatus, + _window = $(window), + _document, + _prevContentType, + _wrapClasses, + _currPopupType; + + /** + * Private functions + */ + var _mfpOn = function(name, f) { + mfp.ev.on(NS + name + EVENT_NS, f); + }, + _getEl = function(className, appendTo, html, raw) { + var el = document.createElement("div"); + el.className = "mfp-" + className; + if (html) { + el.innerHTML = html; + } + if (!raw) { + el = $(el); + if (appendTo) { + el.appendTo(appendTo); + } + } else if (appendTo) { + appendTo.appendChild(el); + } + return el; + }, + _mfpTrigger = function(e, data) { + mfp.ev.triggerHandler(NS + e, data); + + if (mfp.st.callbacks) { + // converts "mfpEventName" to "eventName" callback and triggers it if it's present + e = e.charAt(0).toLowerCase() + e.slice(1); + if (mfp.st.callbacks[e]) { + mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); + } + } + }, + _getCloseBtn = function(type) { + if (type !== _currPopupType || !mfp.currTemplate.closeBtn) { + mfp.currTemplate.closeBtn = $( + mfp.st.closeMarkup.replace("%title%", mfp.st.tClose) + ); + _currPopupType = type; + } + return mfp.currTemplate.closeBtn; + }, + // Initialize Magnific Popup only when called at least once + _checkInstance = function() { + if (!$.magnificPopup.instance) { + /*jshint -W020 */ + mfp = new MagnificPopup(); + mfp.init(); + $.magnificPopup.instance = mfp; + } + }, + // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr + supportsTransitions = function() { + var s = document.createElement("p").style, // 's' for style. better to create an element if body yet to exist + v = ["ms", "O", "Moz", "Webkit"]; // 'v' for vendor + + if (s["transition"] !== undefined) { + return true; + } + + while (v.length) { + if (v.pop() + "Transition" in s) { + return true; + } + } + + return false; + }; + + /** + * Public functions + */ + MagnificPopup.prototype = { + constructor: MagnificPopup, + + /** + * Initializes Magnific Popup plugin. + * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed + */ + init: function() { + var appVersion = navigator.appVersion; + mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; + mfp.isAndroid = /android/gi.test(appVersion); + mfp.isIOS = /iphone|ipad|ipod/gi.test(appVersion); + mfp.supportsTransition = supportsTransitions(); + + // We disable fixed positioned lightbox on devices that don't handle it nicely. + // If you know a better way of detecting this - let me know. + mfp.probablyMobile = + mfp.isAndroid || + mfp.isIOS || + /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test( + navigator.userAgent + ); + _document = $(document); + + mfp.popupsCache = {}; + }, + + /** + * Opens popup + * @param data [description] + */ + open: function(data) { + var i; + + if (data.isObj === false) { + // convert jQuery collection to array to avoid conflicts later + mfp.items = data.items.toArray(); + + mfp.index = 0; + var items = data.items, + item; + for (i = 0; i < items.length; i++) { + item = items[i]; + if (item.parsed) { + item = item.el[0]; + } + if (item === data.el[0]) { + mfp.index = i; + break; + } + } + } else { + mfp.items = $.isArray(data.items) ? data.items : [data.items]; + mfp.index = data.index || 0; + } + + // if popup is already opened - we just update the content + if (mfp.isOpen) { + mfp.updateItemHTML(); + return; + } + + mfp.types = []; + _wrapClasses = ""; + if (data.mainEl && data.mainEl.length) { + mfp.ev = data.mainEl.eq(0); + } else { + mfp.ev = _document; + } + + if (data.key) { + if (!mfp.popupsCache[data.key]) { + mfp.popupsCache[data.key] = {}; + } + mfp.currTemplate = mfp.popupsCache[data.key]; + } else { + mfp.currTemplate = {}; + } + + mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data); + mfp.fixedContentPos = + mfp.st.fixedContentPos === "auto" + ? !mfp.probablyMobile + : mfp.st.fixedContentPos; + + if (mfp.st.modal) { + mfp.st.closeOnContentClick = false; + mfp.st.closeOnBgClick = false; + mfp.st.showCloseBtn = false; + mfp.st.enableEscapeKey = false; + } + + // Building markup + // main containers are created only once + if (!mfp.bgOverlay) { + // Dark overlay + mfp.bgOverlay = _getEl("bg").on("click" + EVENT_NS, function() { + mfp.close(); + }); + + mfp.wrap = _getEl("wrap") + .attr("tabindex", -1) + .on("click" + EVENT_NS, function(e) { + if (mfp._checkIfClose(e.target)) { + mfp.close(); } + }); + + mfp.container = _getEl("container", mfp.wrap); + } + + mfp.contentContainer = _getEl("content"); + if (mfp.st.preloader) { + mfp.preloader = _getEl("preloader", mfp.container, mfp.st.tLoading); + } + + // Initializing modules + var modules = $.magnificPopup.modules; + for (i = 0; i < modules.length; i++) { + var n = modules[i]; + n = n.charAt(0).toUpperCase() + n.slice(1); + mfp["init" + n].call(mfp); + } + _mfpTrigger("BeforeOpen"); + + if (mfp.st.showCloseBtn) { + // Close button + if (!mfp.st.closeBtnInside) { + mfp.wrap.append(_getCloseBtn()); + } else { + _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { + values.close_replaceWith = _getCloseBtn(item.type); + }); + _wrapClasses += " mfp-close-btn-in"; + } + } + + if (mfp.st.alignTop) { + _wrapClasses += " mfp-align-top"; + } + + if (mfp.fixedContentPos) { + mfp.wrap.css({ + overflow: mfp.st.overflowY, + overflowX: "hidden", + overflowY: mfp.st.overflowY + }); + } else { + mfp.wrap.css({ + top: _window.scrollTop(), + position: "absolute" + }); + } + if ( + mfp.st.fixedBgPos === false || + (mfp.st.fixedBgPos === "auto" && !mfp.fixedContentPos) + ) { + mfp.bgOverlay.css({ + height: _document.height(), + position: "absolute" + }); + } + + if (mfp.st.enableEscapeKey) { + // Close on ESC key + _document.on("keyup" + EVENT_NS, function(e) { + if (e.keyCode === 27) { + mfp.close(); + } + }); + } + + _window.on("resize" + EVENT_NS, function() { + mfp.updateSize(); + }); + + if (!mfp.st.closeOnContentClick) { + _wrapClasses += " mfp-auto-cursor"; + } + + if (_wrapClasses) mfp.wrap.addClass(_wrapClasses); + + // this triggers recalculation of layout, so we get it once to not to trigger twice + var windowHeight = (mfp.wH = _window.height()); + + var windowStyles = {}; + + if (mfp.fixedContentPos) { + if (mfp._hasScrollBar(windowHeight)) { + var s = mfp._getScrollbarSize(); + if (s) { + windowStyles.marginRight = s; + } + } + } + + if (mfp.fixedContentPos) { + if (!mfp.isIE7) { + windowStyles.overflow = "hidden"; + } else { + // ie7 double-scroll bug + $("body, html").css("overflow", "hidden"); + } + } + + var classesToadd = mfp.st.mainClass; + if (mfp.isIE7) { + classesToadd += " mfp-ie7"; + } + if (classesToadd) { + mfp._addClassToMFP(classesToadd); + } + + // add content + mfp.updateItemHTML(); + + _mfpTrigger("BuildControls"); + + // remove scrollbar, add margin e.t.c + $("html").css(windowStyles); + + // add everything to DOM + mfp.bgOverlay + .add(mfp.wrap) + .prependTo(mfp.st.prependTo || $(document.body)); + + // Save last focused element + mfp._lastFocusedEl = document.activeElement; + + // Wait for next cycle to allow CSS transition + setTimeout(function() { + if (mfp.content) { + mfp._addClassToMFP(READY_CLASS); + mfp._setFocus(); + } else { + // if content is not defined (not loaded e.t.c) we add class only for BG + mfp.bgOverlay.addClass(READY_CLASS); } - if(mfp.fixedContentPos) { - if(!mfp.isIE7) { - windowStyles.overflow = 'hidden'; - } else { - // ie7 double-scroll bug - $('body, html').css('overflow', 'hidden'); - } - } - - - - var classesToadd = mfp.st.mainClass; - if(mfp.isIE7) { - classesToadd += ' mfp-ie7'; - } - if(classesToadd) { - mfp._addClassToMFP( classesToadd ); - } - - // add content - mfp.updateItemHTML(); - - _mfpTrigger('BuildControls'); + // Trap the focus in popup + _document.on("focusin" + EVENT_NS, mfp._onFocusIn); + }, 16); + + mfp.isOpen = true; + mfp.updateSize(windowHeight); + _mfpTrigger(OPEN_EVENT); + + return data; + }, + + /** + * Closes the popup + */ + close: function() { + if (!mfp.isOpen) return; + _mfpTrigger(BEFORE_CLOSE_EVENT); + + mfp.isOpen = false; + // for CSS3 animation + if (mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition) { + mfp._addClassToMFP(REMOVING_CLASS); + setTimeout(function() { + mfp._close(); + }, mfp.st.removalDelay); + } else { + mfp._close(); + } + }, + + /** + * Helper for close() function + */ + _close: function() { + _mfpTrigger(CLOSE_EVENT); + + var classesToRemove = REMOVING_CLASS + " " + READY_CLASS + " "; + + mfp.bgOverlay.detach(); + mfp.wrap.detach(); + mfp.container.empty(); + + if (mfp.st.mainClass) { + classesToRemove += mfp.st.mainClass + " "; + } + + mfp._removeClassFromMFP(classesToRemove); + + if (mfp.fixedContentPos) { + var windowStyles = { marginRight: "" }; + if (mfp.isIE7) { + $("body, html").css("overflow", ""); + } else { + windowStyles.overflow = ""; + } + $("html").css(windowStyles); + } + + _document.off("keyup" + EVENT_NS + " focusin" + EVENT_NS); + mfp.ev.off(EVENT_NS); + + // clean up DOM elements that aren't removed + mfp.wrap.attr("class", "mfp-wrap").removeAttr("style"); + mfp.bgOverlay.attr("class", "mfp-bg"); + mfp.container.attr("class", "mfp-container"); + + // remove close button from target element + if ( + mfp.st.showCloseBtn && + (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true) + ) { + if (mfp.currTemplate.closeBtn) mfp.currTemplate.closeBtn.detach(); + } + + if (mfp.st.autoFocusLast && mfp._lastFocusedEl) { + $(mfp._lastFocusedEl).focus(); // put tab focus back + } + mfp.currItem = null; + mfp.content = null; + mfp.currTemplate = null; + mfp.prevHeight = 0; + + _mfpTrigger(AFTER_CLOSE_EVENT); + }, + + updateSize: function(winHeight) { + if (mfp.isIOS) { + // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 + var zoomLevel = + document.documentElement.clientWidth / window.innerWidth; + var height = window.innerHeight * zoomLevel; + mfp.wrap.css("height", height); + mfp.wH = height; + } else { + mfp.wH = winHeight || _window.height(); + } + // Fixes #84: popup incorrectly positioned with position:relative on body + if (!mfp.fixedContentPos) { + mfp.wrap.css("height", mfp.wH); + } + + _mfpTrigger("Resize"); + }, + + /** + * Set content of popup based on current index + */ + updateItemHTML: function() { + var item = mfp.items[mfp.index]; + + // Detach and perform modifications + mfp.contentContainer.detach(); + + if (mfp.content) mfp.content.detach(); + + if (!item.parsed) { + item = mfp.parseEl(mfp.index); + } + + var type = item.type; + + _mfpTrigger("BeforeChange", [ + mfp.currItem ? mfp.currItem.type : "", + type + ]); + // BeforeChange event works like so: + // _mfpOn('BeforeChange', function(e, prevType, newType) { }); + + mfp.currItem = item; + + if (!mfp.currTemplate[type]) { + var markup = mfp.st[type] ? mfp.st[type].markup : false; + + // allows to modify markup + _mfpTrigger("FirstMarkupParse", markup); + + if (markup) { + mfp.currTemplate[type] = $(markup); + } else { + // if there is no markup found we just define that template is parsed + mfp.currTemplate[type] = true; + } + } + + if (_prevContentType && _prevContentType !== item.type) { + mfp.container.removeClass("mfp-" + _prevContentType + "-holder"); + } + + var newContent = mfp[ + "get" + type.charAt(0).toUpperCase() + type.slice(1) + ](item, mfp.currTemplate[type]); + mfp.appendContent(newContent, type); + + item.preloaded = true; + + _mfpTrigger(CHANGE_EVENT, item); + _prevContentType = item.type; + + // Append container back after its content changed + mfp.container.prepend(mfp.contentContainer); + + _mfpTrigger("AfterChange"); + }, + + /** + * Set HTML content of popup + */ + appendContent: function(newContent, type) { + mfp.content = newContent; + + if (newContent) { + if ( + mfp.st.showCloseBtn && + mfp.st.closeBtnInside && + mfp.currTemplate[type] === true + ) { + // if there is no markup, we just append close button element inside + if (!mfp.content.find(".mfp-close").length) { + mfp.content.append(_getCloseBtn()); + } + } else { + mfp.content = newContent; + } + } else { + mfp.content = ""; + } + + _mfpTrigger(BEFORE_APPEND_EVENT); + mfp.container.addClass("mfp-" + type + "-holder"); + + mfp.contentContainer.append(mfp.content); + }, + + /** + * Creates Magnific Popup data object based on given data + * @param {int} index Index of item to parse + */ + parseEl: function(index) { + var item = mfp.items[index], + type; + + if (item.tagName) { + item = { el: $(item) }; + } else { + type = item.type; + item = { data: item, src: item.src }; + } + + if (item.el) { + var types = mfp.types; + + // check for 'mfp-TYPE' class + for (var i = 0; i < types.length; i++) { + if (item.el.hasClass("mfp-" + types[i])) { + type = types[i]; + break; + } + } - // remove scrollbar, add margin e.t.c - $('html').css(windowStyles); + item.src = item.el.attr("data-mfp-src"); + if (!item.src) { + item.src = item.el.attr("href"); + } + } + + item.type = type || mfp.st.type || "inline"; + item.index = index; + item.parsed = true; + mfp.items[index] = item; + _mfpTrigger("ElementParse", item); + + return mfp.items[index]; + }, + + /** + * Initializes single popup or a group of popups + */ + addGroup: function(el, options) { + var eHandler = function(e) { + e.mfpEl = this; + mfp._openClick(e, el, options); + }; + + if (!options) { + options = {}; + } + + var eName = "click.magnificPopup"; + options.mainEl = el; + + if (options.items) { + options.isObj = true; + el.off(eName).on(eName, eHandler); + } else { + options.isObj = false; + if (options.delegate) { + el.off(eName).on(eName, options.delegate, eHandler); + } else { + options.items = el; + el.off(eName).on(eName, eHandler); + } + } + }, + _openClick: function(e, el, options) { + var midClick = + options.midClick !== undefined + ? options.midClick + : $.magnificPopup.defaults.midClick; + + if ( + !midClick && + (e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey) + ) { + return; + } + + var disableOn = + options.disableOn !== undefined + ? options.disableOn + : $.magnificPopup.defaults.disableOn; + + if (disableOn) { + if ($.isFunction(disableOn)) { + if (!disableOn.call(mfp)) { + return true; + } + } else { + // else it's number + if (_window.width() < disableOn) { + return true; + } + } + } - // add everything to DOM - mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) ); + if (e.type) { + e.preventDefault(); - // Save last focused element - mfp._lastFocusedEl = document.activeElement; + // This will prevent popup from closing if element is inside and popup is already opened + if (mfp.isOpen) { + e.stopPropagation(); + } + } + + options.el = $(e.mfpEl); + if (options.delegate) { + options.items = el.find(options.delegate); + } + mfp.open(options); + }, + + /** + * Updates text on preloader + */ + updateStatus: function(status, text) { + if (mfp.preloader) { + if (_prevStatus !== status) { + mfp.container.removeClass("mfp-s-" + _prevStatus); + } - // Wait for next cycle to allow CSS transition - setTimeout(function() { + if (!text && status === "loading") { + text = mfp.st.tLoading; + } - if(mfp.content) { - mfp._addClassToMFP(READY_CLASS); - mfp._setFocus(); - } else { - // if content is not defined (not loaded e.t.c) we add class only for BG - mfp.bgOverlay.addClass(READY_CLASS); - } + var data = { + status: status, + text: text + }; + // allows to modify status + _mfpTrigger("UpdateStatus", data); - // Trap the focus in popup - _document.on('focusin' + EVENT_NS, mfp._onFocusIn); + status = data.status; + text = data.text; - }, 16); + mfp.preloader.html(text); - mfp.isOpen = true; - mfp.updateSize(windowHeight); - _mfpTrigger(OPEN_EVENT); + mfp.preloader.find("a").on("click", function(e) { + e.stopImmediatePropagation(); + }); - return data; - }, + mfp.container.addClass("mfp-s-" + status); + _prevStatus = status; + } + }, - /** - * Closes the popup - */ - close: function() { - if(!mfp.isOpen) return; - _mfpTrigger(BEFORE_CLOSE_EVENT); - - mfp.isOpen = false; - // for CSS3 animation - if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { - mfp._addClassToMFP(REMOVING_CLASS); - setTimeout(function() { - mfp._close(); - }, mfp.st.removalDelay); - } else { - mfp._close(); - } - }, - - /** - * Helper for close() function - */ - _close: function() { - _mfpTrigger(CLOSE_EVENT); - - var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; - - mfp.bgOverlay.detach(); - mfp.wrap.detach(); - mfp.container.empty(); - - if(mfp.st.mainClass) { - classesToRemove += mfp.st.mainClass + ' '; - } - - mfp._removeClassFromMFP(classesToRemove); - - if(mfp.fixedContentPos) { - var windowStyles = {marginRight: ''}; - if(mfp.isIE7) { - $('body, html').css('overflow', ''); - } else { - windowStyles.overflow = ''; - } - $('html').css(windowStyles); - } - - _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); - mfp.ev.off(EVENT_NS); - - // clean up DOM elements that aren't removed - mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); - mfp.bgOverlay.attr('class', 'mfp-bg'); - mfp.container.attr('class', 'mfp-container'); - - // remove close button from target element - if(mfp.st.showCloseBtn && - (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { - if(mfp.currTemplate.closeBtn) - mfp.currTemplate.closeBtn.detach(); - } - - - if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { - $(mfp._lastFocusedEl).focus(); // put tab focus back - } - mfp.currItem = null; - mfp.content = null; - mfp.currTemplate = null; - mfp.prevHeight = 0; - - _mfpTrigger(AFTER_CLOSE_EVENT); - }, - - updateSize: function(winHeight) { - - if(mfp.isIOS) { - // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 - var zoomLevel = document.documentElement.clientWidth / window.innerWidth; - var height = window.innerHeight * zoomLevel; - mfp.wrap.css('height', height); - mfp.wH = height; - } else { - mfp.wH = winHeight || _window.height(); - } - // Fixes #84: popup incorrectly positioned with position:relative on body - if(!mfp.fixedContentPos) { - mfp.wrap.css('height', mfp.wH); - } - - _mfpTrigger('Resize'); - - }, - - /** - * Set content of popup based on current index + /* + "Private" helpers that aren't private at all */ - updateItemHTML: function() { - var item = mfp.items[mfp.index]; - - // Detach and perform modifications - mfp.contentContainer.detach(); - - if(mfp.content) - mfp.content.detach(); - - if(!item.parsed) { - item = mfp.parseEl( mfp.index ); - } - - var type = item.type; - - _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); - // BeforeChange event works like so: - // _mfpOn('BeforeChange', function(e, prevType, newType) { }); - - mfp.currItem = item; + // Check to close popup or not + // "target" is an element that was clicked + _checkIfClose: function(target) { + if ($(target).hasClass(PREVENT_CLOSE_CLASS)) { + return; + } + + var closeOnContent = mfp.st.closeOnContentClick; + var closeOnBg = mfp.st.closeOnBgClick; + + if (closeOnContent && closeOnBg) { + return true; + } else { + // We close the popup if click is on close button or on preloader. Or if there is no content. + if ( + !mfp.content || + $(target).hasClass("mfp-close") || + (mfp.preloader && target === mfp.preloader[0]) + ) { + return true; + } - if(!mfp.currTemplate[type]) { - var markup = mfp.st[type] ? mfp.st[type].markup : false; + // if click is outside the content + if (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) { + if (closeOnBg) { + // last check, if the clicked element is in DOM, (in case it's removed onclick) + if ($.contains(document, target)) { + return true; + } + } + } else if (closeOnContent) { + return true; + } + } + return false; + }, + _addClassToMFP: function(cName) { + mfp.bgOverlay.addClass(cName); + mfp.wrap.addClass(cName); + }, + _removeClassFromMFP: function(cName) { + this.bgOverlay.removeClass(cName); + mfp.wrap.removeClass(cName); + }, + _hasScrollBar: function(winHeight) { + return ( + (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > + (winHeight || _window.height()) + ); + }, + _setFocus: function() { + (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); + }, + _onFocusIn: function(e) { + if (e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target)) { + mfp._setFocus(); + return false; + } + }, + _parseMarkup: function(template, values, item) { + var arr; + if (item.data) { + values = $.extend(item.data, values); + } + _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]); + + $.each(values, function(key, value) { + if (value === undefined || value === false) { + return true; + } + arr = key.split("_"); + if (arr.length > 1) { + var el = template.find(EVENT_NS + "-" + arr[0]); + + if (el.length > 0) { + var attr = arr[1]; + if (attr === "replaceWith") { + if (el[0] !== value[0]) { + el.replaceWith(value); + } + } else if (attr === "img") { + if (el.is("img")) { + el.attr("src", value); + } else { + el.replaceWith( + $("<img>") + .attr("src", value) + .attr("class", el.attr("class")) + ); + } + } else { + el.attr(arr[1], value); + } + } + } else { + template.find(EVENT_NS + "-" + key).html(value); + } + }); + }, - // allows to modify markup - _mfpTrigger('FirstMarkupParse', markup); + _getScrollbarSize: function() { + // thx David + if (mfp.scrollbarSize === undefined) { + var scrollDiv = document.createElement("div"); + scrollDiv.style.cssText = + "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;"; + document.body.appendChild(scrollDiv); + mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + } + return mfp.scrollbarSize; + } + }; /* MagnificPopup core prototype end */ - if(markup) { - mfp.currTemplate[type] = $(markup); - } else { - // if there is no markup found we just define that template is parsed - mfp.currTemplate[type] = true; - } - } + /** + * Public static functions + */ + $.magnificPopup = { + instance: null, + proto: MagnificPopup.prototype, + modules: [], - if(_prevContentType && _prevContentType !== item.type) { - mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); - } + open: function(options, index) { + _checkInstance(); - var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); - mfp.appendContent(newContent, type); + if (!options) { + options = {}; + } else { + options = $.extend(true, {}, options); + } - item.preloaded = true; + options.isObj = true; + options.index = index || 0; + return this.instance.open(options); + }, - _mfpTrigger(CHANGE_EVENT, item); - _prevContentType = item.type; + close: function() { + return $.magnificPopup.instance && $.magnificPopup.instance.close(); + }, - // Append container back after its content changed - mfp.container.prepend(mfp.contentContainer); + registerModule: function(name, module) { + if (module.options) { + $.magnificPopup.defaults[name] = module.options; + } + $.extend(this.proto, module.proto); + this.modules.push(name); + }, - _mfpTrigger('AfterChange'); - }, + defaults: { + // Info about options is in docs: + // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options + disableOn: 0, - /** - * Set HTML content of popup - */ - appendContent: function(newContent, type) { - mfp.content = newContent; - - if(newContent) { - if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && - mfp.currTemplate[type] === true) { - // if there is no markup, we just append close button element inside - if(!mfp.content.find('.mfp-close').length) { - mfp.content.append(_getCloseBtn()); - } - } else { - mfp.content = newContent; - } - } else { - mfp.content = ''; - } - - _mfpTrigger(BEFORE_APPEND_EVENT); - mfp.container.addClass('mfp-'+type+'-holder'); - - mfp.contentContainer.append(mfp.content); - }, - - - /** - * Creates Magnific Popup data object based on given data - * @param {int} index Index of item to parse - */ - parseEl: function(index) { - var item = mfp.items[index], - type; - - if(item.tagName) { - item = { el: $(item) }; - } else { - type = item.type; - item = { data: item, src: item.src }; - } - - if(item.el) { - var types = mfp.types; - - // check for 'mfp-TYPE' class - for(var i = 0; i < types.length; i++) { - if( item.el.hasClass('mfp-'+types[i]) ) { - type = types[i]; - break; - } - } - - item.src = item.el.attr('data-mfp-src'); - if(!item.src) { - item.src = item.el.attr('href'); - } - } - - item.type = type || mfp.st.type || 'inline'; - item.index = index; - item.parsed = true; - mfp.items[index] = item; - _mfpTrigger('ElementParse', item); - - return mfp.items[index]; - }, - - - /** - * Initializes single popup or a group of popups - */ - addGroup: function(el, options) { - var eHandler = function(e) { - e.mfpEl = this; - mfp._openClick(e, el, options); - }; - - if(!options) { - options = {}; - } - - var eName = 'click.magnificPopup'; - options.mainEl = el; - - if(options.items) { - options.isObj = true; - el.off(eName).on(eName, eHandler); - } else { - options.isObj = false; - if(options.delegate) { - el.off(eName).on(eName, options.delegate , eHandler); - } else { - options.items = el; - el.off(eName).on(eName, eHandler); - } - } - }, - _openClick: function(e, el, options) { - var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; - - - if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { - return; - } - - var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; - - if(disableOn) { - if($.isFunction(disableOn)) { - if( !disableOn.call(mfp) ) { - return true; - } - } else { // else it's number - if( _window.width() < disableOn ) { - return true; - } - } - } - - if(e.type) { - e.preventDefault(); - - // This will prevent popup from closing if element is inside and popup is already opened - if(mfp.isOpen) { - e.stopPropagation(); - } - } - - options.el = $(e.mfpEl); - if(options.delegate) { - options.items = el.find(options.delegate); - } - mfp.open(options); - }, - - - /** - * Updates text on preloader - */ - updateStatus: function(status, text) { + key: null, - if(mfp.preloader) { - if(_prevStatus !== status) { - mfp.container.removeClass('mfp-s-'+_prevStatus); - } + midClick: false, - if(!text && status === 'loading') { - text = mfp.st.tLoading; - } + mainClass: "", - var data = { - status: status, - text: text - }; - // allows to modify status - _mfpTrigger('UpdateStatus', data); + preloader: true, - status = data.status; - text = data.text; + focus: "", // CSS selector of input to focus after popup is opened - mfp.preloader.html(text); + closeOnContentClick: false, - mfp.preloader.find('a').on('click', function(e) { - e.stopImmediatePropagation(); - }); + closeOnBgClick: true, - mfp.container.addClass('mfp-s-'+status); - _prevStatus = status; - } - }, + closeBtnInside: true, + showCloseBtn: true, - /* - "Private" helpers that aren't private at all - */ - // Check to close popup or not - // "target" is an element that was clicked - _checkIfClose: function(target) { - - if($(target).hasClass(PREVENT_CLOSE_CLASS)) { - return; - } - - var closeOnContent = mfp.st.closeOnContentClick; - var closeOnBg = mfp.st.closeOnBgClick; - - if(closeOnContent && closeOnBg) { - return true; - } else { - - // We close the popup if click is on close button or on preloader. Or if there is no content. - if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) { - return true; - } - - // if click is outside the content - if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { - if(closeOnBg) { - // last check, if the clicked element is in DOM, (in case it's removed onclick) - if( $.contains(document, target) ) { - return true; - } - } - } else if(closeOnContent) { - return true; - } - - } - return false; - }, - _addClassToMFP: function(cName) { - mfp.bgOverlay.addClass(cName); - mfp.wrap.addClass(cName); - }, - _removeClassFromMFP: function(cName) { - this.bgOverlay.removeClass(cName); - mfp.wrap.removeClass(cName); - }, - _hasScrollBar: function(winHeight) { - return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); - }, - _setFocus: function() { - (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); - }, - _onFocusIn: function(e) { - if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { - mfp._setFocus(); - return false; - } - }, - _parseMarkup: function(template, values, item) { - var arr; - if(item.data) { - values = $.extend(item.data, values); - } - _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); - - $.each(values, function(key, value) { - if(value === undefined || value === false) { - return true; - } - arr = key.split('_'); - if(arr.length > 1) { - var el = template.find(EVENT_NS + '-'+arr[0]); - - if(el.length > 0) { - var attr = arr[1]; - if(attr === 'replaceWith') { - if(el[0] !== value[0]) { - el.replaceWith(value); - } - } else if(attr === 'img') { - if(el.is('img')) { - el.attr('src', value); - } else { - el.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) ); - } - } else { - el.attr(arr[1], value); - } - } - - } else { - template.find(EVENT_NS + '-'+key).html(value); - } - }); - }, - - _getScrollbarSize: function() { - // thx David - if(mfp.scrollbarSize === undefined) { - var scrollDiv = document.createElement("div"); - scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; - document.body.appendChild(scrollDiv); - mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - } - return mfp.scrollbarSize; - } - -}; /* MagnificPopup core prototype end */ + enableEscapeKey: true, + modal: false, + alignTop: false, + removalDelay: 0, -/** - * Public static functions - */ -$.magnificPopup = { - instance: null, - proto: MagnificPopup.prototype, - modules: [], - - open: function(options, index) { - _checkInstance(); - - if(!options) { - options = {}; - } else { - options = $.extend(true, {}, options); - } - - options.isObj = true; - options.index = index || 0; - return this.instance.open(options); - }, - - close: function() { - return $.magnificPopup.instance && $.magnificPopup.instance.close(); - }, - - registerModule: function(name, module) { - if(module.options) { - $.magnificPopup.defaults[name] = module.options; - } - $.extend(this.proto, module.proto); - this.modules.push(name); - }, - - defaults: { - - // Info about options is in docs: - // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options + prependTo: null, - disableOn: 0, + fixedContentPos: "auto", - key: null, + fixedBgPos: "auto", - midClick: false, + overflowY: "auto", - mainClass: '', + closeMarkup: + '<button title="%title%" type="button" class="mfp-close">×</button>', - preloader: true, + tClose: "Close (Esc)", - focus: '', // CSS selector of input to focus after popup is opened + tLoading: "Loading...", - closeOnContentClick: false, + autoFocusLast: true + } + }; - closeOnBgClick: true, + $.fn.magnificPopup = function(options) { + _checkInstance(); - closeBtnInside: true, + var jqEl = $(this); - showCloseBtn: true, + // We call some API method of first param is a string + if (typeof options === "string") { + if (options === "open") { + var items, + itemOpts = _isJQ ? jqEl.data("magnificPopup") : jqEl[0].magnificPopup, + index = parseInt(arguments[1], 10) || 0; - enableEscapeKey: true, - - modal: false, - - alignTop: false, - - removalDelay: 0, + if (itemOpts.items) { + items = itemOpts.items[index]; + } else { + items = jqEl; + if (itemOpts.delegate) { + items = items.find(itemOpts.delegate); + } + items = items.eq(index); + } + mfp._openClick({ mfpEl: items }, jqEl, itemOpts); + } else { + if (mfp.isOpen) + mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); + } + } else { + // clone options obj + options = $.extend(true, {}, options); + + /* + * As Zepto doesn't support .data() method for objects + * and it works only in normal browsers + * we assign "options" object directly to the DOM element. FTW! + */ + if (_isJQ) { + jqEl.data("magnificPopup", options); + } else { + jqEl[0].magnificPopup = options; + } + + mfp.addGroup(jqEl, options); + } + return jqEl; + }; + + /*>>core*/ + + /*>>inline*/ + + var INLINE_NS = "inline", + _hiddenClass, + _inlinePlaceholder, + _lastInlineElement, + _putInlineElementsBack = function() { + if (_lastInlineElement) { + _inlinePlaceholder + .after(_lastInlineElement.addClass(_hiddenClass)) + .detach(); + _lastInlineElement = null; + } + }; + + $.magnificPopup.registerModule(INLINE_NS, { + options: { + hiddenClass: "hide", // will be appended with `mfp-` prefix + markup: "", + tNotFound: "Content not found" + }, + proto: { + initInline: function() { + mfp.types.push(INLINE_NS); + + _mfpOn(CLOSE_EVENT + "." + INLINE_NS, function() { + _putInlineElementsBack(); + }); + }, + + getInline: function(item, template) { + _putInlineElementsBack(); + + if (item.src) { + var inlineSt = mfp.st.inline, + el = $(item.src); + + if (el.length) { + // If target element has parent - we replace it with placeholder and put it back after popup is closed + var parent = el[0].parentNode; + if (parent && parent.tagName) { + if (!_inlinePlaceholder) { + _hiddenClass = inlineSt.hiddenClass; + _inlinePlaceholder = _getEl(_hiddenClass); + _hiddenClass = "mfp-" + _hiddenClass; + } + // replace target inline element with placeholder + _lastInlineElement = el + .after(_inlinePlaceholder) + .detach() + .removeClass(_hiddenClass); + } - prependTo: null, + mfp.updateStatus("ready"); + } else { + mfp.updateStatus("error", inlineSt.tNotFound); + el = $("<div>"); + } - fixedContentPos: 'auto', + item.inlineElement = el; + return el; + } - fixedBgPos: 'auto', + mfp.updateStatus("ready"); + mfp._parseMarkup(template, {}, item); + return template; + } + } + }); + + /*>>inline*/ + + /*>>ajax*/ + var AJAX_NS = "ajax", + _ajaxCur, + _removeAjaxCursor = function() { + if (_ajaxCur) { + $(document.body).removeClass(_ajaxCur); + } + }, + _destroyAjaxRequest = function() { + _removeAjaxCursor(); + if (mfp.req) { + mfp.req.abort(); + } + }; + + $.magnificPopup.registerModule(AJAX_NS, { + options: { + settings: null, + cursor: "mfp-ajax-cur", + tError: '<a href="%url%">The content</a> could not be loaded.' + }, + + proto: { + initAjax: function() { + mfp.types.push(AJAX_NS); + _ajaxCur = mfp.st.ajax.cursor; + + _mfpOn(CLOSE_EVENT + "." + AJAX_NS, _destroyAjaxRequest); + _mfpOn("BeforeChange." + AJAX_NS, _destroyAjaxRequest); + }, + getAjax: function(item) { + if (_ajaxCur) { + $(document.body).addClass(_ajaxCur); + } - overflowY: 'auto', + mfp.updateStatus("loading"); - closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>', + var opts = $.extend( + { + url: item.src, + success: function(data, textStatus, jqXHR) { + var temp = { + data: data, + xhr: jqXHR + }; - tClose: 'Close (Esc)', + _mfpTrigger("ParseAjax", temp); - tLoading: 'Loading...', + mfp.appendContent($(temp.data), AJAX_NS); - autoFocusLast: true + item.finished = true; - } -}; + _removeAjaxCursor(); + mfp._setFocus(); + setTimeout(function() { + mfp.wrap.addClass(READY_CLASS); + }, 16); -$.fn.magnificPopup = function(options) { - _checkInstance(); + mfp.updateStatus("ready"); - var jqEl = $(this); + _mfpTrigger("AjaxContentAdded"); + }, + error: function() { + _removeAjaxCursor(); + item.finished = item.loadError = true; + mfp.updateStatus( + "error", + mfp.st.ajax.tError.replace("%url%", item.src) + ); + } + }, + mfp.st.ajax.settings + ); - // We call some API method of first param is a string - if (typeof options === "string" ) { + mfp.req = $.ajax(opts); - if(options === 'open') { - var items, - itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup, - index = parseInt(arguments[1], 10) || 0; + return ""; + } + } + }); - if(itemOpts.items) { - items = itemOpts.items[index]; - } else { - items = jqEl; - if(itemOpts.delegate) { - items = items.find(itemOpts.delegate); - } - items = items.eq( index ); - } - mfp._openClick({mfpEl:items}, jqEl, itemOpts); - } else { - if(mfp.isOpen) - mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); - } + /*>>ajax*/ - } else { - // clone options obj - options = $.extend(true, {}, options); + /*>>image*/ + var _imgInterval, + _getTitle = function(item) { + if (item.data && item.data.title !== undefined) return item.data.title; - /* - * As Zepto doesn't support .data() method for objects - * and it works only in normal browsers - * we assign "options" object directly to the DOM element. FTW! - */ - if(_isJQ) { - jqEl.data('magnificPopup', options); - } else { - jqEl[0].magnificPopup = options; - } + var src = mfp.st.image.titleSrc; - mfp.addGroup(jqEl, options); + if (src) { + if ($.isFunction(src)) { + return src.call(mfp, item); + } else if (item.el) { + return item.el.attr(src) || ""; + } + } + return ""; + }; + + $.magnificPopup.registerModule("image", { + options: { + markup: + '<div class="mfp-figure">' + + '<div class="mfp-close"></div>' + + "<figure>" + + '<div class="mfp-img"></div>' + + "<figcaption>" + + '<div class="mfp-bottom-bar">' + + '<div class="mfp-title"></div>' + + '<div class="mfp-counter"></div>' + + "</div>" + + "</figcaption>" + + "</figure>" + + "</div>", + cursor: "mfp-zoom-out-cur", + titleSrc: "title", + verticalFit: true, + tError: '<a href="%url%">The image</a> could not be loaded.' + }, + + proto: { + initImage: function() { + var imgSt = mfp.st.image, + ns = ".image"; + + mfp.types.push("image"); + + _mfpOn(OPEN_EVENT + ns, function() { + if (mfp.currItem.type === "image" && imgSt.cursor) { + $(document.body).addClass(imgSt.cursor); + } + }); + + _mfpOn(CLOSE_EVENT + ns, function() { + if (imgSt.cursor) { + $(document.body).removeClass(imgSt.cursor); + } + _window.off("resize" + EVENT_NS); + }); + + _mfpOn("Resize" + ns, mfp.resizeImage); + if (mfp.isLowIE) { + _mfpOn("AfterChange", mfp.resizeImage); + } + }, + resizeImage: function() { + var item = mfp.currItem; + if (!item || !item.img) return; + + if (mfp.st.image.verticalFit) { + var decr = 0; + // fix box-sizing in ie7/8 + if (mfp.isLowIE) { + decr = + parseInt(item.img.css("padding-top"), 10) + + parseInt(item.img.css("padding-bottom"), 10); + } + item.img.css("max-height", mfp.wH - decr); + } + }, + _onImageHasSize: function(item) { + if (item.img) { + item.hasSize = true; - } - return jqEl; -}; + if (_imgInterval) { + clearInterval(_imgInterval); + } -/*>>core*/ + item.isCheckingImgSize = false; -/*>>inline*/ + _mfpTrigger("ImageHasSize", item); -var INLINE_NS = 'inline', - _hiddenClass, - _inlinePlaceholder, - _lastInlineElement, - _putInlineElementsBack = function() { - if(_lastInlineElement) { - _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach(); - _lastInlineElement = null; - } - }; + if (item.imgHidden) { + if (mfp.content) mfp.content.removeClass("mfp-loading"); -$.magnificPopup.registerModule(INLINE_NS, { - options: { - hiddenClass: 'hide', // will be appended with `mfp-` prefix - markup: '', - tNotFound: 'Content not found' - }, - proto: { + item.imgHidden = false; + } + } + }, + + /** + * Function that loops until the image has size to display elements that rely on it asap + */ + findImageSize: function(item) { + var counter = 0, + img = item.img[0], + mfpSetInterval = function(delay) { + if (_imgInterval) { + clearInterval(_imgInterval); + } + // decelerating interval that checks for size of an image + _imgInterval = setInterval(function() { + if (img.naturalWidth > 0) { + mfp._onImageHasSize(item); + return; + } + + if (counter > 200) { + clearInterval(_imgInterval); + } + + counter++; + if (counter === 3) { + mfpSetInterval(10); + } else if (counter === 40) { + mfpSetInterval(50); + } else if (counter === 100) { + mfpSetInterval(500); + } + }, delay); + }; + + mfpSetInterval(1); + }, + + getImage: function(item, template) { + var guard = 0, + // image load complete handler + onLoadComplete = function() { + if (item) { + if (item.img[0].complete) { + item.img.off(".mfploader"); + + if (item === mfp.currItem) { + mfp._onImageHasSize(item); + + mfp.updateStatus("ready"); + } - initInline: function() { - mfp.types.push(INLINE_NS); + item.hasSize = true; + item.loaded = true; + + _mfpTrigger("ImageLoadComplete"); + } else { + // if image complete check fails 200 times (20 sec), we assume that there was an error. + guard++; + if (guard < 200) { + setTimeout(onLoadComplete, 100); + } else { + onLoadError(); + } + } + } + }, + // image error handler + onLoadError = function() { + if (item) { + item.img.off(".mfploader"); + if (item === mfp.currItem) { + mfp._onImageHasSize(item); + mfp.updateStatus( + "error", + imgSt.tError.replace("%url%", item.src) + ); + } + + item.hasSize = true; + item.loaded = true; + item.loadError = true; + } + }, + imgSt = mfp.st.image; + + var el = template.find(".mfp-img"); + if (el.length) { + var img = document.createElement("img"); + img.className = "mfp-img"; + if (item.el && item.el.find("img").length) { + img.alt = item.el.find("img").attr("alt"); + } + item.img = $(img) + .on("load.mfploader", onLoadComplete) + .on("error.mfploader", onLoadError); + img.src = item.src; + + // without clone() "error" event is not firing when IMG is replaced by new IMG + // TODO: find a way to avoid such cloning + if (el.is("img")) { + item.img = item.img.clone(); + } + + img = item.img[0]; + if (img.naturalWidth > 0) { + item.hasSize = true; + } else if (!img.width) { + item.hasSize = false; + } + } - _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() { - _putInlineElementsBack(); - }); - }, - - getInline: function(item, template) { - - _putInlineElementsBack(); - - if(item.src) { - var inlineSt = mfp.st.inline, - el = $(item.src); - - if(el.length) { - - // If target element has parent - we replace it with placeholder and put it back after popup is closed - var parent = el[0].parentNode; - if(parent && parent.tagName) { - if(!_inlinePlaceholder) { - _hiddenClass = inlineSt.hiddenClass; - _inlinePlaceholder = _getEl(_hiddenClass); - _hiddenClass = 'mfp-'+_hiddenClass; - } - // replace target inline element with placeholder - _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); - } - - mfp.updateStatus('ready'); - } else { - mfp.updateStatus('error', inlineSt.tNotFound); - el = $('<div>'); - } - - item.inlineElement = el; - return el; - } - - mfp.updateStatus('ready'); - mfp._parseMarkup(template, {}, item); - return template; - } - } -}); + mfp._parseMarkup( + template, + { + title: _getTitle(item), + img_replaceWith: item.img + }, + item + ); + + mfp.resizeImage(); + + if (item.hasSize) { + if (_imgInterval) clearInterval(_imgInterval); + + if (item.loadError) { + template.addClass("mfp-loading"); + mfp.updateStatus("error", imgSt.tError.replace("%url%", item.src)); + } else { + template.removeClass("mfp-loading"); + mfp.updateStatus("ready"); + } + return template; + } -/*>>inline*/ - -/*>>ajax*/ -var AJAX_NS = 'ajax', - _ajaxCur, - _removeAjaxCursor = function() { - if(_ajaxCur) { - $(document.body).removeClass(_ajaxCur); - } - }, - _destroyAjaxRequest = function() { - _removeAjaxCursor(); - if(mfp.req) { - mfp.req.abort(); - } - }; - -$.magnificPopup.registerModule(AJAX_NS, { - - options: { - settings: null, - cursor: 'mfp-ajax-cur', - tError: '<a href="%url%">The content</a> could not be loaded.' - }, - - proto: { - initAjax: function() { - mfp.types.push(AJAX_NS); - _ajaxCur = mfp.st.ajax.cursor; - - _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest); - _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest); - }, - getAjax: function(item) { - - if(_ajaxCur) { - $(document.body).addClass(_ajaxCur); - } - - mfp.updateStatus('loading'); - - var opts = $.extend({ - url: item.src, - success: function(data, textStatus, jqXHR) { - var temp = { - data:data, - xhr:jqXHR - }; - - _mfpTrigger('ParseAjax', temp); - - mfp.appendContent( $(temp.data), AJAX_NS ); - - item.finished = true; - - _removeAjaxCursor(); - - mfp._setFocus(); - - setTimeout(function() { - mfp.wrap.addClass(READY_CLASS); - }, 16); - - mfp.updateStatus('ready'); - - _mfpTrigger('AjaxContentAdded'); - }, - error: function() { - _removeAjaxCursor(); - item.finished = item.loadError = true; - mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src)); - } - }, mfp.st.ajax.settings); - - mfp.req = $.ajax(opts); - - return ''; - } - } -}); + mfp.updateStatus("loading"); + item.loading = true; -/*>>ajax*/ - -/*>>image*/ -var _imgInterval, - _getTitle = function(item) { - if(item.data && item.data.title !== undefined) - return item.data.title; - - var src = mfp.st.image.titleSrc; - - if(src) { - if($.isFunction(src)) { - return src.call(mfp, item); - } else if(item.el) { - return item.el.attr(src) || ''; - } - } - return ''; - }; - -$.magnificPopup.registerModule('image', { - - options: { - markup: '<div class="mfp-figure">'+ - '<div class="mfp-close"></div>'+ - '<figure>'+ - '<div class="mfp-img"></div>'+ - '<figcaption>'+ - '<div class="mfp-bottom-bar">'+ - '<div class="mfp-title"></div>'+ - '<div class="mfp-counter"></div>'+ - '</div>'+ - '</figcaption>'+ - '</figure>'+ - '</div>', - cursor: 'mfp-zoom-out-cur', - titleSrc: 'title', - verticalFit: true, - tError: '<a href="%url%">The image</a> could not be loaded.' - }, - - proto: { - initImage: function() { - var imgSt = mfp.st.image, - ns = '.image'; - - mfp.types.push('image'); - - _mfpOn(OPEN_EVENT+ns, function() { - if(mfp.currItem.type === 'image' && imgSt.cursor) { - $(document.body).addClass(imgSt.cursor); - } - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(imgSt.cursor) { - $(document.body).removeClass(imgSt.cursor); - } - _window.off('resize' + EVENT_NS); - }); - - _mfpOn('Resize'+ns, mfp.resizeImage); - if(mfp.isLowIE) { - _mfpOn('AfterChange', mfp.resizeImage); - } - }, - resizeImage: function() { - var item = mfp.currItem; - if(!item || !item.img) return; - - if(mfp.st.image.verticalFit) { - var decr = 0; - // fix box-sizing in ie7/8 - if(mfp.isLowIE) { - decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10); - } - item.img.css('max-height', mfp.wH-decr); - } - }, - _onImageHasSize: function(item) { - if(item.img) { - - item.hasSize = true; - - if(_imgInterval) { - clearInterval(_imgInterval); - } - - item.isCheckingImgSize = false; - - _mfpTrigger('ImageHasSize', item); - - if(item.imgHidden) { - if(mfp.content) - mfp.content.removeClass('mfp-loading'); - - item.imgHidden = false; - } - - } - }, - - /** - * Function that loops until the image has size to display elements that rely on it asap - */ - findImageSize: function(item) { - - var counter = 0, - img = item.img[0], - mfpSetInterval = function(delay) { - - if(_imgInterval) { - clearInterval(_imgInterval); - } - // decelerating interval that checks for size of an image - _imgInterval = setInterval(function() { - if(img.naturalWidth > 0) { - mfp._onImageHasSize(item); - return; - } - - if(counter > 200) { - clearInterval(_imgInterval); - } - - counter++; - if(counter === 3) { - mfpSetInterval(10); - } else if(counter === 40) { - mfpSetInterval(50); - } else if(counter === 100) { - mfpSetInterval(500); - } - }, delay); - }; - - mfpSetInterval(1); - }, - - getImage: function(item, template) { - - var guard = 0, - - // image load complete handler - onLoadComplete = function() { - if(item) { - if (item.img[0].complete) { - item.img.off('.mfploader'); - - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - - mfp.updateStatus('ready'); - } - - item.hasSize = true; - item.loaded = true; - - _mfpTrigger('ImageLoadComplete'); - - } - else { - // if image complete check fails 200 times (20 sec), we assume that there was an error. - guard++; - if(guard < 200) { - setTimeout(onLoadComplete,100); - } else { - onLoadError(); - } - } - } - }, - - // image error handler - onLoadError = function() { - if(item) { - item.img.off('.mfploader'); - if(item === mfp.currItem){ - mfp._onImageHasSize(item); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } - - item.hasSize = true; - item.loaded = true; - item.loadError = true; - } - }, - imgSt = mfp.st.image; - - - var el = template.find('.mfp-img'); - if(el.length) { - var img = document.createElement('img'); - img.className = 'mfp-img'; - if(item.el && item.el.find('img').length) { - img.alt = item.el.find('img').attr('alt'); - } - item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError); - img.src = item.src; - - // without clone() "error" event is not firing when IMG is replaced by new IMG - // TODO: find a way to avoid such cloning - if(el.is('img')) { - item.img = item.img.clone(); - } - - img = item.img[0]; - if(img.naturalWidth > 0) { - item.hasSize = true; - } else if(!img.width) { - item.hasSize = false; - } - } - - mfp._parseMarkup(template, { - title: _getTitle(item), - img_replaceWith: item.img - }, item); - - mfp.resizeImage(); - - if(item.hasSize) { - if(_imgInterval) clearInterval(_imgInterval); - - if(item.loadError) { - template.addClass('mfp-loading'); - mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); - } else { - template.removeClass('mfp-loading'); - mfp.updateStatus('ready'); - } - return template; - } - - mfp.updateStatus('loading'); - item.loading = true; - - if(!item.hasSize) { - item.imgHidden = true; - template.addClass('mfp-loading'); - mfp.findImageSize(item); - } - - return template; - } - } -}); + if (!item.hasSize) { + item.imgHidden = true; + template.addClass("mfp-loading"); + mfp.findImageSize(item); + } -/*>>image*/ + return template; + } + } + }); + + /*>>image*/ + + /*>>zoom*/ + var hasMozTransform, + getHasMozTransform = function() { + if (hasMozTransform === undefined) { + hasMozTransform = + document.createElement("p").style.MozTransform !== undefined; + } + return hasMozTransform; + }; + + $.magnificPopup.registerModule("zoom", { + options: { + enabled: false, + easing: "ease-in-out", + duration: 300, + opener: function(element) { + return element.is("img") ? element : element.find("img"); + } + }, + + proto: { + initZoom: function() { + var zoomSt = mfp.st.zoom, + ns = ".zoom", + image; + + if (!zoomSt.enabled || !mfp.supportsTransition) { + return; + } -/*>>zoom*/ -var hasMozTransform, - getHasMozTransform = function() { - if(hasMozTransform === undefined) { - hasMozTransform = document.createElement('p').style.MozTransform !== undefined; - } - return hasMozTransform; - }; + var duration = zoomSt.duration, + getElToAnimate = function(image) { + var newImg = image + .clone() + .removeAttr("style") + .removeAttr("class") + .addClass("mfp-animated-image"), + transition = + "all " + zoomSt.duration / 1000 + "s " + zoomSt.easing, + cssObj = { + position: "fixed", + zIndex: 9999, + left: 0, + top: 0, + "-webkit-backface-visibility": "hidden" + }, + t = "transition"; + + cssObj["-webkit-" + t] = cssObj["-moz-" + t] = cssObj[ + "-o-" + t + ] = cssObj[t] = transition; + + newImg.css(cssObj); + return newImg; + }, + showMainContent = function() { + mfp.content.css("visibility", "visible"); + }, + openTimeout, + animatedImg; + + _mfpOn("BuildControls" + ns, function() { + if (mfp._allowZoom()) { + clearTimeout(openTimeout); + mfp.content.css("visibility", "hidden"); + + // Basically, all code below does is clones existing image, puts in on top of the current one and animated it + + image = mfp._getItemToZoom(); + + if (!image) { + showMainContent(); + return; + } -$.magnificPopup.registerModule('zoom', { + animatedImg = getElToAnimate(image); - options: { - enabled: false, - easing: 'ease-in-out', - duration: 300, - opener: function(element) { - return element.is('img') ? element : element.find('img'); - } - }, + animatedImg.css(mfp._getOffset()); - proto: { + mfp.wrap.append(animatedImg); - initZoom: function() { - var zoomSt = mfp.st.zoom, - ns = '.zoom', - image; + openTimeout = setTimeout(function() { + animatedImg.css(mfp._getOffset(true)); + openTimeout = setTimeout(function() { + showMainContent(); - if(!zoomSt.enabled || !mfp.supportsTransition) { - return; - } - - var duration = zoomSt.duration, - getElToAnimate = function(image) { - var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'), - transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing, - cssObj = { - position: 'fixed', - zIndex: 9999, - left: 0, - top: 0, - '-webkit-backface-visibility': 'hidden' - }, - t = 'transition'; - - cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition; - - newImg.css(cssObj); - return newImg; - }, - showMainContent = function() { - mfp.content.css('visibility', 'visible'); - }, - openTimeout, - animatedImg; - - _mfpOn('BuildControls'+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - mfp.content.css('visibility', 'hidden'); - - // Basically, all code below does is clones existing image, puts in on top of the current one and animated it - - image = mfp._getItemToZoom(); - - if(!image) { - showMainContent(); - return; - } - - animatedImg = getElToAnimate(image); - - animatedImg.css( mfp._getOffset() ); - - mfp.wrap.append(animatedImg); - - openTimeout = setTimeout(function() { - animatedImg.css( mfp._getOffset( true ) ); - openTimeout = setTimeout(function() { - - showMainContent(); - - setTimeout(function() { - animatedImg.remove(); - image = animatedImg = null; - _mfpTrigger('ZoomAnimationEnded'); - }, 16); // avoid blink when switching images - - }, duration); // this timeout equals animation duration - - }, 16); // by adding this timeout we avoid short glitch at the beginning of animation - - - // Lots of timeouts... - } - }); - _mfpOn(BEFORE_CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - - clearTimeout(openTimeout); - - mfp.st.removalDelay = duration; - - if(!image) { - image = mfp._getItemToZoom(); - if(!image) { - return; - } - animatedImg = getElToAnimate(image); - } - - animatedImg.css( mfp._getOffset(true) ); - mfp.wrap.append(animatedImg); - mfp.content.css('visibility', 'hidden'); - - setTimeout(function() { - animatedImg.css( mfp._getOffset() ); - }, 16); - } + setTimeout(function() { + animatedImg.remove(); + image = animatedImg = null; + _mfpTrigger("ZoomAnimationEnded"); + }, 16); // avoid blink when switching images + }, duration); // this timeout equals animation duration + }, 16); // by adding this timeout we avoid short glitch at the beginning of animation - }); - - _mfpOn(CLOSE_EVENT+ns, function() { - if(mfp._allowZoom()) { - showMainContent(); - if(animatedImg) { - animatedImg.remove(); - } - image = null; - } - }); - }, - - _allowZoom: function() { - return mfp.currItem.type === 'image'; - }, + // Lots of timeouts... + } + }); + _mfpOn(BEFORE_CLOSE_EVENT + ns, function() { + if (mfp._allowZoom()) { + clearTimeout(openTimeout); - _getItemToZoom: function() { - if(mfp.currItem.hasSize) { - return mfp.currItem.img; - } else { - return false; - } - }, + mfp.st.removalDelay = duration; - // Get element postion relative to viewport - _getOffset: function(isLarge) { - var el; - if(isLarge) { - el = mfp.currItem.img; - } else { - el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); - } + if (!image) { + image = mfp._getItemToZoom(); + if (!image) { + return; + } + animatedImg = getElToAnimate(image); + } - var offset = el.offset(); - var paddingTop = parseInt(el.css('padding-top'),10); - var paddingBottom = parseInt(el.css('padding-bottom'),10); - offset.top -= ( $(window).scrollTop() - paddingTop ); + animatedImg.css(mfp._getOffset(true)); + mfp.wrap.append(animatedImg); + mfp.content.css("visibility", "hidden"); + + setTimeout(function() { + animatedImg.css(mfp._getOffset()); + }, 16); + } + }); + + _mfpOn(CLOSE_EVENT + ns, function() { + if (mfp._allowZoom()) { + showMainContent(); + if (animatedImg) { + animatedImg.remove(); + } + image = null; + } + }); + }, + + _allowZoom: function() { + return mfp.currItem.type === "image"; + }, + + _getItemToZoom: function() { + if (mfp.currItem.hasSize) { + return mfp.currItem.img; + } else { + return false; + } + }, + + // Get element postion relative to viewport + _getOffset: function(isLarge) { + var el; + if (isLarge) { + el = mfp.currItem.img; + } else { + el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); + } + var offset = el.offset(); + var paddingTop = parseInt(el.css("padding-top"), 10); + var paddingBottom = parseInt(el.css("padding-bottom"), 10); + offset.top -= $(window).scrollTop() - paddingTop; - /* + /* Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. */ - var obj = { - width: el.width(), - // fix Zepto height+padding issue - height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop - }; - - // I hate to do this, but there is no another option - if( getHasMozTransform() ) { - obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)'; - } else { - obj.left = offset.left; - obj.top = offset.top; - } - return obj; - } - - } -}); - - + var obj = { + width: el.width(), + // fix Zepto height+padding issue + height: + (_isJQ ? el.innerHeight() : el[0].offsetHeight) - + paddingBottom - + paddingTop + }; + + // I hate to do this, but there is no another option + if (getHasMozTransform()) { + obj["-moz-transform"] = obj["transform"] = + "translate(" + offset.left + "px," + offset.top + "px)"; + } else { + obj.left = offset.left; + obj.top = offset.top; + } + return obj; + } + } + }); + + /*>>zoom*/ + + /*>>iframe*/ + + var IFRAME_NS = "iframe", + _emptyPage = "//about:blank", + _fixIframeBugs = function(isShowing) { + if (mfp.currTemplate[IFRAME_NS]) { + var el = mfp.currTemplate[IFRAME_NS].find("iframe"); + if (el.length) { + // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug + if (!isShowing) { + el[0].src = _emptyPage; + } + + // IE8 black screen bug fix + if (mfp.isIE8) { + el.css("display", isShowing ? "block" : "none"); + } + } + } + }; + + $.magnificPopup.registerModule(IFRAME_NS, { + options: { + markup: + '<div class="mfp-iframe-scaler">' + + '<div class="mfp-close"></div>' + + '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>' + + "</div>", + + srcAction: "iframe_src", + + // we don't care and support only one default type of URL by default + patterns: { + youtube: { + index: "youtube.com", + id: "v=", + src: "//www.youtube.com/embed/%id%?autoplay=1" + }, + vimeo: { + index: "vimeo.com/", + id: "/", + src: "//player.vimeo.com/video/%id%?autoplay=1" + }, + gmaps: { + index: "//maps.google.", + src: "%id%&output=embed" + } + } + }, + + proto: { + initIframe: function() { + mfp.types.push(IFRAME_NS); + + _mfpOn("BeforeChange", function(e, prevType, newType) { + if (prevType !== newType) { + if (prevType === IFRAME_NS) { + _fixIframeBugs(); // iframe if removed + } else if (newType === IFRAME_NS) { + _fixIframeBugs(true); // iframe is showing + } + } // else { + // iframe source is switched, don't do anything + //} + }); + + _mfpOn(CLOSE_EVENT + "." + IFRAME_NS, function() { + _fixIframeBugs(); + }); + }, + + getIframe: function(item, template) { + var embedSrc = item.src; + var iframeSt = mfp.st.iframe; + + $.each(iframeSt.patterns, function() { + if (embedSrc.indexOf(this.index) > -1) { + if (this.id) { + if (typeof this.id === "string") { + embedSrc = embedSrc.substr( + embedSrc.lastIndexOf(this.id) + this.id.length, + embedSrc.length + ); + } else { + embedSrc = this.id.call(this, embedSrc); + } + } + embedSrc = this.src.replace("%id%", embedSrc); + return false; // break; + } + }); + + var dataObj = {}; + if (iframeSt.srcAction) { + dataObj[iframeSt.srcAction] = embedSrc; + } + mfp._parseMarkup(template, dataObj, item); + + mfp.updateStatus("ready"); + + return template; + } + } + }); + + /*>>iframe*/ + + /*>>gallery*/ + /** + * Get looped index depending on number of slides + */ + var _getLoopedId = function(index) { + var numSlides = mfp.items.length; + if (index > numSlides - 1) { + return index - numSlides; + } else if (index < 0) { + return numSlides + index; + } + return index; + }, + _replaceCurrTotal = function(text, curr, total) { + return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); + }; + + $.magnificPopup.registerModule("gallery", { + options: { + enabled: false, + arrowMarkup: + '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', + preload: [0, 2], + navigateByImgClick: true, + arrows: true, + + tPrev: "Previous (Left arrow key)", + tNext: "Next (Right arrow key)", + tCounter: "%curr% of %total%" + }, + + proto: { + initGallery: function() { + var gSt = mfp.st.gallery, + ns = ".mfp-gallery"; + + mfp.direction = true; // true - next, false - prev + + if (!gSt || !gSt.enabled) return false; + + _wrapClasses += " mfp-gallery"; + + _mfpOn(OPEN_EVENT + ns, function() { + if (gSt.navigateByImgClick) { + mfp.wrap.on("click" + ns, ".mfp-img", function() { + if (mfp.items.length > 1) { + mfp.next(); + return false; + } + }); + } + + _document.on("keydown" + ns, function(e) { + if (e.keyCode === 37) { + mfp.prev(); + } else if (e.keyCode === 39) { + mfp.next(); + } + }); + }); + + _mfpOn("UpdateStatus" + ns, function(e, data) { + if (data.text) { + data.text = _replaceCurrTotal( + data.text, + mfp.currItem.index, + mfp.items.length + ); + } + }); + + _mfpOn(MARKUP_PARSE_EVENT + ns, function(e, element, values, item) { + var l = mfp.items.length; + values.counter = + l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ""; + }); + + _mfpOn("BuildControls" + ns, function() { + if (mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { + var markup = gSt.arrowMarkup, + arrowLeft = (mfp.arrowLeft = $( + markup + .replace(/%title%/gi, gSt.tPrev) + .replace(/%dir%/gi, "left") + ).addClass(PREVENT_CLOSE_CLASS)), + arrowRight = (mfp.arrowRight = $( + markup + .replace(/%title%/gi, gSt.tNext) + .replace(/%dir%/gi, "right") + ).addClass(PREVENT_CLOSE_CLASS)); + + arrowLeft.click(function() { + mfp.prev(); + }); + arrowRight.click(function() { + mfp.next(); + }); + + mfp.container.append(arrowLeft.add(arrowRight)); + } + }); + + _mfpOn(CHANGE_EVENT + ns, function() { + if (mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); + + mfp._preloadTimeout = setTimeout(function() { + mfp.preloadNearbyImages(); + mfp._preloadTimeout = null; + }, 16); + }); + + _mfpOn(CLOSE_EVENT + ns, function() { + _document.off(ns); + mfp.wrap.off("click" + ns); + mfp.arrowRight = mfp.arrowLeft = null; + }); + }, + next: function() { + mfp.direction = true; + mfp.index = _getLoopedId(mfp.index + 1); + mfp.updateItemHTML(); + }, + prev: function() { + mfp.direction = false; + mfp.index = _getLoopedId(mfp.index - 1); + mfp.updateItemHTML(); + }, + goTo: function(newIndex) { + mfp.direction = newIndex >= mfp.index; + mfp.index = newIndex; + mfp.updateItemHTML(); + }, + preloadNearbyImages: function() { + var p = mfp.st.gallery.preload, + preloadBefore = Math.min(p[0], mfp.items.length), + preloadAfter = Math.min(p[1], mfp.items.length), + i; + + for (i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { + mfp._preloadItem(mfp.index + i); + } + for (i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { + mfp._preloadItem(mfp.index - i); + } + }, + _preloadItem: function(index) { + index = _getLoopedId(index); -/*>>zoom*/ - -/*>>iframe*/ - -var IFRAME_NS = 'iframe', - _emptyPage = '//about:blank', - - _fixIframeBugs = function(isShowing) { - if(mfp.currTemplate[IFRAME_NS]) { - var el = mfp.currTemplate[IFRAME_NS].find('iframe'); - if(el.length) { - // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug - if(!isShowing) { - el[0].src = _emptyPage; - } - - // IE8 black screen bug fix - if(mfp.isIE8) { - el.css('display', isShowing ? 'block' : 'none'); - } - } - } - }; - -$.magnificPopup.registerModule(IFRAME_NS, { - - options: { - markup: '<div class="mfp-iframe-scaler">'+ - '<div class="mfp-close"></div>'+ - '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+ - '</div>', - - srcAction: 'iframe_src', - - // we don't care and support only one default type of URL by default - patterns: { - youtube: { - index: 'youtube.com', - id: 'v=', - src: '//www.youtube.com/embed/%id%?autoplay=1' - }, - vimeo: { - index: 'vimeo.com/', - id: '/', - src: '//player.vimeo.com/video/%id%?autoplay=1' - }, - gmaps: { - index: '//maps.google.', - src: '%id%&output=embed' - } - } - }, - - proto: { - initIframe: function() { - mfp.types.push(IFRAME_NS); - - _mfpOn('BeforeChange', function(e, prevType, newType) { - if(prevType !== newType) { - if(prevType === IFRAME_NS) { - _fixIframeBugs(); // iframe if removed - } else if(newType === IFRAME_NS) { - _fixIframeBugs(true); // iframe is showing - } - }// else { - // iframe source is switched, don't do anything - //} - }); - - _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() { - _fixIframeBugs(); - }); - }, - - getIframe: function(item, template) { - var embedSrc = item.src; - var iframeSt = mfp.st.iframe; - - $.each(iframeSt.patterns, function() { - if(embedSrc.indexOf( this.index ) > -1) { - if(this.id) { - if(typeof this.id === 'string') { - embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length); - } else { - embedSrc = this.id.call( this, embedSrc ); - } - } - embedSrc = this.src.replace('%id%', embedSrc ); - return false; // break; - } - }); - - var dataObj = {}; - if(iframeSt.srcAction) { - dataObj[iframeSt.srcAction] = embedSrc; - } - mfp._parseMarkup(template, dataObj, item); - - mfp.updateStatus('ready'); - - return template; - } - } -}); + if (mfp.items[index].preloaded) { + return; + } + var item = mfp.items[index]; + if (!item.parsed) { + item = mfp.parseEl(index); + } + _mfpTrigger("LazyLoad", item); + + if (item.type === "image") { + item.img = $('<img class="mfp-img" />') + .on("load.mfploader", function() { + item.hasSize = true; + }) + .on("error.mfploader", function() { + item.hasSize = true; + item.loadError = true; + _mfpTrigger("LazyLoadError", item); + }) + .attr("src", item.src); + } -/*>>iframe*/ - -/*>>gallery*/ -/** - * Get looped index depending on number of slides - */ -var _getLoopedId = function(index) { - var numSlides = mfp.items.length; - if(index > numSlides - 1) { - return index - numSlides; - } else if(index < 0) { - return numSlides + index; - } - return index; - }, - _replaceCurrTotal = function(text, curr, total) { - return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); - }; - -$.magnificPopup.registerModule('gallery', { - - options: { - enabled: false, - arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', - preload: [0,2], - navigateByImgClick: true, - arrows: true, - - tPrev: 'Previous (Left arrow key)', - tNext: 'Next (Right arrow key)', - tCounter: '%curr% of %total%' - }, - - proto: { - initGallery: function() { - - var gSt = mfp.st.gallery, - ns = '.mfp-gallery'; - - mfp.direction = true; // true - next, false - prev - - if(!gSt || !gSt.enabled ) return false; - - _wrapClasses += ' mfp-gallery'; - - _mfpOn(OPEN_EVENT+ns, function() { - - if(gSt.navigateByImgClick) { - mfp.wrap.on('click'+ns, '.mfp-img', function() { - if(mfp.items.length > 1) { - mfp.next(); - return false; - } - }); - } - - _document.on('keydown'+ns, function(e) { - if (e.keyCode === 37) { - mfp.prev(); - } else if (e.keyCode === 39) { - mfp.next(); - } - }); - }); - - _mfpOn('UpdateStatus'+ns, function(e, data) { - if(data.text) { - data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); - } - }); - - _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) { - var l = mfp.items.length; - values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ''; - }); - - _mfpOn('BuildControls' + ns, function() { - if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { - var markup = gSt.arrowMarkup, - arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), - arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS); - - arrowLeft.click(function() { - mfp.prev(); - }); - arrowRight.click(function() { - mfp.next(); - }); - - mfp.container.append(arrowLeft.add(arrowRight)); - } - }); - - _mfpOn(CHANGE_EVENT+ns, function() { - if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); - - mfp._preloadTimeout = setTimeout(function() { - mfp.preloadNearbyImages(); - mfp._preloadTimeout = null; - }, 16); - }); - - - _mfpOn(CLOSE_EVENT+ns, function() { - _document.off(ns); - mfp.wrap.off('click'+ns); - mfp.arrowRight = mfp.arrowLeft = null; - }); - - }, - next: function() { - mfp.direction = true; - mfp.index = _getLoopedId(mfp.index + 1); - mfp.updateItemHTML(); - }, - prev: function() { - mfp.direction = false; - mfp.index = _getLoopedId(mfp.index - 1); - mfp.updateItemHTML(); - }, - goTo: function(newIndex) { - mfp.direction = (newIndex >= mfp.index); - mfp.index = newIndex; - mfp.updateItemHTML(); - }, - preloadNearbyImages: function() { - var p = mfp.st.gallery.preload, - preloadBefore = Math.min(p[0], mfp.items.length), - preloadAfter = Math.min(p[1], mfp.items.length), - i; - - for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { - mfp._preloadItem(mfp.index+i); - } - for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { - mfp._preloadItem(mfp.index-i); - } - }, - _preloadItem: function(index) { - index = _getLoopedId(index); - - if(mfp.items[index].preloaded) { - return; - } - - var item = mfp.items[index]; - if(!item.parsed) { - item = mfp.parseEl( index ); - } - - _mfpTrigger('LazyLoad', item); - - if(item.type === 'image') { - item.img = $('<img class="mfp-img" />').on('load.mfploader', function() { - item.hasSize = true; - }).on('error.mfploader', function() { - item.hasSize = true; - item.loadError = true; - _mfpTrigger('LazyLoadError', item); - }).attr('src', item.src); - } - - - item.preloaded = true; - } - } -}); + item.preloaded = true; + } + } + }); + + /*>>gallery*/ + + /*>>retina*/ + + var RETINA_NS = "retina"; + + $.magnificPopup.registerModule(RETINA_NS, { + options: { + replaceSrc: function(item) { + return item.src.replace(/\.\w+$/, function(m) { + return "@2x" + m; + }); + }, + ratio: 1 // Function or number. Set to 1 to disable. + }, + proto: { + initRetina: function() { + if (window.devicePixelRatio > 1) { + var st = mfp.st.retina, + ratio = st.ratio; + + ratio = !isNaN(ratio) ? ratio : ratio(); + + if (ratio > 1) { + _mfpOn("ImageHasSize" + "." + RETINA_NS, function(e, item) { + item.img.css({ + "max-width": item.img[0].naturalWidth / ratio, + width: "100%" + }); + }); + _mfpOn("ElementParse" + "." + RETINA_NS, function(e, item) { + item.src = st.replaceSrc(item, ratio); + }); + } + } + } + } + }); -/*>>gallery*/ - -/*>>retina*/ - -var RETINA_NS = 'retina'; - -$.magnificPopup.registerModule(RETINA_NS, { - options: { - replaceSrc: function(item) { - return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; }); - }, - ratio: 1 // Function or number. Set to 1 to disable. - }, - proto: { - initRetina: function() { - if(window.devicePixelRatio > 1) { - - var st = mfp.st.retina, - ratio = st.ratio; - - ratio = !isNaN(ratio) ? ratio : ratio(); - - if(ratio > 1) { - _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) { - item.img.css({ - 'max-width': item.img[0].naturalWidth / ratio, - 'width': '100%' - }); - }); - _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) { - item.src = st.replaceSrc(item, ratio); - }); - } - } - - } - } + /*>>retina*/ + _checkInstance(); }); - -/*>>retina*/ - _checkInstance(); })); diff --git a/static/tipuesearch/tipuesearch.css b/static/tipuesearch/tipuesearch.css index fe7a4aae..67964c6b 100644 --- a/static/tipuesearch/tipuesearch.css +++ b/static/tipuesearch/tipuesearch.css @@ -1,5 +1,4 @@ -@import url('https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro'); - +@import url("https://fonts.googleapis.com/css?family=Merriweather:300,400|Open+Sans|Source+Code+Pro"); /* Tipue Search 7.1 @@ -8,265 +7,234 @@ Tipue Search is released under the MIT License http://www.tipue.com/search */ - /* search box */ - #tipue_search_input:-webkit-autofill, #tipue_search_input:-webkit-autofill:hover, -#tipue_search_input:-webkit-autofill:focus -{ - -webkit-box-shadow: 0 0 0px 1000px #f3f3f3 inset; -} -.tipue_search_button -{ - position: relative; - float: left; - width: 49px; - height: 56px; - margin-left: -3px; - background-color: #f3f3f3; - border: none; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - box-sizing: border-box; - cursor: pointer; - outline: 0; -} -.tipue_search_icon -{ - float: left; - font: 24px/1 'Open Sans', sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #333; - transform: rotate(-45deg); - -moz-appearance: none; - -webkit-appearance: none; - box-sizing: border-box; - box-shadow: none; - outline: 0; - margin: -1px 0 0 16px; -} -.tipue_search_group:after -{ - content: ""; - display: table; - clear: both; +#tipue_search_input:-webkit-autofill:focus { + -webkit-box-shadow: 0 0 0px 1000px #f3f3f3 inset; +} +.tipue_search_button { + position: relative; + float: left; + width: 49px; + height: 56px; + margin-left: -3px; + background-color: #f3f3f3; + border: none; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + box-sizing: border-box; + cursor: pointer; + outline: 0; +} +.tipue_search_icon { + float: left; + font: 24px/1 "Open Sans", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #333; + transform: rotate(-45deg); + -moz-appearance: none; + -webkit-appearance: none; + box-sizing: border-box; + box-shadow: none; + outline: 0; + margin: -1px 0 0 16px; +} +.tipue_search_group:after { + content: ""; + display: table; + clear: both; } - /* search results */ - -#tipue_search_content -{ - max-width: 100%; - margin: 0; -} -.tipue_search_content_title -{ - font: 300 31.5px/40px Baskerville,Garamond,Georgia,'DejaVu Serif','Times New Roman',Times,Serif; - color: #111; -} -.tipue_search_content_title a -{ - color: #111; - text-decoration: none; -} -.tipue_search_content_title a:hover -{ - border-bottom: 1px solid #333; -} -.tipue_search_result -{ - padding-top: 27px; -} -#tipue_search_results_count, .tipue_search_content_debug -{ - font: 13px/1.5 'Source Code Pro', monospace; - text-transform: uppercase; - color: #999; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -#tipue_search_results_count -{ - padding-top: 9px; -} -.tipue_search_content_url, .tipue_search_note, .tipue_search_related, #tipue_search_error, #tipue_search_replace -{ - font: 300 16px/1.4 Merriweather, serif; - color: #666; - padding-top: 7px; - word-wrap: break-word; - hyphens: auto; -} -.tipue_search_content_url a, .tipue_search_note a, .tipue_search_related a, #tipue_search_replace a, #tipue_search_replace a:hover -{ - text-decoration: none; -} -.tipue_search_content_url a:hover, .tipue_search_note a:hover, .tipue_search_related a:hover -{ - color: #666; -} -#tipue_search_replace, .tipue_search_related -{ - margin-top: 7px; -} -#tipue_search_error -{ - color: #333; - margin-top: 17px; -} -.tipue_search_content_text -{ - font: 1.2em/1.6em 'PT Serif',Georgia,'Times New Roman',Times,Serif; - color: #333; - word-wrap: break-word; - hyphens: auto; - margin-top: 9px; -} -.tipue_search_content_bold -{ - font-weight: 400; - font-family: 'Open Sans', sans-serif; - color: #333; -} -.tipue_search_content_debug -{ - margin: 7px 0 2px 0; +#tipue_search_content { + max-width: 100%; + margin: 0; +} +.tipue_search_content_title { + font: 300 31.5px/40px Baskerville, Garamond, Georgia, "DejaVu Serif", + "Times New Roman", Times, Serif; + color: #111; +} +.tipue_search_content_title a { + color: #111; + text-decoration: none; +} +.tipue_search_content_title a:hover { + border-bottom: 1px solid #333; +} +.tipue_search_result { + padding-top: 27px; +} +#tipue_search_results_count, +.tipue_search_content_debug { + font: 13px/1.5 "Source Code Pro", monospace; + text-transform: uppercase; + color: #999; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +#tipue_search_results_count { + padding-top: 9px; +} +.tipue_search_content_url, +.tipue_search_note, +.tipue_search_related, +#tipue_search_error, +#tipue_search_replace { + font: 300 16px/1.4 Merriweather, serif; + color: #666; + padding-top: 7px; + word-wrap: break-word; + hyphens: auto; +} +.tipue_search_content_url a, +.tipue_search_note a, +.tipue_search_related a, +#tipue_search_replace a, +#tipue_search_replace a:hover { + text-decoration: none; +} +.tipue_search_content_url a:hover, +.tipue_search_note a:hover, +.tipue_search_related a:hover { + color: #666; +} +#tipue_search_replace, +.tipue_search_related { + margin-top: 7px; +} +#tipue_search_error { + color: #333; + margin-top: 17px; +} +.tipue_search_content_text { + font: 1.2em/1.6em "PT Serif", Georgia, "Times New Roman", Times, Serif; + color: #333; + word-wrap: break-word; + hyphens: auto; + margin-top: 9px; +} +.tipue_search_content_bold { + font-weight: 400; + font-family: "Open Sans", sans-serif; + color: #333; +} +.tipue_search_content_debug { + margin: 7px 0 2px 0; } - /* images */ - -.tipue_search_image -{ - padding: 17px 0 6px 0; -} -.tipue_search_img -{ - width: 100%; - max-width: 330px; - height: auto; - transition: 0.5s; - border-radius: 2px; -} -.tipue_search_img:hover -{ - opacity: 0.9; -} -#tipue_search_zoom_text -{ - font: 12px/1.7 'Source Code Pro', monospace; - color: #ccc; - text-transform: uppercase; - letter-spacing: 1px; - padding-top: 9px; -} -#tipue_search_zoom_text a -{ - color: #ccc; - text-decoration: none; - border-bottom: 2px solid #f7f7f7; -} -#tipue_search_zoom_text a:hover -{ - border: 0; -} -.tipue_search_image_zoom -{ - cursor: pointer; -} -#tipue_search_image_modal -{ - display: none; - position: fixed; - z-index: 1000; - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - background-color: rgba(0, 0, 0, 0.9); -} -.tipue_search_image_close -{ - position: absolute; - top: 0; - right: 0; - font: 22px/1 'Source Code Pro', monospace; - color: #ccc; - padding: 25px 30px; - cursor: pointer; -} -.tipue_search_image_block -{ - margin: 0 auto; - max-width: 900px; - padding: 73px 30px 30px 30px; - box-sizing: border-box; - color: #fff; -} -#tipue_search_zoom_img -{ - max-width: 100%; - height: auto; -} - -#tipue_search_zoom_text, .tipue_search_zoom_options -{ - padding-top: 9px; +.tipue_search_image { + padding: 17px 0 6px 0; +} +.tipue_search_img { + width: 100%; + max-width: 330px; + height: auto; + transition: 0.5s; + border-radius: 2px; +} +.tipue_search_img:hover { + opacity: 0.9; +} +#tipue_search_zoom_text { + font: 12px/1.7 "Source Code Pro", monospace; + color: #ccc; + text-transform: uppercase; + letter-spacing: 1px; + padding-top: 9px; +} +#tipue_search_zoom_text a { + color: #ccc; + text-decoration: none; + border-bottom: 2px solid #f7f7f7; +} +#tipue_search_zoom_text a:hover { + border: 0; +} +.tipue_search_image_zoom { + cursor: pointer; +} +#tipue_search_image_modal { + display: none; + position: fixed; + z-index: 1000; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgba(0, 0, 0, 0.9); +} +.tipue_search_image_close { + position: absolute; + top: 0; + right: 0; + font: 22px/1 "Source Code Pro", monospace; + color: #ccc; + padding: 25px 30px; + cursor: pointer; +} +.tipue_search_image_block { + margin: 0 auto; + max-width: 900px; + padding: 73px 30px 30px 30px; + box-sizing: border-box; + color: #fff; +} +#tipue_search_zoom_img { + max-width: 100%; + height: auto; +} + +#tipue_search_zoom_text, +.tipue_search_zoom_options { + padding-top: 9px; } - /* footer */ - -#tipue_search_foot -{ - margin: 51px 0 21px 0; -} -#tipue_search_foot_boxes -{ - font: 14px 'Source Code Pro', sans-serif; - text-transform: uppercase; - color: #333; - padding: 0; - margin: 0; - cursor: pointer; -} -#tipue_search_foot_boxes li -{ - display: inline; - list-style: none; - margin: 0; - padding: 0; -} -#tipue_search_foot_boxes li a -{ - background-color: #f7f7f7; - color: #666; - padding: 10px 17px 11px 17px; - border-radius: 3px; - margin-right: 7px; - text-decoration: none; - text-align: center; - transition: 0.3s; -} -#tipue_search_foot_boxes li.current -{ - background: #252525; - color: #ccc; - padding: 10px 17px 11px 17px; - border-radius: 3px; - margin-right: 7px; - text-align: center; -} -#tipue_search_foot_boxes li a:hover -{ - background: #252525; - color: #ccc; +#tipue_search_foot { + margin: 51px 0 21px 0; +} +#tipue_search_foot_boxes { + font: 14px "Source Code Pro", sans-serif; + text-transform: uppercase; + color: #333; + padding: 0; + margin: 0; + cursor: pointer; +} +#tipue_search_foot_boxes li { + display: inline; + list-style: none; + margin: 0; + padding: 0; +} +#tipue_search_foot_boxes li a { + background-color: #f7f7f7; + color: #666; + padding: 10px 17px 11px 17px; + border-radius: 3px; + margin-right: 7px; + text-decoration: none; + text-align: center; + transition: 0.3s; +} +#tipue_search_foot_boxes li.current { + background: #252525; + color: #ccc; + padding: 10px 17px 11px 17px; + border-radius: 3px; + margin-right: 7px; + text-align: center; +} +#tipue_search_foot_boxes li a:hover { + background: #252525; + color: #ccc; } diff --git a/static/tipuesearch/tipuesearch.js b/static/tipuesearch/tipuesearch.js index 156e51a8..953b1c16 100644 --- a/static/tipuesearch/tipuesearch.js +++ b/static/tipuesearch/tipuesearch.js @@ -1,4 +1,3 @@ - /* Tipue Search 7.1 Copyright (c) 2019 Tipue @@ -6,606 +5,621 @@ Tipue Search is released under the MIT License http://www.tipue.com/search */ - (function($) { - - $.fn.tipuesearch = function(options) { - - var set = $.extend( { - - 'contextBuffer' : 60, - 'contextLength' : 60, - 'contextStart' : 90, - 'debug' : false, - 'descriptiveWords' : 25, - 'footerPages' : 3, - 'highlightTerms' : true, - 'imageZoom' : true, - 'minimumLength' : 3, - 'newWindow' : false, - 'show' : 10, - 'showContext' : true, - 'showRelated' : true, - 'showTime' : true, - 'showTitleCount' : true, - 'showURL' : true, - 'wholeWords' : true - }, options); - - return this.each(function() { - - var tipuesearch_t_c = 0; - - var tipue_search_w = ''; - if (set.newWindow) - { - tipue_search_w = ' target="_blank"'; - } - - function getURLP(name) - { - var locSearch = location.search; - var splitted = (new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(locSearch)||[,""]); - var searchString = splitted[1].replace(/\+/g, '%20'); - try - { - searchString = decodeURIComponent(searchString); - } - catch(e) - { - searchString = unescape(searchString); - } - return searchString || null; - } - - if (getURLP('q')) - { - $('#tipue_search_input').val(getURLP('q')); - getTipueSearch(0, true); - } - - $(this).keyup(function(event) - { - if(event.keyCode == '13') - { - getTipueSearch(0, true); - } - }); - - - function getTipueSearch(start, replace) - { - window.scrollTo(0, 0); - - var out = ''; - var show_replace = false; - var show_stop = false; - var standard = true; - var c = 0; - var found = []; - - var d_o = $('#tipue_search_input').val(); - d_o = d_o.replace(/\+/g, ' ').replace(/\s\s+/g, ' '); - - d_o = $.trim(d_o); - var d = d_o.toLowerCase(); - - if ((d.match("^\"") && d.match("\"$")) || (d.match("^'") && d.match("'$"))) - { - standard = false; + $.fn.tipuesearch = function(options) { + var set = $.extend( + { + contextBuffer: 60, + contextLength: 60, + contextStart: 90, + debug: false, + descriptiveWords: 25, + footerPages: 3, + highlightTerms: true, + imageZoom: true, + minimumLength: 3, + newWindow: false, + show: 10, + showContext: true, + showRelated: true, + showTime: true, + showTitleCount: true, + showURL: true, + wholeWords: true + }, + options + ); + + return this.each(function() { + var tipuesearch_t_c = 0; + + var tipue_search_w = ""; + if (set.newWindow) { + tipue_search_w = ' target="_blank"'; + } + + function getURLP(name) { + var locSearch = location.search; + var splitted = new RegExp( + "[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)" + ).exec(locSearch) || [, ""]; + var searchString = splitted[1].replace(/\+/g, "%20"); + try { + searchString = decodeURIComponent(searchString); + } catch (e) { + searchString = unescape(searchString); + } + return searchString || null; + } + + if (getURLP("q")) { + $("#tipue_search_input").val(getURLP("q")); + getTipueSearch(0, true); + } + + $(this).keyup(function(event) { + if (event.keyCode == "13") { + getTipueSearch(0, true); + } + }); + + function getTipueSearch(start, replace) { + window.scrollTo(0, 0); + + var out = ""; + var show_replace = false; + var show_stop = false; + var standard = true; + var c = 0; + var found = []; + + var d_o = $("#tipue_search_input").val(); + d_o = d_o.replace(/\+/g, " ").replace(/\s\s+/g, " "); + + d_o = $.trim(d_o); + var d = d_o.toLowerCase(); + + if ( + (d.match('^"') && d.match('"$')) || + (d.match("^'") && d.match("'$")) + ) { + standard = false; + } + + var d_w = d.split(" "); + + if (standard) { + d = ""; + for (var i = 0; i < d_w.length; i++) { + var a_w = true; + for (var f = 0; f < tipuesearch_stop_words.length; f++) { + if (d_w[i] == tipuesearch_stop_words[f]) { + a_w = false; + show_stop = true; + } + } + if (a_w) { + d = d + " " + d_w[i]; + } + } + d = $.trim(d); + d_w = d.split(" "); + } else { + d = d.substring(1, d.length - 1); + } + + if (d.length >= set.minimumLength) { + if (standard) { + if (replace) { + var d_r = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_replace.words.length; f++) { + if (d_w[i] == tipuesearch_replace.words[f].word) { + d = d.replace( + d_w[i], + tipuesearch_replace.words[f].replace_with + ); + show_replace = true; + } + } + } + d_w = d.split(" "); + } + + var d_t = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_stem.words.length; f++) { + if (d_w[i] == tipuesearch_stem.words[f].word) { + d_t = d_t + " " + tipuesearch_stem.words[f].stem; + } + } + } + d_w = d_t.split(" "); + + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + for (var f = 0; f < d_w.length; f++) { + if (set.wholeWords) { + var pat = new RegExp("\\b" + d_w[f] + "\\b", "gi"); + } else { + var pat = new RegExp(d_w[f], "gi"); + } + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == + tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; } - - var d_w = d.split(' '); - - if (standard) - { - d = ''; - for (var i = 0; i < d_w.length; i++) - { - var a_w = true; - for (var f = 0; f < tipuesearch_stop_words.length; f++) - { - if (d_w[i] == tipuesearch_stop_words[f]) - { - a_w = false; - show_stop = true; - } - } - if (a_w) - { - d = d + ' ' + d_w[i]; - } - } - d = $.trim(d); - d_w = d.split(' '); + } + } + + if (d_w[f].match("^-")) { + pat = new RegExp(d_w[f].substring(1), "i"); + if ( + tipuesearch.pages[i].title.search(pat) != -1 || + tipuesearch.pages[i].text.search(pat) != -1 || + tipuesearch.pages[i].tags.search(pat) != -1 + ) { + score = 0; + } + } + } + + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } else { + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + var pat = new RegExp(d, "gi"); + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; + } + } + } + + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } + + if (c != 0) { + if (set.showTitleCount && tipuesearch_t_c == 0) { + var title = document.title; + document.title = "(" + c + ") " + title; + tipuesearch_t_c++; + } + + if (c == 1) { + out += + '<div id="tipue_search_results_count">' + tipuesearch_string_4; + } else { + var c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + out += + '<div id="tipue_search_results_count">' + + c_c + + " " + + tipuesearch_string_5; + } + if (set.showTime) { + var endTimer = new Date().getTime(); + var time = (endTimer - startTimer) / 1000; + out += " (" + time.toFixed(2) + " " + tipuesearch_string_14 + ")"; + set.showTime = false; + } + out += "</div>"; + + if (set.showRelated && standard) { + var ront = ""; + f = 0; + for (var i = 0; i < tipuesearch_related.Related.length; i++) { + if (d == tipuesearch_related.Related[i].search) { + if (!f) { + out += + '<div class="tipue_search_related">' + + tipuesearch_string_10 + + ": "; + } + if (show_replace) { + d_o = d; + } + + if (tipuesearch_related.Related[i].include) { + var r_d = + d_o + " " + tipuesearch_related.Related[i].related; + } else { + var r_d = tipuesearch_related.Related[i].related; + } + + ront += + '<a class="tipue_search_related_btn" id="' + + r_d + + '">' + + tipuesearch_related.Related[i].related + + "</a>, "; + f++; + } + } + if (f) { + ront = ront.slice(0, -2); + ront += ".</div>"; + out += ront; + } + } + + if (show_replace) { + out += + '<div id="tipue_search_replace">' + + tipuesearch_string_2 + + " " + + d + + ". " + + tipuesearch_string_3 + + ' <a id="tipue_search_replaced">' + + d_r + + "</a></div>"; + } + + found.sort(function(a, b) { + return b.score - a.score; + }); + + var l_o = 0; + + if (set.imageZoom) { + out += + '<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>'; + } + + for (var i = 0; i < found.length; i++) { + if (l_o >= start && l_o < set.show + start) { + out += '<div class="tipue_search_result">'; + + out += + '<div class="tipue_search_content_title"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + found[i].title + + "</a></div>"; + + if (set.debug) { + out += + '<div class="tipue_search_content_debug">Score: ' + + found[i].score + + "</div>"; + } + + if (set.showURL) { + var s_u = found[i].url.toLowerCase(); + if (s_u.indexOf("http://") == 0) { + s_u = s_u.slice(7); + } + out += + '<div class="tipue_search_content_url"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + s_u + + "</a></div>"; + } + + if (found[i].img) { + if (set.imageZoom) { + out += + '<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="' + + found[i].img + + '" alt="' + + found[i].title + + '" data-url="' + + found[i].url + + '"></div>'; + } else { + out += + '<div class="tipue_search_image"><a href="' + + found[i].url + + '"' + + tipue_search_w + + '><img class="tipue_search_img" src="' + + found[i].img + + '" alt="' + + found[i].title + + '"></a></div>'; + } + } + + if (found[i].desc) { + var t = found[i].desc; + + if (set.showContext) { + d_w = d.split(" "); + var s_1 = found[i].desc.toLowerCase().indexOf(d_w[0]); + if (s_1 > set.contextStart) { + var t_1 = t.substr(s_1 - set.contextBuffer); + var s_2 = t_1.indexOf(" "); + t_1 = t.substr(s_1 - set.contextBuffer + s_2); + t_1 = $.trim(t_1); + + if (t_1.length > set.contextLength) { + t = "... " + t_1; + } } - else - { - d = d.substring(1, d.length - 1); + } + + if (standard) { + d_w = d.split(" "); + for (var f = 0; f < d_w.length; f++) { + if (set.highlightTerms) { + var patr = new RegExp("(" + d_w[f] + ")", "gi"); + t = t.replace(patr, "<h0011>$1<h0012>"); + } } - - if (d.length >= set.minimumLength) - { - if (standard) - { - if (replace) - { - var d_r = d; - for (var i = 0; i < d_w.length; i++) - { - for (var f = 0; f < tipuesearch_replace.words.length; f++) - { - if (d_w[i] == tipuesearch_replace.words[f].word) - { - d = d.replace(d_w[i], tipuesearch_replace.words[f].replace_with); - show_replace = true; - } - } - } - d_w = d.split(' '); - } - - var d_t = d; - for (var i = 0; i < d_w.length; i++) - { - for (var f = 0; f < tipuesearch_stem.words.length; f++) - { - if (d_w[i] == tipuesearch_stem.words[f].word) - { - d_t = d_t + ' ' + tipuesearch_stem.words[f].stem; - } - } - } - d_w = d_t.split(' '); - - for (var i = 0; i < tipuesearch.pages.length; i++) - { - var score = 0; - var s_t = tipuesearch.pages[i].text; - for (var f = 0; f < d_w.length; f++) - { - if (set.wholeWords) - { - var pat = new RegExp('\\b' + d_w[f] + '\\b', 'gi'); - } - else - { - var pat = new RegExp(d_w[f], 'gi'); - } - if (tipuesearch.pages[i].title.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].title.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].text.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].text.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].tags) - { - if (tipuesearch.pages[i].tags.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].tags.match(pat).length; - score += (10 * m_c); - } - } - if (tipuesearch.pages[i].url.search(pat) != -1) - { - score += 20; - } - - if (score != 0) - { - for (var e = 0; e < tipuesearch_weight.weight.length; e++) - { - if (tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url) - { - score += tipuesearch_weight.weight[e].score; - } - } - } - - if (d_w[f].match('^-')) - { - pat = new RegExp(d_w[f].substring(1), 'i'); - if (tipuesearch.pages[i].title.search(pat) != -1 || tipuesearch.pages[i].text.search(pat) != -1 || tipuesearch.pages[i].tags.search(pat) != -1) - { - score = 0; - } - } - } - - if (score != 0) - { - found.push( - { - "score": score, - "title": tipuesearch.pages[i].title, - "desc": s_t, - "img": tipuesearch.pages[i].img, - "url": tipuesearch.pages[i].url, - "note": tipuesearch.pages[i].note - }); - c++; - } - } - } - else - { - for (var i = 0; i < tipuesearch.pages.length; i++) - { - var score = 0; - var s_t = tipuesearch.pages[i].text; - var pat = new RegExp(d, 'gi'); - if (tipuesearch.pages[i].title.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].title.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].text.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].text.match(pat).length; - score += (20 * m_c); - } - if (tipuesearch.pages[i].tags) - { - if (tipuesearch.pages[i].tags.search(pat) != -1) - { - var m_c = tipuesearch.pages[i].tags.match(pat).length; - score += (10 * m_c); - } - } - if (tipuesearch.pages[i].url.search(pat) != -1) - { - score += 20; - } - - if (score != 0) - { - for (var e = 0; e < tipuesearch_weight.weight.length; e++) - { - if (tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url) - { - score += tipuesearch_weight.weight[e].score; - } - } - } - - if (score != 0) - { - found.push( - { - "score": score, - "title": tipuesearch.pages[i].title, - "desc": s_t, - "img": tipuesearch.pages[i].img, - "url": tipuesearch.pages[i].url, - "note": tipuesearch.pages[i].note - }); - c++; - } - } - } - - if (c != 0) - { - if (set.showTitleCount && tipuesearch_t_c == 0) - { - var title = document.title; - document.title = '(' + c + ') ' + title; - tipuesearch_t_c++; - } - - if (c == 1) - { - out += '<div id="tipue_search_results_count">' + tipuesearch_string_4; - } - else - { - var c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); - out += '<div id="tipue_search_results_count">' + c_c + ' ' + tipuesearch_string_5; - } - if (set.showTime) - { - var endTimer = new Date().getTime(); - var time = (endTimer - startTimer) / 1000; - out += ' (' + time.toFixed(2) + ' ' + tipuesearch_string_14 + ')'; - set.showTime = false; - } - out += '</div>'; - - if (set.showRelated && standard) - { - var ront = ''; - f = 0; - for (var i = 0; i < tipuesearch_related.Related.length; i++) - { - if (d == tipuesearch_related.Related[i].search) - { - if (!f) - { - out += '<div class="tipue_search_related">' + tipuesearch_string_10 + ': '; - } - if (show_replace) - { - d_o = d; - } - - if (tipuesearch_related.Related[i].include) - { - var r_d = d_o + ' ' + tipuesearch_related.Related[i].related; - } - else - { - var r_d = tipuesearch_related.Related[i].related; - } - - ront += '<a class="tipue_search_related_btn" id="' + r_d + '">' + tipuesearch_related.Related[i].related + '</a>, '; - f++; - } - } - if (f) - { - ront = ront.slice(0, -2); - ront += '.</div>'; - out += ront; - } - } - - if (show_replace) - { - out += '<div id="tipue_search_replace">' + tipuesearch_string_2 + ' ' + d + '. ' + tipuesearch_string_3 + ' <a id="tipue_search_replaced">' + d_r + '</a></div>'; - } - - found.sort(function(a, b) { return b.score - a.score } ); - - var l_o = 0; - - if (set.imageZoom) - { - out += '<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>'; - } - - for (var i = 0; i < found.length; i++) - { - if (l_o >= start && l_o < set.show + start) - { - out += '<div class="tipue_search_result">'; - - out += '<div class="tipue_search_content_title"><a href="' + found[i].url + '"' + tipue_search_w + '>' + found[i].title + '</a></div>'; - - if (set.debug) - { - out += '<div class="tipue_search_content_debug">Score: ' + found[i].score + '</div>'; - } - - if (set.showURL) - { - var s_u = found[i].url.toLowerCase(); - if (s_u.indexOf('http://') == 0) - { - s_u = s_u.slice(7); - } - out += '<div class="tipue_search_content_url"><a href="' + found[i].url + '"' + tipue_search_w + '>' + s_u + '</a></div>'; - } - - if (found[i].img) - { - if (set.imageZoom) - { - out += '<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="' + found[i].img + '" alt="' + found[i].title + '" data-url="' + found[i].url + '"></div>'; - } - else - { - out += '<div class="tipue_search_image"><a href="' + found[i].url + '"' + tipue_search_w + '><img class="tipue_search_img" src="' + found[i].img + '" alt="' + found[i].title + '"></a></div>'; - } - } - - if (found[i].desc) - { - var t = found[i].desc; - - if (set.showContext) - { - d_w = d.split(' '); - var s_1 = found[i].desc.toLowerCase().indexOf(d_w[0]); - if (s_1 > set.contextStart) - { - var t_1 = t.substr(s_1 - set.contextBuffer); - var s_2 = t_1.indexOf(' '); - t_1 = t.substr(s_1 - set.contextBuffer + s_2); - t_1 = $.trim(t_1); - - if (t_1.length > set.contextLength) - { - t = '... ' + t_1; - } - } - } - - if (standard) - { - d_w = d.split(' '); - for (var f = 0; f < d_w.length; f++) - { - if (set.highlightTerms) - { - var patr = new RegExp('(' + d_w[f] + ')', 'gi'); - t = t.replace(patr, "<h0011>$1<h0012>"); - } - } - } - else if (set.highlightTerms) - { - var patr = new RegExp('(' + d + ')', 'gi'); - t = t.replace(patr, "<span class=\"tipue_search_content_bold\">$1</span>"); - } - - var t_d = ''; - var t_w = t.split(' '); - if (t_w.length < set.descriptiveWords) - { - t_d = t; - } - else - { - for (var f = 0; f < set.descriptiveWords; f++) - { - t_d += t_w[f] + ' '; - } - } - t_d = $.trim(t_d); - if (t_d.charAt(t_d.length - 1) != '.') - { - t_d += ' ...'; - } - - t_d = t_d.replace(/h0011/g, 'span class=\"tipue_search_content_bold\"'); - t_d = t_d.replace(/h0012/g, '/span'); - - out += '<div class="tipue_search_content_text">' + t_d + '</div>'; - } - - if (found[i].note) - { - out += '<div class="tipue_search_note">' + found[i].note + '</div>'; - } - - out += '</div>'; - } - l_o++; - } - - if (c > set.show) - { - var pages = Math.ceil(c / set.show); - var page = (start / set.show); - if (set.footerPages < 3) - { - set.footerPages = 3; - } - - out += '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; - - if (start > 0) - { - out += '<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="' + (start - set.show) + '_' + replace + '">' + tipuesearch_string_6 + '</a></li>'; - } - - if (page <= 2) - { - var p_b = pages; - if (pages > set.footerPages) - { - p_b = set.footerPages; - } - for (var f = 0; f < p_b; f++) - { - if (f == page) - { - out += '<li class="current" role="navigation">' + (f + 1) + '</li>'; - } - else - { - out += '<li role="navigation"><a class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>'; - } - } - } - else - { - var p_b = page + set.footerPages - 1; - if (p_b > pages) - { - p_b = pages; - } - for (var f = page - 1; f < p_b; f++) - { - if (f == page) - { - out += '<li class="current" role="navigation">' + (f + 1) + '</li>'; - } - else - { - out += '<li role="navigation"><a class="tipue_search_foot_box" id="' + (f * set.show) + '_' + replace + '">' + (f + 1) + '</a></li>'; - } - } - } - - if (page + 1 != pages) - { - out += '<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="' + (start + set.show) + '_' + replace + '">' + tipuesearch_string_7 + '</a></li>'; - } - - out += '</ul></div>'; - } - - } - else - { - out += '<div id="tipue_search_error">' + tipuesearch_string_8 + '</div>'; - } + } else if (set.highlightTerms) { + var patr = new RegExp("(" + d + ")", "gi"); + t = t.replace( + patr, + '<span class="tipue_search_content_bold">$1</span>' + ); + } + + var t_d = ""; + var t_w = t.split(" "); + if (t_w.length < set.descriptiveWords) { + t_d = t; + } else { + for (var f = 0; f < set.descriptiveWords; f++) { + t_d += t_w[f] + " "; } - else - { - if (show_stop) - { - out += '<div id="tipue_search_error">' + tipuesearch_string_8 + ' ' + tipuesearch_string_9 + '</div>'; - } - else - { - if (set.minimumLength == 1) - { - out += '<div id="tipue_search_error">' + tipuesearch_string_11 + '</div>'; - } - else - { - out += '<div id="tipue_search_error">' + tipuesearch_string_12 + ' ' + set.minimumLength + ' ' + tipuesearch_string_13 + '</div>'; - } - } - } - - $('#tipue_search_content').hide().html(out).slideDown(200); - - $('#tipue_search_replaced').click(function() - { - getTipueSearch(0, false); - }); - - $('.tipue_search_related_btn').click(function() - { - $('#tipue_search_input').val($(this).attr('id')); - getTipueSearch(0, true); - }); - - $('.tipue_search_image_zoom').click(function() - { - $('#tipue_search_image_modal').fadeIn(300); - $('#tipue_search_zoom_img').attr('src', this.src); - - var z_u = $(this).attr('data-url'); - $('#tipue_search_zoom_url').attr('href', z_u); - - var z_o = this.alt + '<div class="tipue_search_zoom_options"><a href="' + this.src + '" target="_blank">' + tipuesearch_string_15 + '</a>  <a href="' + z_u + '">' + tipuesearch_string_16 + '</a></div>'; - - $('#tipue_search_zoom_text').html(z_o); - }); - - $('.tipue_search_image_close').click(function() - { - $('#tipue_search_image_modal').fadeOut(300); - }); - - $('.tipue_search_foot_box').click(function() - { - var id_v = $(this).attr('id'); - var id_a = id_v.split('_'); - - getTipueSearch(parseInt(id_a[0]), id_a[1]); - }); - } - - }); - }; - + } + t_d = $.trim(t_d); + if (t_d.charAt(t_d.length - 1) != ".") { + t_d += " ..."; + } + + t_d = t_d.replace( + /h0011/g, + 'span class="tipue_search_content_bold"' + ); + t_d = t_d.replace(/h0012/g, "/span"); + + out += + '<div class="tipue_search_content_text">' + t_d + "</div>"; + } + + if (found[i].note) { + out += + '<div class="tipue_search_note">' + + found[i].note + + "</div>"; + } + + out += "</div>"; + } + l_o++; + } + + if (c > set.show) { + var pages = Math.ceil(c / set.show); + var page = start / set.show; + if (set.footerPages < 3) { + set.footerPages = 3; + } + + out += + '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; + + if (start > 0) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="' + + (start - set.show) + + "_" + + replace + + '">' + + tipuesearch_string_6 + + "</a></li>"; + } + + if (page <= 2) { + var p_b = pages; + if (pages > set.footerPages) { + p_b = set.footerPages; + } + for (var f = 0; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } else { + var p_b = page + set.footerPages - 1; + if (p_b > pages) { + p_b = pages; + } + for (var f = page - 1; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } + + if (page + 1 != pages) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="' + + (start + set.show) + + "_" + + replace + + '">' + + tipuesearch_string_7 + + "</a></li>"; + } + + out += "</ul></div>"; + } + } else { + out += + '<div id="tipue_search_error">' + tipuesearch_string_8 + "</div>"; + } + } else { + if (show_stop) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_8 + + " " + + tipuesearch_string_9 + + "</div>"; + } else { + if (set.minimumLength == 1) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_11 + + "</div>"; + } else { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_12 + + " " + + set.minimumLength + + " " + + tipuesearch_string_13 + + "</div>"; + } + } + } + + $("#tipue_search_content") + .hide() + .html(out) + .slideDown(200); + + $("#tipue_search_replaced").click(function() { + getTipueSearch(0, false); + }); + + $(".tipue_search_related_btn").click(function() { + $("#tipue_search_input").val($(this).attr("id")); + getTipueSearch(0, true); + }); + + $(".tipue_search_image_zoom").click(function() { + $("#tipue_search_image_modal").fadeIn(300); + $("#tipue_search_zoom_img").attr("src", this.src); + + var z_u = $(this).attr("data-url"); + $("#tipue_search_zoom_url").attr("href", z_u); + + var z_o = + this.alt + + '<div class="tipue_search_zoom_options"><a href="' + + this.src + + '" target="_blank">' + + tipuesearch_string_15 + + '</a>  <a href="' + + z_u + + '">' + + tipuesearch_string_16 + + "</a></div>"; + + $("#tipue_search_zoom_text").html(z_o); + }); + + $(".tipue_search_image_close").click(function() { + $("#tipue_search_image_modal").fadeOut(300); + }); + + $(".tipue_search_foot_box").click(function() { + var id_v = $(this).attr("id"); + var id_a = id_v.split("_"); + + getTipueSearch(parseInt(id_a[0]), id_a[1]); + }); + } + }); + }; })(jQuery); diff --git a/static/tipuesearch/tipuesearch.min.js b/static/tipuesearch/tipuesearch.min.js index 555524a5..0fefce4a 100644 --- a/static/tipuesearch/tipuesearch.min.js +++ b/static/tipuesearch/tipuesearch.min.js @@ -1,181 +1,559 @@ -(function($){$.fn.tipuesearch=function(options){var set=$.extend({'contextBuffer':60,'contextLength':60,'contextStart':90,'debug':false,'descriptiveWords':25,'footerPages':3,'highlightTerms':true,'imageZoom':true,'minimumLength':3,'newWindow':false,'show':10,'showContext':true,'showRelated':true,'showTime':true,'showTitleCount':true,'showURL':true,'wholeWords':true},options);return this.each(function(){var tipuesearch_t_c=0;var tipue_search_w='';if(set.newWindow) -{tipue_search_w=' target="_blank"';} -function getURLP(name) -{var locSearch=location.search;var splitted=(new RegExp('[?|&]'+name+'='+'([^&;]+?)(&|#|;|$)').exec(locSearch)||[,""]);var searchString=splitted[1].replace(/\+/g,'%20');try -{searchString=decodeURIComponent(searchString);} -catch(e) -{searchString=unescape(searchString);} -return searchString||null;} -if(getURLP('q')) -{$('#tipue_search_input').val(getURLP('q'));getTipueSearch(0,true);} -$(this).keyup(function(event) -{if(event.keyCode=='13') -{getTipueSearch(0,true);}});function getTipueSearch(start,replace) -{window.scrollTo(0,0);var out='';var show_replace=false;var show_stop=false;var standard=true;var c=0;var found=[];var d_o=$('#tipue_search_input').val();d_o=d_o.replace(/\+/g,' ').replace(/\s\s+/g,' ');d_o=$.trim(d_o);var d=d_o.toLowerCase();if((d.match("^\"")&&d.match("\"$"))||(d.match("^'")&&d.match("'$"))) -{standard=false;} -var d_w=d.split(' ');if(standard) -{d='';for(var i=0;i<d_w.length;i++) -{var a_w=true;for(var f=0;f<tipuesearch_stop_words.length;f++) -{if(d_w[i]==tipuesearch_stop_words[f]) -{a_w=false;show_stop=true;}} -if(a_w) -{d=d+' '+d_w[i];}} -d=$.trim(d);d_w=d.split(' ');} -else -{d=d.substring(1,d.length-1);} -if(d.length>=set.minimumLength) -{if(standard) -{if(replace) -{var d_r=d;for(var i=0;i<d_w.length;i++) -{for(var f=0;f<tipuesearch_replace.words.length;f++) -{if(d_w[i]==tipuesearch_replace.words[f].word) -{d=d.replace(d_w[i],tipuesearch_replace.words[f].replace_with);show_replace=true;}}} -d_w=d.split(' ');} -var d_t=d;for(var i=0;i<d_w.length;i++) -{for(var f=0;f<tipuesearch_stem.words.length;f++) -{if(d_w[i]==tipuesearch_stem.words[f].word) -{d_t=d_t+' '+tipuesearch_stem.words[f].stem;}}} -d_w=d_t.split(' ');for(var i=0;i<tipuesearch.pages.length;i++) -{var score=0;var s_t=tipuesearch.pages[i].text;for(var f=0;f<d_w.length;f++) -{if(set.wholeWords) -{var pat=new RegExp('\\b'+d_w[f]+'\\b','gi');} -else -{var pat=new RegExp(d_w[f],'gi');} -if(tipuesearch.pages[i].title.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].title.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].text.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].text.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].tags) -{if(tipuesearch.pages[i].tags.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].tags.match(pat).length;score+=(10*m_c);}} -if(tipuesearch.pages[i].url.search(pat)!=-1) -{score+=20;} -if(score!=0) -{for(var e=0;e<tipuesearch_weight.weight.length;e++) -{if(tipuesearch.pages[i].url==tipuesearch_weight.weight[e].url) -{score+=tipuesearch_weight.weight[e].score;}}} -if(d_w[f].match('^-')) -{pat=new RegExp(d_w[f].substring(1),'i');if(tipuesearch.pages[i].title.search(pat)!=-1||tipuesearch.pages[i].text.search(pat)!=-1||tipuesearch.pages[i].tags.search(pat)!=-1) -{score=0;}}} -if(score!=0) -{found.push({"score":score,"title":tipuesearch.pages[i].title,"desc":s_t,"img":tipuesearch.pages[i].img,"url":tipuesearch.pages[i].url,"note":tipuesearch.pages[i].note});c++;}}} -else -{for(var i=0;i<tipuesearch.pages.length;i++) -{var score=0;var s_t=tipuesearch.pages[i].text;var pat=new RegExp(d,'gi');if(tipuesearch.pages[i].title.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].title.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].text.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].text.match(pat).length;score+=(20*m_c);} -if(tipuesearch.pages[i].tags) -{if(tipuesearch.pages[i].tags.search(pat)!=-1) -{var m_c=tipuesearch.pages[i].tags.match(pat).length;score+=(10*m_c);}} -if(tipuesearch.pages[i].url.search(pat)!=-1) -{score+=20;} -if(score!=0) -{for(var e=0;e<tipuesearch_weight.weight.length;e++) -{if(tipuesearch.pages[i].url==tipuesearch_weight.weight[e].url) -{score+=tipuesearch_weight.weight[e].score;}}} -if(score!=0) -{found.push({"score":score,"title":tipuesearch.pages[i].title,"desc":s_t,"img":tipuesearch.pages[i].img,"url":tipuesearch.pages[i].url,"note":tipuesearch.pages[i].note});c++;}}} -if(c!=0) -{if(set.showTitleCount&&tipuesearch_t_c==0) -{var title=document.title;document.title='('+c+') '+title;tipuesearch_t_c++;} -if(c==1) -{out+='<div id="tipue_search_results_count">'+tipuesearch_string_4;} -else -{var c_c=c.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");out+='<div id="tipue_search_results_count">'+c_c+' '+tipuesearch_string_5;} -if(set.showTime) -{var endTimer=new Date().getTime();var time=(endTimer-startTimer)/ 1000;out+=' ('+time.toFixed(2)+' '+tipuesearch_string_14+')';set.showTime=false;} -out+='</div>';if(set.showRelated&&standard) -{var ront='';f=0;for(var i=0;i<tipuesearch_related.Related.length;i++) -{if(d==tipuesearch_related.Related[i].search) -{if(!f) -{out+='<div class="tipue_search_related">'+tipuesearch_string_10+': ';} -if(show_replace) -{d_o=d;} -if(tipuesearch_related.Related[i].include) -{var r_d=d_o+' '+tipuesearch_related.Related[i].related;} -else -{var r_d=tipuesearch_related.Related[i].related;} -ront+='<a class="tipue_search_related_btn" id="'+r_d+'">'+tipuesearch_related.Related[i].related+'</a>, ';f++;}} -if(f) -{ront=ront.slice(0,-2);ront+='.</div>';out+=ront;}} -if(show_replace) -{out+='<div id="tipue_search_replace">'+tipuesearch_string_2+' '+d+'. '+tipuesearch_string_3+' <a id="tipue_search_replaced">'+d_r+'</a></div>';} -found.sort(function(a,b){return b.score-a.score});var l_o=0;if(set.imageZoom) -{out+='<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>';} -for(var i=0;i<found.length;i++) -{if(l_o>=start&&l_o<set.show+start) -{out+='<div class="tipue_search_result">';out+='<div class="tipue_search_content_title"><a href="'+found[i].url+'"'+tipue_search_w+'>'+found[i].title+'</a></div>';if(set.debug) -{out+='<div class="tipue_search_content_debug">Score: '+found[i].score+'</div>';} -if(set.showURL) -{var s_u=found[i].url.toLowerCase();if(s_u.indexOf('http://')==0) -{s_u=s_u.slice(7);} -out+='<div class="tipue_search_content_url"><a href="'+found[i].url+'"'+tipue_search_w+'>'+s_u+'</a></div>';} -if(found[i].img) -{if(set.imageZoom) -{out+='<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="'+found[i].img+'" alt="'+found[i].title+'" data-url="'+found[i].url+'"></div>';} -else -{out+='<div class="tipue_search_image"><a href="'+found[i].url+'"'+tipue_search_w+'><img class="tipue_search_img" src="'+found[i].img+'" alt="'+found[i].title+'"></a></div>';}} -if(found[i].desc) -{var t=found[i].desc;if(set.showContext) -{d_w=d.split(' ');var s_1=found[i].desc.toLowerCase().indexOf(d_w[0]);if(s_1>set.contextStart) -{var t_1=t.substr(s_1-set.contextBuffer);var s_2=t_1.indexOf(' ');t_1=t.substr(s_1-set.contextBuffer+s_2);t_1=$.trim(t_1);if(t_1.length>set.contextLength) -{t='... '+t_1;}}} -if(standard) -{d_w=d.split(' ');for(var f=0;f<d_w.length;f++) -{if(set.highlightTerms) -{var patr=new RegExp('('+d_w[f]+')','gi');t=t.replace(patr,"<h0011>$1<h0012>");}}} -else if(set.highlightTerms) -{var patr=new RegExp('('+d+')','gi');t=t.replace(patr,"<span class=\"tipue_search_content_bold\">$1</span>");} -var t_d='';var t_w=t.split(' ');if(t_w.length<set.descriptiveWords) -{t_d=t;} -else -{for(var f=0;f<set.descriptiveWords;f++) -{t_d+=t_w[f]+' ';}} -t_d=$.trim(t_d);if(t_d.charAt(t_d.length-1)!='.') -{t_d+=' ...';} -t_d=t_d.replace(/h0011/g,'span class=\"tipue_search_content_bold\"');t_d=t_d.replace(/h0012/g,'/span');out+='<div class="tipue_search_content_text">'+t_d+'</div>';} -if(found[i].note) -{out+='<div class="tipue_search_note">'+found[i].note+'</div>';} -out+='</div>';} -l_o++;} -if(c>set.show) -{var pages=Math.ceil(c / set.show);var page=(start / set.show);if(set.footerPages<3) -{set.footerPages=3;} -out+='<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">';if(start>0) -{out+='<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="'+(start-set.show)+'_'+replace+'">'+tipuesearch_string_6+'</a></li>';} -if(page<=2) -{var p_b=pages;if(pages>set.footerPages) -{p_b=set.footerPages;} -for(var f=0;f<p_b;f++) -{if(f==page) -{out+='<li class="current" role="navigation">'+(f+1)+'</li>';} -else -{out+='<li role="navigation"><a class="tipue_search_foot_box" id="'+(f*set.show)+'_'+replace+'">'+(f+1)+'</a></li>';}}} -else -{var p_b=page+set.footerPages-1;if(p_b>pages) -{p_b=pages;} -for(var f=page-1;f<p_b;f++) -{if(f==page) -{out+='<li class="current" role="navigation">'+(f+1)+'</li>';} -else -{out+='<li role="navigation"><a class="tipue_search_foot_box" id="'+(f*set.show)+'_'+replace+'">'+(f+1)+'</a></li>';}}} -if(page+1!=pages) -{out+='<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="'+(start+set.show)+'_'+replace+'">'+tipuesearch_string_7+'</a></li>';} -out+='</ul></div>';}} -else -{out+='<div id="tipue_search_error">'+tipuesearch_string_8+'</div>';}} -else -{if(show_stop) -{out+='<div id="tipue_search_error">'+tipuesearch_string_8+' '+tipuesearch_string_9+'</div>';} -else -{if(set.minimumLength==1) -{out+='<div id="tipue_search_error">'+tipuesearch_string_11+'</div>';} -else -{out+='<div id="tipue_search_error">'+tipuesearch_string_12+' '+set.minimumLength+' '+tipuesearch_string_13+'</div>';}}} -$('#tipue_search_content').hide().html(out).slideDown(200);$('#tipue_search_replaced').click(function() -{getTipueSearch(0,false);});$('.tipue_search_related_btn').click(function() -{$('#tipue_search_input').val($(this).attr('id'));getTipueSearch(0,true);});$('.tipue_search_image_zoom').click(function() -{$('#tipue_search_image_modal').fadeIn(300);$('#tipue_search_zoom_img').attr('src',this.src);var z_u=$(this).attr('data-url');$('#tipue_search_zoom_url').attr('href',z_u);var z_o=this.alt+'<div class="tipue_search_zoom_options"><a href="'+this.src+'" target="_blank">'+tipuesearch_string_15+'</a>  <a href="'+z_u+'">'+tipuesearch_string_16+'</a></div>';$('#tipue_search_zoom_text').html(z_o);});$('.tipue_search_image_close').click(function() -{$('#tipue_search_image_modal').fadeOut(300);});$('.tipue_search_foot_box').click(function() -{var id_v=$(this).attr('id');var id_a=id_v.split('_');getTipueSearch(parseInt(id_a[0]),id_a[1]);});}});};})(jQuery); +(function($) { + $.fn.tipuesearch = function(options) { + var set = $.extend( + { + contextBuffer: 60, + contextLength: 60, + contextStart: 90, + debug: false, + descriptiveWords: 25, + footerPages: 3, + highlightTerms: true, + imageZoom: true, + minimumLength: 3, + newWindow: false, + show: 10, + showContext: true, + showRelated: true, + showTime: true, + showTitleCount: true, + showURL: true, + wholeWords: true + }, + options + ); + return this.each(function() { + var tipuesearch_t_c = 0; + var tipue_search_w = ""; + if (set.newWindow) { + tipue_search_w = ' target="_blank"'; + } + function getURLP(name) { + var locSearch = location.search; + var splitted = new RegExp( + "[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)" + ).exec(locSearch) || [, ""]; + var searchString = splitted[1].replace(/\+/g, "%20"); + try { + searchString = decodeURIComponent(searchString); + } catch (e) { + searchString = unescape(searchString); + } + return searchString || null; + } + if (getURLP("q")) { + $("#tipue_search_input").val(getURLP("q")); + getTipueSearch(0, true); + } + $(this).keyup(function(event) { + if (event.keyCode == "13") { + getTipueSearch(0, true); + } + }); + function getTipueSearch(start, replace) { + window.scrollTo(0, 0); + var out = ""; + var show_replace = false; + var show_stop = false; + var standard = true; + var c = 0; + var found = []; + var d_o = $("#tipue_search_input").val(); + d_o = d_o.replace(/\+/g, " ").replace(/\s\s+/g, " "); + d_o = $.trim(d_o); + var d = d_o.toLowerCase(); + if ( + (d.match('^"') && d.match('"$')) || + (d.match("^'") && d.match("'$")) + ) { + standard = false; + } + var d_w = d.split(" "); + if (standard) { + d = ""; + for (var i = 0; i < d_w.length; i++) { + var a_w = true; + for (var f = 0; f < tipuesearch_stop_words.length; f++) { + if (d_w[i] == tipuesearch_stop_words[f]) { + a_w = false; + show_stop = true; + } + } + if (a_w) { + d = d + " " + d_w[i]; + } + } + d = $.trim(d); + d_w = d.split(" "); + } else { + d = d.substring(1, d.length - 1); + } + if (d.length >= set.minimumLength) { + if (standard) { + if (replace) { + var d_r = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_replace.words.length; f++) { + if (d_w[i] == tipuesearch_replace.words[f].word) { + d = d.replace( + d_w[i], + tipuesearch_replace.words[f].replace_with + ); + show_replace = true; + } + } + } + d_w = d.split(" "); + } + var d_t = d; + for (var i = 0; i < d_w.length; i++) { + for (var f = 0; f < tipuesearch_stem.words.length; f++) { + if (d_w[i] == tipuesearch_stem.words[f].word) { + d_t = d_t + " " + tipuesearch_stem.words[f].stem; + } + } + } + d_w = d_t.split(" "); + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + for (var f = 0; f < d_w.length; f++) { + if (set.wholeWords) { + var pat = new RegExp("\\b" + d_w[f] + "\\b", "gi"); + } else { + var pat = new RegExp(d_w[f], "gi"); + } + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == + tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; + } + } + } + if (d_w[f].match("^-")) { + pat = new RegExp(d_w[f].substring(1), "i"); + if ( + tipuesearch.pages[i].title.search(pat) != -1 || + tipuesearch.pages[i].text.search(pat) != -1 || + tipuesearch.pages[i].tags.search(pat) != -1 + ) { + score = 0; + } + } + } + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } else { + for (var i = 0; i < tipuesearch.pages.length; i++) { + var score = 0; + var s_t = tipuesearch.pages[i].text; + var pat = new RegExp(d, "gi"); + if (tipuesearch.pages[i].title.search(pat) != -1) { + var m_c = tipuesearch.pages[i].title.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].text.search(pat) != -1) { + var m_c = tipuesearch.pages[i].text.match(pat).length; + score += 20 * m_c; + } + if (tipuesearch.pages[i].tags) { + if (tipuesearch.pages[i].tags.search(pat) != -1) { + var m_c = tipuesearch.pages[i].tags.match(pat).length; + score += 10 * m_c; + } + } + if (tipuesearch.pages[i].url.search(pat) != -1) { + score += 20; + } + if (score != 0) { + for (var e = 0; e < tipuesearch_weight.weight.length; e++) { + if ( + tipuesearch.pages[i].url == tipuesearch_weight.weight[e].url + ) { + score += tipuesearch_weight.weight[e].score; + } + } + } + if (score != 0) { + found.push({ + score: score, + title: tipuesearch.pages[i].title, + desc: s_t, + img: tipuesearch.pages[i].img, + url: tipuesearch.pages[i].url, + note: tipuesearch.pages[i].note + }); + c++; + } + } + } + if (c != 0) { + if (set.showTitleCount && tipuesearch_t_c == 0) { + var title = document.title; + document.title = "(" + c + ") " + title; + tipuesearch_t_c++; + } + if (c == 1) { + out += + '<div id="tipue_search_results_count">' + tipuesearch_string_4; + } else { + var c_c = c.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + out += + '<div id="tipue_search_results_count">' + + c_c + + " " + + tipuesearch_string_5; + } + if (set.showTime) { + var endTimer = new Date().getTime(); + var time = (endTimer - startTimer) / 1000; + out += " (" + time.toFixed(2) + " " + tipuesearch_string_14 + ")"; + set.showTime = false; + } + out += "</div>"; + if (set.showRelated && standard) { + var ront = ""; + f = 0; + for (var i = 0; i < tipuesearch_related.Related.length; i++) { + if (d == tipuesearch_related.Related[i].search) { + if (!f) { + out += + '<div class="tipue_search_related">' + + tipuesearch_string_10 + + ": "; + } + if (show_replace) { + d_o = d; + } + if (tipuesearch_related.Related[i].include) { + var r_d = + d_o + " " + tipuesearch_related.Related[i].related; + } else { + var r_d = tipuesearch_related.Related[i].related; + } + ront += + '<a class="tipue_search_related_btn" id="' + + r_d + + '">' + + tipuesearch_related.Related[i].related + + "</a>, "; + f++; + } + } + if (f) { + ront = ront.slice(0, -2); + ront += ".</div>"; + out += ront; + } + } + if (show_replace) { + out += + '<div id="tipue_search_replace">' + + tipuesearch_string_2 + + " " + + d + + ". " + + tipuesearch_string_3 + + ' <a id="tipue_search_replaced">' + + d_r + + "</a></div>"; + } + found.sort(function(a, b) { + return b.score - a.score; + }); + var l_o = 0; + if (set.imageZoom) { + out += + '<div id="tipue_search_image_modal"><div class="tipue_search_image_close">✕</div><div class="tipue_search_image_block"><a id="tipue_search_zoom_url"><img id="tipue_search_zoom_img"></a><div id="tipue_search_zoom_text"></div></div></div>'; + } + for (var i = 0; i < found.length; i++) { + if (l_o >= start && l_o < set.show + start) { + out += '<div class="tipue_search_result">'; + out += + '<div class="tipue_search_content_title"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + found[i].title + + "</a></div>"; + if (set.debug) { + out += + '<div class="tipue_search_content_debug">Score: ' + + found[i].score + + "</div>"; + } + if (set.showURL) { + var s_u = found[i].url.toLowerCase(); + if (s_u.indexOf("http://") == 0) { + s_u = s_u.slice(7); + } + out += + '<div class="tipue_search_content_url"><a href="' + + found[i].url + + '"' + + tipue_search_w + + ">" + + s_u + + "</a></div>"; + } + if (found[i].img) { + if (set.imageZoom) { + out += + '<div class="tipue_search_image"><img class="tipue_search_img tipue_search_image_zoom" src="' + + found[i].img + + '" alt="' + + found[i].title + + '" data-url="' + + found[i].url + + '"></div>'; + } else { + out += + '<div class="tipue_search_image"><a href="' + + found[i].url + + '"' + + tipue_search_w + + '><img class="tipue_search_img" src="' + + found[i].img + + '" alt="' + + found[i].title + + '"></a></div>'; + } + } + if (found[i].desc) { + var t = found[i].desc; + if (set.showContext) { + d_w = d.split(" "); + var s_1 = found[i].desc.toLowerCase().indexOf(d_w[0]); + if (s_1 > set.contextStart) { + var t_1 = t.substr(s_1 - set.contextBuffer); + var s_2 = t_1.indexOf(" "); + t_1 = t.substr(s_1 - set.contextBuffer + s_2); + t_1 = $.trim(t_1); + if (t_1.length > set.contextLength) { + t = "... " + t_1; + } + } + } + if (standard) { + d_w = d.split(" "); + for (var f = 0; f < d_w.length; f++) { + if (set.highlightTerms) { + var patr = new RegExp("(" + d_w[f] + ")", "gi"); + t = t.replace(patr, "<h0011>$1<h0012>"); + } + } + } else if (set.highlightTerms) { + var patr = new RegExp("(" + d + ")", "gi"); + t = t.replace( + patr, + '<span class="tipue_search_content_bold">$1</span>' + ); + } + var t_d = ""; + var t_w = t.split(" "); + if (t_w.length < set.descriptiveWords) { + t_d = t; + } else { + for (var f = 0; f < set.descriptiveWords; f++) { + t_d += t_w[f] + " "; + } + } + t_d = $.trim(t_d); + if (t_d.charAt(t_d.length - 1) != ".") { + t_d += " ..."; + } + t_d = t_d.replace( + /h0011/g, + 'span class="tipue_search_content_bold"' + ); + t_d = t_d.replace(/h0012/g, "/span"); + out += + '<div class="tipue_search_content_text">' + t_d + "</div>"; + } + if (found[i].note) { + out += + '<div class="tipue_search_note">' + + found[i].note + + "</div>"; + } + out += "</div>"; + } + l_o++; + } + if (c > set.show) { + var pages = Math.ceil(c / set.show); + var page = start / set.show; + if (set.footerPages < 3) { + set.footerPages = 3; + } + out += + '<div id="tipue_search_foot"><ul id="tipue_search_foot_boxes">'; + if (start > 0) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="b" id="' + + (start - set.show) + + "_" + + replace + + '">' + + tipuesearch_string_6 + + "</a></li>"; + } + if (page <= 2) { + var p_b = pages; + if (pages > set.footerPages) { + p_b = set.footerPages; + } + for (var f = 0; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } else { + var p_b = page + set.footerPages - 1; + if (p_b > pages) { + p_b = pages; + } + for (var f = page - 1; f < p_b; f++) { + if (f == page) { + out += + '<li class="current" role="navigation">' + + (f + 1) + + "</li>"; + } else { + out += + '<li role="navigation"><a class="tipue_search_foot_box" id="' + + f * set.show + + "_" + + replace + + '">' + + (f + 1) + + "</a></li>"; + } + } + } + if (page + 1 != pages) { + out += + '<li role="navigation"><a class="tipue_search_foot_box" accesskey="m" id="' + + (start + set.show) + + "_" + + replace + + '">' + + tipuesearch_string_7 + + "</a></li>"; + } + out += "</ul></div>"; + } + } else { + out += + '<div id="tipue_search_error">' + tipuesearch_string_8 + "</div>"; + } + } else { + if (show_stop) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_8 + + " " + + tipuesearch_string_9 + + "</div>"; + } else { + if (set.minimumLength == 1) { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_11 + + "</div>"; + } else { + out += + '<div id="tipue_search_error">' + + tipuesearch_string_12 + + " " + + set.minimumLength + + " " + + tipuesearch_string_13 + + "</div>"; + } + } + } + $("#tipue_search_content") + .hide() + .html(out) + .slideDown(200); + $("#tipue_search_replaced").click(function() { + getTipueSearch(0, false); + }); + $(".tipue_search_related_btn").click(function() { + $("#tipue_search_input").val($(this).attr("id")); + getTipueSearch(0, true); + }); + $(".tipue_search_image_zoom").click(function() { + $("#tipue_search_image_modal").fadeIn(300); + $("#tipue_search_zoom_img").attr("src", this.src); + var z_u = $(this).attr("data-url"); + $("#tipue_search_zoom_url").attr("href", z_u); + var z_o = + this.alt + + '<div class="tipue_search_zoom_options"><a href="' + + this.src + + '" target="_blank">' + + tipuesearch_string_15 + + '</a>  <a href="' + + z_u + + '">' + + tipuesearch_string_16 + + "</a></div>"; + $("#tipue_search_zoom_text").html(z_o); + }); + $(".tipue_search_image_close").click(function() { + $("#tipue_search_image_modal").fadeOut(300); + }); + $(".tipue_search_foot_box").click(function() { + var id_v = $(this).attr("id"); + var id_a = id_v.split("_"); + getTipueSearch(parseInt(id_a[0]), id_a[1]); + }); + } + }); + }; +})(jQuery); diff --git a/static/tipuesearch/tipuesearch_content.js b/static/tipuesearch/tipuesearch_content.js index bdf01e21..414c7093 100644 --- a/static/tipuesearch/tipuesearch_content.js +++ b/static/tipuesearch/tipuesearch_content.js @@ -1,17 +1,107 @@ - -var tipuesearch = {"pages": [ - {"title": "Tipue", "text": "Tipue is a small web development studio based in North London.", "url": "http://www.tipue.com"}, - {"title": "Tipue Search", "text": "Tipue Search. A site search jQuery plugin. It's free, open source and fast. Tipue Search only needs a browser that supports jQuery. It doesn't need MySQL or similar, Tipue Search uses a JavaScript object for content.", "tags": "JavaScript", "url": "http://www.tipue.com/search"}, - {"title": "Tipue Slide", "text": "Tipue Slide is a sliding panel site search jQuery plugin. It's free, open source and fast.", "url": "http://www.tipue.com/slide"}, - {"title": "About Tipue", "text": "Tipue is a small web development studio based in North London, founded in 2001. We design innovative and original JavaScript and jQuery plugins, which we connect to servers and MySQL databases with fast, heavy-duty Perl.", "url": "http://www.tipue.com/is"}, - {"title": "Tipr", "text": "Tipr. A small and simple jQuery tooltip plugin. It's free and open source. Small, simple, flat, cool. Tipr is a jQuery tooltip plugin. It works on almost any element, and reacts to the size of the viewport. Tipr is free and open source.", "tags": "JavaScript", "url": "http://www.tipue.com/tipr"}, - {"title": "Tipue Support", "text": "Tipue support. We offer a range of flexible support plans for our products, services and jQuery plugins, including free.", "url": "http://www.tipue.com/support"}, - {"title": "Playing with CSS Sticky Positioning", "text": "While the fixed and sticky position elements seems rather similar, the sticky element maintains its position only within its containing block. Sticky is relative, which allows all sorts of potential creativity.", "img": "http://www.tipue.com/img/sony.jpg", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css-sticky"}, - {"title": "The Complete Guide to Centering a Div", "text": "Every developer inevitably finds that centering a div isn't as obvious as you'd expect. Centering what's inside a div horizontally is easy but then things tend to get a bit sticky. When you get to centering a div vertically, you can end up in a world of CSS hurt.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/center-a-div"}, - {"title": "Cool CSS Radio Buttons and Checkboxes", "text": "Hip and easy radio button and checkbox form elements styled with CSS.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/radio-checkbox"}, - {"title": "Hacking CSS Writing Mode", "text": "The writing-mode CSS property sets horizontal and vertical text direction. While meant for multilingual purposes, it can be exploited for design.", "img": "http://www.tipue.com/img/tran.jpg", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css-writing-mode"}, - {"title": "Using Vw and Vh", "text": "Viewport width (vw) and viewport height (vh) are viewport-percentage values introduced in CSS3. Given how powerful they are, and with almost complete browser support, they should be everywhere.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css3-vw-vh"}, - {"title": "Using CSS Feature Queries", "text": "CSS feature queries are now supported everywhere. They allow you to use cutting edge CSS with subtle and precise feature detection.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/feature-queries"}, - {"title": "A Very Simple CSS Background Zoom", "text": "A really easy method of creating a CSS background image zoom. Not only is this simple, it comes with wide browser support.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/css-background-zoom"}, - {"title": "Using Z-index", "text": "The CSS z-index property often trips up both new and experienced developers. The aim of this article is to boil down a somewhat-complex specification to three major points, which should ease most z-index pain.", "tags": "Tipue Blog", "note": "<a href='http://www.tipue.com/blog/'>More articles</a>", "url": "http://www.tipue.com/blog/z-index"} -]}; +var tipuesearch = { + pages: [ + { + title: "Tipue", + text: "Tipue is a small web development studio based in North London.", + url: "http://www.tipue.com" + }, + { + title: "Tipue Search", + text: + "Tipue Search. A site search jQuery plugin. It's free, open source and fast. Tipue Search only needs a browser that supports jQuery. It doesn't need MySQL or similar, Tipue Search uses a JavaScript object for content.", + tags: "JavaScript", + url: "http://www.tipue.com/search" + }, + { + title: "Tipue Slide", + text: + "Tipue Slide is a sliding panel site search jQuery plugin. It's free, open source and fast.", + url: "http://www.tipue.com/slide" + }, + { + title: "About Tipue", + text: + "Tipue is a small web development studio based in North London, founded in 2001. We design innovative and original JavaScript and jQuery plugins, which we connect to servers and MySQL databases with fast, heavy-duty Perl.", + url: "http://www.tipue.com/is" + }, + { + title: "Tipr", + text: + "Tipr. A small and simple jQuery tooltip plugin. It's free and open source. Small, simple, flat, cool. Tipr is a jQuery tooltip plugin. It works on almost any element, and reacts to the size of the viewport. Tipr is free and open source.", + tags: "JavaScript", + url: "http://www.tipue.com/tipr" + }, + { + title: "Tipue Support", + text: + "Tipue support. We offer a range of flexible support plans for our products, services and jQuery plugins, including free.", + url: "http://www.tipue.com/support" + }, + { + title: "Playing with CSS Sticky Positioning", + text: + "While the fixed and sticky position elements seems rather similar, the sticky element maintains its position only within its containing block. Sticky is relative, which allows all sorts of potential creativity.", + img: "http://www.tipue.com/img/sony.jpg", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css-sticky" + }, + { + title: "The Complete Guide to Centering a Div", + text: + "Every developer inevitably finds that centering a div isn't as obvious as you'd expect. Centering what's inside a div horizontally is easy but then things tend to get a bit sticky. When you get to centering a div vertically, you can end up in a world of CSS hurt.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/center-a-div" + }, + { + title: "Cool CSS Radio Buttons and Checkboxes", + text: + "Hip and easy radio button and checkbox form elements styled with CSS.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/radio-checkbox" + }, + { + title: "Hacking CSS Writing Mode", + text: + "The writing-mode CSS property sets horizontal and vertical text direction. While meant for multilingual purposes, it can be exploited for design.", + img: "http://www.tipue.com/img/tran.jpg", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css-writing-mode" + }, + { + title: "Using Vw and Vh", + text: + "Viewport width (vw) and viewport height (vh) are viewport-percentage values introduced in CSS3. Given how powerful they are, and with almost complete browser support, they should be everywhere.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css3-vw-vh" + }, + { + title: "Using CSS Feature Queries", + text: + "CSS feature queries are now supported everywhere. They allow you to use cutting edge CSS with subtle and precise feature detection.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/feature-queries" + }, + { + title: "A Very Simple CSS Background Zoom", + text: + "A really easy method of creating a CSS background image zoom. Not only is this simple, it comes with wide browser support.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/css-background-zoom" + }, + { + title: "Using Z-index", + text: + "The CSS z-index property often trips up both new and experienced developers. The aim of this article is to boil down a somewhat-complex specification to three major points, which should ease most z-index pain.", + tags: "Tipue Blog", + note: "<a href='http://www.tipue.com/blog/'>More articles</a>", + url: "http://www.tipue.com/blog/z-index" + } + ] +}; diff --git a/static/tipuesearch/tipuesearch_set.js b/static/tipuesearch/tipuesearch_set.js index a76216f5..a4e86f74 100644 --- a/static/tipuesearch/tipuesearch_set.js +++ b/static/tipuesearch/tipuesearch_set.js @@ -1,4 +1,3 @@ - /* Tipue Search 7.1 Copyright (c) 2019 Tipue @@ -6,78 +5,252 @@ Tipue Search is released under the MIT License http://www.tipue.com/search */ - /* Stop words Stop words list from http://www.ranks.nl/stopwords */ -var tipuesearch_stop_words = ["a", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]; - +var tipuesearch_stop_words = [ + "a", + "above", + "after", + "again", + "against", + "all", + "am", + "an", + "and", + "any", + "are", + "aren't", + "as", + "at", + "be", + "because", + "been", + "before", + "being", + "below", + "between", + "both", + "but", + "by", + "can't", + "cannot", + "could", + "couldn't", + "did", + "didn't", + "do", + "does", + "doesn't", + "doing", + "don't", + "down", + "during", + "each", + "few", + "for", + "from", + "further", + "had", + "hadn't", + "has", + "hasn't", + "have", + "haven't", + "having", + "he", + "he'd", + "he'll", + "he's", + "her", + "here", + "here's", + "hers", + "herself", + "him", + "himself", + "his", + "how", + "how's", + "i", + "i'd", + "i'll", + "i'm", + "i've", + "if", + "in", + "into", + "is", + "isn't", + "it", + "it's", + "its", + "itself", + "let's", + "me", + "more", + "most", + "mustn't", + "my", + "myself", + "no", + "nor", + "not", + "of", + "off", + "on", + "once", + "only", + "or", + "other", + "ought", + "our", + "ours", + "ourselves", + "out", + "over", + "own", + "same", + "shan't", + "she", + "she'd", + "she'll", + "she's", + "should", + "shouldn't", + "so", + "some", + "such", + "than", + "that", + "that's", + "the", + "their", + "theirs", + "them", + "themselves", + "then", + "there", + "there's", + "these", + "they", + "they'd", + "they'll", + "they're", + "they've", + "this", + "those", + "through", + "to", + "too", + "under", + "until", + "up", + "very", + "was", + "wasn't", + "we", + "we'd", + "we'll", + "we're", + "we've", + "were", + "weren't", + "what", + "what's", + "when", + "when's", + "where", + "where's", + "which", + "while", + "who", + "who's", + "whom", + "why", + "why's", + "with", + "won't", + "would", + "wouldn't", + "you", + "you'd", + "you'll", + "you're", + "you've", + "your", + "yours", + "yourself", + "yourselves" +]; // Word replace -var tipuesearch_replace = {'words': [ - {'word': 'tip', 'replace_with': 'tipue'}, - {'word': 'javscript', 'replace_with': 'javascript'}, - {'word': 'jqeury', 'replace_with': 'jquery'} -]}; - +var tipuesearch_replace = { + words: [ + { word: "tip", replace_with: "tipue" }, + { word: "javscript", replace_with: "javascript" }, + { word: "jqeury", replace_with: "jquery" } + ] +}; // Weighting -var tipuesearch_weight = {'weight': [ - {'url': 'http://www.tipue.com', 'score': 60}, - {'url': 'http://www.tipue.com/search', 'score': 60}, - {'url': 'http://www.tipue.com/tipr', 'score': 30}, - {'url': 'http://www.tipue.com/support', 'score': 20} -]}; - +var tipuesearch_weight = { + weight: [ + { url: "http://www.tipue.com", score: 60 }, + { url: "http://www.tipue.com/search", score: 60 }, + { url: "http://www.tipue.com/tipr", score: 30 }, + { url: "http://www.tipue.com/support", score: 20 } + ] +}; // Illogical stemming -var tipuesearch_stem = {'words': [ - {'word': 'e-mail', 'stem': 'email'}, - {'word': 'javascript', 'stem': 'jquery'}, - {'word': 'javascript', 'stem': 'js'} -]}; - +var tipuesearch_stem = { + words: [ + { word: "e-mail", stem: "email" }, + { word: "javascript", stem: "jquery" }, + { word: "javascript", stem: "js" } + ] +}; // Related -var tipuesearch_related = {'Related': [ - {'search': 'tipue', 'related': 'Search', 'include': 1}, - {'search': 'tipue', 'related': 'jQuery'}, - {'search': 'tipue', 'related': 'Blog'}, - {'search': 'tipue', 'related': 'Support'}, - {'search': 'tipue search', 'related': 'Demo', 'include': 1}, - {'search': 'tipue search', 'related': 'Support'} -]}; - +var tipuesearch_related = { + Related: [ + { search: "tipue", related: "Search", include: 1 }, + { search: "tipue", related: "jQuery" }, + { search: "tipue", related: "Blog" }, + { search: "tipue", related: "Support" }, + { search: "tipue search", related: "Demo", include: 1 }, + { search: "tipue search", related: "Support" } + ] +}; // Internal strings -var tipuesearch_string_1 = 'No title'; -var tipuesearch_string_2 = 'Showing results for'; -var tipuesearch_string_3 = 'Search instead for'; -var tipuesearch_string_4 = '1 result'; -var tipuesearch_string_5 = 'results'; -var tipuesearch_string_6 = '<'; -var tipuesearch_string_7 = '>'; -var tipuesearch_string_8 = 'Nothing found.'; -var tipuesearch_string_9 = 'Common words are largely ignored.'; -var tipuesearch_string_10 = 'Related'; -var tipuesearch_string_11 = 'Search should be one character or more.'; -var tipuesearch_string_12 = 'Search should be'; -var tipuesearch_string_13 = 'characters or more.'; -var tipuesearch_string_14 = 'seconds'; -var tipuesearch_string_15 = 'Open Image'; -var tipuesearch_string_16 = 'Goto Page'; - +var tipuesearch_string_1 = "No title"; +var tipuesearch_string_2 = "Showing results for"; +var tipuesearch_string_3 = "Search instead for"; +var tipuesearch_string_4 = "1 result"; +var tipuesearch_string_5 = "results"; +var tipuesearch_string_6 = "<"; +var tipuesearch_string_7 = ">"; +var tipuesearch_string_8 = "Nothing found."; +var tipuesearch_string_9 = "Common words are largely ignored."; +var tipuesearch_string_10 = "Related"; +var tipuesearch_string_11 = "Search should be one character or more."; +var tipuesearch_string_12 = "Search should be"; +var tipuesearch_string_13 = "characters or more."; +var tipuesearch_string_14 = "seconds"; +var tipuesearch_string_15 = "Open Image"; +var tipuesearch_string_16 = "Goto Page"; // Internals - // Timer for showTime var startTimer = new Date().getTime();

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�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 z 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 literal 0 HcmV?d00001 From b359b96c4563e5fc548e60892c98d111153fba48 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 28 Jul 2019 20:49:19 -0700 Subject: [PATCH 14/59] docs(change): Updating admonitions to all adhere to the same standard. In reviewing some of the recently changed pages, it looks like the prettier pre-commit check removed some of the 4-space prefixes to the text for admonitions. Did a quick scan of all admonitions and made sure they are all consistent and all working. --- .../Appearance and Style/table-of-contents.md | 3 +- .../warnings-admonitions.md | 29 ++++++++++++------- .../Contributing/live-reload-python.md | 3 +- .../Supported Plugins/assets-plugin.md | 3 +- .../photo-gallery-advanced.md | 28 +++++++++--------- .../content/Supported Plugins/photogallery.md | 7 +++-- .../content/Supported Plugins/reading-time.md | 3 +- .../Supported Plugins/share-post-plugin.md | 3 +- 8 files changed, 47 insertions(+), 32 deletions(-) diff --git a/documentation/content/Appearance and Style/table-of-contents.md b/documentation/content/Appearance and Style/table-of-contents.md index 5d56f8ab..9e029bfd 100644 --- a/documentation/content/Appearance and Style/table-of-contents.md +++ b/documentation/content/Appearance and Style/table-of-contents.md @@ -141,7 +141,8 @@ I will end my example here. ### Hide Default Title Text !!! note "Possibly Deprecated" -We couldn't not reproduce this issue in our testing. This should be considered deprecated, but is retained in this document in case someone encounters this. + + We couldn't not reproduce this issue in our testing. This should be considered deprecated, but is retained in this document in case someone encounters this. Using the default configuration, reStructuredText will generate a default title for the table of contents. According to the [official diff --git a/documentation/content/Appearance and Style/warnings-admonitions.md b/documentation/content/Appearance and Style/warnings-admonitions.md index 76ad2e09..fe7c47de 100644 --- a/documentation/content/Appearance and Style/warnings-admonitions.md +++ b/documentation/content/Appearance and Style/warnings-admonitions.md @@ -50,40 +50,48 @@ Let's see some examples! You can use either `danger` or `error` to get a red admonition box. !!! danger + This is a danger or error admonition !!! danger -This is a danger or error admonition + + This is a danger or error admonition ## Default Attention, Caution, Warning An `attention`, `caution` or `warning` admonition will be yellow. !!! warning + This is an attention, caution or warning admonition !!! warning -This is an attention, caution or warning admonition + + This is an attention, caution or warning admonition ## Default Important, Note Use `important` or `note` to get a green admonition box. !!! important + This is an important or note admonition !!! important -This is an important or note admonition + + This is an important or note admonition ## Default Hint, Tip Use either `hint` or `tip` to get a blue admonition box. !!! hint + This is a hint or tip admonition !!! hint -This is a hint or tip admonition + + This is a hint or tip admonition ## Custom Titles @@ -93,12 +101,12 @@ If you want to use a custom title, you pass the title in double quotes after the type of admonition you are utilizing. !!! hint "Use double quotes to change the title" - This admonition box contains a custom tile because I placed it in double - quotes after the `hint`. + + This admonition box contains a custom tile because I placed it in double quotes after the `hint`. !!! hint "Use double quotes to change the title" -This admonition box contains a custom tile because I placed it in double -quotes after the `hint`. + + This admonition box contains a custom tile because I placed it in double quotes after the `hint`. ## No title @@ -106,9 +114,10 @@ There are times when you don't need a title in your boxes. This can be done by passing an empty string (`""`) after the admonition type. !!! important "" + This box doesn't require a title, but is still an `important` admonition and will be highlighted as such. !!! important "" -This box doesn't require a title, but is still an `important` admonition -and will be highlighted as such. + + This box doesn't require a title, but is still an `important` admonition and will be highlighted as such. diff --git a/documentation/content/Contributing/live-reload-python.md b/documentation/content/Contributing/live-reload-python.md index aa768795..144edbec 100644 --- a/documentation/content/Contributing/live-reload-python.md +++ b/documentation/content/Contributing/live-reload-python.md @@ -29,7 +29,8 @@ pip install invoke ### Known Issue !!! Danger "Pretty URLs Do Not Work" -Remove or comment out `ARTICLE_URL = "{slug}"` from Pelican configuration to make LiveReload work + + Remove or comment out `ARTICLE_URL = "{slug}"` from Pelican configuration to make LiveReload work Unfortunately, Pelican LiveReload depends on [Python-LiveReload](https://github.com/lepture/python-livereload), which [does not support extension less files](https://github.com/lepture/python-livereload/pull/131). diff --git a/documentation/content/Supported Plugins/assets-plugin.md b/documentation/content/Supported Plugins/assets-plugin.md index eb5b7882..2f3374ed 100644 --- a/documentation/content/Supported Plugins/assets-plugin.md +++ b/documentation/content/Supported Plugins/assets-plugin.md @@ -31,7 +31,8 @@ PLUGINS = ['assets'] ``` !!! note -The [assets plugin](https://github.com/getpelican/pelican-plugins/blob/master/assets/Readme.rst) requires the Python `webassets` and `cssmin` packages to be installed. + + The [assets plugin](https://github.com/getpelican/pelican-plugins/blob/master/assets/Readme.rst) requires the Python `webassets` and `cssmin` packages to be installed. ## Debugging Notes diff --git a/documentation/content/Supported Plugins/photo-gallery-advanced.md b/documentation/content/Supported Plugins/photo-gallery-advanced.md index fdf6e9ba..eb2a8333 100644 --- a/documentation/content/Supported Plugins/photo-gallery-advanced.md +++ b/documentation/content/Supported Plugins/photo-gallery-advanced.md @@ -130,24 +130,24 @@ source code and the documentation for the Photos Plugin. As a decent part of this information is presented after testing and research, please feel free to contact us if you see different behavior than is documented here. -| Configuration Name | Default Value | Description | -| -------------------------------------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `PHOTO_GALLERY` | `(1024, 768, 80)` | Three attributes, describing the maximum width, the maximum height, and the quality of the resized image. The specific set of attributes applies to the maximum size of the photo displayed when the reader clicks on a gallery's thumbnail | -| image in the article. Note that the quality of the resized image only applies to JPG images. | -| `PHOTO_ARTICLE` | `(760, 506, 80)` | The same attributes as `PHOTO_GALLERY`, but for the size of a photo from a gallery used in an article. | -| `PHOTO_THUMB` | `(192, 144, 60)` | The same attributes as `PHOTO_GALLERY`, but for the size of the thumbnails used to show the contents of the gallery. | -| `PHOTO_SQUARE_THUMB` | `False` | This setting controls whether or not the thumbnails retain their aspect ratio when resized. If this setting is `True`, the thumbnails will not retain their aspect ratio and will be cropped to fit into the rectangle defined by the `PHOTO_THUMB` configuration variable. | -| `PHOTO_RESIZE_JOBS` | `1` | Number of resize jobs to be run in parallel. If installed on a Windows machine, [read this](photo-gallery-advanced.md#boo). | -| `PHOTO_WATERMARK` | `True` | Add a watermark to all photos in articles and pages. The watermarks added are controlled by the `PHOTO_WATERMARK_TEXT` and `PHOTO_WATERMARK_IMG` configuration variables described below. Note that if both are specified, both will be used. | -| `PHOTO_WATERMARK_TEXT` | `SITENAME` | Text to use for the watermark. | -| `PHOTO_WATERMARK_TEXT_COLOR` | `(255, 255, 255)` | Color of the text used for the watermark. | -| `PHOTO_WATERMARK_IMG` | `''` | Full path to the image to use as a watermark. | -| `PHOTO_WATERMARK_IMG_SIZE` | `False` | Size to apply to the watermark image, expressed as `(width,height)`. | +| Configuration Name | Default Value | Description | +| ---------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PHOTO_GALLERY` | `(1024, 768, 80)` | Three attributes, describing the maximum width, the maximum height, and the quality of the resized image. The specific set of attributes applies to the maximum size of the photo displayed when the reader clicks on a gallery's thumbnail image in the article. Note that the quality of the resized image only applies to JPG images. | +| `PHOTO_ARTICLE` | `(760, 506, 80)` | The same attributes as `PHOTO_GALLERY`, but for the size of a photo from a gallery used in an article. | +| `PHOTO_THUMB` | `(192, 144, 60)` | The same attributes as `PHOTO_GALLERY`, but for the size of the thumbnails used to show the contents of the gallery. | +| `PHOTO_SQUARE_THUMB` | `False` | This setting controls whether or not the thumbnails retain their aspect ratio when resized. If this setting is `True`, the thumbnails will not retain their aspect ratio and will be cropped to fit into the rectangle defined by the `PHOTO_THUMB` configuration variable. | +| `PHOTO_RESIZE_JOBS` | `1` | Number of resize jobs to be run in parallel. If installed on a Windows machine, [read this](photo-gallery-advanced.md#boo). | +| `PHOTO_WATERMARK` | `True` | Add a watermark to all photos in articles and pages. The watermarks added are controlled by the `PHOTO_WATERMARK_TEXT` and `PHOTO_WATERMARK_IMG` configuration variables described below. Note that if both are specified, both will be used. | +| `PHOTO_WATERMARK_TEXT` | `SITENAME` | Text to use for the watermark. | +| `PHOTO_WATERMARK_TEXT_COLOR` | `(255, 255, 255)` | Color of the text used for the watermark. | +| `PHOTO_WATERMARK_IMG` | `''` | Full path to the image to use as a watermark. | +| `PHOTO_WATERMARK_IMG_SIZE` | `False` | Size to apply to the watermark image, expressed as `(width,height)`. | ### JPG Specific EXIF Configuration Values !!! note -The [photos plugin](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md)requires the Python `piexif` package to provide control over any [EXIF](https://photographylife.com/what-is-exif-data) information in the images. + + The [photos plugin](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md) requires the Python `piexif` package to provide control over any [EXIF](https://photographylife.com/what-is-exif-data) information in the images. | Configuration Name | Default Value | Description | | ----------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/documentation/content/Supported Plugins/photogallery.md b/documentation/content/Supported Plugins/photogallery.md index 498135d3..c0e2eb4d 100644 --- a/documentation/content/Supported Plugins/photogallery.md +++ b/documentation/content/Supported Plugins/photogallery.md @@ -42,8 +42,8 @@ PLUGINS = ['photos'] ``` !!! note -The [photos plugin](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md) -requires the Python `pillow` package to be installed. + + The [photos plugin](https://github.com/getpelican/pelican-plugins/blob/master/photos/README.md) requires the Python `pillow` package to be installed. ### Pelican on Windows @@ -111,7 +111,8 @@ photo gallery is not required, but when including multiple galleries, is often d # Advanced Configuration !!! warning -Processing a quantity of photos in the 10,000s range can take multiple hours to complete. To reduce the effort needed to publish photo galleries, the `Photo` plugin will only process images if the output file is not already present in the destination directory. For more information, please refer to the [Caching Image Processing]({filename}./photo-gallery-advanced.md#caching-processed-images). + + Processing a quantity of photos in the 10,000s range can take multiple hours to complete. To reduce the effort needed to publish photo galleries, the `Photo` plugin will only process images if the output file is not already present in the destination directory. For more information, please refer to the [Caching Image Processing]({filename}./photo-gallery-advanced.md#caching-processed-images). Using the above configuration, a photo gallery will be added to the end of the article containing the `gallery` metadata using default settings. For additional ways to use photo diff --git a/documentation/content/Supported Plugins/reading-time.md b/documentation/content/Supported Plugins/reading-time.md index bdf5ca31..45b96a4d 100644 --- a/documentation/content/Supported Plugins/reading-time.md +++ b/documentation/content/Supported Plugins/reading-time.md @@ -30,7 +30,8 @@ PLUGINS = ['post_stats'] ``` !!! note -The [post_stats plugin](https://github.com/getpelican/pelican-plugins/blob/master/post_stats/readme.rst) requires the Python `beautifulsoup4` package to be installed. + + The [post_stats plugin](https://github.com/getpelican/pelican-plugins/blob/master/post_stats/readme.rst) requires the Python `beautifulsoup4` package to be installed. In addition, the `READING_TIME_LOWER_LIMIT` configuration variable can be set to specify a lower limit for this feature. If not supplied, the default value for this variable is 4 min. diff --git a/documentation/content/Supported Plugins/share-post-plugin.md b/documentation/content/Supported Plugins/share-post-plugin.md index 89d90098..fd12c8e8 100644 --- a/documentation/content/Supported Plugins/share-post-plugin.md +++ b/documentation/content/Supported Plugins/share-post-plugin.md @@ -34,7 +34,8 @@ PLUGINS = ['share_post'] ``` !!! note -The [share_post plugin](https://github.com/getpelican/pelican-plugins/blob/master/share_post/README.md) requires the Python `beautifulsoup4` package to be installed. + + The [share_post plugin](https://github.com/getpelican/pelican-plugins/blob/master/share_post/README.md) requires the Python `beautifulsoup4` package to be installed. The default text used to lead into the Social Media Sharing links is "Share On:". This can be overridden by defining the `SHARE_POST_INTRO` configuration variable with the text you From 974b9d1c8e9d747e1c3a8e5def8cd66bc152acf1 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 4 Aug 2019 10:05:00 -0700 Subject: [PATCH 15/59] docs(contrib): Adding better links for contributions, --- CONTRIBUTING.md | 8 ++- .../content/Contributing/inviation.md | 63 +++++++++++++++---- 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be80312a..9ef063d2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,7 @@ -See our documentation at following link: +# Contributions - +We welcome contributions to the Elegant project! + +If you are considering contributing, [please read this](https://elegant.oncrashreboot.com/invitation-to-participate.html). + +If you are actively contributing, [please read this before contributing](https://elegant.oncrashreboot.com/how-to-contribute.html). diff --git a/documentation/content/Contributing/inviation.md b/documentation/content/Contributing/inviation.md index d36bd858..1b67fd57 100644 --- a/documentation/content/Contributing/inviation.md +++ b/documentation/content/Contributing/inviation.md @@ -1,22 +1,63 @@ --- -Title: Invitation to participate +Title: Invitation to Participate Date: 2019-07-03 20:07 Slug: invitation-to-participate Category: Contributing +Authors: Talha Mansoor, Jack De Winter --- -Our brand new documentation website [elegant.onCrashReboot.com][elegant-home] is a great demo for the theme. +[TOC] -If you like the theme and would like to contribute to Elegant, you are most welcome to do so. Even though Pelican is written in Python, no coding skills are needed to help out with Elegant, as themes consist mostly of [Jinja][] templates, CSS and HTML. It is honestly very easily to get into. +This website, [elegant.onCrashReboot.com](https://elegant.oncrashreboot.com), +is an excellent demonstration of the theme that all of us contributors love. While looking for +new features that add to what Elegant has to offer, we also continue to take great care that +we adhere to [Elegant's Look and Feel]({filename}./why-look-and-feel.md). -If you want to help out, but have no idea where to start, we keep a list of [low-priority features that are just waiting for you to pick up][pr_welcome]. +This practice allows you, a website owner, the opportunity to give you readers a clean flow of +reading through the body of the article with minimal destructions, with no loss of +functionality. When new features are added, you can decide whether or not to adopt these +features with the confidence that those new features will be consistent with what you already +are using. This will provide the users of your website with something that is well thought out +and organized, appealing to many readers. -Another way to contribute is to help with the [documentation][docs]. We are keeping a list of [good first issues][docs_first] for newbies to get involved – these are easy to tackle, but in no way less helpful. +To accomplish this, Elegant is proudly a +[team driven open source project]({filename}./community-driven-project.md). +While it was created in 2012 by Talha Mansoor, the change to a community driven project in +early 2019 has energized the development of the project. By asking "how can I help" or +"do you need help with...", people have slowly joined the team and enriched the theme to what +you see today. The contributions of these people has allowed the project to grow beyond the +scope of what any one of them could accomplish on their own. Their contributions, together as +a team, are responsible for the project you see here today. -And, of course, reporting bugs and filing feature requests to further improve Elegant (and its documentation), is also welcome. +## What Can I Do? -[jinja]: http://jinja.pocoo.org/ -[pr_welcome]: https://github.com/Pelican-Elegant/elegant/labels/pull%20request%20welcome -[docs]: https://github.com/Pelican-Elegant/elegant/tree/master/documentation -[docs_first]: https://github.com/Pelican-Elegant/elegant/issues?q=is%3Aopen+is%3Aissue+label%3A%22project+documentation%22 -[elegant-home]: https://elegant.oncrashreboot.com +If using the Elegant theme and reading this invitation inspires you to contribute, we welcome +the addition of your creativity to our team. No coding skills are required to volunteer to +help with Elegant. The theme is mostly composed of templates written in +[Jinja](http://jinja.pocoo.org/) utilizing +[metadata]({filename}../Advanced Features/meta-data.md) associated with each article. We are +confident that if you want to help, we can get you up and running in no time! + +## Where Do I Start? + +As you are volunteering your time and energy, we don't want you to take on a really big task +to start, scaring you away in the process. For this purpose, we keep a refined list of +[lower priority issues](https://github.com/pelican-elegant/elegant/labels/pull%20request%20welcome) +to allow you to gently ease yourself into assisting with the project. If none of those +issues appeal to you, feel free to look at all of our +[open issues](https://github.com/Pelican-Elegant/elegant/issues?q=is:open+is:issue), and see +if any of those are more attractive to you. + +If none of that appeals to you and you still want to help, don't worry! We know we are not +perfect and rely on feedback from our users to help us make the theme better for everyone. + +## How Can I Help? + +See something that isn't working properly? +[Report a bug](https://github.com/Pelican-Elegant/elegant/issues). + +See something that you think is missing? +[File a feature request](https://github.com/Pelican-Elegant/elegant/issues). + +See an article that you think could be clearer? +[File a documentation issue](https://github.com/Pelican-Elegant/elegant/issues). From d54c9e881bb6ed3b6f8962c52f2067ad4a77a0de Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 4 Aug 2019 10:24:29 -0700 Subject: [PATCH 16/59] docs(updates): Forcing a spell check error to take images from live site for documentation. --- .../Contributing/contributing-license.md | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/documentation/content/Contributing/contributing-license.md b/documentation/content/Contributing/contributing-license.md index a0caf9e9..5924cfdc 100644 --- a/documentation/content/Contributing/contributing-license.md +++ b/documentation/content/Contributing/contributing-license.md @@ -3,13 +3,27 @@ Title: Contributions License Date: 2019-07-03 22:07 Slug: contribution-license Category: Contributing +authors: Talha Mansoor, Jack De Winter --- -All contributions will be understood to be made under the same (inbound) license as the main (outbound) license of the repository it is being contributed to – so [MIT License][] for all code/theme contributions, and [CC-BY-SA-3.0][] for all documentation contributions. +TERBLEY MIZSPELT WORDZ -If you are contributing code that is not yours, make sure to indicate where you got the code from (and who the author/copyright holder is) and what license you got it under. +[TOC] -[cc-by-sa-3.0]: https://spdx.org/licenses/CC-BY-SA-3.0.html -[documentation]: https://github.com/Pelican-Elegant/documentation -[elegant]: https://github.com/Pelican-Elegant/elegant -[mit license]: https://spdx.org/licenses/MIT.html +By submitting a change to the project, you implicitly acknowledge that you are following +the following license rules. + +## Licensing + +All contributions to the project are understood to be submitted under the same (inbound) +license as the main (outbound) license of the main Elegant repository. + +All code and theme contributions are submitted according to the +[MIT License](https://spdx.org/licenses/MIT.html). + +All documentation contributions are submitted according to the +[CC-BY-SA-4.0 License](https://spdx.org/licenses/CC-BY-SA-4.0.html). + +All contributions of code where the submitter is not the owner of the submission must indicate +the source of the code, who the author or copyright holder is, and what license or licensing +terms are being used to allow the contribution in the Elegant project. From 64692fe84618076308663f3d13a8eae4e52f5a32 Mon Sep 17 00:00:00 2001 From: Jack De Winter Date: Sun, 4 Aug 2019 19:06:58 -0700 Subject: [PATCH 17/59] docs(addressing most of the documentation for contributing): rewrite of the contributing documentati handled most of the articles in the Contribution category, with the exception of a new development article and the existing travis articles. these will be rewriten shortly. fix #463, fix #464 --- .yaspeller.json | 4 + .../Contributing/adding-new-features.md | 13 - .../content/Contributing/automated-release.md | 97 ++++-- .../content/Contributing/beginners-guide.md | 66 +++- .../content/Contributing/commitizen.md | 70 +++-- .../Contributing/community-driven-project.md | 12 +- .../Contributing/contributing-license.md | 10 +- .../contributing-to-the-project.md | 289 ++++++++++++++++++ .../Contributing/development-of-features.md | 25 ++ .../content/Contributing/elegant-logo.md | 6 +- .../Contributing/git-commit-guidelines.md | 155 ++++++---- .../content/Contributing/inviation.md | 6 +- .../content/Contributing/jinja-style.md | 8 +- .../content/Contributing/pre-commit.md | 112 +++++-- .../content/Contributing/why-look-and-feel.md | 10 +- .../content/Contributing/ya-spell-check.md | 157 ++++++++++ .../content/images/automated-release.png | Bin 0 -> 1459 bytes .../content/images/compare-changes.png | Bin 0 -> 7885 bytes .../content/images/draft-pull-request.png | Bin 0 -> 9354 bytes .../content/images/github-clone-button.png | Bin 0 -> 2036 bytes .../content/images/github-fork-button.png | Bin 0 -> 1063 bytes .../content/images/started-pull-request.png | Bin 0 -> 42727 bytes .../content/pages/landing-page-about-me.md | 5 + 23 files changed, 873 insertions(+), 172 deletions(-) delete mode 100644 documentation/content/Contributing/adding-new-features.md create mode 100644 documentation/content/Contributing/contributing-to-the-project.md create mode 100644 documentation/content/Contributing/development-of-features.md create mode 100644 documentation/content/Contributing/ya-spell-check.md create mode 100644 documentation/content/images/automated-release.png create mode 100644 documentation/content/images/compare-changes.png create mode 100644 documentation/content/images/draft-pull-request.png create mode 100644 documentation/content/images/github-clone-button.png create mode 100644 documentation/content/images/github-fork-button.png create mode 100644 documentation/content/images/started-pull-request.png diff --git a/.yaspeller.json b/.yaspeller.json index 5a89eec8..cec9d6d2 100644 --- a/.yaspeller.json +++ b/.yaspeller.json @@ -155,6 +155,7 @@ "NoDerivatives", "nofollow", "NonCommercial", + "octothorpe", "OneLink", "onelink", "organizational", @@ -190,11 +191,13 @@ "sidebars", "silverhook", "sitemap", + "situational", "Smalllike", "solarized", "SourceCodePro", "StatCounter", "statcounter", + "submitter", "sudo", "svgexport", "svgo", @@ -229,6 +232,7 @@ "xiaoweiz", "Xin", "yaml", + "yaspeller", "Yanxin", "Yue", "yuex", diff --git a/documentation/content/Contributing/adding-new-features.md b/documentation/content/Contributing/adding-new-features.md deleted file mode 100644 index 9ba88fe5..00000000 --- a/documentation/content/Contributing/adding-new-features.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -Title: Contributing New Features -Date: 2019-07-03 22:17 -Slug: contributing-new-features -Category: Contributing -authors: Talha Mansoor ---- - -If you plan to add new features to the theme, please make sure that: - -- you set sensible defaults so the theme works out of the box, without forcing the user to set any variable -- your changes do not negatively effect readability and reading experience -- your changes do not cause distraction for the reader diff --git a/documentation/content/Contributing/automated-release.md b/documentation/content/Contributing/automated-release.md index f5f6223e..5db4a3a9 100644 --- a/documentation/content/Contributing/automated-release.md +++ b/documentation/content/Contributing/automated-release.md @@ -1,42 +1,93 @@ --- -Title: Fully automated version management and publishing -Date: 2019-07-20 23:17 +Title: Automated Version Management and Publishing +Subtitle: Slug: fully-automated-version-management-and-publishing Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-20 23:17 +Summary: Elegant utilizes a 'release early, release often' philosophy that embraces a fully automated release process. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -Elegant follows "release early, release often" software development philosophy. In this regard, our release process is fully automated. +[TOC] + +The Elegant project follows a "release early, release often" software development philosophy. +By employing this philosophy, we are able to have each team member working on a different +aspect of the project with little friction from each other's changes. At any point, any team +member can pull changes that have been made in another branch to their fork of the repository +and exercise their changes with complete confidence. + +Another benefit of this philosophy if that in order to attain this goal, our release process +must be fully automated. + +## Release Versions + +Version management and publishing is accomplished using the +[semantic-release](https://github.com/semantic-release/semantic-release) tool and it's +[configuration file](https://github.com/Pelican-Elegant/elegant/blob/master/.releaserc.json). +This tool entirely removes any human intervention needed for determining how to label +the next release of the project. + +## CHANGELOG File Updates + +An integral part of the release is the generation of information to be added to the +[CHANGELOG file](https://github.com/Pelican-Elegant/elegant/blob/master/CHANGELOG.md). +By mandating that any commits for the project follow a +[mandated format for the commit messages]({filename}./git-commit-guidelines.md), +the commits being added to the release can have their commit messages scanned by a tool, +including relevant portions into the release notes. Similar to the previous paragraph on +version management, this can be accomplished without any need for human intervention. -We use [semantic-release](https://github.com/semantic-release/semantic-release) for version management and publishing. +### Example of an Automated Release -Our semantic release configuration can be viewed [here](https://github.com/Pelican-Elegant/elegant/blob/master/.releaserc.json). +Here is an example of an automated release. This is the +[Version 3.2.0](https://github.com/Pelican-Elegant/elegant/releases/tag/V3.2.0) that +was released on 30-Jul-2019. The specifics about the release can be obtained by clicking +on the 7 digit hexadecimal number below the version tag on the left side of the page, which +will take you to the [release commit](https://github.com/Pelican-Elegant/elegant/commit/48f39643edd6c3b7449af5dae8ade6323bc7c21f). -## CHANGELOG +![automated release]({static}/images/automated-release.png) -It generates the change log automatically, therefore you do not have to update the [CHANGELOG](https://github.com/Pelican-Elegant/elegant/blob/master/CHANGELOG.md). +This release can also be viewed by performing a `git log --grep=chore(release)` command and +looking for the specific release information in the logs. You can then view the specific +information for that commit by using the `git show` command with the hash for the release's +commit, `git show 48f39643edd6c3b7449af5dae8ade6323bc7c21f`. -## New Releases and Version Number +Using either process, the result will look like: -semantic-release uses the commit messages to determine the type of changes in the codebase. Following [formalized conventions for commit messages]({filename}./git-commit-guidelines.md), semantic-release automatically determines the next semantic version number, generates a changelog and publishes the release. +```text +commit 48f39643edd6c3b7449af5dae8ade6323bc7c21f +Author: semantic-release-bot +Date: Tue Jul 30 19:56:10 2019 +0000 -Here is an example of the release type that will be done based on a commit messages: + chore(release): 3.2.0 [skip ci] - + # [3.2.0](https://github.com/Pelican-Elegant/elegant/compare/V3.1.0...V3.2.0) (2019-07-30) -| Commit Message | Release Type | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | -| fix(pencil): stop graphite breaking when too much pressure applied | Patch Release | -| feat(pencil): add 'graphiteWidth' option | Minor Feature Release | -| perf(pencil): remove graphiteWidth option

BREAKING CHANGE: The graphiteWidth option has been removed.
The default graphite width of 10mm is always used for performance reasons. | Major Breaking Release | + ### Bug Fixes - + * **freelists:** open FreeLists subscription form in a new tab ([f81657c](https://github.com/Pelican-Elegant/elegant/commit/f81657c)) + * **freelists:** replace deprecated subscription form with button ([9bfe3c1](https://github.com/Pelican-Elegant/elegant/commit/9bfe3c1)), closes [#412](https://github.com/Pelican-Elegant/elegant/issues/412) + * **freelists:** rm unused include ([27f0831](https://github.com/Pelican-Elegant/elegant/commit/27f0831)) -## Test Release Process Locally + ### Features -To test semantic-release locally, + * **comments:** reduce transition duration from 500 to 200 ([b86e13d](https://github.com/Pelican-Elegant/elegant/commit/b86e13d)) + * **favicon:** add 180x180 dimension shortcut icon support ([dd2ed24](https://github.com/Pelican-Elegant/elegant/commit/dd2ed24)) + * **filter:** add black list, white list feature for Disqus ([4887aec](https://github.com/Pelican-Elegant/elegant/commit/4887aec)) + * **filter:** add black list, white list feature for FreeLists ([2407cc8](https://github.com/Pelican-Elegant/elegant/commit/2407cc8)) + * **filter:** add black list, white list feature for Mailchimp ([b96122d](https://github.com/Pelican-Elegant/elegant/commit/b96122d)) +``` -1. Install yarn -1. Run `yarn semantic-release` +In the main body of the output, there are links with associated text which are 7 digit +hexadecimal numbers. Each of these links is to a specific commit that was part of the +release. If you follow the link, you can verify that the correct text is being used for the +release notes. -It will run the all the checks and steps in dry run mode. +Additionally, there are links that are associated with text that starts with an octothorpe +(`#` character, sometimes referred to as the hash, hash-tag, or pound character) +followed by an integer. Each of these links is to an issue that was either updated or +fixed by the given commit. As with the above paragraph, you can verify that the correct +issue was associated with the commit in the release notes by following the commit links and +looking for any issue number at the end of the commit text. diff --git a/documentation/content/Contributing/beginners-guide.md b/documentation/content/Contributing/beginners-guide.md index 0a2b9999..172fe0fe 100644 --- a/documentation/content/Contributing/beginners-guide.md +++ b/documentation/content/Contributing/beginners-guide.md @@ -1,34 +1,74 @@ --- Title: Git Tips for Beginners -Date: 2019-07-03 21:57 +Subtitle: Slug: git-tips-for-beginners Category: Contributing +Tags: +Date: 2019-07-03 21:57 +Summary: This article contains a number of tips useful for working with Elegant and Git. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -Here are some tips on how to make your life with Git easier when contributing. +[TOC] + +Here are some tips we have found useful for using Git to contribute to the project. + +## How To Set Up Your Git Repository + +1. Create your own fork of Elegant by going to the project repository webpage [on GitHub](https://github.com/Pelican-Elegant/elegant) and pressing the `Fork` button. + + ![Fork Button]({static}/images/github-fork-button.png) -## How To Set Up Your Git +2. You will now be redirected to the page representing your fork of the repository. To clone the your fork of the repository to your computer, press the `Clone or download` button and follow the instructions provided. -1. Create a fork of the [Elegant repository][elegant] by clicking on the “Fork” button. -2. Clone your fork to your computer by clicking on the “Clone or download” button and following the instructions there. -3. When in the Git repository of your fork, run the following command to set the main repository as the upstream: `git remote add upstream https://github.com/Pelican-Elegant/pelican-elegant.git` + ![Clone or Download button]({static}/images/github-clone-button.png) + +3. Create a directory to host your repository in and change to that directory. Run the following command to set your forked repository as `Upstream`: + + ```text + git remote add upstream https://github.com/Pelican-Elegant/pelican-elegant.git + ``` + +## Pull Before Starting Changes + +Most of the changes that you will submit will be against the Upstream repository's `next` +branch. Whether you decide to work in your local repository's `next` branch or create a new +branch of your own, it is recommended that you do a `git pull` against the Upstream `next` +branch before starting to work on a new set of changes. This will ensure that you are starting +from a known good point, and reduce the chance of requiring a merge at a later stage. ## Updating/Rebasing to Upstream -Occasionally – often before a pull request is able to be merged – you will need to update your own (fork) repository to the upstream (i.e. [Elegant][elegant]) development (i.e. `next`) branch. This can be done as follows: +It is a good practice to update your repository to it's Upstream repository one or more times +during the development of your changes. Specifically, the `next` branch of the repository +is where most of the changes are submitted to, and you should either rebase or pull any +changes down to your local repository from there. This practice will ensure that any changes +that have been made to that Upstream branch are brought down where you can test your changes +with anyone other changes. + +To update from the `next` branch, from within your project directory, enter the following +commands: 1. `git fetch upstream next` 2. `git rebase upstream/next` ## Squash Commits & More Complex Rebasing -When creating a pull request in GitHub, you have the option to squash all commits, but sometimes you need to fix either the mess you made or some clashes that prevent a merge of the two branches. +Before you [create a pull request in GitHub](https://github.com/Pelican-Elegant/elegant/pulls), +you have the option to squash your commits into a single commit. This is often used to clean +up a series of commits where you were experimenting with something or just had to fiddle with +something to get it `just right`. + +To squash and rebase your commits, use the following command: -In both cases, the following command is your Swiss-army knife: +```text +git rebase --interactive upstream/master +``` -`git rebase --interactive upstream/master` +!!! warning -For more on the interactive rebase command of Git, see [its official documentation][git_rebase]. + As with all knives, especially Swiss-army knives, please take caution. Rebasing a repository after pushing one or more commits to another repository can be troublesome. -[git_rebase]: https://git-scm.com/docs/user-manual#interactive-rebase -[elegant]: https://github.com/Pelican-Elegant/elegant +For more on the interactive rebase command of Git, see [its official documentation](https://git-scm.com/docs/user-manual#interactive-rebase) and helper articles such as +[this article](https://makandracards.com/makandra/527-squash-several-git-commits-into-a-single-commit). diff --git a/documentation/content/Contributing/commitizen.md b/documentation/content/Contributing/commitizen.md index bf67c282..1ce06a50 100644 --- a/documentation/content/Contributing/commitizen.md +++ b/documentation/content/Contributing/commitizen.md @@ -1,58 +1,64 @@ --- -Title: Use Commitizen for Git commits +Title: How To Use Commitizen for Git Commits Subtitle: Recommended -Date: 2019-07-22 14:15 Slug: use-commitizen-for-git-commits Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-22 14:15 +Summary: Elegant uses the Commitizen tool to standardize Git commit messages across the project. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -When you commit with [Commitizen](https://github.com/commitizen/cz-cli), you'll be prompted to fill out any required commit fields at commit time. +[TOC] -## Prerequisites +The [Elegant Contribution Guidelines]({filename}./contributing-to-the-project.md) require that +each commit submitted for consideration be formatted according to the +[Git Commit Guidelines]({filename}./git-commit-guidelines.md). -### Step 1: Install NodeJS and Yarn +To make this process easier, the Elegant repository is configured to support the +[Commitizen](https://github.com/commitizen/cz-cli) tool. This tool saves time by controlling +the format of the Git commit messages to a set of predefined options and patterns. This +formatting allows for our release process to be +[fully automated]({filename}./automated-release.md). -Install [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) on your system. +## Prerequisites -If you are on Windows then try installing them with [scoop.sh](https://scoop.sh/). It saves time and makes update easier. +Both [Node.js](https://nodejs.org/en/download/) and [Yarn](https://yarnpkg.com/en/docs/install) +must be installed on your system. -### Step 2: Install Commitizen +### Step 1: Install Commitizen -Run this command from your command line terminal. +From your command line terminal, go into the directory containing your fork of the Elegant +repository, then execute the following commands: ```bash yarn global add commitizen -``` - -### Step 3: Initialize the Project - -In the root of Elegant repository, run - -```bash yarn install ``` ## Use Commitizen -We have already gone through the trouble of making Elegant repository [Commitizen friendly](https://github.com/commitizen/cz-cli#making-your-repo-commitizen-friendly). +As the Elegant team has already made the repository +[Commitizen friendly](https://github.com/commitizen/cz-cli#making-your-repo-commitizen-friendly), +you can start using it for your commits by entering `git-cz` in your command shell instead +of `git commit`. As such, you are responsible for making sure that the changes that you +want to commit to your fork are currently staged in the repository. -All you have to do is to stage your changes and then run +Once invoked, Commitizen will prompt you for answers to a number of questions. As mentioned +previously, the answers to these questions are formatted according to the +[Git Commit Guidelines]({filename}./git-commit-guidelines.md) +before being placed into the message field for the commit. Commitizen then follows through and +invokes `git commit`, committing the staged changes along with the formatted message that was +crafted for you from the answers you provided. -```bash -git-cz -``` - -It will prompt you for questions. Just answer them. Commitizen will automatically format it to conform to [Elegant Git commit guidelines]({filename}./git-commit-guidelines.md). - -If your Git commit fails for some reasons, like due to [Git hooks]({filename}./pre-commit.md), then you can fix the issue and rerun Commitizen using, - -```bash -git cz --retry -``` - -When you use `--retry`, Commitizen does not prompt for answers and reuse the answers that you last submitted. +In some cases, such as a [Git pre-commit hook failure]({filename}./pre-commit.md), you may +not want to re-answer the questions again. Once you fix the issues that prevented the +commit from happening, you can use `git-cz --retry` to submit the commit again using the same +answers that were used in the failed attempt. ## Video Demonstration +For a quick video on how this process works in real life, click on the play button below. + diff --git a/documentation/content/Contributing/community-driven-project.md b/documentation/content/Contributing/community-driven-project.md index 22c59987..d4bc8fb1 100644 --- a/documentation/content/Contributing/community-driven-project.md +++ b/documentation/content/Contributing/community-driven-project.md @@ -1,13 +1,13 @@ --- Title: Elegant grows into a community-led project -Tags: project-management +Subtitle: The beginning of a beautiful friendship +Slug: community-led-project Category: Contributing +Tags: Date: 2019-01-05 19:40 -Slug: community-led-project -Subtitle: The beginning of a beautiful friendship -Summary: Elegant has grown into a community-driven project. It also got a new website and organisational structure, culminating in its biggest release yet. +Summary: Elegant has grown into a community-driven project. It also got a new website and organizational structure, culminating in its biggest release yet. Keywords: -authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje +Authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje --- [TOC] @@ -16,7 +16,7 @@ authors: Pablo Iranzo Gómez, Talha Mansoor, Matija Šuklje [Talha Mansoor][talha131] published the first version of Elegant in 2012. It grew in popularity in a short time, due to its clean and functional style. -In November 2018, [Matija Šuklje][silverhook] called Elegant's community into a [discussion about the future of the theme][future]. Response was immense. Talha was the first to support the proposal of changing the development model from a single-developer to a community-led project. +In November 2018, [Matija Šuklje][silverhook] called Elegant's community into a [discussion about the future of the theme][future]. Response was immense. Talha was the first to support the proposal of changing the development model from a single-developer to a community-led project following the [bazaar development model](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar). [He][talha131] moved Elegant from a personal repository to a separate organization [Pelican-Elegant][elegant-org], and added active community members to the [team][team]. diff --git a/documentation/content/Contributing/contributing-license.md b/documentation/content/Contributing/contributing-license.md index 5924cfdc..45b9db53 100644 --- a/documentation/content/Contributing/contributing-license.md +++ b/documentation/content/Contributing/contributing-license.md @@ -1,13 +1,15 @@ --- Title: Contributions License -Date: 2019-07-03 22:07 +Subtitle: Slug: contribution-license Category: Contributing -authors: Talha Mansoor, Jack De Winter +Tags: +Date: 2019-07-03 22:07 +Summary: The licensing terms under which Elegant is developed. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- -TERBLEY MIZSPELT WORDZ - [TOC] By submitting a change to the project, you implicitly acknowledge that you are following diff --git a/documentation/content/Contributing/contributing-to-the-project.md b/documentation/content/Contributing/contributing-to-the-project.md new file mode 100644 index 00000000..136ac0cd --- /dev/null +++ b/documentation/content/Contributing/contributing-to-the-project.md @@ -0,0 +1,289 @@ +--- +Title: How Do I Contribute? +Subtitle: +Slug: how-to-contribute +Category: Contributing +Tags: +Date: 2019-08-04 22:17 +Summary: This article provides a sweeping overview of the Elegant contribution workflow. +Keywords: +Authors: Jack De Winter +--- + +[TOC] + +Once you have decided to [contribute to the project]({filename}./inviation.md), we need to +go over some rules and guidelines before you can start. These rules and guidelines help us +work together as a team and give us a common set of directions that keep us all on the same +page. In the case of any disagreements on what needs to be done, we can always refer to the +guidelines to help us find our way from disagreement to consensus. + +## Before We Start + +This document strives to provide a solid path through contributing a change to Elegant, from +setting up your environment to submitting and responding to a Pull Request. + +To stay focused on that solid path, additional information that is typically needed to provide +a complete picture of the topic being discussed will be presented in other articles and linked +to from this article. + +Please take the time to familiarize yourself with the information in the attached articles, +as they will help you build a complete understanding of our entire contribution process. + +## Getting The Big Rule Out of the Way + +As the project is an open source project, anything you contribute to the project is covered by +the project's [Contributions License]({filename}./contributing-license.md). If you are not +willing or unable to abide by those licenses, we cannot have you contribute to the project. + +## Primary Goal + +The primary goal of this project is to provide a theme for Pelican that provides the +[Elegant Look and Feel]({filename}./why-look-and-feel.md) to our user's websites. To that end, +any features or changes must: + +- not negatively effect readability and reading experience +- not cause distraction for the reader +- any changes must work out of the box with sensible defaults for the user + +These are not negotiable. + +## Developing Changes Locally + +The Elegant project is [hosted in GitHub](https://github.com/Pelican-Elegant/elegant) and +requires your machine to have a local [Git Client](https://git-scm.com/downloads) to +contribute. The [Git documentation site](https://git-scm.com/doc) has good instructions and +videos on how to get started with Git, as well as numerous instructional videos on +[YouTube](https://www.youtube.com/results?search_query=git+clients) to get you going. If you +are new to Git, they are a great place to start! + +### Read The Guides + +In addition to installing Git locally, we request that you take a solid look through the +following guides. The first guide, +[Git Tips For Beginners]({filename}./beginners-guide.md), is a walk through of things that our +team has found useful in the past to help get people up and going with their contributions. +While this guide is optional, pointing people at this guide has resolved a fair number of +questions in the past. + +The second guide, our team's [Git Commit Guidelines]({filename}./git-commit-guidelines.md), +is required reading for all contributors. These guidelines document the rules we require every +contributor to follow when submitting commits for consideration. + +To make things easier for contributors, the repository includes configuration to +[use Commitizen for Git commits]({filename}./commitizen.md). Entering `git-cz` on the command +line within the repository will walk you through a series of prompts to build a commit message +that is fully compliant with our guidelines. It's usage is highly recommended to avoid issues. + +### Optional Setup + +To assist you in preparing your contributions with minimal friction, you can optionally run +one or more pieces of our automated build pipeline on your local machine. Depending on the +depth and complexity of your changes, having these present on your local machine are often a +time saver in terms of detecting bugs before you submit a +[Pull Request for your changes](#submitting-a-change-for-consideration). + +Choosing to run any of these checks locally will shorten the minimum time required to notice a +failure from 3-5 minutes for them to run on the GitHub machines to an average of 60 seconds or +less for those same checks to run on your local machine. + +#### Running Pre-Commit Hooks Locally + +Facilitating the early detecting of pre-commit hook failures, an option is to install the +[Pre-commit tool]({filename}./pre-commit.md) in your local repository. With the +Pre-commit tool installed, any commits to your local Elegant repository will be subjected +to the same verification that is performed when you submit a +[Pull Request for your changes](#submitting-a-change-for-consideration). +This tool integrates with your local repository, so once installed it is automatically +executed as part of your normal `git commit` process. + +#### Running the Spell Checker Locally + +As the dictionary in the environment that you develop changes in may be different than other +contributors, the team has elected to include a the +[yaspeller tool]({filename}./ya-spell-check.md) +as part of our build pipeline. While this does not integrate with your local repository +like the Pre-commit tool, running this locally can help shorten the cycle for ensuring that +your spelling is spot on! + +## Making Your Changes to Elegant + +With all of the required, recommended and optional setup behind us, and all of the submitting +of the changes ahead of us, it is time to focus on how to develop features for Elegant. To +ensure that this topic is given the focus it requires, the article +[Developing Features For Elegant]({filename}./development-of-features.md) +is dedicated to providing that information to contributors. + +!!! note + + While this section rightfully belongs where it is in terms of workflow, it is recommended that you continue reading this article to it's end. This will allow you to understand what comes after your changes, and may influence implementtion changes to avoid possible problems later on in the workflow. + +## Submitting a Change For Consideration + +Submitting your changes is performed using the GitHub +[Pull Request feature](https://help.github.com/en/articles/creating-a-pull-request). Before +starting the Pull Request, you must push any committed changes from your local repository to +your forked Elegant repository on GitHub. Once that has been done, go to the +[Compare Changes page](https://github.com/Pelican-Elegant/elegant/compare) and click on the +`compare across forks` text right underneath the title. + +Across the top of the page, you will see 4 selection drop downs that look like this: + +![fork drop downs]({static}/images/compare-changes.png) + +These drop downs allow you to select where to compare changes from and to. Leave the first +selection alone, and unless instructed otherwise, select `next` from the second selection. +Select the name of your repository fork from the third selection, typically your GitHub account +name followed by `/Elegant`. Finally, select the branch that your changes are in on the +forked repository in the last selection. + +!!! note + + Typically, most people synchronize the branch name of their local repository with the branch name they push to on their forked repository. If you push your local changes to a different branch on your forked repository, select the name of the branch in the last selection. + +Once you confirm that the changes that are now visible at the bottom of the page are the ones +you intend to submit, press the `Create New Pull Request` button. The edit field at the +top of the page must have a name that identifies what the change is and is important to relay +the scope of your change. However, the editor field below it is where most of the required information is. + +Currently there are 2 pre-requisites steps and 3 recommended steps as requirements of every +Pull Request. If you have satisfied these requirements, change the `[ ]` text to `[x]` +indicating that you have complied with the pre-requisite. Then proceed to the `Description` at +the bottom and add a description that provides a good amount of information about what you +changed and why. If there were any reported issues that you resolved, it doesn't hurt to +mention them in this section. + +When you are done with adding that information, double check it and press the +`Create pull request` button to submit the request. + +## Building Your Changes on the GitHub Server + +After pushing the `Create pull request` button, you are transferred to another page that is +mostly the same as any other GitHub Pull Request page. The main difference is the merge +section near the bottom, where you will see something like the following: + +![image]({static}/images/started-pull-request.png) + +If the build verifies your changes, all 6 of the current checks will either have a grey box +in front of them or a green checkmark. If any of the verifications fail, they will have a +red X in front of the verification that failed. Click on the `Details` text on the right side +to get more information on why those checks failed. + +### Build Verification Actions + +To ensure each Pull Request contains solid changes, there are 3 sets of verification actions +performed on each Pull Request. + +The first set of actions are the `Header rules`, +`Mixed content`, `Pages changed`, and `Redirect rules` which are simple checks with +pre-defined rule sets. These rules employ simple rule sets looking for changes that are +outside the scope of the rest of the project, and rarely fire if you keep to the format +of the other files in the repository. + +The next verification action is the Travis CI action that performs a complete build of the +project, represented by the `continuous-integration/travis-ci/pr` action. A complete build +of the project often takes 3-5 minutes, so this is the verification action you will be +waiting on the longest. + +It is this part of the build that puts all of the changes through strict checks to make +sure that the submitted changes are solid. + +- install pre-requisites for building +- [Pre-commit]({filename}./pre-commit.md) on the project source +- [yaspeller]({filename}./ya-spell-check.md) on the project source +- publish for the documentation site +- [w3c_validator](https://pypi.org/project/Online-W3C-Validator/) on the documentation site +- [html5validator](https://pypi.org/project/html5validator/) on the documentation site + +More information on how our team uses Travis CI is detailed +[in this article]({filename}./travis-ci-and-doc-website.md). + +#### Previewing Changes + +The final verification action is a simple build and internal deploy of the +[Elegant documentation website](https://elegant.oncrashreboot.com/), represented by the +`netlify/pelicanelegant/deploy-preview` action. Clicking on the `Details` text on the +right side of the action will redirect your browser to temporary deployment of the +documentation website deployed using [Netlify](https://www.netlify.com/). If the changes +that your are submitting are documentation changes or have an impact on the look and feel +of Elegant, you should use the preview to manually verify your changes. + +!!! note + + The documentation preview is deployed to Netlify without performing a full build as detailed above, and is not dependant on the full build step. As such, you can manually verify your changes on the preview website while the full build is ongoing. + +#### View Previews For Other Pull Requests + +This Netlify temporary deployment is also useful tool that can be used to see the effects +of any Pull Request on the documentation website. For example, if we want to look at what +the effects of [Pull Request #458](https://github.com/Pelican-Elegant/elegant/pull/458) were, +we have a solid path to view those changes. + +Each of the +[recently close Pull Requests](https://github.com/Pelican-Elegant/elegant/pulls?q=is%3Apr+is%3Aclosed) +was built with Netlify support enabled. As such, if you switch from the default +`Conversation` tab to the `Checks` tab, you can see if Netlify succeeded. If it did +succeed, there will be a `View more details on Netlify` link at the bottom of the page +which will take you to the Netlify deployment of the Pull Request. At the top of the +`Deploy Log` section is a `Preview` button that will take you to the temporary deployment +of the documentation website, as if you had clicked on the `Details` link from the +Pull Request page itself. + +### What Happens If The Build Detects Errors? + +Once you fix any errors that the build detected, go through your normal verification process +and submit the changes to your forked repository. If your Pull Request is still open, when +GitHub detects that one of the repository/branch pairings in a Pull Request has been updated, +it will execute any required checks from the beginning. At that point, you are effectively +back at the +[Building Your Changes on the GitHub Server](#building-your-changes-on-the-github-server) +section above. + +This looping will continue until one of two things happen: all errors are dealt with OR you +give up. At any point before the Pull Request is accepted and merged with the main +repository, you can push the `Close pull request` button at the bottom of the page and close +the Pull Request. This will perform a "soft close" on the Pull Request, with the option to +re-open the Pull Request at a later date. + +#### Consider Using a Draft Pull Request + +If you want to make sure that your Pull Request builds on the server before submitting it for +consideration by the team, consider using a Draft Pull Request. Instead of pressing the +`Create pull request` button in the +[Building Your Changes on the GitHub Server](#building-your-changes-on-the-github-server) +section, click on the arrow on the right side of the button and select +`Create draft pull request`. + +![draft pull request]({static}/images/draft-pull-request.png) + +A draft request is exactly like a normal Pull Request except that it is not visible to anyone +other than yourself. In this way, you can make sure the Pull Request is exactly the way +you want it before asking for it to be considered part of the project. + +Something that is often forgotten about Pull Requests, and therefore Draft Pull Requests, is +that you can edit most of the contents of the Pull Request after you have created it. Use this +to your advantage as you get your Pull Request ready! + +### What Happens If Team Members Ask For Changes? + +As we are a team, when changes are submitted for consideration, the team will offer feedback +on the changes. The feedback will generally fall into 3 categories: yes, no, or almost. + +With the "yes" category, the changes will be accepted "as is" into the project. + +Conversely, in the "no" category, the changes are rejected, usually with a decent description +of why they were rejected. Depending on the rejection reason, it may be possible to adjust +your changes according to feedback in the rejection reason and submit it as a new Pull Request +at a later date. + +In the "almost" category, the feedback will usually contain specific things that one or more of +the team members want to see changed before it can be merged. This feedback can be a simple +as a grammar error they want to see fixed, or asking for a more complete article documenting +how to use your changes. The important part to note about this category is that the team +feels that after the suggested changes have been performed, you can easily move to the "yes" +category. + +Regardless of what category the feedback for your changes falls into, please remember that we +are a team and we are at our best when we work together. If you have a disagreement, ask for +clarifications and initiate a conversation to understand where the reviewer of the Pull Request +is coming from. Work with that person to help yourself see their viewpoint. diff --git a/documentation/content/Contributing/development-of-features.md b/documentation/content/Contributing/development-of-features.md new file mode 100644 index 00000000..70f2d2ae --- /dev/null +++ b/documentation/content/Contributing/development-of-features.md @@ -0,0 +1,25 @@ +--- +Title: Developing Features For Elegant +Subtitle: +Slug: developing-for-elegant +Category: Contributing +Tags: +Date: 2019-07-22 23:17 +Summary: Elegant development is typically broken up into three concerns. This article talks about each of them. +Keywords: +Authors: Jack De Winter +--- + +!!! note + + this document is under construction + +In most cases, this default is to have any configuration variables that support +those changes have a value of `None`. There is a bit more leeway given for supporting plugins, +which are [covered below](#extending), but even Elegant enhancement to support those plugins +must follow these rules. + +- [Jinja Style]({filename}./jinja-style.md) +- [Live Reload]({filename}./live-reload.md) +- [Live Reload With Python]({filename}./live-reload-python.md) +- [Live Reload With Gulp]({filename}./live-reload-gulp.md) diff --git a/documentation/content/Contributing/elegant-logo.md b/documentation/content/Contributing/elegant-logo.md index 21db913a..4d5c8f35 100644 --- a/documentation/content/Contributing/elegant-logo.md +++ b/documentation/content/Contributing/elegant-logo.md @@ -1,8 +1,12 @@ --- Title: Elegant Logo -Date: 2019-07-22 21:17 +Subtitle: Slug: elegant-logo Category: Contributing +Tags: +Date: 2019-07-22 21:17 +Summary: This article provides details on how the current Elegant logo was created. +Keywords: Authors: Talha Mansoor --- diff --git a/documentation/content/Contributing/git-commit-guidelines.md b/documentation/content/Contributing/git-commit-guidelines.md index 22c4d58c..97fbe614 100644 --- a/documentation/content/Contributing/git-commit-guidelines.md +++ b/documentation/content/Contributing/git-commit-guidelines.md @@ -1,111 +1,150 @@ --- Title: Git Commit Guidelines Subtitle: Mandatory -Date: 2019-07-20 23:17 Slug: git-commit-guidelines Category: Contributing -Authors: Talha Mansoor +Tags: +Date: 2019-07-20 23:17 +Summary: Elegant has a mandatory Git commit message format that is described here. +Keywords: +Authors: Talha Mansoor, Jack De Winter --- [TOC] -Elegant release process is [fully automated]({filename}./automated-release.md). It only works if all commit messages adhere to the set rules. +The Elegant release process is [fully automated]({filename}./automated-release.md). To make +this work, all commit message must adhere to a given set of rules. + +## Why Have Commit Message Rules? -Why? +From the [semantic-release project](https://github.com/semantic-release/semantic-release#commit-message-format): > semantic-release uses the commit messages to determine the type of changes in the codebase. Following formalized conventions for commit messages, semantic-release automatically determines the next semantic version number, generates a changelog and publishes the release. -Basically, semantic-release goes through the commit messages, parses them and on its bases makes the decisions of publishing new release and new version number. +What does that mean? It means that semantic-release parses the commit messages to arrive +at a unbiased version number for a new release, and then creates that new release. This +allows for a new release to be put together with little human involvement. + +## What are those rules? + +The Elegant development team chose to use the +[Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines) +as the baseline for the team's commit message conventions. -What are those rules? +Our conventions are largely derived from the Angular team's guidelines +[as documented here](https://gist.github.com/stephenparish/9941e89d80e2bc58a153). -Elegant development team chose to use [Angular Commit Message Conventions](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines). +### Is There Something to Help Me With The Rules? -Following portion is largely derived from their [guidelines](https://gist.github.com/stephenparish/9941e89d80e2bc58a153). +Reading, understanding, and then getting used to following guidelines may take time. Even +then, if you are in a hurry, you can sometimes forget what the rules are. It's only human. -!!! Tip "Use Commitizen" +Our team has found life easier since we started using +[Commitizen for Git commits]({filename}./commitizen.md). +Our project includes configuration for Commitizen that automatically formats each commit +message to conform to our guidelines by walking you through a series of prompts. When you +finish those prompts, a new commit messages is authored for you with the information from those +prompts, following all of the rules in the following sections on the Commit Message Format. - Reading, understanding and then getting used to following guidelines may take sometime. +!!! tip - Make your life easier and [use Commitizen for Git commits]({filename}./commitizen.md). - It automatically formats the commit message to conform to our guidelines. + Use Commitizen. It does make life easier. ## Commit Message Format -Each commit message consists of a **header**, a **body** and a **footer**. The header has a special -format that includes a **type**, a **scope** and a **subject**: +Each line of the commit message must be shorter than 101 characters! This allows the message +to be easier to read on GitHub as well as in various git tools. + +Each commit message consists of a **header**, a **body** and a **footer**, as follows: ```text -(): +