Repository navigation
Expand file tree
/
Copy pathmethod-app.js
More file actions
1 lines (1 loc) · 8.1 KB
/
Copy pathmethod-app.js
File metadata and controls
1 lines (1 loc) · 8.1 KB
1
(()=>{const{useState:N,useEffect:k,useRef:x}=React,s=window.METHOD_COPY,h=window.COPY,M="index.html",a=(e,t)=>e&&e[t]||e&&e.en||"";function i(e){return typeof e!="string"||e.indexOf("[")===-1&&e.indexOf("]")===-1?e:e.split(/(\[|\])/g).map((t,r)=>t==="["||t==="]"?React.createElement("span",{key:r,className:"brk"},t):t===""?null:React.createElement("span",{key:r,className:"brk-inner"},t))}function f(){const e=x(null),[t,r]=N(!1);return k(()=>{const o=e.current;if(!o)return;let n=null,u=!1;const d=()=>{u||(u=!0,r(!0),n&&n.disconnect(),clearInterval(v),removeEventListener("scroll",p))},p=()=>{const m=o.getBoundingClientRect(),l=window.innerHeight||0;m.height>0&&m.top<l*.92&&d()},v=setInterval(p,200);try{n=new IntersectionObserver(([m])=>{m.isIntersecting&&d()},{rootMargin:"-8% 0px",threshold:.05}),n.observe(o)}catch{}return addEventListener("scroll",p,{passive:!0}),p(),()=>{n&&n.disconnect(),clearInterval(v),removeEventListener("scroll",p)}},[]),[e,t]}function I({locale:e,setLocale:t}){return React.createElement("header",{className:"topnav"},React.createElement("a",{href:M,className:"brandmark","aria-label":"Mount Rocks home"},React.createElement("img",{src:window.MOUNT_LOGO_SRC||"assets/Mount_logo.svg",alt:"Mount Rocks"})),React.createElement("div",{className:"nav-right"},React.createElement("div",{className:"lang-pill glass-panel",role:"group","aria-label":"Language"},React.createElement("button",{"data-active":e==="en",onClick:()=>t("en")},"EN"),React.createElement("span",{className:"lang-sep"},"/"),React.createElement("button",{"data-active":e==="uk",onClick:()=>t("uk")},"UK")),React.createElement("a",{className:"menu-pill glass-panel sv-back",href:M},React.createElement("span",null,"\u2190"),React.createElement("span",null,a(s.back,e)))))}function C({locale:e}){return React.createElement("section",{className:"mt-hero","data-rock-scene":"true","data-screen-label":"Method \u2014 hero"},React.createElement("div",{className:"mt-hero-content"},React.createElement("div",{className:"mono sv-tag"},i(a(s.tag,e))),React.createElement("h1",{className:"mt-h1"},React.createElement("span",{className:"mt-360"},"360"),React.createElement("span",null,i("[MIND]"))),React.createElement("p",{className:"mt-sub"},a(s.sub,e))),React.createElement("div",{className:"mt-scroll mono","aria-hidden":"true"},React.createElement("span",null,a(s.scroll,e)),React.createElement("i",{className:"scroll-line"})))}function E({l:e,i:t,locale:r}){const[o,n]=f();return React.createElement("div",{ref:o,className:`mt-lesson mt-r ${n?"on":""}`},React.createElement("span",{className:"mono mt-lesson-n"},i(`[${String(t+1).padStart(2,"0")}]`)),React.createElement("h3",{className:"mt-lesson-t"},a(e.t,r)),React.createElement("p",{className:"mt-lesson-b"},a(e.b,r)))}function O({locale:e}){const[t,r]=f(),[o,n]=f();return React.createElement("section",{className:"mt-story","data-screen-label":"Method \u2014 how we got here"},React.createElement("div",{ref:t,className:`section-head mt-r ${r?"on":""}`,style:{marginBottom:"28px"}},React.createElement("span",{className:"mono"},i(a(s.storyTag,e)))),React.createElement("p",{className:"mt-story-intro"},a(s.storyIntro,e)),s.lessons.map((u,d)=>React.createElement(E,{key:d,l:u,i:d,locale:e})),React.createElement("p",{ref:o,className:`mt-bridge mt-r ${n?"on":""}`},i(a(s.bridge,e))))}function T({locale:e}){const t=h.mindSteps,r=(()=>{try{return matchMedia("(prefers-reduced-motion: reduce)").matches}catch{return!1}})(),o=x(null),[n,u]=N(0),[d,p]=N(0);k(()=>{if(r)return;const l=o.current;if(!l)return;let c=null;const b=()=>{c=null;const y=l.getBoundingClientRect(),S=window.innerHeight||1,R=Math.max(1,y.height-S),w=Math.min(1,Math.max(0,-y.top/R));p(w),u(Math.min(t.length-1,Math.floor(w*t.length)))},g=()=>{c||(c=requestAnimationFrame(b))};addEventListener("scroll",g,{passive:!0}),addEventListener("resize",g);const L=setInterval(b,250);return b(),()=>{removeEventListener("scroll",g),removeEventListener("resize",g),clearInterval(L),c&&cancelAnimationFrame(c)}},[r]);const v=a(s.stepLabel,e);if(r)return React.createElement("section",{"data-screen-label":"Method \u2014 four moves"},React.createElement("div",{className:"section-head",style:{padding:"56px 56px 0"}},React.createElement("span",{className:"mono"},i(a(s.stepsTag,e)))),t.map((l,c)=>React.createElement("div",{key:c,className:"mt-static-row"},React.createElement("div",{className:"mt-static-letter"},i(`[${l.letter}]`)),React.createElement("div",{className:"mt-step"},React.createElement("span",{className:"mono mt-step-n"},v," ",String(c+1).padStart(2,"0")," \u2014 ",l.word),React.createElement("p",{className:"mt-step-text"},a(l,e)),React.createElement("div",{className:"mt-step-why"},React.createElement("span",{className:"mono"},i(a(s.whyLabel,e))),React.createElement("p",null,a(s.whys[c],e)))))));const m=t[n];return React.createElement("section",{className:"mt-track",ref:o,"data-screen-label":"Method \u2014 four moves"},React.createElement("div",{className:"mt-sticky"},React.createElement("div",{className:"mt-big",key:`L${n}`},i(`[${m.letter}]`)),React.createElement("div",{className:"mt-step",key:`S${n}`},React.createElement("span",{className:"mono mt-step-n"},i(a(s.stepsTag,e))),React.createElement("h3",{className:"mt-step-word"},v," ",String(n+1).padStart(2,"0")," \u2014 ",m.word),React.createElement("p",{className:"mt-step-text"},a(m,e)),React.createElement("div",{className:"mt-step-why"},React.createElement("span",{className:"mono"},i(a(s.whyLabel,e))),React.createElement("p",null,a(s.whys[n],e)))),React.createElement("div",{className:"mt-rail mono"},t.map((l,c)=>React.createElement("b",{key:c,"data-on":c<=n?"true":"false"},String(c+1).padStart(2,"0"))),React.createElement("span",{className:"mt-rail-bar"},React.createElement("i",{style:{width:`${d*100}%`}})))))}function $({locale:e}){const[t,r]=f(),o=(s.ringRoles||"").repeat(2);return React.createElement("section",{ref:t,className:`mt-ring mt-r ${r?"on":""}`,"data-screen-label":"Method \u2014 why 360"},React.createElement("div",null,React.createElement("div",{className:"section-head"},React.createElement("span",{className:"mono"},i(a(s.ringTag,e)))),React.createElement("p",{className:"mt-ring-line"},a(s.ringLine,e)),React.createElement("p",{className:"mt-ring-body"},a(s.ringBody,e))),React.createElement("div",{className:"mt-ring-stage","aria-hidden":"true"},React.createElement("svg",{className:"mt-ring-svg",viewBox:"0 0 600 600"},React.createElement("defs",null,React.createElement("path",{id:"mt-circ",d:"M300,300 m -238,0 a238,238 0 1,1 476,0 a238,238 0 1,1 -476,0",fill:"none"})),React.createElement("text",null,React.createElement("textPath",{href:"#mt-circ"},o))),React.createElement("div",{className:"mt-ring-center"},React.createElement("div",{className:"mt-ring-brain","data-rock-scene":"true","data-scene":"brain","data-no-dim":"true"}))))}function B({locale:e}){const t=a(h.ctaMail,e);return React.createElement("section",{className:"sv-cta","data-screen-label":"Method \u2014 contact"},React.createElement("h2",{className:"sv-cta-headline"},a(h.ctaHeadline1,e)," ",a(h.ctaHeadline2,e)),React.createElement("a",{href:`mailto:${t}`,className:"cta-button glass-panel"},React.createElement("span",null,a(h.ctaButton,e)),React.createElement("i",{className:"cta-button-glow"})),React.createElement("div",{className:"cta-mail mono"},t))}function H(){const[e,t]=N(()=>{try{return localStorage.getItem("mr-locale")==="uk"?"uk":"en"}catch{return"en"}}),r=o=>{t(o);try{localStorage.setItem("mr-locale",o)}catch{}};return k(()=>{document.documentElement.dataset.locale=e,document.title="Mount Rocks \u2014 360 MIND"},[e]),React.createElement(React.Fragment,null,React.createElement("a",{className:"skip-link",href:"#main"},a(window.COPY.skipToContent,e)),React.createElement(I,{locale:e,setLocale:r}),React.createElement("main",{id:"main"},React.createElement(C,{locale:e}),React.createElement(O,{locale:e}),React.createElement(T,{locale:e}),React.createElement($,{locale:e}),React.createElement(B,{locale:e})),React.createElement("footer",{className:"sv-foot mono"},React.createElement("a",{href:M},"\u2190 MOUNT ROCKS"),React.createElement("span",null,"VALENCIA \xB7 EU")))}const P=ReactDOM.createRoot(document.getElementById("root"));P.render(React.createElement(H,null));})();