{"version":3,"file":"GridAlignment.C_5imZTi.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/58xBuMo3UrWYpGoGIdd7/KBH6Lbo8OQd2t5AzNlIe/GridAlignment.js"],"sourcesContent":["// GridRTLOverride.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";function setRefValue(ref,value){if(!ref)return;if(typeof ref===\"function\"){ref(value);}else{ref.current=value;}}function withLocalRTLDirection(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const mergedStyle={...props?.style||{},direction:\"rtl\"};return /*#__PURE__*/_jsx(Component,{ref:ref,...props,style:mergedStyle});});}function withLocalLTRDirection(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const mergedStyle={...props?.style||{},direction:\"ltr\"};return /*#__PURE__*/_jsx(Component,{ref:ref,...props,style:mergedStyle});});}export function withGridRTLOverride(Component){return withLocalRTLDirection(Component);}export function RTLGridPlacement(Component){return withLocalRTLDirection(Component);}export function RTLSearchInput(Component){return withLocalRTLDirection(Component);}export function LTRContentFlow(Component){return withLocalLTRDirection(Component);}export function HideEmptyFundSection(Component){return /*#__PURE__*/forwardRef(function HideEmptyFundSectionOverride(props,ref){const hostRef=useRef(null);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{if(typeof window===\"undefined\")return;const host=hostRef.current;if(!host)return;const capturedDisplay=host.style.display;const safeRestoreDisplay=capturedDisplay&&capturedDisplay.trim()!==\"none\"?capturedDisplay:\"\";let frameId=0;let isRunning=true;let lastEvaluatedAt=0;const evaluationIntervalMs=120;const evaluate=()=>{const grid=host.querySelector(\"[id^='fund-grid-']\");let desiredDisplay=safeRestoreDisplay;if(!grid){desiredDisplay=safeRestoreDisplay;}else{// Emptiness is derived structurally, never from measured\n// geometry. This override hides `host`, and a hidden host\n// collapses the grid's height and descendant rects to zero,\n// so a geometry test would stay \"empty\" forever and latch\n// the section hidden no matter how the filter changes.\n// The grid is a masonry with one child element per column,\n// so every column must be summed. Reading only the first\n// child would undercount and could hide a populated section.\nconst renderedItemCount=Array.from(grid.children).reduce((sum,column)=>sum+column.childElementCount,0);const isEmpty=renderedItemCount===0;desiredDisplay=isEmpty?\"none\":safeRestoreDisplay;}if(host.style.display!==desiredDisplay){host.style.display=desiredDisplay;}};const loop=time=>{if(!isRunning)return;if(document.hidden){frameId=window.requestAnimationFrame(loop);return;}if(time-lastEvaluatedAt>=evaluationIntervalMs){lastEvaluatedAt=time;evaluate();}frameId=window.requestAnimationFrame(loop);};const scheduleEvaluate=()=>{if(document.hidden)return;evaluate();};const onVisibilityChange=()=>{if(!document.hidden){lastEvaluatedAt=0;evaluate();}};const mutationObserver=new MutationObserver(()=>{scheduleEvaluate();});mutationObserver.observe(host,{subtree:true,childList:true,attributes:true,characterData:false});const resizeObserver=new ResizeObserver(()=>{scheduleEvaluate();});resizeObserver.observe(host);const grid=host.querySelector(\"[id^='fund-grid-']\");if(grid)resizeObserver.observe(grid);window.addEventListener(\"resize\",scheduleEvaluate);window.addEventListener(\"popstate\",scheduleEvaluate);document.addEventListener(\"visibilitychange\",onVisibilityChange);frameId=window.requestAnimationFrame(loop);scheduleEvaluate();return()=>{isRunning=false;if(frameId)window.cancelAnimationFrame(frameId);mutationObserver.disconnect();resizeObserver.disconnect();window.removeEventListener(\"resize\",scheduleEvaluate);window.removeEventListener(\"popstate\",scheduleEvaluate);document.removeEventListener(\"visibilitychange\",onVisibilityChange);host.style.display=safeRestoreDisplay;};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}export function ResetEmptyProviderFilter(Component){return /*#__PURE__*/forwardRef(function ResetEmptyProviderFilterOverride(props,ref){const hostRef=useRef(null);const isApplyingRef=useRef(false);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{if(typeof window===\"undefined\")return;const filterParamKeys=[\"providers\",\"assets\",\"market\"];const evaluateAndResetIfNeeded=()=>{if(isApplyingRef.current)return;const url=new URL(window.location.href);const currentRelativeUrl=`${window.location.pathname}${window.location.search}${window.location.hash}`;let didDeleteEmptyParam=false;for(const key of filterParamKeys){if(!url.searchParams.has(key))continue;const rawValues=url.searchParams.getAll(key);const hasOnlyWhitespaceValues=rawValues.every(value=>value.trim().length===0);if(hasOnlyWhitespaceValues){url.searchParams.delete(key);didDeleteEmptyParam=true;}}if(!didDeleteEmptyParam)return;const nextUrl=`${url.pathname}${url.search}${url.hash}`;if(nextUrl===currentRelativeUrl)return;isApplyingRef.current=true;window.history.replaceState(window.history.state,\"\",nextUrl);window.dispatchEvent(new PopStateEvent(\"popstate\"));window.setTimeout(()=>{isApplyingRef.current=false;},100);};const scheduleEvaluate=()=>{window.requestAnimationFrame(evaluateAndResetIfNeeded);};window.addEventListener(\"popstate\",scheduleEvaluate);scheduleEvaluate();return()=>{window.removeEventListener(\"popstate\",scheduleEvaluate);};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}export function SafeAssetFilterMenu(Component){return /*#__PURE__*/forwardRef(function SafeAssetFilterMenuOverride(props,ref){return /*#__PURE__*/_jsx(Component,{ref:ref,...props});});}const BRAND_COLOR=\"rgb(72, 87, 252)\";const ACTIVE_TAB_CLASS=\"drahim-filter-tab-active\";const ACTIVE_TAB_STYLE_ID=\"drahim-filter-tab-style\";// Framer paints the tab border on an ::after pseudo-element, which inline\n// styles cannot reach, so the active colour has to come from a real rule.\nfunction ensureActiveTabStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(ACTIVE_TAB_STYLE_ID))return;const style=document.createElement(\"style\");style.id=ACTIVE_TAB_STYLE_ID;style.textContent=\".\"+ACTIVE_TAB_CLASS+\"::after { border-color: \"+BRAND_COLOR+\" !important; }\";document.head.appendChild(style);}function countSelectedParamValues(paramKey){if(typeof window===\"undefined\")return 0;return new URL(window.location.href).searchParams.getAll(paramKey).flatMap(value=>value.split(\",\")).map(value=>value.trim()).filter(value=>value.length>0).length;}function withSelectedFilterTab(paramKey,idleLabel,selectedLabel){return Component=>/*#__PURE__*/forwardRef(function SelectedFilterTabOverride(props,ref){const hostRef=useRef(null);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{if(typeof window===\"undefined\")return;const host=hostRef.current;if(!host)return;ensureActiveTabStyle();// State is read from the URL, which already mirrors the\n    // selection variables. Nothing here measures layout, so this\n    // cannot feed back into what it changes.\n    // The label text is written to the inner <p>: the wrapper div\n    // holds no typography, so replacing its contents would strip\n    // the font styling.\n    const findLabel=()=>{const container=host.querySelector('[data-framer-name=\"Tab Name\"]');if(!container)return null;return container.querySelector(\"p\")??container;};const apply=()=>{const count=countSelectedParamValues(paramKey);const desiredLabel=count>0?selectedLabel+\" (\"+count+\")\":idleLabel;const label=findLabel();if(label&&label.textContent!==desiredLabel){label.textContent=desiredLabel;}host.classList.toggle(ACTIVE_TAB_CLASS,count>0);};apply();const timer=window.setInterval(apply,200);window.addEventListener(\"popstate\",apply);return()=>{window.clearInterval(timer);window.removeEventListener(\"popstate\",apply);const label=findLabel();if(label)label.textContent=idleLabel;host.classList.remove(ACTIVE_TAB_CLASS);};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}export function AssetFilterTabState(Component){return withSelectedFilterTab(\"assets\",\"تحديد الأصول\",\"أصول محددة\")(Component);}export function ProviderFilterTabState(Component){return withSelectedFilterTab(\"providers\",\"حدد مقدم الخدمة\",\"مقدم محدد\")(Component);}function countAllRenderedFunds(){if(typeof document===\"undefined\")return null;const grids=Array.from(document.querySelectorAll(\"[id^='fund-grid-']\"));// No grids in the DOM yet means the lists have not mounted. Returning\n// null keeps the empty state hidden instead of flashing it during load.\nif(grids.length===0)return null;return grids.reduce((total,grid)=>total+Array.from(grid.children).reduce((sum,column)=>sum+column.childElementCount,0),0);}export function ShowWhenNoFundResults(Component){return /*#__PURE__*/forwardRef(function ShowWhenNoFundResultsOverride(props,ref){const hostRef=useRef(null);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{if(typeof window===\"undefined\")return;const host=hostRef.current;if(!host)return;// The count comes from the fund grids, which sit outside this\n// element, so hiding it can never change the number that\n// decides whether it should be hidden.\nconst apply=()=>{const total=countAllRenderedFunds();const desiredDisplay=total===0?\"\":\"none\";if(host.style.display!==desiredDisplay){host.style.display=desiredDisplay;}};apply();const timer=window.setInterval(apply,200);window.addEventListener(\"popstate\",apply);return()=>{window.clearInterval(timer);window.removeEventListener(\"popstate\",apply);host.style.display=\"\";};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}const STUCK_CLASS=\"drahim-bar-stuck\";const STUCK_STYLE_ID=\"drahim-bar-stuck-style\";// There is no CSS selector for \"a sticky element is currently stuck\", so the\n// stuck state is detected in JS and mirrored onto a class. The rule is scoped\n// to the Phone breakpoint so desktop and tablet keep their boxed look.\nfunction ensureStuckBarStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(STUCK_STYLE_ID))return;const style=document.createElement(\"style\");style.id=STUCK_STYLE_ID;style.textContent=\"@media (max-width: 777.98px) {\"+\" .\"+STUCK_CLASS+\" { padding-left: 0px !important; padding-right: 0px !important; }\"+\" .\"+STUCK_CLASS+\" > * { border-radius: 0px !important; }\"+\"}\";document.head.appendChild(style);}export function StickyBarStuckState(Component){return /*#__PURE__*/forwardRef(function StickyBarStuckStateOverride(props,ref){const hostRef=useRef(null);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{if(typeof window===\"undefined\")return;const host=hostRef.current;if(!host)return;ensureStuckBarStyle();const apply=()=>{// The sticky offset comes from the element itself, so this\n// stays correct if the offset differs per breakpoint.\nconst offset=parseFloat(window.getComputedStyle(host).top);const threshold=Number.isFinite(offset)?offset:0;const isStuck=host.getBoundingClientRect().top<=threshold+1;host.classList.toggle(STUCK_CLASS,isStuck);};apply();window.addEventListener(\"scroll\",apply,{passive:true});window.addEventListener(\"resize\",apply);return()=>{window.removeEventListener(\"scroll\",apply);window.removeEventListener(\"resize\",apply);host.classList.remove(STUCK_CLASS);};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}// --- D+ CTA ripple -------------------------------------------------------\n// A uniform scale can never grow a wide pill evenly: at 424x60 the sides move\n// ~7x further than the top and bottom. Growing the box by a fixed inset does,\n// so the rings are driven by a CSS animation on their insets instead of the\n// canvas loop effect. Framer draws the outline on an ::after with its own\n// radius, which must follow the box or the pill squares off as it grows.\nconst CTA_RIPPLE_CLASS=\"drahim-cta-ripple\";const CTA_RIPPLE_DELAYED_CLASS=\"drahim-cta-ripple-delayed\";const CTA_RIPPLE_STYLE_ID=\"drahim-cta-ripple-style\";const CTA_RIPPLE_REACH_PX=24;const CTA_RIPPLE_BASE_RADIUS_PX=32;const CTA_RIPPLE_PERIOD_S=2.4;function ensureCtaRippleStyle(){if(typeof document===\"undefined\")return;if(document.getElementById(CTA_RIPPLE_STYLE_ID))return;const style=document.createElement(\"style\");style.id=CTA_RIPPLE_STYLE_ID;style.textContent=[\"@keyframes drahim-cta-ripple {\",\"  0% { inset: 0; border-radius: \"+CTA_RIPPLE_BASE_RADIUS_PX+\"px; opacity: 0.9; }\",\"  75% { opacity: 0; }\",\"  100% { inset: -\"+CTA_RIPPLE_REACH_PX+\"px; border-radius: \"+(CTA_RIPPLE_BASE_RADIUS_PX+CTA_RIPPLE_REACH_PX)+\"px; opacity: 0; }\",\"}\",\".\"+CTA_RIPPLE_CLASS+\" {\",\"  width: auto !important; height: auto !important;\",\"  animation: drahim-cta-ripple \"+CTA_RIPPLE_PERIOD_S+\"s cubic-bezier(0.16, 1, 0.3, 1) infinite both;\",\"}\",\".\"+CTA_RIPPLE_CLASS+\"::after { border-radius: inherit !important; }\",\".\"+CTA_RIPPLE_DELAYED_CLASS+\" { animation-delay: \"+CTA_RIPPLE_PERIOD_S/2+\"s; }\",\"@media (prefers-reduced-motion: reduce) {\",\"  .\"+CTA_RIPPLE_CLASS+\" { animation: none; opacity: 0; }\",\"}\"].join(\"\\n\");document.head.appendChild(style);}function withCtaRipple(extraClass){return Component=>/*#__PURE__*/forwardRef(function CtaRippleOverride(props,ref){const hostRef=useRef(null);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{const host=hostRef.current;if(!host)return;ensureCtaRippleStyle();host.classList.add(CTA_RIPPLE_CLASS);if(extraClass)host.classList.add(extraClass);return()=>{host.classList.remove(CTA_RIPPLE_CLASS);if(extraClass)host.classList.remove(extraClass);};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}export function CtaRippleRing(Component){return withCtaRipple()(Component);}// Second ring launches half a period later so a pulse leaves every 1.2s.\nexport function CtaRippleRingDelayed(Component){return withCtaRipple(CTA_RIPPLE_DELAYED_CLASS)(Component);}// --- National Day header offset ----------------------------------------\n// The NationalDay branch adds a banner above the header and pins the header\n// 92px down so it rests under the banner. Sticky alone would hold it at 92\n// forever, so this rides the header up with the page until it docks at 40px,\n// like a regular sticky header. The resting offset is read from the element\n// itself, so changing the pin on the canvas keeps working.\nconst NATIONAL_DAY_HEADER_DOCKED_TOP_PX=40;function findStickyElement(start){let node=start;for(let depth=0;node&&depth<4;depth++){if(window.getComputedStyle(node).position===\"sticky\")return node;node=node.parentElement;}return null;}export function NationalDayHeaderOffset(Component){return /*#__PURE__*/forwardRef(function NationalDayHeaderOffsetOverride(props,ref){const hostRef=useRef(null);const setRefs=useCallback(node=>{hostRef.current=node;setRefValue(ref,node);},[ref]);useEffect(()=>{if(typeof window===\"undefined\")return;const host=hostRef.current;if(!host)return;// Framer puts an instance's sticky pin on a wrapper around the\n// component root, so resolve the element that actually sticks.\nconst sticky=findStickyElement(host);if(!sticky)return;const restingTop=parseFloat(window.getComputedStyle(sticky).top);if(!Number.isFinite(restingTop)||restingTop<=NATIONAL_DAY_HEADER_DOCKED_TOP_PX){return;}const apply=()=>{const top=Math.max(NATIONAL_DAY_HEADER_DOCKED_TOP_PX,restingTop-window.scrollY);sticky.style.top=top+\"px\";};apply();window.addEventListener(\"scroll\",apply,{passive:true});return()=>{window.removeEventListener(\"scroll\",apply);sticky.style.top=\"\";};},[]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...props});});}\nexport const __FramerMetadata__ = {\"exports\":{\"ShowWhenNoFundResults\":{\"type\":\"reactHoc\",\"name\":\"ShowWhenNoFundResults\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ResetEmptyProviderFilter\":{\"type\":\"reactHoc\",\"name\":\"ResetEmptyProviderFilter\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGridRTLOverride\":{\"type\":\"reactHoc\",\"name\":\"withGridRTLOverride\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SafeAssetFilterMenu\":{\"type\":\"reactHoc\",\"name\":\"SafeAssetFilterMenu\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AssetFilterTabState\":{\"type\":\"reactHoc\",\"name\":\"AssetFilterTabState\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NationalDayHeaderOffset\":{\"type\":\"reactHoc\",\"name\":\"NationalDayHeaderOffset\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"StickyBarStuckState\":{\"type\":\"reactHoc\",\"name\":\"StickyBarStuckState\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LTRContentFlow\":{\"type\":\"reactHoc\",\"name\":\"LTRContentFlow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ProviderFilterTabState\":{\"type\":\"reactHoc\",\"name\":\"ProviderFilterTabState\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CtaRippleRing\":{\"type\":\"reactHoc\",\"name\":\"CtaRippleRing\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RTLSearchInput\":{\"type\":\"reactHoc\",\"name\":\"RTLSearchInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HideEmptyFundSection\":{\"type\":\"reactHoc\",\"name\":\"HideEmptyFundSection\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CtaRippleRingDelayed\":{\"type\":\"reactHoc\",\"name\":\"CtaRippleRingDelayed\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RTLGridPlacement\":{\"type\":\"reactHoc\",\"name\":\"RTLGridPlacement\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GridAlignment.map"],"mappings":"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"}