Browse Source

make hugo-snap-gallery a submodule

max.mehl 5 months ago
parent
commit
33840acd18
No account linked to committer's email address

+ 3
- 0
.gitmodules View File

@@ -1,3 +1,6 @@
1 1
 [submodule "themes/hugo-cloak-email"]
2 2
 	path = themes/hugo-cloak-email
3 3
 	url = https://github.com/martignoni/hugo-cloak-email.git
4
+[submodule "themes/hugo-snap-gallery"]
5
+	path = themes/hugo-snap-gallery
6
+	url = https://src.mehl.mx/mxmehl/hugo-snap-gallery

+ 1
- 0
themes/hugo-snap-gallery

@@ -0,0 +1 @@
1
+Subproject commit 51e757b5270f5b42ff7b5e7364cd032fad35b1a5

+ 0
- 181
themes/hugo-snap-gallery/README.md View File

@@ -1,181 +0,0 @@
1
-# hugo-easy-gallery
2
-
3
-**2019-01-20: I'm looking for people to help maintain this project - e.g. review and approve pull requests, which I no longer have time to do. Please contact me if you are interested. Thanks!**
4
-
5
-Automagical css image gallery in [Hugo](https://gohugo.io/) using shortcodes, with optional lightbox/carousel gadget using [PhotoSwipe](http://photoswipe.com/) and jQuery.
6
-
7
-**New:** Create a gallery of all images in a directory with just one line of shortcode, see [demo](https://www.liwen.id.au/heg/#gallery-usage).
8
-
9
-**Need help?**
10
-- Post your question at https://github.com/liwenyip/hugo-easy-gallery/issues.
11
-- Include a link to a test page that demonstrates the issue you are having
12
-- Include your source code for the test page
13
-- Please be patient (I have a busy day job as that has nothing to do with web development or computer science, so every time I look at issues/PRs it takes me a while to get back up to speed); I will respond eventually. Please DO NOT email me asking for help, you are very unlikely to get a response from me this way.
14
-
15
-**Fixed an issue or made an improvement?**
16
-- Please submit a pull request
17
-- Include a link to a test page
18
-- Include your source code for the test page
19
-- Let me know if you are in Sydney and I will thank you with beer :-)
20
-
21
-## Demo
22
-
23
-- Feature demonstration at https://www.liwen.id.au/heg/
24
-- Real-life example at https://www.liwen.id.au/arduino-rf-codes/
25
-
26
-## Image Gallery Features
27
-
28
-- Custom `{{< figure >}}` shortcode that enables new features but is backwards-compatible with Hugo's built-in `{{< figure >}}`shortcode
29
-- Use the `{{< figure >}}` shortcode by itself to enable pretty captions
30
-- Put multiple `{{< figure >}}` shortcodes inside a `{{< gallery >}}` to create a pretty image gallery
31
-- **Point `{{< gallery >}}` at a directory to generate a gallery of all images in that directory**
32
-- Gallery is responsive, images are scaled/cropped to fill square (or other evenly-sized) tiles
33
-- Pretty captions appear/slide/fade upon hovering over the image 
34
-- Optionally make gallery images zoom, grow, shrink, slide up, or slide down upon hover
35
-- Only requires 3.6kB of CSS (unminified; you can minify it if you want)
36
-- CSS is automatically loaded the first time you use the `{{< figure >}}` shortcode on each page
37
-
38
-## PhotoSwipe Features
39
-
40
-- Load PhotoSwipe by calling the `{{< load-photoswipe >}}` shortcode anywhere in your post
41
-- Loads all of the `<figure>` elements in your post, regardless of where in your post they appear, into a lightbox/carousel style image gallery
42
-- Works with any existing `<figure>` elements/shortcodes in your posts
43
-- Does not require you to [pre-define the image sizes](http://photoswipe.com/documentation/faq.html#image-size) (the initialisation script pre-loads the image to determine its size; you can optionally pre-define the image size if you want to avoid this pre-loading)
44
-- Loads PhotoSwipe js and css libraries from `cdnjs.cloudflare.com`
45
-
46
-## Installation
47
-Put files in following places:
48
-
49
-- /layouts/shortcodes/figure.html
50
-- /layouts/shortcodes/gallery.html
51
-- /layouts/shortcodes/load-photoswipe.html
52
-- /static/js/load-photoswipe.js
53
-- /static/css/hugo-easy-gallery.css
54
-
55
-**NB `load-photoswipe.html` loads jQuery from `cdnjs.cloudflare.com`.**
56
-
57
-- If your template already loads jQuery in the header, you can delete the jQuery link in `load-photoswipe.html`.
58
-- If your template already loads jQuery in the footer,  you should `load-photoswipe.js` from the footer instead of in `load-photoswipe.html`.
59
-
60
-If you want, you could (depending on a front matter param) conditionally load `load-photoswipe.html` or its contents from the footer of your template.  But I've consciously chosen to load PhotoSwipe using a shortcode so that you don't have to modify your template if you don't want to.
61
-
62
-## Theme integration
63
-
64
-Put files in the relevant folders within your theme.
65
-
66
-Delete `/layouts/shortcodes/load-photoswipe.html`.
67
-
68
-Rename `/layouts/shortcodes/load-photoswipe-theme.html` to `/layouts/shortcodes/load-photoswipe.html`.
69
-
70
-Add the following lines to the footer of your template, just before `</body>`:
71
-
72
-(Omit the jQuery line if jQuery is already loaded elsewhere in your template; just make sure that jQuery is loaded **before** this code.)
73
-
74
-```html
75
-<!-- Load PhotoSwipe js if the load-photoswipe shortcode has been used -->
76
-{{ if ($.Scratch.Get "photoswipeloaded") }}
77
-<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
78
-<script src="/js/load-photoswipe.js"></script>
79
-<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js" integrity="sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=" crossorigin="anonymous"></script>
80
-<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js" integrity="sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=" crossorigin="anonymous"></script>
81
-{{ end }}
82
-```
83
-
84
-## `{{< figure >}}` shortcode usage
85
-
86
-Specifying your image files:
87
-
88
-- `{{< figure src="thumb.jpg" link="image.jpg" >}}` will use `thumb.jpg` for thumbnail and `image.jpg` for lightbox
89
-- `{{< figure src="image.jpg" >}}` or `{{< figure link="image.jpg" >}}` will use `image.jpg` for both thumbnail and lightbox
90
-- `{{< figure link="image.jpg" thumb="-small" >}}` will use `image-small.jpg` for thumbnail and `image.jpg` for lightbox
91
-
92
-Optional parameters:
93
-
94
-- All the [features/parameters](https://gohugo.io/extras/shortcodes) of Hugo's built-in `figure` shortcode work as normal, i.e. src, link, title, caption, class, attr (attribution), attrlink, alt
95
-- `size` (e.g. `size="1024x768"`) pre-defines the image size for PhotoSwipe. Use this option if you don't want to pre-load the linked image to determine its size.
96
-- `class` allows you to set any custom classes you want on the `<figure>` tag.
97
-
98
-Optional parameters for standalone `{{< figure >}}` shortcodes only (i.e. don't use on `{{< figure >}}` inside `{{< gallery >}}` - strange things may happen if you do): 
99
-
100
-- `caption-position` and `caption-effect` work the same as for the `{{< gallery >}}` shortcode (see below). 
101
-- `width` defines the [`max-width`](https://www.w3schools.com/cssref/pr_dim_max-width.asp) of the image displayed on the page. If using a thumbnail for a standalone figure, set this equal to your thumbnail's native width to make the captions behave properly (or feel free to come up with a better solution and submit a pull request :-)). Also use this option if you don't have a thumbnail and you don't want the hi-res image to take up the entire width of the screen/container. 
102
-- `class="no-photoswipe"` prevents a `<figure>` from being loaded into PhotoSwipe. If you click on the figure you'll instead a good ol' fashioned hyperlink to a bigger image (or - if you haven't specified a bigger image - the same one).
103
-
104
-## `{{< gallery >}}` shortcode usage
105
-
106
-To specify a directory of image files:
107
-
108
-```
109
-{{< gallery dir="/img/your-directory-of-images/" />}}`
110
-```
111
-
112
-- The images are automatically captioned with the file name.
113
-- `[image].jpg` is used for the hi-res image, and `[image]-thumb.jpg` is used for the thumbnails.
114
-- If `[image]-thumb.jpg` doesn't exist, then `[image].jpg` will be used for both hi-res and thumbnail images.
115
-- The default thumbnail suffix is `-thumb`, but you can specify a different one e.g. `thumb="-small"` or `thumb="_150x150"`.
116
-
117
-To specify individual image files:
118
-
119
-```
120
-{{< gallery >}}
121
-  {{< figure src="image1.jpg" >}}
122
-  {{< figure src="image2.jpg" >}}
123
-  {{< figure src="image3.jpg" >}}
124
-{{< /gallery >}}
125
-```
126
-
127
-Optional parameters:
128
-
129
-- `caption-position` - determines the captions' position over the image. Options:
130
-  - `bottom` (default)
131
-  - `center`
132
-  - `none` hides captions on the page (they will only show in PhotoSwipe)
133
-- `caption-effect` - determines if/how captions appear upon hover. Options:
134
-  - `slide` (default)
135
-  - `fade`
136
-  - `none` (captions always visible)
137
-- `hover-effect` - determines if/how images change upon hover. Options:
138
-  - `zoom` (default)
139
-  - `grow`
140
-  - `shrink`
141
-  - `slideup`
142
-  - `slidedown`
143
-  - `none`
144
-- `hover-transition` - determines if/how images change upon hover. Options:
145
-  - not set - smooth transition (default)
146
-  - `none` - hard transition
147
-
148
-## PhotoSwipe usage
149
-
150
-- Call `{{< load-photoswipe >}}` **once** on each page where you want to use PhotoSwipe.
151
-- It doesn't matter where on the page.
152
-- If you don't load PhotoSwipe, each figure will instead have a good ol' fashioned hyperlink to a bigger image (or - if you haven't specified a bigger image - the same one).
153
-
154
-You can optionally have different captions on page vs in PhotoSwipe:
155
-
156
-- `{{< figure src="image.jpg" alt="This is a caption">}}` or `{{< figure src="image.jpg" caption="This is a caption">}}` will use the same caption both on the page and in PhotoSwipe.
157
-- `{{< figure src="image.jpg" caption="A short caption" alt="This is a much longer, verbose, comprehensive caption that will be used in PhotoSwipe">}}` will use a different caption in PhotoSwipe.
158
-
159
-## CSS Hackers
160
-
161
-`hugo-easy-gallery.css` is designed to provide square tiles in a container with `max-width: 768px`.
162
-
163
-Here are some pointers if you want to adapt the CSS:
164
-
165
- - Change `.gallery {max-width: 768px;}` if you want a gallery wider than 768px.
166
- - Change `min-width` in the `@media` styles to change the screen widths at which the layout changes
167
- - Change `min-width: 9999px` in the last `@media` style to something sensible if you want to use a 4-tile layout
168
- - If you want more than 4 tiles per row, set `width` = 100% / number of tiles per row
169
- - `padding-bottom` = `width` gives square tiles. Change padding-bottom if you want some other aspect ratio, e.g. `width: 33.3%; padding-bottom: 25%` gives a 4:3 aspect ratio.
170
-
171
-## Issues
172
-
173
-I've tested this with the [beautifulhugo](https://github.com/halogenica/beautifulhugo) theme. If things don't work properly with other themes, raise an issue on GitHub, or even better fix the issue and submit a pull request :-)
174
-
175
-## Credits
176
-
177
-These blog posts helped me immensely:
178
-
179
-- http://www.dwuser.com/education/content/creating-responsive-tiled-layout-with-pure-css/
180
-- http://www.thehome.dk/article/photoswipe-gallery-hugo/
181
-- https://webdesign.tutsplus.com/tutorials/the-perfect-lightbox-using-photoswipe-with-jquery--cms-23587

+ 0
- 32
themes/hugo-snap-gallery/layouts/shortcodes/figure.html View File

@@ -1,32 +0,0 @@
1
-<!--
2
-  SPDX-FileCopyrightText: 2019 Li-Wen Yip <liwen.yip@gmail.com>
3
-  SPDX-License-Identifier: MIT
4
-
5
-  Put this file in /layouts/shortcodes/figure.html
6
-  NB this overrides Hugo's built-in "figure" shortcode but is backwards compatible
7
-  Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
8
--->
9
-<!-- count how many times we've called this shortcode; load the css if it's the first time -->
10
-{{- if not ($.Page.Scratch.Get "figurecount") }}<link rel="stylesheet" href="/css/snap-gallery.css" />{{ end }}
11
-{{- $.Page.Scratch.Add "figurecount" 1 -}}
12
-<!-- use either src or link-thumb for thumbnail image -->
13
-{{- $thumb := .Get "src" | default (printf "%s." (.Get "thumb") | replace (.Get "link") ".") }}
14
-<div class="box{{ with .Get "caption-position" }} fancy-figure caption-position-{{.}}{{end}}{{ with .Get "caption-effect" }} caption-effect-{{.}}{{end}}" {{ with .Get "width" }}style="max-width:{{.}}"{{end}}>
15
-  <figure {{ with .Get "class" }}class="{{.}}"{{ end }} itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
16
-    <div class="img"{{ if .Parent }} style="background-image: url('{{ $thumb | relURL }}');"{{ end }}{{ with .Get "size" }} data-size="{{.}}"{{ end }}>
17
-      <img itemprop="thumbnail" src="{{ $thumb | relURL }}" {{ with .Get "alt" | default (.Get "caption") }}alt="{{.}}"{{ end }}/><!-- <img> hidden if in .gallery -->
18
-    </div>
19
-    {{ with .Get "link" | default (.Get "src") }}<a href="{{.}}" itemprop="contentUrl"></a>{{ end }}
20
-    {{- if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
21
-      <figcaption>
22
-        {{- with .Get "title" }}<h4>{{.}}</h4>{{ end }}
23
-        {{- if or (.Get "caption") (.Get "attr")}}
24
-          <p>
25
-            {{- .Get "caption" -}}
26
-            {{- with .Get "attrlink"}}<a href="{{.}}">{{ .Get "attr" }}</a>{{ else }}{{ .Get "attr"}}{{ end -}}
27
-          </p>
28
-        {{- end }}
29
-      </figcaption>
30
-    {{- end }}
31
-  </figure>
32
-</div>

+ 0
- 44
themes/hugo-snap-gallery/layouts/shortcodes/gallery.html View File

@@ -1,44 +0,0 @@
1
-<!--
2
-  SPDX-FileCopyrightText: 2019 Li-Wen Yip <liwen.yip@gmail.com>
3
-  SPDX-License-Identifier: MIT
4
-
5
-  Put this file in /layouts/shortcodes/gallery.html
6
-  Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
7
--->
8
-<!-- count how many times we've called this shortcode; load the css if it's the first time -->
9
-<link rel="stylesheet" href="/css/snap-gallery.css" />
10
-{{- $.Page.Scratch.Add "figurecount" 1 }}
11
-{{ $baseURL := .Site.BaseURL }}
12
-<div class="gallery caption-position-{{ with .Get "caption-position" | default "bottom" }}{{.}}{{end}} caption-effect-{{ with .Get "caption-effect" | default "slide" }}{{.}}{{end}} hover-effect-{{ with .Get "hover-effect" | default "zoom" }}{{.}}{{end}} {{ if ne (.Get "hover-transition") "none" }}hover-transition{{end}}" itemscope itemtype="http://schema.org/ImageGallery">
13
-	{{- with (.Get "dir") -}}
14
-		<!-- If a directory was specified, generate figures for all of the images in the directory -->
15
-		{{- $files := readDir (print "/static/" .) }}
16
-		{{- range $files -}}
17
-			<!-- skip files that aren't images, or that inlcude the thumb suffix in their name -->
18
-			{{- $thumbext := $.Get "thumb" | default "-thumb" }}
19
-			{{- $isthumb := .Name | findRE ($thumbext | printf "%s\\.") }}<!-- is the current file a thumbnail image? -->
20
-			{{- $isimg := lower .Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp)" }}<!-- is the current file an image? -->
21
-			{{- if and $isimg (not $isthumb) }}
22
-				{{- $caption :=  .Name | replaceRE "\\..*" "" | humanize }}<!-- humanized filename without extension -->
23
-				{{- $linkURL := print $baseURL ($.Get "dir") "" .Name | absURL }}<!-- absolute URL to hi-res image -->
24
-				{{- $thumb := .Name | replaceRE "(\\.)" ($thumbext | printf "%s.") }}<!-- filename of thumbnail image -->
25
-				{{- $thumbexists := where $files "Name" $thumb }}<!-- does a thumbnail image exist? --> 
26
-				{{- $thumbURL := print $baseURL ($.Get "dir") "/" $thumb | absURL }}<!-- absolute URL to thumbnail image -->
27
-				<div class="box">
28
-				  <figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
29
-				    <div class="img" style="background-image: url('{{ if $thumbexists }}{{ $thumbURL }}{{ else }}{{ $linkURL }}{{ end }}');" >
30
-				      <img itemprop="thumbnail" src="{{ if $thumbexists }}{{ $thumbURL }}{{ else }}{{ $linkURL }}{{ end }}" alt="{{ $caption }}" /><!-- <img> hidden if in .gallery -->
31
-				    </div>
32
-			      <figcaption>
33
-		          <p>{{ $caption }}</p>
34
-			      </figcaption>
35
-				    <a href="{{ $linkURL }}" itemprop="contentUrl" class="hiddenlink" target="_blank"></a><!-- put <a> last so it is stacked on top -->
36
-				  </figure>
37
-				</div>
38
-			{{- end }}
39
-		{{- end }}
40
-	{{- else -}}
41
-		<!-- If no directory was specified, include any figure shortcodes called within the gallery -->
42
-	  {{ .Inner }}
43
-	{{- end }}
44
-</div>

+ 0
- 164
themes/hugo-snap-gallery/static/css/snap-gallery.css View File

@@ -1,164 +0,0 @@
1
-/*
2
-  SPDX-FileCopyrightText: 2019 Li-Wen Yip <liwen.yip@gmail.com>
3
-  SPDX-License-Identifier: MIT
4
-
5
-  Put this file in /static/css/hugo-easy-gallery.css
6
-  Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
7
-*/
8
-
9
-
10
-/*
11
-Grid Layout Styles
12
-*/
13
-.gallery {
14
-    overflow: hidden;
15
-    margin: 10px;
16
-    max-width: 768px;
17
-    display: flex;
18
-    flex-wrap: wrap;
19
-}
20
-.gallery .box {
21
-    float: left;
22
-    position: relative;
23
-    /* Default: 1 tile wide */
24
-    width: 100%;
25
-    padding-bottom: 100%;
26
-    margin: 0 auto;
27
-}
28
-@media only screen and (min-width : 365px) {
29
-    /* Tablet view: 2 tiles */
30
-    .gallery .box {
31
-        width: 50%;
32
-        padding-bottom: 50%;
33
-    }
34
-}
35
-@media only screen and (min-width : 480px) {
36
-    /* Small desktop / ipad view: 3 tiles */
37
-    .gallery .box {
38
-        width: 33.3%;
39
-        padding-bottom: 33.3%; /*  */
40
-    }
41
-}
42
-@media only screen and (min-width : 9999px) {
43
-   /* Medium desktop: 4 tiles */
44
-   .box {
45
-      width: 25%;
46
-      padding-bottom: 25%;
47
-   }
48
-}
49
-
50
-/*
51
-Transition styles
52
-*/
53
-.gallery.hover-transition figure,
54
-.gallery.hover-effect-zoom .img, 
55
-.gallery:not(.caption-effect-appear) figcaption,
56
-.fancy-figure:not(.caption-effect-appear) figcaption {
57
-    -webkit-transition: all 0.3s ease-in-out;
58
-    -moz-transition: all 0.3s ease-in-out;
59
-    -o-transition: all 0.3s ease-in-out;
60
-    transition: all 0.3s ease-in-out;
61
-}
62
-/*
63
-figure styles
64
-*/
65
-figure {
66
-    position:relative; /* purely to allow absolution positioning of figcaption */
67
-    overflow: hidden;
68
-}
69
-.gallery figure {
70
-    position: absolute;
71
-    left: 5px;
72
-    right: 5px;
73
-    top: 5px;
74
-    bottom: 5px;
75
-}
76
-.gallery.hover-effect-grow figure:hover {
77
-    transform: scale(1.05);
78
-}
79
-.gallery.hover-effect-shrink figure:hover {
80
-    transform: scale(0.95);
81
-}
82
-.gallery.hover-effect-slidedown figure:hover {
83
-    transform: translateY(5px);
84
-}
85
-.gallery.hover-effect-slideup figure:hover {
86
-    transform: translateY(-5px);
87
-}
88
-
89
-/*
90
-img / a styles
91
-*/
92
-
93
-.gallery .img {
94
-    position: absolute;
95
-    left: 0;
96
-    right: 0;
97
-    top: 0;
98
-    bottom: 0;
99
-    background-size: cover;
100
-    background-position: 50% 50%;
101
-    background-repeat: no-repeat;
102
-}
103
-.gallery.hover-effect-zoom figure:hover .img {
104
-    transform: scale(1.05);
105
-}
106
-.gallery img {
107
-    display: none; /* only show the img if not inside a gallery */
108
-}
109
-figure a {
110
-    position: absolute;
111
-    left: 0;
112
-    right: 0;
113
-    top: 0;
114
-    bottom: 0;
115
-}
116
-
117
-/*
118
-figcaption styles
119
-*/
120
-.gallery figcaption,
121
-.fancy-figure figcaption {
122
-    position: absolute;
123
-    bottom: 0;
124
-    left: 0;
125
-    right: 0;
126
-    background: #000;
127
-    color: #FFF;
128
-    text-align: center;
129
-    font-size: 75%; /* change this if you want bigger text */
130
-    background: rgba(0, 0, 0, 0.5);
131
-    opacity: 1;
132
-    cursor: pointer;
133
-}
134
-.gallery.caption-position-none figcaption,
135
-.fancy-figure.caption-position-none figcaption  {
136
-    display: none;
137
-}
138
-.gallery.caption-position-center figcaption,
139
-.fancy-figure.caption-position-center figcaption {
140
-    top: 0;
141
-    padding: 40% 5px;
142
-}
143
-.gallery.caption-position-bottom figcaption,
144
-.fancy-figure.caption-position-bottom figcaption {
145
-    padding: 5px;
146
-}
147
-.gallery.caption-effect-fade figure:not(:hover) figcaption,
148
-.gallery.caption-effect-appear figure:not(:hover) figcaption,
149
-.fancy-figure.caption-effect-fade figure:not(:hover) figcaption,
150
-.fancy-figure.caption-effect-appear figure:not(:hover) figcaption {
151
-    background: rgba(0, 0, 0, 0);
152
-    opacity: 0;
153
-}
154
-.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption,
155
-.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption {
156
-    margin-bottom: -100%;
157
-}
158
-.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption,
159
-.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption  {
160
-    top: 100%;
161
-}
162
-figcaption p {
163
-    margin: auto; /* override style in theme */
164
-}

+ 0
- 14
themes/hugo-snap-gallery/theme.yaml View File

@@ -1,14 +0,0 @@
1
-name: Snap Gallery
2
-license: MIT
3
-licenselink: 
4
-description: Automagical css image gallery in Hugo using shortcodes. Fork of https://github.com/liwenyip/hugo-easy-gallery
5
-homepage: 
6
-tags:
7
-  - component
8
-features:
9
-  - comments
10
-min_version: 0.40.0
11
-
12
-author:
13
-  name: Li-Wen Yip, Max Mehl
14
-  homepage: 

Loading…
Cancel
Save