{"version":3,"file":"TripsterWidget.O2LQrwJs.mjs","names":["React.useRef","React.useState","React.useCallback"],"sources":["https:/framerusercontent.com/modules/n6kqrWYr3JpwScvFZLzb/s4r2E5zFqRLp1RppqsA8/TripsterWidget.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function TripsterWidget({city,query}){const containerRef=React.useRef(null);const BREAKPOINT=600;const SMALL_NUM=3;const LARGE_NUM=6;const lastBucketRef=React.useRef(null);const[num,setNum]=React.useState(LARGE_NUM);const WIDGET_SCRIPT_ID=\"tripster-widget-153510\"// MUST stay fixed for affiliate linking\n;const buildSrc=React.useCallback(n=>{return`https://experience.tripster.ru/partner/widget.js?city=${encodeURIComponent(city)}&q=${encodeURIComponent(query)}&view=experience&template=horizontal&mobile=list&order=top&width=100%25&num=${encodeURIComponent(String(n))}&version=2&partner=ingry&features=notitle%2Cprice&script_id=${WIDGET_SCRIPT_ID}`;},[city,query]);const inject=React.useCallback(n=>{const container=containerRef.current;if(!container)return;// remove previous widget content + script\ncontainer.innerHTML=\"\";const script=document.createElement(\"script\");script.id=WIDGET_SCRIPT_ID// keep fixed\n;script.src=buildSrc(n);script.async=true;container.appendChild(script);},[buildSrc]);// init / update when city/query changes (keep current num)\nReact.useEffect(()=>{inject(num);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[city,query]);// observe width and update num only when crossing breakpoint\nReact.useEffect(()=>{const el=containerRef.current;if(!el)return;let timer=null;const ro=new ResizeObserver(entries=>{const width=entries[0].contentRect.width;const bucket=width<BREAKPOINT?\"small\":\"large\";const nextNum=bucket===\"small\"?SMALL_NUM:LARGE_NUM;// debounce resize spam\nif(timer)window.clearTimeout(timer);timer=window.setTimeout(()=>{if(lastBucketRef.current===null){lastBucketRef.current=bucket;setNum(nextNum);inject(nextNum);return;}if(bucket!==lastBucketRef.current){lastBucketRef.current=bucket;setNum(nextNum);inject(nextNum);}},120);});ro.observe(el);return()=>{if(timer)window.clearTimeout(timer);ro.disconnect();};},[inject]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",minHeight:200}});}addPropertyControls(TripsterWidget,{city:{type:ControlType.String,title:\"City\",defaultValue:\"Saint_Petersburg\"},query:{type:ControlType.String,title:\"Query\",defaultValue:\"аничков мост\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TripsterWidget\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TripsterWidget.map"],"mappings":"6MAGG,SAAwB,EAAe,CAAC,OAAK,SAAO,CAAC,IAAM,EAAaA,EAAa,IAAI,EAAiE,EAAcA,EAAa,IAAI,EAAO,CAAC,EAAI,GAAQC,EAAe,CAAS,EAAQ,EAAiB,yBAC1P,EAASC,EAAkB,GAAU,yDAAyD,mBAAmB,CAAI,EAAE,KAAK,mBAAmB,CAAK,EAAE,8EAA8E,mBAAmB,OAAO,CAAC,CAAC,EAAE,8DAA8D,IAAqB,CAAC,EAAK,CAAK,CAAC,EAAQ,EAAOA,EAAkB,GAAG,CAAC,IAAM,EAAU,EAAa,QAAQ,GAAG,CAAC,EAAU,OAChc,EAAU,UAAU,GAAG,IAAM,EAAO,SAAS,cAAc,QAAQ,EAAE,EAAO,GAAG,EAC9E,EAAO,IAAI,EAAS,CAAC,EAAE,EAAO,MAAM,GAAK,EAAU,YAAY,CAAM,CAAE,EAAE,CAAC,CAAQ,CAAC,EAI0R,OAH9W,MAAoB,CAAC,EAAO,CAAG,CAC/B,EAAE,CAAC,EAAK,CAAK,CAAC,EACd,MAAoB,CAAC,IAAM,EAAG,EAAa,QAAQ,GAAG,CAAC,EAAG,OAAO,IAAI,EAAM,KAAW,EAAG,IAAI,eAAe,GAAS,CAA0C,IAAM,EAAnC,EAAQ,EAAE,CAAC,YAAY,MAAyB,IAAW,QAAQ,QAAc,EAAQ,IAAS,QAAQ,EAAU,EACnP,GAAM,EAAO,aAAa,CAAK,EAAE,EAAM,EAAO,eAAe,CAAC,GAAG,EAAc,UAAU,KAAK,CAAC,EAAc,QAAQ,EAAO,EAAO,CAAO,EAAE,EAAO,CAAO,EAAE,MAAO,CAAI,IAAS,EAAc,UAAS,EAAc,QAAQ,EAAO,EAAO,CAAO,EAAE,EAAO,CAAO,EAAG,EAAE,GAAG,CAAE,CAAC,EAAiB,OAAf,EAAG,QAAQ,CAAE,MAAY,CAAI,GAAM,EAAO,aAAa,CAAK,EAAE,EAAG,WAAW,CAAE,CAAE,EAAE,CAAC,CAAM,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,SAAS,SAAS,UAAU,GAAG,CAAC,CAAC,CAAE,qBAV1b,IAA4B,IAAoD,EAU2W,EAAoB,EAAe,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,kBAAkB,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,cAAc,CAAC,CAAC"}