@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 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": "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",
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
- /* src/styles.css */
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}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fynd-design-engineering/fynd-bloom",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Bloom edition static javascript library",
5
5
  "license": "MIT",
6
6
  "keywords": [],