1import{aa as D,ab as q,ac as fe,ad as A,ae as L,af as he,ag as W,ah as Y,ai as T,aj as O,ak as F,al as p,am as R,an as pe,ao as ve,ap as Re,aq as Ce,ar as Ie,as as Ae,at as Fe,r as M,j as g,L as Le,h as Ne}from"./index-Dg-VAw7j.js";const we=84,Te=192,je=14,ke=-20*(Math.PI/180),H=()=>fe*(we/Te),X=H()/we,K=e=>{const t=A(e/je*Math.PI*2);return D(t,q(ke))},G=e=>({...e,idleSize:H()}),de=e=>({x:e.x*X,y:e.y*X,z:e.z*X}),j="spark-1",V=400,Oe={core:p(-1.35,.95,-.55),satellite:p(1.25,-.75,.45),spark:p(-.85,-1.15,.65),ember:p(1.05,1.05,-.85),node:p(-1.05,-.55,1.15)},De=e=>{const t=Math.hypot(e.x,e.y,e.z)||1;return p(e.x/t,e.y/t,e.z/t)},qe=e=>De(Oe[e]??p(1,.3,-.4)),Ue=e=>1-L(Math.min(1,Math.max(0,(e-.12)/.88))),Be=(e,t)=>{const o=q(e.orbitTiltX);if(e.orbitRadius===0)return{pos:p(0,0,0),orient:o};const n=t*e.orbitSpeed*Math.PI*2+e.orbitPhase,s=F(A(n),p(e.orbitRadius,0,0));return{pos:F(o,s),orient:o}},Ke=({clock:e,state:t,paintOne:o})=>{const n=t.soloId;if(!n)return;const s=L(Math.min(1,Math.max(0,t.scatterProgress))),i=A(e/pe*Math.PI*2),a=D(A(0),q(he)),b=A(0),f=s>=1?b:W(Y(T(a),T(b),s)),v=Ue(s);for(const c of O){const y=Be(c,e),x=F(i,y.pos),w=D(i,y.orient);if(c.id===n){const S=p(R(x.x,0,s),R(x.y,0,s),R(x.z,0,s)),l=R(c.idleSize,H(),s),h={...c,idleSize:l},r=K(e),u=s<=0?w:s>=1?r:W(Y(T(w),T(r),s));o(h,S,u,0,1,f);continue}const d=qe(c.id),E=p(x.x+d.x*V*s,x.y+d.y*V*s,x.z+d.z*V*s);o(c,E,w,0,v,a)}},$e=e=>{const t=L(e);return p(k(0,-240,t),k(0,28,t),k(0,200,t))},Xe=e=>{const t=L(e);return p(k(300,0,t),k(-36,0,t),k(-260,0,t))},Ge=e=>e<.45?1:1-L((e-.45)/.55),Ve=e=>e>.55?1:L(e/.55),k=(e,t,o)=>e+(t-e)*o,We=.6,Ye=.9,ue=[[0,0],[1,0],[1,1],[0,1]],me=(e,t)=>Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z),He=(e,t)=>{const o=q(e.orbitTiltX);if(e.orbitRadius===0)return{pos:p(0,0,0),orient:o};const n=t*e.orbitSpeed*Math.PI*2+e.orbitPhase,s=F(A(n),p(e.orbitRadius,0,0));return{pos:F(o,s),orient:o}},Ze=(e,t,o)=>{const n=Ae[t],s={x:n.x*e.idleSize,y:n.y*e.idleSize,z:n.z*e.idleSize},i={x:n.x*e.target.w,y:n.y*e.target.h,z:n.z*e.target.d};return{x:R(s.x,i.x,o),y:R(s.y,i.y,o),z:R(s.z,i.z,o)}},Je=({o:e,pos:t,rotMat:o,p:n,alpha:s,sceneMat:i,raster:a,camDist:b,c
1x:f,cy:v,ss:c,dpr:y,strokeAlpha:x})=>{if(s<=.01)return;const w=[],d=[];for(let l=0;l<8;l+=1){const h=Ze(e,l,n);w[l]=h;const r=F(o,h),u=p(r.x+t.x,r.y+t.y,r.z+t.z);d[l]=F(i,u)}const E=F(i,t),S=Math.max(1,y*.9);for(const l of Ce){if(l.side&&n>We)continue;const[h,r,u,_]=l.idx,m=d[h],z=d[r],C=d[u],P=d[_],Z=z.x-m.x,J=z.y-m.y,Q=z.z-m.z,ee=P.x-m.x,te=P.y-m.y,se=P.z-m.z,ye=J*se-Q*te,be=Q*ee-Z*se;let U=Z*te-J*ee;const Ee=(m.x+z.x+C.x+P.x)/4-E.x,Se=(m.y+z.y+C.y+P.y)/4-E.y,Pe=(m.z+z.z+C.z+P.z)/4-E.z;if(ye*Ee+be*Se+U*Pe<0&&(U=-U),U<=0)continue;const oe=me(w[r],w[h])||1,ne=me(w[_],w[h])||1,re=e.cornerRatio*Math.min(oe,ne)*n,Me=Math.min(.5,re/oe),_e=Math.min(.5,re/ne),I=[m,z,C,P].map((N,B)=>{const le=Ie({x:N.x*c,y:N.y*c,z:N.z*c},b*y,f,v);return{x:le.sx,y:le.sy,z:N.z,u:ue[B][0],v:ue[B][1]}}),ae=e.outline.a*x*s;let ce=0,ie=0;if(ae>.01){const N=Math.hypot(I[1].x-I[0].x,I[1].y-I[0].y)||1,B=Math.hypot(I[3].x-I[0].x,I[3].y-I[0].y)||1;ce=Math.min(.5,S/N),ie=Math.min(.5,S/B)}const ze={pts:I,fr:e.color.r*s,fg:e.color.g*s,fb:e.color.b*s,sr:e.outline.r,sg:e.outline.g,sb:e.outline.b,sa:ae,ru:Me,rv:_e,tu:ce,tv:ie};a.drawFace(ze)}},Qe=({ctx:e,cssW:t,cssH:o,dpr:n,clock:s,morphProgress:i,state:a})=>{const b=ve(e);b.resize(Math.round(t*n),Math.round(o*n));const f=L(i),v=a.mode==="solo"||a.mode==="swap"||a.mode==="scatter",c=Math.min(t,o)/fe,y=Fe*c,x=t/2*n,w=o/2*n,d=c*n,E=v?A(0):D(A(0),q(he)),S=A(s/pe*Math.PI*2),l=1-f;b.begin();const h=(r,u,_,m,z,C=E)=>{Je({o:r,pos:u,rotMat:_,p:m,alpha:z,sceneMat:C,raster:b,camDist:y,cx:x,cy:w,ss:d,dpr:n,strokeAlpha:l})};if(a.mode==="constellation"||a.mode==="assemble")for(const r of O){const u=He(r,s),_=F(S,u.pos),m=D(S,u.orient),z=p(R(_.x,r.targetPos.x,f),R(_.y,r.targetPos.y,f),R(_.z,r.targetPos.z,f)),C=Re(0,r.target.leanY,r.target.leanZ);let P;f<=0?P=m:f>=1?P=C:P=W(Y(T(m),T(C),f)),h(r,z,P,f,1)}else if(a.mode==="scatter"&&a.soloId)Ke({clock:s,state:a,paintOne:h});else if(a.mode==="solo"&&a.soloId){const r=O.find(u=>u.id===a.soloId);r&&h(G(r),p(0,0,0),K(s),0,1)}else if(a.mode==="swap"&&a.swapFrom&&a.swapTo){const r=Math.min(1,Math.max(0,a.swapProgress)),u=O.find(m=>m.id===a.swapFrom),_=O.find(m=>m.id===a.swapTo);u&&h(G(u),de($e(r)),K(s),0,Ge(r)),_&&h(G(_),de(Xe(r)),K(s+.35),0,Ve(r))}b.flush()},et=(e,t,o)=>{const n=t-e;if(Math.abs(n)<=1e-4)return t;const s=o/Ye;return e+Math.sign(n)*Math.min(Math.abs(n),s)},tt=e=>{const t=M.useRef(null),o=M.useRef(0),n=M.useRef(0);return M.useEffect(()=>{const s=t.current;if(!s)return;const i=s.getContext("2d");if(!i)return;let a=0,b=performance.now(),f=0,v=0,c=Math.min(window.devicePixelRatio||1,2);const y=()=>{const d=s.getBoundingClientRect();f=Math.max(1,d.width),v=Math.max(1,d.height),c=Math.min(window.devicePixelRatio||1,2),s.width=Math.round(f*c),s.height=Math.round(v*c)};y();const x=new ResizeObserver(y);x.observe(s);const w=d=>{const E=Math.min((d-b)/1e3,.05);b=d;const S=e.current,l=S.mode==="assemble"?1:0;n.current=et(n.current,l,E),n.current<.001&&l===0&&(o.current+=E),Qe({ctx:i,cssW:f,cssH:v,dpr:c,clock:o.current,morphProgress:n.current,state:S}),a=requestAnimationFrame(w)};return a=requestAnimationFrame(w),()=>{cancelAnimationFrame(a),x.disconnect()}},[e]),{canvasRef:t}},st=({sceneStateRef:e,className:t})=>{const{canvasRef:o}=tt(e);return g.jsx("div",{className:`ml-logo-idle-3d ml-knowledge-scroll-scene${t?` ${t}`:""}`,children:g.jsx("canvas",{ref:o,className:"ml-logo-idle-3d-canvas",role:"img","aria-label":"Fragments de savoir Maieutic â scène 3D"})})},ge=["spark","satellite","ember","node","core"],ot={spark:{eyebrow:"Fragment 01 · Cyan",slides:["Une intuition isolée â un signal faible qui mérite d'être capturé avant de disparaître.","Elle tourne sur elle-même, se précise, attend d'être reliée aux autres pièces du savoir."]},satellite:{eyebrow:"Fragment 02 · Ambre",slides:["Une règle métier, un réflexe de recruteur â savoir tacite qui structure la décision.","Hors du logo, ce fragment vit sa propre orbite ; dans l'ensemble, il devient un pilier."]},ember:{eyebrow:"Fragment 03 · Corail",slides:["L'urgence, la friction, l'émotion d'un processus â ce qui ne tient pas dans un tableur.","Brûlant et mobile, il rappelle que la connaissance recruteur est aussi humaine."]},node:{eyebrow:"Fragment 04 · Lumineux",slides:["La synthèse partagée â le moment où l'équipe aligne ce qu'elle sait vraiment.","Un fragment clair qui relie les expérience
1s sans les aplatir."]},core:{eyebrow:"Fragment 05 · Socle",slides:["La mémoire de l'organisation â clients, mandats, historique, contexte durable.","Au centre, le socle gris : sans lui, les éclats de savoir ne tiennent pas ensemble."]}};function nt(e,t){const o=ot[e],n=[{id:`${e}-1`,mode:"solo",cubeId:e,eyebrow:o.eyebrow,title:o.slides[0],body:"Chaque cube est une idée autonome. Maieutic naît quand ces fragments se recomposent."},{id:`${e}-2`,mode:"solo",cubeId:e,eyebrow:o.eyebrow,title:o.slides[1],body:"Faites défiler : le texte change, le cube continue sa rotation â comme un savoir qui mûrit."}];return t&&n.push({id:`swap-${e}-${t}`,mode:"swap",swapFrom:e,swapTo:t,eyebrow:"Transition",title:"Un fragment s'approche, un autre arrive par l'arrière-plan",body:"La ligne de passage va de la droite vers la gauche, du fond vers vous â un échange de perspective."}),n}const $=[{id:"intro",mode:"constellation",eyebrow:"Maieutic",title:"Donner naissance à la connaissance",body:"Les cubes sont des éléments de savoir. Le logo est leur reconstruction â l'instant où les fragments deviennent méthode."},...ge.flatMap((e,t)=>nt(e,ge[t+1])),{id:"finale",mode:"assemble",eyebrow:"Synthèse",title:"Tous les fragments forment Maieutic",body:"Faites défiler encore : les pièces s'assemblent en logo â la connaissance prend forme."}],xe={mode:"constellation",swapProgress:0,scatterProgress:0},rt=(e,t,o)=>e.id===j&&e.mode==="solo"&&e.cubeId&&o<1?{mode:"scatter",soloId:e.cubeId,swapProgress:0,scatterProgress:o}:e.mode==="solo"&&e.cubeId?{mode:"solo",soloId:e.cubeId,swapProgress:0,scatterProgress:1}:e.mode==="swap"&&e.swapFrom&&e.swapTo?{mode:"swap",swapFrom:e.swapFrom,swapTo:e.swapTo,swapProgress:t,scatterProgress:1}:e.mode==="assemble"?{mode:"assemble",swapProgress:0,scatterProgress:0}:{mode:"constellation",swapProgress:0,scatterProgress:0},at=e=>{const t=M.useRef([]),[o,n]=M.useState(0),[s,i]=M.useState(0),[a,b]=M.useState(0),f=M.useCallback(c=>y=>{t.current[c]=y},[]);return M.useEffect(()=>{const c=()=>{const y=window.innerHeight;let x=0,w=0,d=0;t.current.forEach((E,S)=>{if(!E)return;const l=E.getBoundingClientRect(),h=y*.42;if(l.top<=h){x=S;const r=$[S];if((r==null?void 0:r.mode)==="swap"){const u=Math.max(l.height-y*.25,1);w=Math.min(1,Math.max(0,(h-l.top)/u))}if((r==null?void 0:r.id)===j){const u=Math.max(l.height*.55,1);d=Math.min(1,Math.max(0,(h-l.top)/u))}}}),n(x),i(w),b(d)};return c(),window.addEventListener("scroll",c,{passive:!0}),window.addEventListener("resize",c),()=>{window.removeEventListener("scroll",c),window.removeEventListener("resize",c)}},[]),M.useEffect(()=>{const c=$[o];if(!c){e.current=xe;return}e.current=rt(c,c.mode==="swap"?s:0,c.id===j?a:1)},[o,s,a,e]),{activePanel:$[o]??null,activeIndex:o,scatterProgress:a,setPanelRef:f}},ct=()=>{const e=M.useRef(xe),{activePanel:t,scatterProgress:o,setPanelRef:n}=at(e),s=!!(t&&(t.id===j||t.mode==="constellation"||t.mode==="assemble")&&(t.id!==j||o<1));return g.jsxs("div",{className:"ml-knowledge-scroll-page min-h-screen w-full",children:[g.jsxs("header",{className:"fixed top-0 left-0 right-0 z-20 flex items-center justify-between px-4 py-3 text-xs bg-white/80 backdrop-blur-md border-b border-slate-200/70",children:[g.jsx("span",{className:"font-semibold tracking-wide text-slate-700",children:"Prototype · fragments de savoir"}),g.jsx(Le,{to:"/accueil#about",className:"font-semibold text-[#00ace5] hover:underline underline-offset-2",children:"Voir sur /accueil"})]}),g.jsxs("div",{className:"ml-knowledge-scroll-layout pt-12",children:[g.jsxs("div",{className:"ml-knowledge-scroll-scene-sticky",children:[g.jsx("div",{className:`ml-knowledge-scroll-scene-frame${s?" ml-knowledge-scroll-scene-frame--wide":""}`,children:g.jsx(st,{sceneStateRef:e})}),g.jsx("p",{className:"ml-knowledge-scroll-hero-note hidden lg:block",children:"Faites défiler â"})]}),g.jsx("div",{className:"ml-knowledge-scroll-panels",children:$.map((i,a)=>g.jsx("section",{ref:n(a),"data-knowledge-panel":i.id,className:`ml-knowledge-scroll-panel${i.mode==="swap"?" ml-knowledge-scroll-panel--swap":""}${i.id===j?" ml-knowledge-scroll-panel--scatter-intro":""}`,"aria-current":(t==null?void 0:t.id)===i.id?"true":void 0,children:g.jsxs("div",{className:"ml-knowledge-scroll-copy",children:[i.eyebrow?g.jsx("p",{className:"ml-knowledge-scroll-copy__eyebrow",children:i.eyebrow}):null,g.jsx("h2",{className:"ml-knowledge-scroll-copy__title",children:i.title}),g.jsx("p",{className:"ml-knowledge-scroll-copy__body",children:i.body})]})},i.id))})]})]})},it=()=>{try{return!1}catch{return!1}},dt=()=>it()?g.jsx(ct,{}):g.jsx(Ne,{to:"/accueil",replace:!0});export{dt as KnowledgeCubesScrollDemoRoute};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.