{"version":3,"file":"EventTrigger.CQg6uOKI.mjs","names":["useRef","useCallback","createContext","forwardRef","useRef","useContext","forwardRef"],"sources":["https:/asset.29cm.co.kr/contents/framer/hooks/useInViewport.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Root.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Root.hooks.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/Target.js","https:/asset.29cm.co.kr/contents/framer/components/@shared/EventTrigger/index.js"],"sourcesContent":["import { useRef, useCallback } from \"react\";\nimport { useUpdatedRef } from \"./useUpdatedRef.js\";\nimport { useWindowEventListener } from \"./useWindowEventListener.js\";\nconst useInViewport = (callback) => {\n  const ref = useRef(null);\n  const prevIsInViewport = useRef(false);\n  const updatedCallback = useUpdatedRef(callback);\n  const handleScroll = useCallback(() => {\n    if (ref.current === null) {\n      return;\n    }\n    const isInViewport = getIsInViewport(ref.current);\n    if (isInViewport !== prevIsInViewport.current) {\n      updatedCallback.current(isInViewport);\n    }\n    prevIsInViewport.current = isInViewport;\n  }, []);\n  useWindowEventListener(\"scroll\", handleScroll);\n  return ref;\n};\nconst getIsInViewport = (element) => {\n  const {\n    offsetHeight\n  } = element;\n  const top = getAbsoluteOffsetTop(element);\n  const bottom = top + offsetHeight;\n  const isElementInViewport = window.scrollY <= top && bottom <= window.scrollY + window.innerHeight;\n  const isViewportInElement = top <= window.scrollY && window.scrollY + window.innerHeight <= bottom;\n  return isViewportInElement || isElementInViewport;\n};\nconst getAbsoluteOffsetTop = (element) => {\n  return Math.round(element.getBoundingClientRect().top + window.scrollY);\n};\nexport {\n  useInViewport\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { createContext, forwardRef, useRef } from \"react\";\nimport { useInViewport } from \"../../../hooks/useInViewport.js\";\nimport \"../../../hooks/stores/content/content.store.js\";\nimport \"../../../utils/event-properties/source.js\";\nimport \"framer\";\nimport { mergeRefs } from \"../../../utils/react/mergeRefs.js\";\nconst EventTriggerContext = createContext({\n  isViewportEntered: () => false,\n  canTriggerFallbackImpression: () => false,\n  setCanTriggerFallbackImpression: () => {\n  },\n  types: [],\n  onImpression: void 0\n});\nconst Root = forwardRef(({\n  children,\n  className,\n  style,\n  types,\n  onImpression\n}, ref) => {\n  const isViewportEntered = useRef(false);\n  const canTriggerFallbackImpression = useRef(true);\n  const observeViewport = types.includes(\"impression\");\n  const handleViewportEnter = () => {\n    if (canTriggerFallbackImpression.current) {\n      onImpression == null ? void 0 : onImpression();\n    }\n    isViewportEntered.current = true;\n    canTriggerFallbackImpression.current = false;\n  };\n  const handleViewportLeave = () => {\n    isViewportEntered.current = false;\n    canTriggerFallbackImpression.current = true;\n  };\n  const containerRef = useInViewport((isInViewport) => {\n    if (!observeViewport) {\n      return;\n    }\n    if (isInViewport) {\n      handleViewportEnter();\n    } else {\n      handleViewportLeave();\n    }\n  });\n  return /* @__PURE__ */ jsx(EventTriggerContext.Provider, { value: {\n    isViewportEntered: () => isViewportEntered.current,\n    canTriggerFallbackImpression: () => canTriggerFallbackImpression.current,\n    setCanTriggerFallbackImpression: (next) => canTriggerFallbackImpression.current = next,\n    types,\n    onImpression\n  }, children: /* @__PURE__ */ jsx(\"div\", { ref: mergeRefs([containerRef, ref]), className, style: {\n    width: \"100%\",\n    ...style\n  }, children }) });\n});\nexport {\n  EventTriggerContext,\n  Root\n};\n","import { useContext } from \"react\";\nimport { EventTriggerContext } from \"./Root.js\";\nconst useEventTriggerContext = () => useContext(EventTriggerContext);\nexport {\n  useEventTriggerContext\n};\n","import { jsx } from \"react/jsx-runtime\";\nimport { forwardRef } from \"react\";\nimport { useEventTriggerContext } from \"./Root.hooks.js\";\nconst Target = forwardRef(({\n  children,\n  onClick,\n  ...rest\n}, ref) => {\n  const {\n    isViewportEntered,\n    canTriggerFallbackImpression,\n    setCanTriggerFallbackImpression,\n    types,\n    onImpression\n  } = useEventTriggerContext();\n  const handleClick = (e) => {\n    onClick == null ? void 0 : onClick(e);\n    const shouldTriggerFallbackImpression = types.includes(\"impression\") && !isViewportEntered() && canTriggerFallbackImpression();\n    if (shouldTriggerFallbackImpression) {\n      onImpression == null ? void 0 : onImpression();\n      setCanTriggerFallbackImpression(false);\n    }\n  };\n  return /* @__PURE__ */ jsx(\"div\", { ref, ...rest, onClick: handleClick, children });\n});\nexport {\n  Target\n};\n","import { Root } from \"./Root.js\";\nimport { Target } from \"./Target.js\";\nconst EventTrigger = {\n  Root,\n  Target\n};\nexport {\n  EventTrigger\n};\n"],"mappings":"ohBAA4C,IACO,IACkB,CAC/D,EAAiB,GAAa,CAClC,IAAM,EAAMI,EAAO,KAAK,CAClB,EAAmBA,EAAO,GAAM,CAChC,EAAkB,EAAc,EAAS,CACzC,EAAeH,MAAkB,CACrC,GAAI,EAAI,UAAY,KAClB,OAEF,IAAM,EAAe,EAAgB,EAAI,QAAQ,CAC7C,IAAiB,EAAiB,SACpC,EAAgB,QAAQ,EAAa,CAEvC,EAAiB,QAAU,GAC1B,EAAE,CAAC,CAEN,OADA,EAAuB,SAAU,EAAa,CACvC,GAEH,EAAmB,GAAY,CACnC,GAAM,CACJ,gBACE,EACE,EAAM,EAAqB,EAAQ,CACnC,EAAS,EAAM,EACf,EAAsB,EAAO,SAAW,GAAO,GAAU,EAAO,QAAU,EAAO,YAEvF,OAD4B,GAAO,EAAO,SAAW,EAAO,QAAU,EAAO,aAAe,GAC9D,GAE1B,EAAwB,GACrB,KAAK,MAAM,EAAQ,uBAAuB,CAAC,IAAM,EAAO,QAAQ,qBC/BjC,IACkB,IACM,IACR,IACL,IACnC,IAC8C,CACxD,EAAsBC,EAAc,CACxC,sBAAyB,GACzB,iCAAoC,GACpC,oCAAuC,GAEvC,MAAO,EAAE,CACT,aAAc,IAAK,GACpB,CAAC,CACI,EAAOI,GAAY,CACvB,WACA,YACA,QACA,QACA,gBACC,IAAQ,CACT,IAAM,EAAoBF,EAAO,GAAM,CACjC,EAA+BA,EAAO,GAAK,CAC3C,EAAkB,EAAM,SAAS,aAAa,CAC9C,MAA4B,CAC5B,EAA6B,SAC/B,KAA8C,CAEhD,EAAkB,QAAU,GAC5B,EAA6B,QAAU,IAEnC,MAA4B,CAChC,EAAkB,QAAU,GAC5B,EAA6B,QAAU,IAEnC,EAAe,EAAe,GAAiB,CAC9C,IAGD,EACF,GAAqB,CAErB,GAAqB,GAEvB,CACF,OAAuB,EAAI,EAAoB,SAAU,CAAE,MAAO,CAChE,sBAAyB,EAAkB,QAC3C,iCAAoC,EAA6B,QACjE,gCAAkC,GAAS,EAA6B,QAAU,EAClF,QACA,eACD,CAAE,SAA0B,EAAI,MAAO,CAAE,IAAK,EAAU,CAAC,EAAc,EAAI,CAAC,CAAE,YAAW,MAAO,CAC/F,MAAO,OACP,GAAG,EACJ,CAAE,WAAU,CAAC,CAAE,CAAC,EACjB,mBCxDiC,IACa,CAC1C,MAA+BC,EAAW,EAAoB,mBCF5B,IACL,IACsB,CACnD,EAASC,GAAY,CACzB,WACA,UACA,GAAG,GACF,IAAQ,CACT,GAAM,CACJ,oBACA,+BACA,kCACA,QACA,gBACE,GAAwB,CACtB,EAAe,GAAM,CACzB,IAAmC,EAAE,CACG,EAAM,SAAS,aAAa,EAAI,CAAC,GAAmB,EAAI,GAA8B,GAE5H,KAA8C,CAC9C,EAAgC,GAAM,GAG1C,OAAuB,EAAI,MAAO,CAAE,MAAK,GAAG,EAAM,QAAS,EAAa,WAAU,CAAC,EACnF,mBCxB+B,IACI,CAC/B,EAAe,CACnB,OACA,SACD"}