{"version":3,"file":"Examples.IP0IVO2u.mjs","names":["React.useRef","ae","useState","React.useRef","React.useState","React.useCallback","React.useMemo"],"sources":["https:/framerusercontent.com/modules/JIHDjtlBuRwDLH0BG6pf/etCDn2uXr2sj3qWpru1p/BlockIOSFocus.js","https:/framer.com/m/framer/store.js@^1.0.0","https:/framerusercontent.com/modules/EOsDzgvI0f3a7LErBsmT/MvvNSjdFCEOZ3MU5Gvrj/Examples.js"],"sourcesContent":["// withIOSFocusZoomBlock.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";/** viewport 메타 보장 */function ensureViewportMeta(){let meta=document.querySelector('meta[name=\"viewport\"]');if(!meta){meta=document.createElement(\"meta\");meta.name=\"viewport\";meta.content=\"width=device-width, initial-scale=1\";document.head.appendChild(meta);}return meta;}function isIOSUA(){const ua=navigator.userAgent||\"\";return/iPad|iPhone|iPod/.test(ua)||navigator.platform===\"MacIntel\"&&navigator.maxTouchPoints>1;}export function withIOSFocusZoomBlock(Component){return /*#__PURE__*/React.forwardRef((rawProps,ref)=>{const{iosZoomBlockEnabled=true,lockAlways=false,enforce16px=true,focusSelectors=\"input, textarea, select\",...rest}=rawProps;const hostRef=React.useRef(null);const mergedRef=node=>{hostRef.current=node??null;if(typeof ref===\"function\")ref(node);else if(ref&&\"current\"in ref)ref.current=node;};React.useEffect(()=>{if(!iosZoomBlockEnabled)return;if(typeof window===\"undefined\")return;if(!isIOSUA())return;const meta=ensureViewportMeta();const original=meta.getAttribute(\"content\")||\"width=device-width, initial-scale=1\";const lockContent=base=>`${base}${base.includes(\"maximum-scale\")?\"\":\", maximum-scale=1\"}${base.includes(\"user-scalable\")?\"\":\", user-scalable=no\"}`;const lock=()=>meta.setAttribute(\"content\",lockContent(original));const unlock=()=>meta.setAttribute(\"content\",original);// 스코프 한정 16px 보정용 스타일 (data-attr로 범위 제한)\nconst scopeId=`ios-zoom-scope-${Math.random().toString(36).slice(2,8)}`;const el=hostRef.current;if(el)el.setAttribute(\"data-ios-zoom-scope\",scopeId);let styleEl=null;if(enforce16px){styleEl=document.createElement(\"style\");styleEl.textContent=`\n@supports (-webkit-touch-callout: none) {\n  [data-ios-zoom-scope=\"${scopeId}\"] ${focusSelectors} { font-size:16px !important; }\n}\n        `.trim();document.head.appendChild(styleEl);}if(lockAlways){lock();return()=>{if(styleEl)styleEl.remove();unlock();el?.removeAttribute(\"data-ios-zoom-scope\");};}// 포커스가 \"스코프 내부\"로 들어오면 잠그고, 스코프 밖으로 나가면 해제\nconst onFocusIn=ev=>{if(!el)return;const t=ev.target;if(!t)return;if(!el.contains(t))return;if(!t.matches(focusSelectors))return;lock();};const onFocusOut=()=>{if(!el)return;// 다음 틱에 activeElement가 스코프 안에 없으면 해제\nqueueMicrotask(()=>{const ae=document.activeElement;if(!ae||!el.contains(ae))unlock();});};document.addEventListener(\"focusin\",onFocusIn,true);document.addEventListener(\"focusout\",onFocusOut,true);// 이미 스코프 내부가 포커스된 채로 마운트되었으면 잠금\nconst ae=document.activeElement;if(el&&ae&&el.contains(ae)&&ae.matches(focusSelectors))lock();return()=>{document.removeEventListener(\"focusin\",onFocusIn,true);document.removeEventListener(\"focusout\",onFocusOut,true);if(styleEl)styleEl.remove();unlock();el?.removeAttribute(\"data-ios-zoom-scope\");};},[iosZoomBlockEnabled,lockAlways,enforce16px,focusSelectors]);return /*#__PURE__*/_jsx(Component,{ref:mergedRef,...rest});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withIOSFocusZoomBlock\":{\"type\":\"reactHoc\",\"name\":\"withIOSFocusZoomBlock\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BlockIOSFocus.map","import{useState,useEffect}from\"react\";import{Data,useObserveData}from\"framer\";export function createStore(state1){// Use Data so that a Preview reload resets the state\nconst dataStore=Data({state:Object.freeze({...state1})});// Create a set function that updates the state\nconst setDataStore=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(dataStore.state);}dataStore.state=Object.freeze({...dataStore.state,...newState});};// Store the initial state, copy the object if it's an object\nlet storeState=typeof state1===\"object\"?Object.freeze({...state1}):state1;// Keep a list of all the listeners, in the form of React hook setters\nconst storeSetters=new Set();// Create a set function that updates all the listeners / setters\nconst setStoreState=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(storeState);}storeState=typeof newState===\"object\"?Object.freeze({...storeState,...newState}):newState;// Update all the listeners / setters with the new value\nstoreSetters.forEach(setter=>setter(storeState));};// Create the actual hook based on everything above\nfunction useStore(){// Create the hook we are going to use as a listener\nconst[state,setState]=useState(storeState);// If we unmount the component using this hook, we need to remove the listener\n// @ts-ignore\nuseEffect(()=>{// But right now, we need to add the listener\nstoreSetters.add(setState);return()=>storeSetters.delete(setState);},[]);// If Data context exists, use Data, otherwise use vanilla React state\nif(useObserveData()===true){useObserveData();return[dataStore.state,setDataStore];}else{// Return the state and a function to update the central store\nreturn[state,setStoreState];}}return useStore;}\nexport const __FramerMetadata__ = {\"exports\":{\"createStore\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./createStore.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{forwardRef}from\"react\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";/* ────────────────────────────────────────────────────────────────────────────\n * Global BottomSheet Bus (초기 닫힘)\n * ──────────────────────────────────────────────────────────────────────────── */const useBottomSheetBus=createStore({openId:null});/* ────────────────────────────────────────────────────────────────────────────\n * 유틸: 시트 강제 표시/초기화 (버튼 클릭 시점에만 호출)\n * ──────────────────────────────────────────────────────────────────────────── */function normalizeSheetForOpen(sheetId){try{const selectors=[`[data-framer-name=\"${sheetId}\"]`,`[data-framer-component-type=\"Frame\"][data-framer-name=\"${sheetId}\"]`];const apply=el=>{el.style.removeProperty(\"display\");el.style.removeProperty(\"opacity\");el.style.removeProperty(\"pointer-events\");el.removeAttribute(\"hidden\");el.removeAttribute(\"aria-hidden\");el.setAttribute(\"open\",\"\");el.style.willChange=\"transform\";el.style.transition=\"none\";el.style.transform=\"translate3d(0px, 0px, 0px)\";};const applyAll=()=>selectors.forEach(sel=>document.querySelectorAll(sel).forEach(apply));applyAll();requestAnimationFrame(applyAll);setTimeout(applyAll,0);}catch{}}/* ✅ 새 추가: 유틸 — 시트 강제 닫기(표시 제거) */function normalizeSheetForClose(sheetId){try{const selectors=[`[data-framer-name=\"${sheetId}\"]`,`[data-framer-component-type=\"Frame\"][data-framer-name=\"${sheetId}\"]`];const apply=el=>{el.removeAttribute(\"open\");el.removeAttribute(\"aria-expanded\");el.style.removeProperty(\"transform\");el.style.removeProperty(\"transition\");el.style.removeProperty(\"will-change\");el.style.setProperty(\"display\",\"none\",\"important\");el.style.setProperty(\"opacity\",\"0\",\"important\");el.style.setProperty(\"pointer-events\",\"none\",\"important\");el.setAttribute(\"hidden\",\"\");el.setAttribute(\"aria-hidden\",\"true\");};selectors.forEach(sel=>document.querySelectorAll(sel).forEach(apply));}catch{}}/* ────────────────────────────────────────────────────────────────────────────\n * 버튼 공용: 클릭 시 시트 오픈(+옵션)\n * ──────────────────────────────────────────────────────────────────────────── */export function withOpenBottomSheetOnClick(Component){return /*#__PURE__*/forwardRef((rawProps,ref)=>{const{targetSheetId=\"bottomSheet\",toggle=false,onClick,closeOverlayOnClick=false,overlayCloseEventName=\"overlay:close\",emitEventOnClick,emitDetail,dismissAncestorSelector,dismissMode=\"display\",dismissDuration=160,dismissFindClosest=true,...rest}=rawProps;const[bus,setBus]=useBottomSheetBus();const safeOpen=id=>{setBus({openId:id});queueMicrotask?.(()=>setBus({openId:id}));requestAnimationFrame?.(()=>setBus({openId:id}));};const safeToggle=id=>{if(bus.openId===id)setBus({openId:null});else safeOpen(id);};const handleClick=e=>{onClick?.(e);if(closeOverlayOnClick){try{const evt=new CustomEvent(overlayCloseEventName);window.dispatchEvent(evt);document.dispatchEvent(evt);}catch{}}if(emitEventOnClick){try{window.dispatchEvent(new CustomEvent(emitEventOnClick,{detail:emitDetail}));}catch{}}if(dismissAncestorSelector){const target=e.currentTarget||e.target;const node=dismissFindClosest?target?.closest(dismissAncestorSelector):document.querySelector(dismissAncestorSelector);if(node){if(dismissMode===\"opacity\"){const el=node;const prev=el.getAttribute(\"style\")||\"\";el.setAttribute(\"style\",`${prev}; transition: opacity ${dismissDuration}ms ease; opacity:0;`);setTimeout(()=>{el.style.display=\"none\";},dismissDuration);}else{node.style.display=\"none\";}}}if(targetSheetId)normalizeSheetForOpen(targetSheetId);if(!targetSheetId)return;if(toggle)safeToggle(targetSheetId);else safeOpen(targetSheetId);requestAnimationFrame(()=>targetSheetId&&normalizeSheetForOpen(targetSheetId));queueMicrotask?.(()=>targetSheetId&&normalizeSheetForOpen(targetSheetId));setTimeout(()=>targetSheetId&&normalizeSheetForOpen(targetSheetId),0);};return /*#__PURE__*/_jsx(Component,{ref:ref,...rest,onClick:handleClick});});}/* ────────────────────────────────────────────────────────────────────────────\n * ✅ 닫기 버튼 오버라이드 (핸들 드래그보다 우선 처리)\n * ──────────────────────────────────────────────────────────────────────────── */export function withCloseBottomSheetOnClick(Component){return /*#__PURE__*/forwardRef((rawProps,ref)=>{const{targetSheetId=\"CommentBottomSheet2\",onClick,alsoCloseOverlay=true,overlayCloseEventName=\"overlay:close\",...rest}=rawProps;const[,setBus]=useBottomSheetBus();const btnRef=React.useRef(null);const blockCapture=e=>{try{if(e?.cancelable)e.preventDefault();e.stopPropagation?.();e.nativeEvent?.stopImmediatePropagation?.();}catch{}};const handleClick=e=>{blockCapture(e);onClick?.(e);// 1) 전역 버스 상태 닫기\nsetBus({openId:null});// 2) DOM 강제 닫기\nif(targetSheetId)normalizeSheetForClose(targetSheetId);// 3) 필요 시 오버레이 닫기\nif(alsoCloseOverlay){try{const evt=new CustomEvent(overlayCloseEventName);window.dispatchEvent(evt);document.dispatchEvent(evt);}catch{}}};React.useEffect(()=>{const el=btnRef.current;if(!el)return;const stopper=ev=>{if(ev.cancelable)ev.preventDefault();ev.stopPropagation();ev.stopImmediatePropagation?.();};const opt={capture:true,passive:false};el.addEventListener(\"pointerdown\",stopper,opt);el.addEventListener(\"mousedown\",stopper,opt);el.addEventListener(\"touchstart\",stopper,opt);return()=>{el.removeEventListener(\"pointerdown\",stopper,opt);el.removeEventListener(\"mousedown\",stopper,opt);el.removeEventListener(\"touchstart\",stopper,opt);};},[]);return /*#__PURE__*/_jsx(Component,{ref:node=>{btnRef.current=node??null;if(typeof ref===\"function\")ref(node);else if(ref&&\"current\"in ref)ref.current=node;},...rest,onPointerDownCapture:blockCapture,onMouseDownCapture:blockCapture,onTouchStartCapture:blockCapture,onClick:handleClick});});}/* ────────────────────────────────────────────────────────────────────────────\n * 오버레이 그룹: open/close 이벤트 한 번에 처리 (플로팅 버튼에 사용)\n * ──────────────────────────────────────────────────────────────────────────── */export function withShowHideOnEvents(Component){return /*#__PURE__*/React.forwardRef((props,ref)=>{const{showEventName=\"overlay:open\",hideEventName=\"overlay:close\",mode=\"display\",duration=160,initiallyVisible=false,onShown,onHidden,style,viewportMargin=8,anchorTransform=\"translate(-50%, -100%)\",cleanupSelector='[data-framer-name=\"드래그 플로팅 버튼\"]',...rest}=props;const[visible,setVisible]=React.useState(!!initiallyVisible);const[pos,setPos]=React.useState({use:false,left:0,top:0});const hideTimerRef=React.useRef(null);const clearHideTimer=()=>{if(hideTimerRef.current!=null){window.clearTimeout(hideTimerRef.current);hideTimerRef.current=null;}};const cleanupForcedHidden=React.useCallback(()=>{try{document.querySelectorAll(cleanupSelector).forEach(el=>{el.style.removeProperty(\"display\");el.style.removeProperty(\"pointer-events\");el.style.removeProperty(\"opacity\");el.style.removeProperty(\"transition\");el.removeAttribute(\"hidden\");el.removeAttribute(\"aria-hidden\");el.classList.remove(\"is-hidden\");});}catch{}},[cleanupSelector]);React.useEffect(()=>{const onShow=ev=>{clearHideTimer();cleanupForcedHidden();let nextPos={use:false,left:0,top:0};const detail=ev?.detail;const rect=detail?.rect;if(rect&&typeof rect.anchorX===\"number\"&&typeof rect.anchorY===\"number\"){const vw=window.innerWidth||1024;const vh=window.innerHeight||768;const clampedX=Math.max(viewportMargin,Math.min(vw-viewportMargin,rect.anchorX));const clampedY=Math.max(viewportMargin,Math.min(vh-viewportMargin,rect.anchorY));nextPos={use:true,left:clampedX,top:clampedY};}setPos(nextPos);if(mode===\"display\"){setVisible(true);onShown?.();return;}setVisible(true);const el=ref?.current;if(el){el.style.transition=`opacity ${duration}ms ease`;el.style.opacity=\"0\";requestAnimationFrame(()=>{el.style.opacity=\"1\";window.setTimeout(()=>onShown?.(),duration);});}else onShown?.();};window.addEventListener(showEventName,onShow);document.addEventListener(showEventName,onShow);return()=>{window.removeEventListener(showEventName,onShow);document.removeEventListener(showEventName,onShow);};},[showEventName,mode,duration,onShown,viewportMargin,anchorTransform,ref,cleanupForcedHidden]);React.useEffect(()=>{const onHide=()=>{clearHideTimer();if(mode===\"display\"){setVisible(false);onHidden?.();return;}const el=ref?.current;if(el){el.style.transition=`opacity ${duration}ms ease`;el.style.opacity=\"0\";hideTimerRef.current=window.setTimeout(()=>{setVisible(false);onHidden?.();},duration);}else{setVisible(false);onHidden?.();}};window.addEventListener(hideEventName,onHide);document.addEventListener(hideEventName,onHide);return()=>{window.removeEventListener(hideEventName,onHide);document.removeEventListener(hideEventName,onHide);};},[hideEventName,mode,duration,onHidden,ref]);React.useEffect(()=>()=>clearHideTimer(),[]);const posStyle=pos.use?{position:\"fixed\",left:pos.left,top:pos.top,transform:anchorTransform,zIndex:999999}:{};const mergedStyle=visible?{...style||{},...posStyle}:{...style||{},display:\"none\"};return /*#__PURE__*/_jsx(Component,{ref:ref,...rest,style:mergedStyle});});}/* alias: 플로팅버튼에서 사용 */export const showHideOnOverlayEvent=Component=>{const Wrapped=withShowHideOnEvents(Component);Wrapped.displayName=\"showHideOnOverlayEvent\";return Wrapped;};/* ────────────────────────────────────────────────────────────────────────────\n * 바텀시트 드래그핸들 (바닥=min(viewport,panel), 바닥 히트시 닫힘)\n * ──────────────────────────────────────────────────────────────────────────── */function toPx(val,vh){if(typeof val===\"number\")return val;const m=String(val).trim().match(/^(\\d+(?:\\.\\d+)?)%$/);if(m)return parseFloat(m[1])/100*vh;return parseFloat(String(val))||0;}export function withSheetHandleDragOnly(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const{handleSelector='[data-framer-name=\"SheetHandle\"]',panelSelector='[data-framer-name=\"CommentBottomSheet2\"]',moveTargetSelector,snapPoints=[\"0%\",\"40%\",\"100%\"],bottomClose=true,open,onClose,...rest}=props;const moveElRef=React.useRef(null);const snapsRef=React.useRef([]);const currentOffsetRef=React.useRef(0);const startYRef=React.useRef(0);const startOffsetRef=React.useRef(0);const draggingRef=React.useRef(false);const closingRef=React.useRef(false);const setOffset=(y,animate=false)=>{const el=moveElRef.current;if(!el)return;el.style.transition=animate?\"transform 200ms ease\":\"none\";el.style.transform=`translate3d(0, ${y}px, 0)`;currentOffsetRef.current=y;if(animate)requestAnimationFrame(()=>{if(el)el.style.transition=\"none\";});};const readCurrentTranslateY=el=>{if(!el)return 0;const st=el.style.transform||getComputedStyle(el).transform;if(!st||st===\"none\")return 0;if(st.startsWith(\"matrix3d(\")){const nums=st.slice(9,-1).split(\",\").map(parseFloat);return Number.isFinite(nums[13])?nums[13]:0;}if(st.startsWith(\"matrix(\")){const nums=st.slice(7,-1).split(\",\").map(parseFloat);return Number.isFinite(nums[5])?nums[5]:0;}return 0;};const syncOffsetRefFromDOM=()=>{const el=moveElRef.current;const ty=readCurrentTranslateY(el);currentOffsetRef.current=Number.isFinite(ty)?ty:0;};const ensureDomClosed=()=>{try{const panelEls=Array.from(document.querySelectorAll(panelSelector));panelEls.forEach(el=>{el.removeAttribute(\"open\");el.removeAttribute(\"aria-expanded\");el.style.removeProperty(\"display\");});}catch{}};const closeOnce=()=>{if(closingRef.current)return;closingRef.current=true;onClose?.();ensureDomClosed();queueMicrotask?.(ensureDomClosed);requestAnimationFrame?.(()=>{ensureDomClosed();currentOffsetRef.current=0;closingRef.current=false;});};const snapToNearest=()=>{const snaps=snapsRef.current;if(!snaps.length)return;let nearest=snaps[0];let best=Math.abs(currentOffsetRef.current-snaps[0]);for(let i=1;i<snaps.length;i++){const d=Math.abs(currentOffsetRef.current-snaps[i]);if(d<best){best=d;nearest=snaps[i];}}setOffset(nearest,true);const bottom=Math.max(...snaps);if(bottomClose&&Math.abs(nearest-bottom)<=4){closeOnce();}};const recomputeSnaps=React.useCallback(()=>{const el=moveElRef.current;const vh=window.innerHeight||800;const rawFromProp=snapPoints.map(v=>toPx(v,vh));const panelH=el?.getBoundingClientRect().height??0;const bottomCandidate=Math.min(vh,panelH||vh);const raw=[...rawFromProp];if(!raw.some(v=>Math.abs(v-0)<.5))raw.push(0);if(!raw.some(v=>Math.abs(v-bottomCandidate)<.5))raw.push(bottomCandidate);snapsRef.current=Array.from(new Set(raw)).sort((a,b)=>a-b);},[snapPoints]);React.useEffect(()=>{const root=document;const handle=root.querySelector(handleSelector);let moveTarget=null;if(moveTargetSelector){moveTarget=root.querySelector(moveTargetSelector);}if(!moveTarget){moveTarget=root.querySelector(panelSelector);}if(!moveTarget&&handle){let cur=handle;for(let i=0;i<6&&cur;i++){cur=cur.parentElement;if(!cur)break;const cs=window.getComputedStyle(cur);const isFixed=cs.position===\"fixed\";const isBig=cur.getBoundingClientRect().height>120;if(isFixed&&isBig){moveTarget=cur;break;}}if(!moveTarget){cur=handle.closest(\"[data-framer-name]\");if(cur&&cur.parentElement){const parent=cur.parentElement;moveTarget=parent.getBoundingClientRect().height>cur.getBoundingClientRect().height?parent:cur;}else{moveTarget=cur;}}}moveElRef.current=moveTarget;if(!moveTarget||!handle)return;moveTarget.style.willChange=\"transform\";if(!moveTarget.style.transform)moveTarget.style.transform=\"translate3d(0, 0px, 0)\";// 드래그 영역 기본 세팅\nhandle.style.pointerEvents=\"auto\";handle.style.touchAction=\"none\"// 중요\n;handle.style.webkitTouchCallout=\"none\";handle.style.userSelect=\"none\";handle.style.cursor=\"grab\";handle.draggable=false;handle.style.overscrollBehavior=\"contain\";recomputeSnaps();// === 핸들러 (preventDefault는 cancelable일 때만) ===\nconst down=e=>{if(e.cancelable)e.preventDefault();draggingRef.current=true;e.target?.setPointerCapture?.(e.pointerId);syncOffsetRefFromDOM();const y=e.clientY??e.touches?.[0]?.clientY??e.clientY;startYRef.current=y||0;startOffsetRef.current=currentOffsetRef.current;};const move=e=>{if(!draggingRef.current)return;if(e.cancelable)e.preventDefault();const y=e.clientY??e.touches?.[0]?.clientY??e.clientY;if(y==null)return;const dy=y-startYRef.current;const min=Math.min(...snapsRef.current);const max=Math.max(...snapsRef.current);const next=Math.max(min,Math.min(max,startOffsetRef.current+dy));setOffset(next,false);const bottom=Math.max(...snapsRef.current);if(bottomClose&&next>=bottom-4&&!closingRef.current){setOffset(bottom,true);closeOnce();}};const up=e=>{if(!draggingRef.current)return;if(e.preventDefault&&e.cancelable)e.preventDefault();draggingRef.current=false;if(!closingRef.current)snapToNearest();};// === 모든 리스너를 passive:false 로 등록 ===\nconst capFalse={capture:true,passive:false};const passFalse={passive:false};handle.addEventListener(\"pointerdown\",down,capFalse);handle.addEventListener(\"mousedown\",down,capFalse);handle.addEventListener(\"touchstart\",down,capFalse);window.addEventListener(\"pointermove\",move,passFalse);window.addEventListener(\"mousemove\",move,passFalse);window.addEventListener(\"touchmove\",move,passFalse);window.addEventListener(\"pointerup\",up,passFalse);window.addEventListener(\"mouseup\",up,passFalse);window.addEventListener(\"touchend\",up,passFalse);window.addEventListener(\"pointercancel\",up,passFalse);window.addEventListener(\"touchcancel\",up,passFalse);const onResize=()=>recomputeSnaps();window.addEventListener(\"resize\",onResize);window.addEventListener(\"orientationchange\",onResize);return()=>{handle.removeEventListener(\"pointerdown\",down,capFalse);handle.removeEventListener(\"mousedown\",down,capFalse);handle.removeEventListener(\"touchstart\",down,capFalse);window.removeEventListener(\"pointermove\",move,passFalse);window.removeEventListener(\"mousemove\",move,passFalse);window.removeEventListener(\"touchmove\",move,passFalse);window.removeEventListener(\"pointerup\",up,passFalse);window.removeEventListener(\"mouseup\",up,passFalse);window.removeEventListener(\"touchend\",up,passFalse);window.removeEventListener(\"pointercancel\",up,passFalse);window.removeEventListener(\"touchcancel\",up,passFalse);window.removeEventListener(\"resize\",onResize);window.removeEventListener(\"orientationchange\",onResize);};},[handleSelector,panelSelector,moveTargetSelector,recomputeSnaps]);React.useEffect(()=>{if(open)currentOffsetRef.current=0;},[open]);return /*#__PURE__*/_jsx(Component,{ref:ref,...rest,open:open,onClose:onClose});});}/* ────────────────────────────────────────────────────────────────────────────\n * 바텀시트: 버스 바인딩만 (초기 확실히 숨김)\n * ──────────────────────────────────────────────────────────────────────────── */export function boundBottomSheetNoBackdrop(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[bus,setBus]=useBottomSheetBus();const sheetId=props?.sheetId??\"bottomSheet\";const isOpen=bus.openId===sheetId;const onClose=()=>setBus({openId:null});const injectedStyle=isOpen?props.style||{}:{...props.style,display:\"none\"};return /*#__PURE__*/_jsx(Component,{ref:ref,...props,style:injectedStyle,open:isOpen,isOpen:isOpen,visible:isOpen,onClose:onClose,onDismiss:onClose});});}/* ────────────────────────────────────────────────────────────────────────────\n * 바텀시트 = 버스 바인딩 + 핸들 드래그 + (NEW) 페이지 이동 시 자동 닫기\n * ──────────────────────────────────────────────────────────────────────────── */export function boundBottomSheetWithHandle(Component){const Base=withSheetHandleDragOnly(boundBottomSheetNoBackdrop(Component));return /*#__PURE__*/forwardRef((rawProps,ref)=>{const{// 자동 닫기 옵션\npageChangeEventName=\"ebook:pagechange\",listenHistory=true,externalCloseEventName=\"bottomsheet:close\",// 어떤 시트를 닫을지 (normalize에서 사용)\nsheetId=\"CommentBottomSheet2\",...rest}=rawProps;const[,setBus]=useBottomSheetBus();React.useEffect(()=>{const closeNow=()=>{setBus({openId:null});normalizeSheetForClose(sheetId);};// 1) 커스텀 페이지 변경 이벤트\nconst onPage=()=>closeNow();if(pageChangeEventName){window.addEventListener(pageChangeEventName,onPage);document.addEventListener(pageChangeEventName,onPage);}// 2) 히스토리/해시 이동\nconst onHash=()=>closeNow();const onPop=()=>closeNow();if(listenHistory){window.addEventListener(\"hashchange\",onHash);window.addEventListener(\"popstate\",onPop);}// 3) 외부에서 임의로 닫기 트리거\nconst onExternal=()=>closeNow();if(externalCloseEventName){window.addEventListener(externalCloseEventName,onExternal);document.addEventListener(externalCloseEventName,onExternal);}return()=>{if(pageChangeEventName){window.removeEventListener(pageChangeEventName,onPage);document.removeEventListener(pageChangeEventName,onPage);}if(listenHistory){window.removeEventListener(\"hashchange\",onHash);window.removeEventListener(\"popstate\",onPop);}if(externalCloseEventName){window.removeEventListener(externalCloseEventName,onExternal);document.removeEventListener(externalCloseEventName,onExternal);}};},[pageChangeEventName,listenHistory,externalCloseEventName,sheetId]);return /*#__PURE__*/_jsx(Base,{ref:ref,...rest});});}/* ────────────────────────────────────────────────────────────────────────────\n * 댓글버튼: 오버레이 닫고 → 시트 위치 0 보정 → 시트 오픈\n * ──────────────────────────────────────────────────────────────────────────── */export function openSheetButtonCloseFloatingMenu(Component){const WithDefaults=Comp=>/*#__PURE__*/forwardRef((props,ref)=>{const OVERLAY_SELECTORS=['[data-framer-name=\"드래그 플로팅 버튼\"]','[data-framer-component-type=\"Frame\"][data-framer-name=\"드래그 플로팅 버튼\"]'];const applyHardHide=node=>{try{node.style.setProperty(\"display\",\"none\",\"important\");node.style.setProperty(\"opacity\",\"0\",\"important\");node.style.setProperty(\"pointer-events\",\"none\",\"important\");node.setAttribute(\"aria-hidden\",\"true\");node.setAttribute(\"hidden\",\"\");node.classList.add(\"is-hidden\");}catch{}};const hardHideOverlay=clickedEl=>{const targets=[];for(const s of OVERLAY_SELECTORS){const t=clickedEl?.closest?.(s);if(t&&!targets.includes(t))targets.push(t);}for(const s of OVERLAY_SELECTORS){document.querySelectorAll(s).forEach(el=>{if(!targets.includes(el))targets.push(el);});}targets.forEach(applyHardHide);requestAnimationFrame(()=>targets.forEach(applyHardHide));setTimeout(()=>targets.forEach(applyHardHide),120);};const closeOverlay=e=>{try{const evt=new CustomEvent(\"overlay:close\");window.dispatchEvent(evt);document.dispatchEvent(evt);}catch{}const el=(e?.currentTarget)||(e?.target)||null;hardHideOverlay(el);};return /*#__PURE__*/_jsx(Comp,{ref:ref,...props,onClick:e=>{closeOverlay(e);props?.onClick?.(e);normalizeSheetForOpen(\"CommentBottomSheet2\");},targetSheetId:\"CommentBottomSheet2\",toggle:false,dismissAncestorSelector:'[data-framer-name=\"드래그 플로팅 버튼\"]',dismissFindClosest:true,dismissMode:\"display\",dismissDuration:0,closeOverlayOnClick:true,overlayCloseEventName:\"overlay:close\"});});return withOpenBottomSheetOnClick(WithDefaults(Component));}export function withSaveOnClick(Component){return /*#__PURE__*/forwardRef((rawProps,ref)=>{const{targetSelector='[data-framer-name=\"nickname\"] input',storageKey=\"nickname\",restoreOnMount=false,clearStorageOnMount=true,onClick,...rest}=rawProps;// ✅ 버튼이 렌더될 때 저장된 닉네임을 지워버리기\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;if(clearStorageOnMount){try{localStorage.removeItem(storageKey);}catch{}}},[clearStorageOnMount,storageKey]);// (선택) 뒤로가기(bfcache)로 돌아와도 다시 지워두기\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;const onPageShow=ev=>{if(ev.persisted&&clearStorageOnMount){try{localStorage.removeItem(storageKey);}catch{}}};window.addEventListener(\"pageshow\",onPageShow);return()=>window.removeEventListener(\"pageshow\",onPageShow);},[clearStorageOnMount,storageKey]);// (원하면) 복원 로직은 기본 꺼두고, 필요 화면에서만 켜기\nReact.useEffect(()=>{if(!restoreOnMount||typeof window===\"undefined\")return;const input=document.querySelector(targetSelector);const saved=localStorage.getItem(storageKey);if(input&&saved!=null)input.value=saved;},[restoreOnMount,storageKey,targetSelector]);const handleClick=e=>{onClick?.(e);const input=document.querySelector(targetSelector);if(!input)return;try{localStorage.setItem(storageKey,input.value??\"\");}catch{}// 저장 후 인풋 비우기(원래 요구사항 유지)\ntry{input.value=\"\";input.dispatchEvent(new Event(\"input\",{bubbles:true}));input.dispatchEvent(new Event(\"change\",{bubbles:true}));}catch{}};return /*#__PURE__*/_jsx(Component,{ref:ref,...rest,onClick:handleClick});});}export function withCloseAnyBottomSheetOnClick(Component){return /*#__PURE__*/forwardRef((rawProps,ref)=>{const{onClick,targetSheetId,externalCloseEventName=\"bottomsheet:close\",alsoCloseOverlay=true,overlayCloseEventName=\"overlay:close\",blockCapture=true,// 이동 설정\nnavigateOnClick=true,navigateTo=\"/bookshare\",navigateDelay=120,navigateMode:rawNavigateMode,// ⛳ 모바일 즉시 처리\nforceImmediateNavigateOnMobile=true,style,...rest}=rawProps;const navigateMode=rawNavigateMode===\"replace\"||rawNavigateMode===\"assign\"?rawNavigateMode:\"assign\";const[bus,setBus]=useBottomSheetBus();const btnRef=React.useRef(null);// 중복 방지 플래그\nconst firedRef=React.useRef(false);const isMobile=React.useMemo(()=>{const ua=navigator.userAgent||\"\";return/Android|iPhone|iPad|iPod/i.test(ua);},[]);const closeOverlay=()=>{if(!alsoCloseOverlay)return;try{const evt=new CustomEvent(overlayCloseEventName);window.dispatchEvent(evt);document.dispatchEvent(evt);}catch{}};const closeById=id=>{try{setBus({openId:null});}catch{}try{if(id)normalizeSheetForClose(String(id));}catch{}try{const evt=new CustomEvent(externalCloseEventName,{detail:{id:id??null}});window.dispatchEvent(evt);document.dispatchEvent(evt);}catch{}};const doNavigateNow=()=>{if(!navigateOnClick||!navigateTo)return;try{if(navigateMode===\"replace\")window.location.replace(navigateTo);else window.location.assign(navigateTo);}catch{window.location.href=navigateTo;}};const goNavigate=()=>{if(forceImmediateNavigateOnMobile&&isMobile){doNavigateNow();return;}if(navigateDelay&&navigateDelay>0)setTimeout(doNavigateNow,navigateDelay);else doNavigateNow();};/** 공통 실행(닫기+이동) — 중복 실행 방지 */const runCloseAndNavigateOnce=ev=>{if(firedRef.current)return;firedRef.current=true;try{onClick?.(ev);}catch{}try{closeOverlay();const idToClose=targetSheetId??bus.openId??null;closeById(idToClose);}finally{goNavigate();}};/** 기존 onClick 핸들러(버블 단계) */const handleClick=e=>{// preventDefault()는 하지 않음 (모바일 클릭 생성을 막을 수 있음)\ne.stopPropagation?.();runCloseAndNavigateOnce(e);};/** 캡처 단계: 모바일에서 click 생성/버블이 막히는 경우를 대비해 여기서 바로 실행 */React.useEffect(()=>{const el=btnRef.current;if(!el)return;// 클릭 로거(디버깅용)\nconst clickLogger=ev=>{// console.log(\"[withCloseAnyBottomSheetOnClick] CLICK bubbled:\", ev.type);\n};el.addEventListener(\"click\",clickLogger);if(!blockCapture){return()=>{el.removeEventListener(\"click\",clickLogger);};}const capOpt={capture:true,passive:false};const onCapStart=ev=>{// ❗ 여기서 preventDefault/stopPropagation을 호출하면 click 생성이 막히므로 호출하지 않음\n//   (대신 바로 실행해서 모바일에서도 동작 보장)\nrunCloseAndNavigateOnce(ev);};el.addEventListener(\"pointerdown\",onCapStart,capOpt);el.addEventListener(\"touchstart\",onCapStart,capOpt);el.addEventListener(\"mousedown\",onCapStart,capOpt);return()=>{el.removeEventListener(\"click\",clickLogger);el.removeEventListener(\"pointerdown\",onCapStart,capOpt);el.removeEventListener(\"touchstart\",onCapStart,capOpt);el.removeEventListener(\"mousedown\",onCapStart,capOpt);};},[blockCapture,isMobile,navigateOnClick,navigateTo,navigateDelay,navigateMode,targetSheetId]);return /*#__PURE__*/_jsx(Component,{ref:node=>{btnRef.current=node??null;if(typeof ref===\"function\")ref(node);else if(ref&&\"current\"in ref)ref.current=node;},...rest,style:style,onClick:handleClick});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withSheetHandleDragOnly\":{\"type\":\"reactHoc\",\"name\":\"withSheetHandleDragOnly\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCloseAnyBottomSheetOnClick\":{\"type\":\"reactHoc\",\"name\":\"withCloseAnyBottomSheetOnClick\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withOpenBottomSheetOnClick\":{\"type\":\"reactHoc\",\"name\":\"withOpenBottomSheetOnClick\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openSheetButtonCloseFloatingMenu\":{\"type\":\"reactHoc\",\"name\":\"openSheetButtonCloseFloatingMenu\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCloseBottomSheetOnClick\":{\"type\":\"reactHoc\",\"name\":\"withCloseBottomSheetOnClick\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"boundBottomSheetNoBackdrop\":{\"type\":\"reactHoc\",\"name\":\"boundBottomSheetNoBackdrop\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSaveOnClick\":{\"type\":\"reactHoc\",\"name\":\"withSaveOnClick\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"showHideOnOverlayEvent\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"boundBottomSheetWithHandle\":{\"type\":\"reactHoc\",\"name\":\"boundBottomSheetWithHandle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowHideOnEvents\":{\"type\":\"reactHoc\",\"name\":\"withShowHideOnEvents\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Examples.map"],"mappings":"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"}