@fynd-design-engineering/fynd-bloom 0.0.5 → 0.0.6
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/index.js +1 -240
- package/dist/index.js.map +2 -2
- package/dist/styles.css +1 -123
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,240 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
(() => {
|
|
3
|
-
// src/index.ts
|
|
4
|
-
var video1Finished = false;
|
|
5
|
-
if ("scrollRestoration" in history) {
|
|
6
|
-
history.scrollRestoration = "manual";
|
|
7
|
-
}
|
|
8
|
-
var forceScrollTop = () => {
|
|
9
|
-
window.scrollTo(0, 0);
|
|
10
|
-
document.documentElement.scrollTop = 0;
|
|
11
|
-
document.body.scrollTop = 0;
|
|
12
|
-
};
|
|
13
|
-
window.addEventListener("load", () => {
|
|
14
|
-
forceScrollTop();
|
|
15
|
-
});
|
|
16
|
-
window.addEventListener("pageshow", (event) => {
|
|
17
|
-
if (event.persisted) {
|
|
18
|
-
forceScrollTop();
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
var mobileMenuOpen = false;
|
|
22
|
-
document.addEventListener("DOMContentLoaded", () => {
|
|
23
|
-
const triggers = document.querySelectorAll("[data-anchor-trigger]");
|
|
24
|
-
const anchors = document.querySelectorAll("[data-page-anchor]");
|
|
25
|
-
const getScrollTopSpacer = () => window.innerWidth > 992 ? 120 : 52;
|
|
26
|
-
const updateCurrentAnchor = (value) => {
|
|
27
|
-
triggers.forEach((trigger) => {
|
|
28
|
-
const triggerValue = trigger.getAttribute("data-anchor-trigger");
|
|
29
|
-
trigger.setAttribute(
|
|
30
|
-
"data-current-anchor",
|
|
31
|
-
triggerValue === value ? "true" : "false"
|
|
32
|
-
);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
const logVisiblePageAnchor = () => {
|
|
36
|
-
const scrollTopSpacer = getScrollTopSpacer();
|
|
37
|
-
const visibleAnchors = [];
|
|
38
|
-
anchors.forEach((anchor) => {
|
|
39
|
-
const rect = anchor.getBoundingClientRect();
|
|
40
|
-
const adjustedTop = rect.top - scrollTopSpacer;
|
|
41
|
-
if (adjustedTop <= 0 && rect.bottom > scrollTopSpacer) {
|
|
42
|
-
visibleAnchors.push(anchor);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
const values = visibleAnchors.map((a) => a.getAttribute("data-page-anchor")).filter((v) => v !== null);
|
|
46
|
-
if (values.length > 0) {
|
|
47
|
-
updateCurrentAnchor(values[0]);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
triggers.forEach((trigger) => {
|
|
51
|
-
trigger.addEventListener("click", () => {
|
|
52
|
-
const value = trigger.getAttribute("data-anchor-trigger");
|
|
53
|
-
if (!value) return;
|
|
54
|
-
const target = document.querySelector(
|
|
55
|
-
`[data-page-anchor="${value}"]`
|
|
56
|
-
);
|
|
57
|
-
if (!target) return;
|
|
58
|
-
const scrollTopSpacer = getScrollTopSpacer();
|
|
59
|
-
const targetTop = target.getBoundingClientRect().top + window.scrollY - scrollTopSpacer;
|
|
60
|
-
window.scrollTo({ top: targetTop, behavior: "auto" });
|
|
61
|
-
if (mobileMenuOpen) {
|
|
62
|
-
menuClose();
|
|
63
|
-
mobileMenuOpen = false;
|
|
64
|
-
}
|
|
65
|
-
updateCurrentAnchor(value);
|
|
66
|
-
logVisiblePageAnchor();
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
window.addEventListener("scroll", logVisiblePageAnchor);
|
|
70
|
-
const MOBILE_BREAKPOINT = 992;
|
|
71
|
-
const isMobileScreen = () => window.innerWidth < MOBILE_BREAKPOINT;
|
|
72
|
-
function openMenuAnimation() {
|
|
73
|
-
const checkbox = document.getElementById("menu-toggle");
|
|
74
|
-
if (!checkbox) return;
|
|
75
|
-
checkbox.checked = true;
|
|
76
|
-
}
|
|
77
|
-
function closeMenuAnimation() {
|
|
78
|
-
const checkbox = document.getElementById("menu-toggle");
|
|
79
|
-
if (!checkbox) return;
|
|
80
|
-
checkbox.checked = false;
|
|
81
|
-
}
|
|
82
|
-
function menuOpen() {
|
|
83
|
-
if (!isMobileScreen()) return;
|
|
84
|
-
const menu = document.querySelector("[data-menu-content]");
|
|
85
|
-
if (!menu) return;
|
|
86
|
-
menu.style.display = "block";
|
|
87
|
-
openMenuAnimation();
|
|
88
|
-
}
|
|
89
|
-
function menuClose() {
|
|
90
|
-
const menu = document.querySelector("[data-menu-content]");
|
|
91
|
-
if (!menu) return;
|
|
92
|
-
menu.style.display = "none";
|
|
93
|
-
closeMenuAnimation();
|
|
94
|
-
}
|
|
95
|
-
menuClose();
|
|
96
|
-
mobileMenuOpen = false;
|
|
97
|
-
const toggle = document.querySelector("[data-menu-toggle]");
|
|
98
|
-
if (toggle) {
|
|
99
|
-
toggle.addEventListener("click", () => {
|
|
100
|
-
mobileMenuOpen = !mobileMenuOpen;
|
|
101
|
-
mobileMenuOpen ? menuOpen() : menuClose();
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
logVisiblePageAnchor();
|
|
105
|
-
});
|
|
106
|
-
document.querySelectorAll("[large-card]").forEach((card) => {
|
|
107
|
-
if (card.classList.contains("w-condition-invisible")) return;
|
|
108
|
-
const parent = card.parentElement;
|
|
109
|
-
if (!parent) return;
|
|
110
|
-
parent.setAttribute("col-span", "2");
|
|
111
|
-
});
|
|
112
|
-
document.addEventListener("DOMContentLoaded", () => {
|
|
113
|
-
let revealContentDelay = window.innerWidth > 992 ? 1500 : 2500;
|
|
114
|
-
const video1 = document.querySelector(
|
|
115
|
-
"[bloom-element='video-1']"
|
|
116
|
-
);
|
|
117
|
-
const poster1 = document.querySelector(
|
|
118
|
-
"[bloom-element='video-poster-1']"
|
|
119
|
-
);
|
|
120
|
-
const video2 = document.querySelector(
|
|
121
|
-
"[bloom-element='video-2']"
|
|
122
|
-
);
|
|
123
|
-
const video3 = document.querySelector(
|
|
124
|
-
"[bloom-element='video-3']"
|
|
125
|
-
);
|
|
126
|
-
const content = document.querySelector(
|
|
127
|
-
"[bloom-element='content']"
|
|
128
|
-
);
|
|
129
|
-
if (!video1 || !poster1 || !video2 || !content || !video3) {
|
|
130
|
-
console.warn("Required elements missing");
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const navigation = document.querySelector(
|
|
134
|
-
"[bloom-element='navigation']"
|
|
135
|
-
);
|
|
136
|
-
const footer = document.querySelector(
|
|
137
|
-
"[bloom-element='footer']"
|
|
138
|
-
);
|
|
139
|
-
const scrollIndicator = document.querySelector("[bloom-element='scroll-indicator']");
|
|
140
|
-
if (scrollIndicator) {
|
|
141
|
-
setTimeout(() => {
|
|
142
|
-
scrollIndicator.style.opacity = "1";
|
|
143
|
-
}, 1600);
|
|
144
|
-
}
|
|
145
|
-
forceScrollTop();
|
|
146
|
-
document.body.classList.add("scroll-locked");
|
|
147
|
-
content.style.transition = "none";
|
|
148
|
-
content.style.transform = "translateY(100vh)";
|
|
149
|
-
content.getBoundingClientRect();
|
|
150
|
-
content.style.transition = "transform 0.8s ease";
|
|
151
|
-
let video1Played = false;
|
|
152
|
-
let video2Triggered = false;
|
|
153
|
-
if (video3) {
|
|
154
|
-
video3.loop = true;
|
|
155
|
-
video3.style.display = "none";
|
|
156
|
-
}
|
|
157
|
-
const playVideo1Once = () => {
|
|
158
|
-
if (video1Played) return;
|
|
159
|
-
video1Played = true;
|
|
160
|
-
const playPromise = video1.play();
|
|
161
|
-
if (playPromise) {
|
|
162
|
-
playPromise.then(() => {
|
|
163
|
-
poster1.style.display = "none";
|
|
164
|
-
}).catch(() => {
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
if (video1.readyState >= HTMLMediaElement.HAVE_METADATA) {
|
|
169
|
-
playVideo1Once();
|
|
170
|
-
} else {
|
|
171
|
-
video1.addEventListener("loadedmetadata", playVideo1Once, { once: true });
|
|
172
|
-
}
|
|
173
|
-
video1.addEventListener("ended", () => {
|
|
174
|
-
video1.pause();
|
|
175
|
-
video1.currentTime = video1.duration;
|
|
176
|
-
video1Finished = true;
|
|
177
|
-
video2.style.display = "block";
|
|
178
|
-
});
|
|
179
|
-
const onFirstScrollIntent = (event) => {
|
|
180
|
-
if (!video1Finished) return;
|
|
181
|
-
if (video2Triggered) return;
|
|
182
|
-
event.preventDefault();
|
|
183
|
-
video2Triggered = true;
|
|
184
|
-
window.removeEventListener("wheel", onFirstScrollIntent);
|
|
185
|
-
if (scrollIndicator) {
|
|
186
|
-
scrollIndicator.style.opacity = "0";
|
|
187
|
-
}
|
|
188
|
-
const playPromise = video2.play();
|
|
189
|
-
if (playPromise) {
|
|
190
|
-
playPromise.catch(() => {
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
setTimeout(() => {
|
|
194
|
-
revealContent();
|
|
195
|
-
}, revealContentDelay);
|
|
196
|
-
};
|
|
197
|
-
window.addEventListener("wheel", onFirstScrollIntent, { passive: false });
|
|
198
|
-
video2.addEventListener("ended", () => {
|
|
199
|
-
video2.pause();
|
|
200
|
-
video2.currentTime = video2.duration;
|
|
201
|
-
video3.style.display = "block";
|
|
202
|
-
const playPromise = video3.play();
|
|
203
|
-
if (playPromise) {
|
|
204
|
-
playPromise.catch(() => {
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
const revealContent = () => {
|
|
209
|
-
requestAnimationFrame(() => {
|
|
210
|
-
content.style.transform = "translateY(0)";
|
|
211
|
-
if (navigation) {
|
|
212
|
-
navigation.style.transform = "translateY(0)";
|
|
213
|
-
}
|
|
214
|
-
if (footer) {
|
|
215
|
-
footer.style.transform = "translateY(0)";
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
setTimeout(() => {
|
|
219
|
-
document.body.classList.remove("scroll-locked");
|
|
220
|
-
}, 500);
|
|
221
|
-
};
|
|
222
|
-
});
|
|
223
|
-
document.addEventListener("DOMContentLoaded", () => {
|
|
224
|
-
const MOBILE_MAX_WIDTH = 991;
|
|
225
|
-
const STICKY_TOP = 52;
|
|
226
|
-
if (window.innerWidth > MOBILE_MAX_WIDTH) return;
|
|
227
|
-
const stickyBlocks = document.querySelectorAll(".bloom-sticky_block");
|
|
228
|
-
if (!stickyBlocks.length) return;
|
|
229
|
-
const updateStickyState = () => {
|
|
230
|
-
stickyBlocks.forEach((el) => {
|
|
231
|
-
const rect = el.getBoundingClientRect();
|
|
232
|
-
const isSticky = rect.top <= STICKY_TOP && rect.bottom > STICKY_TOP;
|
|
233
|
-
el.setAttribute("active-page", isSticky ? "true" : "false");
|
|
234
|
-
});
|
|
235
|
-
};
|
|
236
|
-
window.addEventListener("scroll", updateStickyState, { passive: true });
|
|
237
|
-
updateStickyState();
|
|
238
|
-
});
|
|
239
|
-
})();
|
|
240
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";(()=>{"scrollRestoration"in history&&(history.scrollRestoration="manual");var b=()=>{window.scrollTo(0,0),document.documentElement.scrollTop=0,document.body.scrollTop=0};window.addEventListener("load",()=>{b()});window.addEventListener("pageshow",i=>{i.persisted&&b()});var v=!1;document.addEventListener("DOMContentLoaded",()=>{let i=document.querySelectorAll("[data-anchor-trigger]"),t=document.querySelectorAll("[data-page-anchor]"),a=()=>window.innerWidth>992?120:52,o=e=>{i.forEach(l=>{let c=l.getAttribute("data-anchor-trigger");l.setAttribute("data-current-anchor",c===e?"true":"false")})},n=()=>{let e=a(),l=[];t.forEach(s=>{let m=s.getBoundingClientRect();m.top-e<=0&&m.bottom>e&&l.push(s)});let c=l.map(s=>s.getAttribute("data-page-anchor")).filter(s=>s!==null);c.length>0&&o(c[0])};i.forEach(e=>{e.addEventListener("click",()=>{let l=e.getAttribute("data-anchor-trigger");if(!l)return;let c=document.querySelector(`[data-page-anchor="${l}"]`);if(!c)return;let s=a(),m=c.getBoundingClientRect().top+window.scrollY-s;window.scrollTo({top:m,behavior:"auto"}),v&&(u(),v=!1),o(l),n()})}),window.addEventListener("scroll",n);let r=992,d=()=>window.innerWidth<r;function y(){let e=document.getElementById("menu-toggle");e&&(e.checked=!0)}function f(){let e=document.getElementById("menu-toggle");e&&(e.checked=!1)}function g(){if(!d())return;let e=document.querySelector("[data-menu-content]");e&&(e.style.display="block",y())}function u(){let e=document.querySelector("[data-menu-content]");e&&(e.style.display="none",f())}u(),v=!1;let E=document.querySelector("[data-menu-toggle]");E&&E.addEventListener("click",()=>{v=!v,v?g():u()}),n()});document.querySelectorAll("[large-card]").forEach(i=>{if(i.classList.contains("w-condition-invisible"))return;let t=i.parentElement;t&&t.setAttribute("col-span","2")});document.addEventListener("DOMContentLoaded",()=>{let i=window.innerWidth>992?1500:2500,t=document.querySelector("[bloom-element='video-1']"),a=document.querySelector("[bloom-element='video-poster-1']"),o=document.querySelector("[bloom-element='video-2']"),n=document.querySelector("[bloom-element='video-3']"),r=document.querySelector("[bloom-element='content']"),d=document.querySelector("[bloom-element='navigation']"),y=document.querySelector("[bloom-element='footer']"),f=document.querySelector("[bloom-element='scroll-indicator']");if(!t||!a||!o||!n||!r){console.warn("Required elements missing");return}[t,o,n].forEach(p=>{p.muted=!0,p.playsInline=!0,p.setAttribute("playsinline",""),p.setAttribute("webkit-playsinline","")}),n.loop=!0,n.style.visibility="hidden",n.style.opacity="0";let g=!1,u=!1,E=!1,e=!0,l=0,c=()=>{l=window.scrollY,document.body.style.position="fixed",document.body.style.top=`-${l}px`,document.body.style.width="100%"},s=()=>{document.body.style.position="",document.body.style.top="",document.body.style.width="",window.scrollTo(0,l)};c(),r.style.transition="none",r.style.transform="translateY(100vh)",r.getBoundingClientRect(),r.style.transition="transform 0.8s ease",d&&(d.style.transform="translateY(-100%)"),y&&(y.style.transform="translateY(100%)"),f&&setTimeout(()=>{f.style.opacity="1"},1600);let m=()=>{g||(g=!0,t.play().then(()=>{a.style.display="none"}).catch(()=>{}))};t.readyState>=HTMLMediaElement.HAVE_ENOUGH_DATA?m():t.addEventListener("canplay",m,{once:!0}),t.addEventListener("ended",()=>{t.pause(),t.currentTime=t.duration,u=!0,o.style.display="block"});let T=()=>{!u||E||(E=!0,f&&(f.style.opacity="0"),o.play().catch(()=>{}),setTimeout(w,i))},h=p=>{u&&(p.preventDefault(),T(),window.removeEventListener("wheel",h))},L=()=>{T(),window.removeEventListener("touchstart",L)};window.addEventListener("wheel",h,{passive:!1}),window.addEventListener("touchstart",L,{passive:!0}),o.addEventListener("ended",()=>{o.pause(),o.currentTime=o.duration,n.style.visibility="visible",n.style.opacity="1",n.play().catch(()=>{})});function w(){requestAnimationFrame(()=>{r&&(r.style.transform="translateY(0)"),d&&(d.style.transform="translateY(0)"),y&&(y.style.transform="translateY(0)")}),setTimeout(()=>{e&&(s(),e=!1)},500)}});document.addEventListener("DOMContentLoaded",()=>{if(window.innerWidth>991)return;let a=document.querySelectorAll(".bloom-sticky_block");if(!a.length)return;let o=()=>{a.forEach(n=>{let r=n.getBoundingClientRect(),d=r.top<=52&&r.bottom>52;n.setAttribute("active-page",d?"true":"false")})};window.addEventListener("scroll",o,{passive:!0}),o()});})();
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// =======================================\n// GLOBAL SCROLL RESET (CRITICAL, TOP ONLY)\n// =======================================\nlet video1Finished = false;\n// Disable browser automatic scroll restoration\nif (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\";\n}\n\nconst forceScrollTop = (): void => {\n window.scrollTo(0, 0);\n document.documentElement.scrollTop = 0;\n document.body.scrollTop = 0;\n};\n\n// After full page load (catches late restores)\nwindow.addEventListener(\"load\", () => {\n forceScrollTop();\n});\n\n// Handle back/forward cache restores (Safari, Firefox)\nwindow.addEventListener(\"pageshow\", (event: PageTransitionEvent) => {\n if (event.persisted) {\n forceScrollTop();\n }\n});\n\n\n// =======================================\n// Smooth scrolling, anchor highlighting,\n// and mobile menu handling\n// =======================================\n\nlet mobileMenuOpen = false;\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n /* -----------------------------\n Anchor scrolling & highlighting\n ----------------------------- */\n\n const triggers = document.querySelectorAll<HTMLElement>(\"[data-anchor-trigger]\");\n const anchors = document.querySelectorAll<HTMLElement>(\"[data-page-anchor]\");\n\n const getScrollTopSpacer = (): number =>\n window.innerWidth > 992 ? 120 : 52;\n\n const updateCurrentAnchor = (value: string): void => {\n triggers.forEach(trigger => {\n const triggerValue = trigger.getAttribute(\"data-anchor-trigger\");\n trigger.setAttribute(\n \"data-current-anchor\",\n triggerValue === value ? \"true\" : \"false\"\n );\n });\n };\n\n const logVisiblePageAnchor = (): void => {\n const scrollTopSpacer = getScrollTopSpacer();\n const visibleAnchors: HTMLElement[] = [];\n\n anchors.forEach(anchor => {\n const rect = anchor.getBoundingClientRect();\n const adjustedTop = rect.top - scrollTopSpacer;\n\n if (adjustedTop <= 0 && rect.bottom > scrollTopSpacer) {\n visibleAnchors.push(anchor);\n }\n });\n\n const values = visibleAnchors\n .map(a => a.getAttribute(\"data-page-anchor\"))\n .filter((v): v is string => v !== null);\n\n if (values.length > 0) {\n updateCurrentAnchor(values[0]);\n }\n };\n\n triggers.forEach(trigger => {\n trigger.addEventListener(\"click\", () => {\n const value = trigger.getAttribute(\"data-anchor-trigger\");\n if (!value) return;\n\n const target = document.querySelector<HTMLElement>(\n `[data-page-anchor=\"${value}\"]`\n );\n if (!target) return;\n\n const scrollTopSpacer = getScrollTopSpacer();\n const targetTop =\n target.getBoundingClientRect().top + window.scrollY - scrollTopSpacer;\n\n window.scrollTo({ top: targetTop, behavior: \"auto\" });\n\n if (mobileMenuOpen) {\n menuClose();\n mobileMenuOpen = false;\n }\n\n updateCurrentAnchor(value);\n logVisiblePageAnchor();\n });\n });\n\n window.addEventListener(\"scroll\", logVisiblePageAnchor);\n\n /* -----------------------------\n Mobile menu toggle\n ----------------------------- */\n\n const MOBILE_BREAKPOINT = 992;\n\n const isMobileScreen = (): boolean =>\n window.innerWidth < MOBILE_BREAKPOINT;\n\n function openMenuAnimation(): void {\n const checkbox = document.getElementById(\"menu-toggle\") as HTMLInputElement | null;\n if (!checkbox) return;\n checkbox.checked = true;\n }\n\n function closeMenuAnimation(): void {\n const checkbox = document.getElementById(\"menu-toggle\") as HTMLInputElement | null;\n if (!checkbox) return;\n checkbox.checked = false;\n }\n\n function menuOpen(): void {\n if (!isMobileScreen()) return;\n\n const menu = document.querySelector<HTMLElement>(\"[data-menu-content]\");\n if (!menu) return;\n\n menu.style.display = \"block\";\n openMenuAnimation();\n }\n\n function menuClose(): void {\n const menu = document.querySelector<HTMLElement>(\"[data-menu-content]\");\n if (!menu) return;\n\n menu.style.display = \"none\";\n closeMenuAnimation();\n }\n\n menuClose();\n mobileMenuOpen = false;\n\n const toggle = document.querySelector<HTMLElement>(\"[data-menu-toggle]\");\n if (toggle) {\n toggle.addEventListener(\"click\", () => {\n mobileMenuOpen = !mobileMenuOpen;\n mobileMenuOpen ? menuOpen() : menuClose();\n });\n }\n\n logVisiblePageAnchor();\n});\n\n\n/* -----------------------------\n Adjust grid column span for large cards\n----------------------------- */\n\ndocument\n .querySelectorAll<HTMLElement>(\"[large-card]\")\n .forEach(card => {\n if (card.classList.contains(\"w-condition-invisible\")) return;\n\n const parent = card.parentElement;\n if (!parent) return;\n\n parent.setAttribute(\"col-span\", \"2\");\n });\n\n\n/* -----------------------------\n Video autoplay and poster handling\n----------------------------- */\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n\n let revealContentDelay = (window.innerWidth > 992) ? 1500 : 2500;\n\n const video1 = document.querySelector(\n \"[bloom-element='video-1']\"\n ) as HTMLVideoElement | null;\n\n const poster1 = document.querySelector(\n \"[bloom-element='video-poster-1']\"\n ) as HTMLImageElement | null;\n\n const video2 = document.querySelector(\n \"[bloom-element='video-2']\"\n ) as HTMLVideoElement | null;\n\n const video3 = document.querySelector(\n \"[bloom-element='video-3']\"\n ) as HTMLVideoElement | null;\n\n const content = document.querySelector(\n \"[bloom-element='content']\"\n ) as HTMLElement | null;\n\n if (!video1 || !poster1 || !video2 || !content || !video3) {\n console.warn(\"Required elements missing\");\n return;\n }\n const navigation = document.querySelector(\n \"[bloom-element='navigation']\"\n ) as HTMLElement | null;\n\n const footer = document.querySelector(\n \"[bloom-element='footer']\"\n ) as HTMLElement | null;\n const scrollIndicator = document.querySelector(\"[bloom-element='scroll-indicator']\") as HTMLElement | null;\n if (scrollIndicator) {\n setTimeout(() => {\n scrollIndicator.style.opacity = \"1\";\n }, 1600);\n }\n\n /* ---------- HARD RESET ---------- */\n\n forceScrollTop();\n\n document.body.classList.add(\"scroll-locked\");\n\n content.style.transition = \"none\";\n content.style.transform = \"translateY(100vh)\";\n content.getBoundingClientRect();\n content.style.transition = \"transform 0.8s ease\";\n\n let video1Played = false;\n let video2Triggered = false;\n\n if (video3) {\n video3.loop = true;\n video3.style.display = \"none\";\n }\n\n /* ---------- VIDEO 1 ---------- */\n\n const playVideo1Once = () => {\n if (video1Played) return;\n video1Played = true;\n\n const playPromise = video1.play();\n if (playPromise) {\n playPromise\n .then(() => {\n poster1.style.display = \"none\";\n })\n .catch(() => { });\n }\n };\n\n if (video1.readyState >= HTMLMediaElement.HAVE_METADATA) {\n playVideo1Once();\n } else {\n video1.addEventListener(\"loadedmetadata\", playVideo1Once, { once: true });\n }\n\n video1.addEventListener(\"ended\", () => {\n video1.pause();\n video1.currentTime = video1.duration;\n video1Finished = true;\n video2.style.display = \"block\";\n });\n\n /* ---------- VIDEO 2 (SCROLL-INTENT GATED) ---------- */\n\n const onFirstScrollIntent = (event: WheelEvent) => {\n if (!video1Finished) return;\n if (video2Triggered) return;\n\n event.preventDefault();\n video2Triggered = true;\n window.removeEventListener(\"wheel\", onFirstScrollIntent);\n if (scrollIndicator) {\n scrollIndicator.style.opacity = \"0\"\n }\n const playPromise = video2.play();\n if (playPromise) {\n playPromise.catch(() => { });\n }\n\n setTimeout(() => {\n revealContent();\n }, revealContentDelay);\n };\n\n window.addEventListener(\"wheel\", onFirstScrollIntent, { passive: false });\n\n video2.addEventListener(\"ended\", () => {\n video2.pause();\n video2.currentTime = video2.duration;\n\n video3.style.display = \"block\";\n\n const playPromise = video3.play();\n if (playPromise) {\n playPromise.catch(() => { });\n }\n });\n\n /* ---------- CONTENT REVEAL ---------- */\n\n const revealContent = () => {\n requestAnimationFrame(() => {\n content.style.transform = \"translateY(0)\";\n\n if (navigation) {\n navigation.style.transform = \"translateY(0)\";\n }\n\n if (footer) {\n footer.style.transform = \"translateY(0)\";\n }\n });\n\n setTimeout(() => {\n document.body.classList.remove(\"scroll-locked\");\n }, 500);\n };\n});\n\n\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const MOBILE_MAX_WIDTH = 991;\n const STICKY_TOP = 52;\n\n // Exit early if not mobile\n if (window.innerWidth > MOBILE_MAX_WIDTH) return;\n\n const stickyBlocks = document.querySelectorAll<HTMLElement>('.bloom-sticky_block');\n if (!stickyBlocks.length) return;\n\n const updateStickyState = (): void => {\n stickyBlocks.forEach((el) => {\n const rect = el.getBoundingClientRect();\n\n const isSticky =\n rect.top <= STICKY_TOP &&\n rect.bottom > STICKY_TOP;\n\n el.setAttribute('active-page', isSticky ? 'true' : 'false');\n });\n };\n\n window.addEventListener('scroll', updateStickyState, { passive: true });\n\n // Initial run in case something is already sticky\n updateStickyState();\n});"],
|
|
5
|
-
"mappings": ";;;
|
|
4
|
+
"sourcesContent": ["// =======================================\n// GLOBAL SCROLL RESET (CRITICAL, TOP ONLY)\n// =======================================\nlet video1Finished = false;\n// Disable browser automatic scroll restoration\nif (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\";\n}\n\nconst forceScrollTop = (): void => {\n window.scrollTo(0, 0);\n document.documentElement.scrollTop = 0;\n document.body.scrollTop = 0;\n};\n\n// After full page load (catches late restores)\nwindow.addEventListener(\"load\", () => {\n forceScrollTop();\n});\n\n// Handle back/forward cache restores (Safari, Firefox)\nwindow.addEventListener(\"pageshow\", (event: PageTransitionEvent) => {\n if (event.persisted) {\n forceScrollTop();\n }\n});\n\n\n// =======================================\n// Smooth scrolling, anchor highlighting,\n// and mobile menu handling\n// =======================================\n\nlet mobileMenuOpen = false;\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n /* -----------------------------\n Anchor scrolling & highlighting\n ----------------------------- */\n\n const triggers = document.querySelectorAll<HTMLElement>(\"[data-anchor-trigger]\");\n const anchors = document.querySelectorAll<HTMLElement>(\"[data-page-anchor]\");\n\n const getScrollTopSpacer = (): number =>\n window.innerWidth > 992 ? 120 : 52;\n\n const updateCurrentAnchor = (value: string): void => {\n triggers.forEach(trigger => {\n const triggerValue = trigger.getAttribute(\"data-anchor-trigger\");\n trigger.setAttribute(\n \"data-current-anchor\",\n triggerValue === value ? \"true\" : \"false\"\n );\n });\n };\n\n const logVisiblePageAnchor = (): void => {\n const scrollTopSpacer = getScrollTopSpacer();\n const visibleAnchors: HTMLElement[] = [];\n\n anchors.forEach(anchor => {\n const rect = anchor.getBoundingClientRect();\n const adjustedTop = rect.top - scrollTopSpacer;\n\n if (adjustedTop <= 0 && rect.bottom > scrollTopSpacer) {\n visibleAnchors.push(anchor);\n }\n });\n\n const values = visibleAnchors\n .map(a => a.getAttribute(\"data-page-anchor\"))\n .filter((v): v is string => v !== null);\n\n if (values.length > 0) {\n updateCurrentAnchor(values[0]);\n }\n };\n\n triggers.forEach(trigger => {\n trigger.addEventListener(\"click\", () => {\n const value = trigger.getAttribute(\"data-anchor-trigger\");\n if (!value) return;\n\n const target = document.querySelector<HTMLElement>(\n `[data-page-anchor=\"${value}\"]`\n );\n if (!target) return;\n\n const scrollTopSpacer = getScrollTopSpacer();\n const targetTop =\n target.getBoundingClientRect().top + window.scrollY - scrollTopSpacer;\n\n window.scrollTo({ top: targetTop, behavior: \"auto\" });\n\n if (mobileMenuOpen) {\n menuClose();\n mobileMenuOpen = false;\n }\n\n updateCurrentAnchor(value);\n logVisiblePageAnchor();\n });\n });\n\n window.addEventListener(\"scroll\", logVisiblePageAnchor);\n\n /* -----------------------------\n Mobile menu toggle\n ----------------------------- */\n\n const MOBILE_BREAKPOINT = 992;\n\n const isMobileScreen = (): boolean =>\n window.innerWidth < MOBILE_BREAKPOINT;\n\n function openMenuAnimation(): void {\n const checkbox = document.getElementById(\"menu-toggle\") as HTMLInputElement | null;\n if (!checkbox) return;\n checkbox.checked = true;\n }\n\n function closeMenuAnimation(): void {\n const checkbox = document.getElementById(\"menu-toggle\") as HTMLInputElement | null;\n if (!checkbox) return;\n checkbox.checked = false;\n }\n\n function menuOpen(): void {\n if (!isMobileScreen()) return;\n\n const menu = document.querySelector<HTMLElement>(\"[data-menu-content]\");\n if (!menu) return;\n\n menu.style.display = \"block\";\n openMenuAnimation();\n }\n\n function menuClose(): void {\n const menu = document.querySelector<HTMLElement>(\"[data-menu-content]\");\n if (!menu) return;\n\n menu.style.display = \"none\";\n closeMenuAnimation();\n }\n\n menuClose();\n mobileMenuOpen = false;\n\n const toggle = document.querySelector<HTMLElement>(\"[data-menu-toggle]\");\n if (toggle) {\n toggle.addEventListener(\"click\", () => {\n mobileMenuOpen = !mobileMenuOpen;\n mobileMenuOpen ? menuOpen() : menuClose();\n });\n }\n\n logVisiblePageAnchor();\n});\n\n\n/* -----------------------------\n Adjust grid column span for large cards\n----------------------------- */\n\ndocument\n .querySelectorAll<HTMLElement>(\"[large-card]\")\n .forEach(card => {\n if (card.classList.contains(\"w-condition-invisible\")) return;\n\n const parent = card.parentElement;\n if (!parent) return;\n\n parent.setAttribute(\"col-span\", \"2\");\n });\n\n\n/* -----------------------------\n Video autoplay and poster handling\n----------------------------- */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const revealContentDelay = window.innerWidth > 992 ? 1500 : 2500;\n\n const video1 = document.querySelector(\"[bloom-element='video-1']\") as HTMLVideoElement | null;\n const poster1 = document.querySelector(\"[bloom-element='video-poster-1']\") as HTMLImageElement | null;\n const video2 = document.querySelector(\"[bloom-element='video-2']\") as HTMLVideoElement | null;\n const video3 = document.querySelector(\"[bloom-element='video-3']\") as HTMLVideoElement | null;\n const content = document.querySelector(\"[bloom-element='content']\") as HTMLElement | null;\n const navigation = document.querySelector(\"[bloom-element='navigation']\") as HTMLElement | null;\n const footer = document.querySelector(\"[bloom-element='footer']\") as HTMLElement | null;\n const scrollIndicator = document.querySelector(\"[bloom-element='scroll-indicator']\") as HTMLElement | null;\n\n if (!video1 || !poster1 || !video2 || !video3 || !content) {\n console.warn(\"Required elements missing\");\n return;\n }\n\n /* ---------- SAFARI VIDEO SETUP ---------- */\n\n [video1, video2, video3].forEach(video => {\n video.muted = true;\n video.playsInline = true;\n video.setAttribute(\"playsinline\", \"\");\n video.setAttribute(\"webkit-playsinline\", \"\");\n });\n\n video3.loop = true;\n video3.style.visibility = \"hidden\";\n video3.style.opacity = \"0\";\n\n /* ---------- STATE ---------- */\n\n let video1Played = false;\n let video1Finished = false;\n let video2Triggered = false;\n let scrollLocked = true;\n let scrollY = 0;\n\n /* ---------- SCROLL LOCK (iOS SAFE) ---------- */\n\n const lockScroll = () => {\n scrollY = window.scrollY;\n document.body.style.position = \"fixed\";\n document.body.style.top = `-${scrollY}px`;\n document.body.style.width = \"100%\";\n };\n\n const unlockScroll = () => {\n document.body.style.position = \"\";\n document.body.style.top = \"\";\n document.body.style.width = \"\";\n window.scrollTo(0, scrollY);\n };\n\n lockScroll();\n\n /* ---------- INITIAL CONTENT STATE ---------- */\n\n content.style.transition = \"none\";\n content.style.transform = \"translateY(100vh)\";\n content.getBoundingClientRect();\n content.style.transition = \"transform 0.8s ease\";\n\n if (navigation) navigation.style.transform = \"translateY(-100%)\";\n if (footer) footer.style.transform = \"translateY(100%)\";\n\n if (scrollIndicator) {\n setTimeout(() => {\n scrollIndicator.style.opacity = \"1\";\n }, 1600);\n }\n\n /* ---------- VIDEO 1 ---------- */\n\n const playVideo1Once = () => {\n if (video1Played) return;\n video1Played = true;\n\n video1.play()\n .then(() => {\n poster1.style.display = \"none\";\n })\n .catch(() => { });\n };\n\n if (video1.readyState >= HTMLMediaElement.HAVE_ENOUGH_DATA) {\n playVideo1Once();\n } else {\n video1.addEventListener(\"canplay\", playVideo1Once, { once: true });\n }\n\n video1.addEventListener(\"ended\", () => {\n video1.pause();\n video1.currentTime = video1.duration;\n video1Finished = true;\n video2.style.display = \"block\";\n });\n\n /* ---------- VIDEO 2 TRIGGER ---------- */\n\n const triggerVideo2 = () => {\n if (!video1Finished || video2Triggered) return;\n\n video2Triggered = true;\n\n if (scrollIndicator) scrollIndicator.style.opacity = \"0\";\n\n video2.play().catch(() => { });\n setTimeout(revealContent, revealContentDelay);\n };\n\n const onWheel = (e: WheelEvent) => {\n if (!video1Finished) return;\n e.preventDefault();\n triggerVideo2();\n window.removeEventListener(\"wheel\", onWheel);\n };\n\n const onTouch = () => {\n triggerVideo2();\n window.removeEventListener(\"touchstart\", onTouch);\n };\n\n window.addEventListener(\"wheel\", onWheel, { passive: false });\n window.addEventListener(\"touchstart\", onTouch, { passive: true });\n\n /* ---------- VIDEO 3 ---------- */\n\n video2.addEventListener(\"ended\", () => {\n video2.pause();\n video2.currentTime = video2.duration;\n\n video3.style.visibility = \"visible\";\n video3.style.opacity = \"1\";\n video3.play().catch(() => { });\n });\n\n /* ---------- CONTENT REVEAL ---------- */\n\n function revealContent() {\n requestAnimationFrame(() => {\n if (content) content.style.transform = \"translateY(0)\";\n if (navigation) navigation.style.transform = \"translateY(0)\";\n if (footer) footer.style.transform = \"translateY(0)\";\n });\n\n setTimeout(() => {\n if (scrollLocked) {\n unlockScroll();\n scrollLocked = false;\n }\n }, 500);\n }\n});\n\n\n/* -----------------------------\n Mobile sticky header\n----------------------------- */\ndocument.addEventListener('DOMContentLoaded', () => {\n const MOBILE_MAX_WIDTH = 991;\n const STICKY_TOP = 52;\n\n // Exit early if not mobile\n if (window.innerWidth > MOBILE_MAX_WIDTH) return;\n\n const stickyBlocks = document.querySelectorAll<HTMLElement>('.bloom-sticky_block');\n if (!stickyBlocks.length) return;\n\n const updateStickyState = (): void => {\n stickyBlocks.forEach((el) => {\n const rect = el.getBoundingClientRect();\n\n const isSticky =\n rect.top <= STICKY_TOP &&\n rect.bottom > STICKY_TOP;\n\n el.setAttribute('active-page', isSticky ? 'true' : 'false');\n });\n };\n\n window.addEventListener('scroll', updateStickyState, { passive: true });\n\n // Initial run in case something is already sticky\n updateStickyState();\n});"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/styles.css
CHANGED
|
@@ -1,123 +1 @@
|
|
|
1
|
-
|
|
2
|
-
strong {
|
|
3
|
-
font-weight: 600;
|
|
4
|
-
}
|
|
5
|
-
[bloom-card] {
|
|
6
|
-
transition: transform 300ms ease;
|
|
7
|
-
}
|
|
8
|
-
[bloom-card]:hover {
|
|
9
|
-
transform: scale(1.02);
|
|
10
|
-
}
|
|
11
|
-
[data-current-anchor=true] {
|
|
12
|
-
backdrop-filter: blur(6px);
|
|
13
|
-
background-color: #ffffff38;
|
|
14
|
-
box-shadow: inset 0 0 0 1px #ffffff6b;
|
|
15
|
-
color: #fff;
|
|
16
|
-
}
|
|
17
|
-
@media screen and (max-width: 991px) {
|
|
18
|
-
[data-current-anchor=true] {
|
|
19
|
-
box-shadow: none;
|
|
20
|
-
background-color: #ffffff24;
|
|
21
|
-
justify-content: flex-start;
|
|
22
|
-
align-items: center;
|
|
23
|
-
width: 100%;
|
|
24
|
-
height: auto;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
[col-span="2"] {
|
|
28
|
-
grid-area: span 1 / span 2 / span 1 / span 2;
|
|
29
|
-
}
|
|
30
|
-
@media screen and (max-width: 991px) {
|
|
31
|
-
[col-span="2"] {
|
|
32
|
-
grid-column: span 2 / span 2;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
@media screen and (max-width: 767px) {
|
|
36
|
-
[col-span="2"] {
|
|
37
|
-
grid-column: span 1 / span 1;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
[bloom-element=video-1] {
|
|
41
|
-
position: absolute;
|
|
42
|
-
inset: 0;
|
|
43
|
-
width: 100%;
|
|
44
|
-
height: 100%;
|
|
45
|
-
object-fit: cover;
|
|
46
|
-
z-index: 1;
|
|
47
|
-
}
|
|
48
|
-
[bloom-element=video-poster-1] {
|
|
49
|
-
position: absolute;
|
|
50
|
-
inset: 0;
|
|
51
|
-
width: 100%;
|
|
52
|
-
height: 100%;
|
|
53
|
-
object-fit: cover;
|
|
54
|
-
z-index: 2;
|
|
55
|
-
}
|
|
56
|
-
[bloom-element=video-2] {
|
|
57
|
-
position: absolute;
|
|
58
|
-
inset: 0;
|
|
59
|
-
width: 100%;
|
|
60
|
-
height: 100%;
|
|
61
|
-
object-fit: cover;
|
|
62
|
-
z-index: 1;
|
|
63
|
-
display: none;
|
|
64
|
-
}
|
|
65
|
-
[bloom-element=video-3] {
|
|
66
|
-
position: absolute;
|
|
67
|
-
inset: 0;
|
|
68
|
-
width: 100%;
|
|
69
|
-
height: 100%;
|
|
70
|
-
object-fit: cover;
|
|
71
|
-
z-index: 1;
|
|
72
|
-
display: none;
|
|
73
|
-
}
|
|
74
|
-
.scroll-locked {
|
|
75
|
-
overflow: hidden;
|
|
76
|
-
}
|
|
77
|
-
[bloom-element=content] {
|
|
78
|
-
transform: translate(0, 100vh);
|
|
79
|
-
transition: transform 0.4s ease;
|
|
80
|
-
}
|
|
81
|
-
[bloom-element=navigation] {
|
|
82
|
-
transform: translate(0, -100px);
|
|
83
|
-
transition: transform 0.4s ease;
|
|
84
|
-
}
|
|
85
|
-
[bloom-element=footer] {
|
|
86
|
-
transform: translate(0, 100px);
|
|
87
|
-
transition: transform 0.4s ease;
|
|
88
|
-
}
|
|
89
|
-
[bloom-element=scroll-indicator] {
|
|
90
|
-
opacity: 0;
|
|
91
|
-
transition: opacity 0.3s ease;
|
|
92
|
-
}
|
|
93
|
-
.reveal {
|
|
94
|
-
transform: translateY(0);
|
|
95
|
-
}
|
|
96
|
-
[bloom-card=arrow] {
|
|
97
|
-
opacity: 0;
|
|
98
|
-
transition: opacity 0.3s ease;
|
|
99
|
-
}
|
|
100
|
-
[bloom-card=wrapper]:hover [bloom-card=arrow] {
|
|
101
|
-
opacity: 1;
|
|
102
|
-
}
|
|
103
|
-
@media (max-width: 991px) {
|
|
104
|
-
[bloom-card=arrow] {
|
|
105
|
-
opacity: 1;
|
|
106
|
-
transition: none;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
.bloom-card {
|
|
110
|
-
position: relative;
|
|
111
|
-
z-index: 1;
|
|
112
|
-
}
|
|
113
|
-
[active-page] {
|
|
114
|
-
backdrop-filter: blur(0px);
|
|
115
|
-
-webkit-backdrop-filter: blur(0px);
|
|
116
|
-
background-color: transparent;
|
|
117
|
-
}
|
|
118
|
-
[active-page=true] {
|
|
119
|
-
-webkit-backdrop-filter: blur(20px);
|
|
120
|
-
backdrop-filter: blur(20px);
|
|
121
|
-
background-color: #0000001c;
|
|
122
|
-
}
|
|
123
|
-
/*# sourceMappingURL=styles.css.map */
|
|
1
|
+
strong{font-weight:600}[bloom-card]{transition:transform .3s ease}[bloom-card]:hover{transform:scale(1.02)}[data-current-anchor=true]{backdrop-filter:blur(6px);background-color:#ffffff38;box-shadow:inset 0 0 0 1px #ffffff6b;color:#fff}@media screen and (max-width: 991px){[data-current-anchor=true]{box-shadow:none;background-color:#ffffff24;justify-content:flex-start;align-items:center;width:100%;height:auto}}[col-span="2"]{grid-area:span 1 / span 2 / span 1 / span 2}@media screen and (max-width: 991px){[col-span="2"]{grid-column:span 2 / span 2}}@media screen and (max-width: 767px){[col-span="2"]{grid-column:span 1 / span 1}}[bloom-element=video-1]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}[bloom-element=video-poster-1]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}[bloom-element=video-2],[bloom-element=video-3]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;display:none}.scroll-locked{overflow:hidden}[bloom-element=content]{transform:translateY(100vh);transition:transform .4s ease}[bloom-element=navigation]{transform:translateY(-100px);transition:transform .4s ease}[bloom-element=footer]{transform:translateY(100px);transition:transform .4s ease}[bloom-element=scroll-indicator]{opacity:0;transition:opacity .3s ease}.reveal{transform:translateY(0)}[bloom-card=arrow]{opacity:0;transition:opacity .3s ease}[bloom-card=wrapper]:hover [bloom-card=arrow]{opacity:1}@media (max-width: 991px){[bloom-card=arrow]{opacity:1;transition:none}}.bloom-card{position:relative;z-index:1}[active-page]{backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);background-color:transparent}[active-page=true]{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background-color:#0000001c}
|