{"version":3,"file":"FilMenu.DXvJM5_T.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/UTosyg8dOUlI8fOtdXi5/0Q8GoDmoxVawiNa7vstH/FilMenu.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef}from\"react\";/**\r\n * Fil du menu mobile — `.mnav-twirl` de la maquette, transposé tel quel.\r\n *\r\n * Le tracé est celui du node Figma 25:9, le même geste que le fil de la page mais\r\n * dans son propre repère. Il déborde volontairement du panneau (`gauche` négatif,\r\n * `largeur` > 100) : c'est le panneau qui le recadre.\r\n *\r\n * `pathLength=\"1\"` normalise la longueur, donc `stroke-dasharray:1` +\r\n * `stroke-dashoffset:1` cachent le trait entier quel que soit le tracé, et le\r\n * ramener à 0 le dessine. La maquette déclenche ça sur `.mnav.show` ; ici le\r\n * tiroir reste monté et caché, donc on écoute la visibilité réelle.\r\n *\r\n * @framerIntrinsicWidth 400\r\n * @framerIntrinsicHeight 800\r\n * @framerSupportedLayoutWidth any\r\n * @framerSupportedLayoutHeight any\r\n * @framerDisableUnlink\r\n */export default function FilMenu(props){const{trace,boite,couleur,epaisseur,haut,gauche,largeur,duree,retard,largeurFigee,decalageX}=props;const pathRef=useRef(null);const hoteRef=useRef(null);// Framer enveloppe ce composant dans un div positionne qui garde\n// `pointer-events: auto`, meme si la racine est en `none`. Ce wrapper\n// recouvrait des CTA et recevait leurs clics a leur place (mesure du 06/09),\n// et il peignait le fil par-dessus les fonds de survol des cartes. On\n// neutralise la chaine de parents qui ne contient QUE ce fil.\nuseEffect(()=>{// Sans cette garde, le calque devient inselectionnable dans l'editeur.\nif(RenderTarget.current()===RenderTarget.canvas)return;let n=hoteRef.current?.parentElement;while(n&&n.childElementCount===1&&n.tagName!==\"MAIN\"){n.style.pointerEvents=\"none\";n=n.parentElement;}},[]);useEffect(()=>{const path=pathRef.current;const svg=path&&path.ownerSVGElement;if(!path||!svg)return;const reduce=typeof matchMedia===\"function\"&&matchMedia(\"(prefers-reduced-motion:reduce)\").matches;if(reduce){path.style.strokeDashoffset=\"0\";return;}let raf1=0;let raf2=0;const io=new IntersectionObserver(entries=>{for(const e of entries){if(!e.isIntersecting){path.style.strokeDashoffset=\"1\";continue;}// Deux trames : poser la valeur dans la trame du montage\n// sauterait la transition et ferait apparaître le fil d'un coup.\nraf1=requestAnimationFrame(()=>{raf2=requestAnimationFrame(()=>{path.style.strokeDashoffset=\"0\";});});}},{threshold:.01});io.observe(svg);return()=>{io.disconnect();cancelAnimationFrame(raf1);cancelAnimationFrame(raf2);};},[trace,boite]);return /*#__PURE__*/_jsx(\"div\",{ref:hoteRef,style:{position:\"absolute\",inset:0,overflow:\"visible\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"svg\",{viewBox:boite,fill:\"none\",\"aria-hidden\":\"true\",style:{position:\"absolute\",top:`${haut}%`,// Plafonné : `min(Xpx, Y%)`, la formule de la charte. Le tracé garde\n// sa taille tant que la fenêtre est large, et ne se remet à suivre\n// que sur les petites, là où le laisser déborder l'enverrait très\n// au-delà du bas de sa section. Ancré par la DROITE, comme la\n// maquette : c'est ce bord-là qui doit rester en place.\nleft:largeurFigee?\"auto\":`${gauche}%`,right:largeurFigee?`${decalageX||0}px`:\"auto\",width:largeurFigee?`min(${largeurFigee}px, ${largeur}%)`:`${largeur}%`,// hauteur déduite du viewBox : le geste garde ses proportions.\nheight:\"auto\",color:couleur,overflow:\"visible\",display:\"block\"},children:/*#__PURE__*/_jsx(\"path\",{ref:pathRef,pathLength:\"1\",d:trace,fill:\"none\",stroke:\"currentColor\",strokeWidth:epaisseur,vectorEffect:\"non-scaling-stroke\",strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{strokeDasharray:1,strokeDashoffset:1,transition:`stroke-dashoffset ${duree}s cubic-bezier(.23,1,.32,1) ${retard}s`}})})});}FilMenu.defaultProps={trace:\"M1530.91 12.4142C1292.41 -58.0858 1072.32 287.48 956.791 386.751C841.266 486.023 775.561 458.617 697.997 430.864C620.433 403.112 587.253 347.606 722.197 397.373C857.141 447.139 823.854 534.509 675.806 487.997C527.758 441.486 610.394 413.733 688.909 456.99C767.424 500.246 805.912 592.838 694.933 656.913C541.918 754.047 252.032 608.12 105.992 822.005C-40.0485 1035.89 -122.041 1831.5 511.959 1645C1145.96 1458.5 1098 1530.5 1098 1530.5\",boite:\"-130 -80 1670 1760\",couleur:\"#FF33C5\",epaisseur:9,haut:30,gauche:-84,largeur:230,duree:1.4,retard:.12,largeurFigee:0,decalageX:0};addPropertyControls(FilMenu,{trace:{type:ControlType.String,title:\"Trac\\xe9\",displayTextArea:true},boite:{type:ControlType.String,title:\"Rep\\xe8re\",description:\"viewBox du trac\\xe9.\"},couleur:{type:ControlType.Color,title:\"Couleur\",defaultValue:\"#FF33C5\"},epaisseur:{type:ControlType.Number,title:\"\\xc9paisseur\",min:1,max:20,step:.5,defaultValue:9},haut:{type:ControlType.Number,title:\"Haut\",description:\"En % du panneau.\",min:-200,max:200,step:1,defaultValue:30},gauche:{type:ControlType.Number,title:\"Gauche\",description:\"En % du panneau. N\\xe9gatif = d\\xe9borde \\xe0 gauche.\",min:-300,max:200,step:1,defaultValue:-84},largeur:{type:ControlType.Number,title:\"Largeur\",description:\"En % du panneau.\",min:20,max:500,step:1,defaultValue:230,hidden:p=>p.largeurFigee>0},largeurFigee:{type:ControlType.Number,title:\"Largeur fig\\xe9e\",description:\"En px. \\xc0 0, le trac\\xe9 suit son conteneur en pourcentage. Au-dessus, il garde sa taille \\xe0 toute largeur d'\\xe9cran et se contente de se recentrer.\",min:0,max:3e3,step:1,defaultValue:0},decalageX:{type:ControlType.Number,title:\"Bord droit\",description:\"Position du bord DROIT du trac\\xe9, en px depuis la droite du conteneur. N\\xe9gatif = il d\\xe9borde.\",min:-1500,max:1500,step:1,defaultValue:0,hidden:p=>!p.largeurFigee},duree:{type:ControlType.Number,title:\"Dur\\xe9e\",min:0,max:4,step:.05,defaultValue:1.4},retard:{type:ControlType.Number,title:\"Retard\",min:0,max:2,step:.02,defaultValue:.12}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FilMenu\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"800\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FilMenu.map"],"mappings":"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"}