summaryrefslogtreecommitdiff
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
-rw-r--r--internal/glightbox/block.go1
-rw-r--r--internal/glightbox/html_renderer.go80
-rw-r--r--internal/glightbox/parser.go16
-rw-r--r--static/input.css109
-rw-r--r--views/pages/global-map.html2
5 files changed, 18 insertions, 190 deletions
diff --git a/internal/glightbox/block.go b/internal/glightbox/block.go
index e53e67b..696f328 100644
--- a/internal/glightbox/block.go
+++ b/internal/glightbox/block.go
@@ -15,7 +15,6 @@ type GLightboxBlock struct {
type GLightboxImage struct {
URL string
- Tags []string
Caption []byte
}
diff --git a/internal/glightbox/html_renderer.go b/internal/glightbox/html_renderer.go
index 44fbd4c..43d4790 100644
--- a/internal/glightbox/html_renderer.go
+++ b/internal/glightbox/html_renderer.go
@@ -4,14 +4,11 @@ import (
"bytes"
"fmt"
"math/rand"
- "regexp"
"strings"
"time"
- "github.com/SayaAndy/saya-today-web/internal/tailwind"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/ast"
- "github.com/yuin/goldmark/parser"
"github.com/yuin/goldmark/renderer"
"github.com/yuin/goldmark/renderer/html"
"github.com/yuin/goldmark/util"
@@ -19,36 +16,22 @@ import (
type GLightboxHTMLRenderer struct {
html.Config
- md goldmark.Markdown
- anchorMatchRe *regexp.Regexp
+ md goldmark.Markdown
}
func NewGLightboxHTMLRenderer(opts ...html.Option) renderer.NodeRenderer {
r := &GLightboxHTMLRenderer{
Config: html.NewConfig(),
md: goldmark.New(
- goldmark.WithParserOptions(
- parser.WithAutoHeadingID(),
- parser.WithAttribute(),
- ),
- goldmark.WithRenderer(
- renderer.NewRenderer(
- renderer.WithNodeRenderers(
- util.Prioritized(tailwind.NewCustomLinkRenderer(
- html.WithUnsafe(), html.WithHardWraps(), html.WithXHTML(),
- ), 50),
- util.Prioritized(html.NewRenderer(
- html.WithUnsafe(), html.WithHardWraps(), html.WithXHTML(),
- ), 100),
- ),
- ),
+ goldmark.WithRendererOptions(
+ html.WithHardWraps(),
+ html.WithXHTML(),
),
),
}
for _, opt := range opts {
opt.SetHTMLOption(&r.Config)
}
- r.anchorMatchRe = regexp.MustCompile(`(?s)<\s*a(\s+[^<]*)(href\s*=\s*["'].*?["'])\s*([^<]*)>(.*?)<\s*\/\s*a\s*>`)
return r
}
@@ -95,34 +78,11 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte,
dataDescriptionAttribute = fmt.Sprintf("data-description=\".%s\"", glightboxDescId)
}
- tagClassList := make([]string, 0, len(img.Tags))
- for _, tag := range img.Tags {
- switch tag {
- case "2x":
- tagClassList = append(tagClassList, "grid-item-2x")
- }
- }
-
- if len(img.Caption) > 0 {
- tagClassList = append(tagClassList, "grid-tooltip")
- }
-
- anchorlessCaptionHTML := r.anchorMatchRe.ReplaceAll(captionHTML, []byte("<span class=\"linklike\" $1 $3>$4</span>"))
-
elements = append(elements, fmt.Sprintf(`
- <a href="https://f003.backblazeb2.com/file/sayana-photos/full/%s" class="glightbox-%s grid-item %s grid-item-%s p-1"
+ <a href="https://f003.backblazeb2.com/file/sayana-photos/full/%s" class="glightbox-%s grid-item grid-item-%s"
data-gallery="gallery-%s" data-title="%s" %s>
- <picture>
- <source media="(width < 640px)" srcset="https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp" />
- <source media="(width < 1120px)" srcset="https://f003.backblazeb2.com/file/sayana-photos/webp-560p/%s.webp" />
- <source media="(width < 1600px)" srcset="https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp" />
- <source media="(width < 2400px)" srcset="https://f003.backblazeb2.com/file/sayana-photos/webp-1200p/%s.webp" />
- <source media="(width >= 2400px)" srcset="https://f003.backblazeb2.com/file/sayana-photos/webp-1600p/%s.webp" />
- <img src="https://f003.backblazeb2.com/file/sayana-photos/webp-800p/%s.webp" />
- </picture>
- <span class="grid-tooltip-text"><p>%s</p></span>
- <span class="grid-item-index">%d</span>
- </a>`, img.URL, galleryID, strings.Join(tagClassList, " "), galleryID, galleryID, dayDate.Format("2006-01-02 15:04:05 -07:00"), dataDescriptionAttribute, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, imageUrlWithoutExt, anchorlessCaptionHTML, i+1))
+ <img src="https://f003.backblazeb2.com/file/sayana-photos/webp-320p/%s.webp" class="rounded-md p-1" alt="webp thumbnail" />
+ </a>`, img.URL, galleryID, galleryID, galleryID, dayDate.Format("2006-01-02 15:04:05 -07:00"), dataDescriptionAttribute, imageUrlWithoutExt))
if glightboxDescId != "" {
elements = append(elements, fmt.Sprintf(`
@@ -135,7 +95,7 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte,
w.WriteString(fmt.Sprintf(`
<div class="justify-content-center display-block m-1">
<hr class="border-t-3 border-dotted border-main-dark mt-1 mb-2 w-[80%%] ml-auto mr-auto">
- <div class="grid masonry-grid-%s mx-auto">
+ <div class="grid masonry-grid-%s">
<div class="grid-sizer grid-sizer-%s"></div>
%s
</div>
@@ -145,33 +105,19 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte,
w.WriteString(fmt.Sprintf(`
<script>
var lightbox_%s = GLightbox({
- selector: '.glightbox-%s',
- moreLength: 0
+ selector: '.glightbox-%s'
});
var msnry_%s = new Masonry('.masonry-grid-%s', {
itemSelector: '.grid-item-%s',
columnWidth: '.grid-sizer-%s',
- percentPosition: true,
- horizontalOrder: true
+ percentPosition: true
});
- var imgLoad_%s_timer;
- var imgLoad_%s = imagesLoaded('.masonry-grid-%s');
-
- function initMasonryLayout_%s() {
- clearTimeout(imgLoad_%s_timer);
- imgLoad_%s_timer = setTimeout(() => msnry_%s.layout(), 500);
- }
-
- imgLoad_%s.on('progress', initMasonryLayout_%s);
-
- document.addEventListener('popout', (e) => {
- imgLoad_%s.off('progress', initMasonryLayout_%s);
- initMasonryLayout_%s = null;
- imgLoad_%s = null;
+ imagesLoaded('.masonry-grid-%s', function() {
+ msnry_%s.layout();
});
-</script>`, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID))
+</script>`, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID, galleryID))
}
return ast.WalkContinue, nil
diff --git a/internal/glightbox/parser.go b/internal/glightbox/parser.go
index 6780090..ba3f22e 100644
--- a/internal/glightbox/parser.go
+++ b/internal/glightbox/parser.go
@@ -4,7 +4,6 @@ import (
"bytes"
"log/slog"
"regexp"
- "strings"
"time"
"github.com/yuin/goldmark/ast"
@@ -61,27 +60,16 @@ func (p *GLightboxParser) Continue(node ast.Node, reader text.Reader, pc parser.
gallery := node.(*GLightboxBlock)
- parts := bytes.SplitN(trimmed, []byte{'|'}, 3)
+ parts := bytes.SplitN(trimmed, []byte{'|'}, 2)
url := bytes.TrimSpace(parts[0])
caption := make([]byte, 0)
- tagsRaw := ""
- if len(parts) == 2 {
+ if len(parts) > 1 {
caption = bytes.TrimSpace(parts[1])
}
- if len(parts) >= 3 {
- tagsRaw = string(parts[1])
- caption = bytes.TrimSpace(parts[2])
- }
-
- tags := strings.Split(tagsRaw, ",")
- for i := range tags {
- tags[i] = strings.TrimSpace(tags[i])
- }
gallery.Images = append(gallery.Images, GLightboxImage{
URL: string(url),
- Tags: tags,
Caption: caption,
})
diff --git a/static/input.css b/static/input.css
index a983460..d766049 100644
--- a/static/input.css
+++ b/static/input.css
@@ -122,12 +122,12 @@ html {
--squares-and-triangles-background-height-coef: 15;
}
-a, .linklike {
+a {
color: var(--main-medium-color) !important;
text-decoration: underline;
}
-a:hover, .linklike:hover {
+a:hover {
color: var(--main-light-color) !important;
}
@@ -327,131 +327,26 @@ a:hover, .linklike:hover {
transform: scale(1.1);
}
-.grid-tooltip {
- position: relative;
- display: inline-block;
- box-shadow: inset 0rem 0rem 0.5rem var(--main-light-color);
- transition: box-shadow 0.5s ease-in-out;
-}
-
-.grid-tooltip:hover {
- box-shadow: none;
-}
-
-.grid-tooltip-text {
- visibility: hidden;
- opacity: 0;
- transition: opacity 0.5s;
- width: 100%;
- top: 100%;
- background-color: var(--background-dark-color);
- color: var(--main-dark-color);
- text-align: center;
- padding: 0.25rem 0.25rem;
- margin-top: 0.25rem;
- border-radius: 0.5rem;
- position: absolute;
- z-index: 15;
-}
-
-.grid-tooltip:hover .grid-tooltip-text {
- visibility: visible;
- opacity: 1;
-}
-
-.grid-tooltip-text::after {
- content: " ";
- position: absolute;
- bottom: 100%;
- left: 50%;
- margin-left: -0.25rem;
- border-width: 0.25rem;
- border-style: solid;
- border-color: transparent transparent var(--background-dark-color) transparent;
-}
-
.grid-item, .grid-sizer {
- position: relative;
- display: inline-block;
width: 50%;
}
-.grid-item-index {
- visibility: visible;
- opacity: 1;
- transition: opacity 0.5s;
- top: 0%;
- left: 0%;
- background-color: var(--main-light-color);
- color: var(--background-dark-color);
- text-align: center;
- padding: 0.25rem 0.25rem;
- position: absolute;
- z-index: 14;
-}
-
-.grid-item:hover .grid-item-index {
- visibility: hidden;
- opacity: 0;
-}
-
-.grid-item-2x {
- width: 100%;
-}
-
@media (width >= 32rem) {
.grid-item, .grid-sizer {
width: 33%;
}
-
- .grid-item-2x {
- width: 66%;
- }
}
@media (width >= 40rem) {
.grid-item, .grid-sizer {
width: 25%;
}
-
- .grid-item-2x {
- width: 50%;
- }
}
@media (width >= 48rem) {
.grid-item, .grid-sizer {
width: 20%;
}
-
- .grid-item-2x {
- width: 40%;
- }
-}
-
-.goverlay {
- background: color-mix(in srgb, var(--background-light-color) 50%, transparent) !important;
- backdrop-filter: blur(1rem);
- -webkit-backdrop-filter: blur(1rem);
-}
-
-.glightbox-clean .gslide-description {
- background: color-mix(in srgb, var(--background-dark-color) 50%, transparent) !important;
- backdrop-filter: blur(1rem);
- -webkit-backdrop-filter: blur(1rem);
-}
-
-.glightbox-clean .gslide-title {
- font-family: var(--font-spectral) !important;
- font-weight: 600 !important;
- color: var(--main-light-color) !important;
-}
-
-.glightbox-clean .gslide-desc {
- font-size: 1rem !important;
- font-family: var(--font-spectral) !important;
- font-weight: 400;
- color: var(--main-medium-color) !important;
}
.map-container .leaflet-container {
diff --git a/views/pages/global-map.html b/views/pages/global-map.html
index 9b67514..063337c 100644
--- a/views/pages/global-map.html
+++ b/views/pages/global-map.html
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>{{ .L.GlobalMap.Header }} // SAYA TODAY</title>
+ <title>SAYA TODAY // {{ .L.GlobalMap.Header }}</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>