@noirmd/previewer 2.0.5 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/NReditor.cjs +43 -4
- package/dist/NReditor.cjs.map +1 -1
- package/dist/NReditor.js +43 -4
- package/dist/NReditor.js.map +1 -1
- package/dist/hovergallery.css +46 -76
- package/dist/index.cjs +43 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +43 -4
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +43 -4
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +43 -4
- package/dist/react.js.map +1 -1
- package/dist/vanilla.cjs +43 -4
- package/dist/vanilla.cjs.map +1 -1
- package/dist/vanilla.js +43 -4
- package/dist/vanilla.js.map +1 -1
- package/dist/vue.cjs +43 -4
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js +43 -4
- package/dist/vue.js.map +1 -1
- package/package.json +3 -2
package/dist/hovergallery.css
CHANGED
|
@@ -1,110 +1,80 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
2
|
NoirMD Vanilla — Hover Gallery
|
|
3
|
+
|
|
4
|
+
Stacked images with invisible trigger strips.
|
|
5
|
+
JS toggles a `.nr-hg-active` class on the visible image.
|
|
6
|
+
CSS handles the crossfade transition.
|
|
3
7
|
============================================================ */
|
|
4
8
|
|
|
9
|
+
/* ── Container ──────────────────────────────────────────────── */
|
|
10
|
+
|
|
5
11
|
.nr-hover-gallery {
|
|
6
|
-
|
|
7
|
-
display: inline-grid;
|
|
8
|
-
grid-template-columns: repeat(var(--items), 1fr);
|
|
12
|
+
position: relative;
|
|
9
13
|
width: 100%;
|
|
10
14
|
max-width: 100%;
|
|
11
|
-
|
|
15
|
+
aspect-ratio: 16 / 9;
|
|
12
16
|
overflow: hidden;
|
|
13
17
|
border-radius: var(--nr-radius-sm);
|
|
14
18
|
background: var(--nr-bg-secondary);
|
|
15
19
|
margin: 1rem 0;
|
|
16
20
|
}
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
--items: 2;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.nr-hover-gallery:has(> :nth-child(4)) {
|
|
23
|
-
--items: 3;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.nr-hover-gallery:has(> :nth-child(5)) {
|
|
27
|
-
--items: 4;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.nr-hover-gallery:has(> :nth-child(6)) {
|
|
31
|
-
--items: 5;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.nr-hover-gallery:has(> :nth-child(7)) {
|
|
35
|
-
--items: 6;
|
|
36
|
-
}
|
|
22
|
+
/* ── Images (stacked) ───────────────────────────────────────── */
|
|
37
23
|
|
|
38
|
-
.nr-hover-gallery
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.nr-hover-gallery:has(> :nth-child(9)) {
|
|
43
|
-
--items: 8;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.nr-hover-gallery:has(> :nth-child(10)) {
|
|
47
|
-
--items: 9;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.nr-hover-gallery > * {
|
|
51
|
-
opacity: 0;
|
|
24
|
+
.nr-hover-gallery > img {
|
|
25
|
+
position: absolute;
|
|
26
|
+
inset: 0;
|
|
27
|
+
width: 100%;
|
|
52
28
|
height: 100%;
|
|
53
|
-
grid-row: 1;
|
|
54
29
|
object-fit: cover;
|
|
55
|
-
|
|
30
|
+
opacity: 0;
|
|
31
|
+
transition: opacity 0.4s ease;
|
|
32
|
+
pointer-events: none;
|
|
56
33
|
}
|
|
57
34
|
|
|
58
|
-
.nr-hover-gallery >
|
|
59
|
-
grid-column: 1 / -1;
|
|
35
|
+
.nr-hover-gallery > img.nr-hg-active {
|
|
60
36
|
opacity: 1;
|
|
61
37
|
}
|
|
62
38
|
|
|
63
|
-
|
|
64
|
-
grid-column: 1;
|
|
65
|
-
}
|
|
39
|
+
/* ── Trigger strips (invisible, full-height) ────────────────── */
|
|
66
40
|
|
|
67
|
-
.nr-hover-gallery >
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.nr-hover-gallery > :nth-child(5) {
|
|
76
|
-
grid-column: 4;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.nr-hover-gallery > :nth-child(6) {
|
|
80
|
-
grid-column: 5;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.nr-hover-gallery > :nth-child(7) {
|
|
84
|
-
grid-column: 6;
|
|
41
|
+
.nr-hover-gallery > .nr-hg-trigger {
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: 0;
|
|
44
|
+
bottom: 0;
|
|
45
|
+
height: 100%;
|
|
46
|
+
z-index: 1;
|
|
85
47
|
}
|
|
86
48
|
|
|
87
|
-
|
|
88
|
-
grid-column: 7;
|
|
89
|
-
}
|
|
49
|
+
/* ── Indicator dots ─────────────────────────────────────────── */
|
|
90
50
|
|
|
91
|
-
.nr-hover-gallery >
|
|
92
|
-
|
|
51
|
+
.nr-hover-gallery > .nr-hg-dots {
|
|
52
|
+
position: absolute;
|
|
53
|
+
bottom: 0.5rem;
|
|
54
|
+
left: 50%;
|
|
55
|
+
transform: translateX(-50%);
|
|
56
|
+
display: flex;
|
|
57
|
+
gap: 0.35rem;
|
|
58
|
+
z-index: 2;
|
|
59
|
+
pointer-events: none;
|
|
93
60
|
}
|
|
94
61
|
|
|
95
|
-
.nr-hover-gallery >
|
|
96
|
-
|
|
62
|
+
.nr-hover-gallery > .nr-hg-dots > span {
|
|
63
|
+
width: 6px;
|
|
64
|
+
height: 6px;
|
|
65
|
+
border-radius: 50%;
|
|
66
|
+
background: rgba(255, 255, 255, 0.4);
|
|
67
|
+
transition: background 0.3s ease, transform 0.3s ease;
|
|
97
68
|
}
|
|
98
69
|
|
|
99
|
-
.nr-hover-gallery >
|
|
100
|
-
|
|
70
|
+
.nr-hover-gallery > .nr-hg-dots > span.nr-hg-dot-active {
|
|
71
|
+
background: rgba(255, 255, 255, 0.95);
|
|
72
|
+
transform: scale(1.3);
|
|
101
73
|
}
|
|
102
74
|
|
|
103
|
-
|
|
104
|
-
grid-column: 1 / -1;
|
|
105
|
-
opacity: 1;
|
|
106
|
-
}
|
|
75
|
+
/* ── Cap at 10 images ───────────────────────────────────────── */
|
|
107
76
|
|
|
108
|
-
.nr-hover-gallery
|
|
77
|
+
.nr-hover-gallery > img:nth-of-type(n + 11),
|
|
78
|
+
.nr-hover-gallery > .nr-hg-trigger:nth-of-type(n + 11) {
|
|
109
79
|
display: none;
|
|
110
80
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -11953,6 +11953,7 @@ var hover3d_default = hover3dDirective;
|
|
|
11953
11953
|
|
|
11954
11954
|
// vanilla/directives/hovergallery.ts
|
|
11955
11955
|
var IMG_RE3 = /!\[([^\]]*)\]\(([^)]+)\)/g;
|
|
11956
|
+
var MAX_IMAGES = 10;
|
|
11956
11957
|
var hovergalleryDirective = ({ props, slots }) => {
|
|
11957
11958
|
const images = [];
|
|
11958
11959
|
const raw = slots.default || "";
|
|
@@ -11964,18 +11965,56 @@ var hovergalleryDirective = ({ props, slots }) => {
|
|
|
11964
11965
|
if (images.length === 0) {
|
|
11965
11966
|
return document.createDocumentFragment();
|
|
11966
11967
|
}
|
|
11968
|
+
const count = Math.min(images.length, MAX_IMAGES);
|
|
11967
11969
|
const figure = document.createElement("figure");
|
|
11968
11970
|
figure.className = "nr-hover-gallery";
|
|
11969
11971
|
if (props.aspect) figure.style.aspectRatio = props.aspect;
|
|
11970
11972
|
if (props.class) figure.classList.add(...props.class.split(/\s+/).filter(Boolean));
|
|
11971
|
-
if (props.style) figure.setAttribute("style", props.style);
|
|
11972
|
-
|
|
11973
|
+
if (props.style) figure.setAttribute("style", (figure.getAttribute("style") || "") + ";" + props.style);
|
|
11974
|
+
const imgEls = [];
|
|
11975
|
+
for (let i = 0; i < count; i++) {
|
|
11973
11976
|
const el = document.createElement("img");
|
|
11974
|
-
el.src =
|
|
11975
|
-
el.alt =
|
|
11977
|
+
el.src = images[i].src;
|
|
11978
|
+
el.alt = images[i].alt;
|
|
11976
11979
|
el.loading = "lazy";
|
|
11980
|
+
el.draggable = false;
|
|
11981
|
+
if (i === 0) el.classList.add("nr-hg-active");
|
|
11982
|
+
imgEls.push(el);
|
|
11977
11983
|
figure.appendChild(el);
|
|
11978
11984
|
}
|
|
11985
|
+
for (let i = 0; i < count; i++) {
|
|
11986
|
+
const strip = document.createElement("div");
|
|
11987
|
+
strip.className = "nr-hg-trigger";
|
|
11988
|
+
strip.style.left = `${i / count * 100}%`;
|
|
11989
|
+
strip.style.width = `${1 / count * 100}%`;
|
|
11990
|
+
strip.addEventListener("mouseenter", () => {
|
|
11991
|
+
for (let j = 0; j < imgEls.length; j++) {
|
|
11992
|
+
imgEls[j].classList.toggle("nr-hg-active", j === i);
|
|
11993
|
+
}
|
|
11994
|
+
for (let j = 0; j < dotEls.length; j++) {
|
|
11995
|
+
dotEls[j].classList.toggle("nr-hg-dot-active", j === i);
|
|
11996
|
+
}
|
|
11997
|
+
});
|
|
11998
|
+
figure.appendChild(strip);
|
|
11999
|
+
}
|
|
12000
|
+
figure.addEventListener("mouseleave", () => {
|
|
12001
|
+
for (let j = 0; j < imgEls.length; j++) {
|
|
12002
|
+
imgEls[j].classList.toggle("nr-hg-active", j === 0);
|
|
12003
|
+
}
|
|
12004
|
+
for (let j = 0; j < dotEls.length; j++) {
|
|
12005
|
+
dotEls[j].classList.toggle("nr-hg-dot-active", j === 0);
|
|
12006
|
+
}
|
|
12007
|
+
});
|
|
12008
|
+
const dotContainer = document.createElement("div");
|
|
12009
|
+
dotContainer.className = "nr-hg-dots";
|
|
12010
|
+
const dotEls = [];
|
|
12011
|
+
for (let i = 0; i < count; i++) {
|
|
12012
|
+
const dot = document.createElement("span");
|
|
12013
|
+
if (i === 0) dot.classList.add("nr-hg-dot-active");
|
|
12014
|
+
dotEls.push(dot);
|
|
12015
|
+
dotContainer.appendChild(dot);
|
|
12016
|
+
}
|
|
12017
|
+
figure.appendChild(dotContainer);
|
|
11979
12018
|
return figure;
|
|
11980
12019
|
};
|
|
11981
12020
|
var hovergallery_default = hovergalleryDirective;
|