mirror of
https://github.com/gethinode/hinode.git
synced 2025-10-17 15:03:20 +00:00
63 lines
2.8 KiB
HTML
63 lines
2.8 KiB
HTML
<!--
|
|
Render a local or remote image with responsive image sizing. Images are resized using default media breakpoints
|
|
and are converted to webp format. The image is processed using the quality setting specified in the [imaging]
|
|
section of the main config file (defaults to 75). A fallback image is provided for older browsers. The partial
|
|
supports the following arguments:
|
|
"src": Required relative url of the image, e.g. "img/example.jpg"
|
|
"ratio": Optional ratio of the image, either "1x1", "3x2", "4x3", "16x9", or "21x9". Leave empty to keep the
|
|
original aspect ratio of the image.
|
|
"portrait": Optional flag to adjust the ratio from landscape to portrait. The image itself is not rotated, only
|
|
the crop area is adjusted.
|
|
"wrapper": Optional class attributes of the wrapper element, e.g. "mx-auto".
|
|
"class": Optional class attribute of the inner img element, e.g. "rounded".
|
|
"title": Optional alternate text of the image.
|
|
"caption": Optional figure caption.
|
|
"mode": Optional flag indicating if the image should support color modes.
|
|
-->
|
|
|
|
{{- if isset .Params "src" -}}
|
|
{{ $url := .Get "src" | default "" -}}
|
|
{{- $validRatios := slice "1x1" "3x2" "4x3" "16x9" "21x9" -}}
|
|
{{ $ratio := .Get "ratio" | default "" -}}
|
|
{{ if $ratio -}}
|
|
{{ if not (in $validRatios $ratio) -}}
|
|
{{ errorf "Invalid value for param 'ratio': %s" .Position -}}
|
|
{{ end -}}
|
|
{{ end -}}
|
|
|
|
{{- $class := .Get "class" | default "" -}}
|
|
{{- $wrapper := .Get "wrapper" | default "" -}}
|
|
{{ $title := .Get "title" | default "" -}}
|
|
{{ $caption := .Get "caption" | default "" -}}
|
|
{{ $supportedFlags := slice "true" "false" -}}
|
|
{{ $modeParam := "false" -}}
|
|
{{ $mode := false -}}
|
|
{{ with .Get "mode" }}{{ $modeParam = . }}{{ end -}}
|
|
{{ if in $supportedFlags $modeParam -}}
|
|
{{ if eq $modeParam "true" }}{{ $mode = true }}{{ else }}{{ $mode = false }}{{ end -}}
|
|
{{ else -}}
|
|
{{ errorf "Invalid value for param 'mode': %s" $modeParam -}}
|
|
{{ end -}}
|
|
{{ $portraitParam := "false" -}}
|
|
{{ $portrait := false -}}
|
|
{{ with .Get "portrait" }}{{ $portraitParam = . }}{{ end -}}
|
|
{{ if in $supportedFlags $portraitParam -}}
|
|
{{ if eq $portraitParam "true" }}{{ $portrait = true }}{{ else }}{{ $portrait = false }}{{ end -}}
|
|
{{ else -}}
|
|
{{ errorf "Invalid value for param 'portrait': %s" $portraitParam -}}
|
|
{{ end -}}
|
|
|
|
{{- partial "assets/image.html" (dict
|
|
"url" $url
|
|
"ratio" $ratio
|
|
"outerClass" $wrapper
|
|
"innerClass" $class
|
|
"title" $title
|
|
"caption" $caption
|
|
"mode" $mode
|
|
"portrait" $portrait
|
|
"page" .Page)
|
|
-}}
|
|
{{ else -}}
|
|
{{ errorf "Missing value for param 'src': %s" .Position -}}
|
|
{{ end -}} |