feat(partials): implement LQIP renderer with WebP

This commit is contained in:
kdevo
2021-10-09 16:08:28 +02:00
parent c824db3108
commit ebc898b8e3
4 changed files with 36 additions and 9 deletions
+4
View File
@@ -3,6 +3,10 @@
display: none;
}
.no-js source.lazyload {
display: none;
}
/* Hides broken image icon which may shortly be disaplayed on load */
img.lazyload:not([src]) {
visibility: hidden;
+13 -2
View File
@@ -28,5 +28,16 @@
{{ warnf $usage }}
{{ end }}
{{ $sizes := partial (printf "resizer/%s" $params.resizer) $params }}
{{ return (partial (printf "renderer/%s" $params.renderer) (merge (dict "imgDict" $sizes) $params)) }}
{{/* Special handling for WebP renderers: */}}
{{ if in $params.renderer "webp" }}
{{/* Override user-supplied target format */}}
{{ $resizeOptionsWebP := printf "%s webp" ($params.resizeOptions | replaceRE "(jpg|png|tif|bmp|gif)" "") }}
{{ $paramsWebP := merge $params (dict "resizeoptions" $resizeOptionsWebP) }}
{{ $imagesWebP := partial (printf "resizer/%s" $params.resizer) $paramsWebP }}
{{ $imagesRegular := partial (printf "resizer/%s" $params.resizer) $params }}
{{ partial (printf "renderer/%s" $params.renderer) (merge $params (dict "imgDict" $imagesWebP "imgDictFallback" $imagesRegular)) }}
{{ else }}
{{ $sizes := partial (printf "resizer/%s" $params.resizer) $params }}
{{ partial (printf "renderer/%s" $params.renderer) (merge $params (dict "imgDict" $sizes)) }}
{{ end }}
@@ -1,7 +0,0 @@
<picture>
<!-- TODO(kdevo): load webp images -->
<source type="image/webp"
srcset="
URL 100w,
URL 200w">
</picture>
+19
View File
@@ -0,0 +1,19 @@
{{ $class := .class }}
{{ $noscriptSupport := .noscript }}
{{ $imgDict := .imgDict }}
{{ $imgDictFallback := .imgDictFallback }}
<picture>
<source type="image/webp"
{{- with $imgDict.lqip -}}
{{- $placeholderB64 := .Content | base64Encode -}}
{{- if gt (len $placeholderB64) 2048 }}
srcset="{{ .Permalink }}"
{{- else }}
srcset="data:{{ .MediaType }};base64,{{ $placeholderB64 }}"
{{- end }}
{{- end -}}
{{- with (default $imgDict.default $imgDict.lqip) }} height="{{ .Height }}" width="{{ .Width }}" {{- end -}}
{{- if $imgDict.responsive -}}{{ with partial "renderer/_srcset" $imgDict }} data-sizes="auto" data-srcset="{{ . }}"{{- end }} {{- end -}}>
{{ partial "renderer/lqip" (merge . (dict "imgDict" $imgDictFallback)) }}
</picture>