{"version":3,"file":"useConsentManagement-Boa6BrfF.js","sources":["../../src/constants/consentManagement.ts","../../src/hooks/useConsentManagement.ts"],"sourcesContent":["export const SENTRY_CONSENT_UC_ID = \"b0hANt-DHB3Q-9\";\n","import { useCallback, useEffect, useState } from \"react\";\n\ntype UseConsentManagementReturn = {\n initialised: boolean;\n active: boolean;\n};\n\ntype ConsentEvent = {\n detail: {\n event: string;\n type: string;\n };\n};\n\nexport const useConsentManagement = (\n ucId: string,\n): UseConsentManagementReturn => {\n const [isInitialised, setIsInitialised] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n const isConsentProviderReady = useCallback(() => {\n return window.UC_UI && window.UC_UI.isInitialized();\n }, []);\n\n const hasConsent = useCallback(\n (ucId: string, skipCheck: boolean = false): boolean => {\n if (!isConsentProviderReady()) {\n return false;\n }\n\n const consentBasicInfos = window.UC_UI.getServicesBaseInfo();\n const trackerDetails = consentBasicInfos.find((info) => info.id === ucId);\n\n if (window.UC_UI.isConsentRequired() && !skipCheck) {\n return trackerDetails?.isEssential ?? false;\n }\n\n return trackerDetails?.consent?.status ?? false;\n },\n [isConsentProviderReady],\n );\n\n useEffect(() => {\n // Check for consent events, in case it gets activated\n const handleUcEvent = (event: unknown) => {\n if (isConsentProviderReady()) {\n setIsInitialised(true);\n\n // As UserCentrics handles explicit consent asynchronously but in a weird way,\n // we need to skip the explicit consent check here\n // as UC_UI.isConsentRequired() is true only after this event is handled\n if (\n (event as ConsentEvent).detail.event === \"consent_status\" &&\n (event as ConsentEvent).detail.type === \"explicit\"\n ) {\n setIsActive(hasConsent(ucId, true));\n } else {\n setIsActive(hasConsent(ucId));\n }\n }\n };\n\n const handleUcInitialised = () => {\n setIsInitialised(true);\n setIsActive(hasConsent(ucId));\n };\n\n window.addEventListener(\"ucEvent\", handleUcEvent);\n window.addEventListener(\"UC_UI_INITIALIZED\", handleUcInitialised);\n\n // UC UI is already initialised\n if (isConsentProviderReady()) {\n setIsInitialised(true);\n setIsActive(hasConsent(ucId));\n }\n\n return () => {\n window.removeEventListener(\"ucEvent\", handleUcEvent);\n window.removeEventListener(\"UC_UI_INITIALIZED\", handleUcInitialised);\n };\n }, [hasConsent, isConsentProviderReady, ucId]);\n\n return {\n initialised: isInitialised,\n active: isActive,\n };\n};\n"],"names":["SENTRY_CONSENT_UC_ID","useConsentManagement","ucId","isInitialised","setIsInitialised","useState","isActive","setIsActive","isConsentProviderReady","useCallback","hasConsent","skipCheck","trackerDetails","info","_a","useEffect","handleUcEvent","event","handleUcInitialised"],"mappings":"ojCAAO,MAAMA,EAAuB,iBCcvBC,EACXC,GAC+B,CAC/B,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SAAS,EAAK,EAClD,CAACC,EAAUC,CAAW,EAAIF,EAAAA,SAAS,EAAK,EAExCG,EAAyBC,EAAAA,YAAY,IAClC,OAAO,OAAS,OAAO,MAAM,cAAc,EACjD,EAAE,EAECC,EAAaD,EAAA,YACjB,CAACP,EAAcS,EAAqB,KAAmB,OACjD,GAAA,CAACH,IACI,MAAA,GAIT,MAAMI,EADoB,OAAO,MAAM,oBAAoB,EAClB,KAAMC,GAASA,EAAK,KAAOX,CAAI,EAExE,OAAI,OAAO,MAAM,kBAAkB,GAAK,CAACS,GAChCC,GAAA,YAAAA,EAAgB,cAAe,KAGjCE,EAAAF,GAAA,YAAAA,EAAgB,UAAhB,YAAAE,EAAyB,SAAU,EAC5C,EACA,CAACN,CAAsB,CACzB,EAEAO,OAAAA,EAAAA,UAAU,IAAM,CAER,MAAAC,EAAiBC,GAAmB,CACpCT,MACFJ,EAAiB,EAAI,EAMlBa,EAAuB,OAAO,QAAU,kBACxCA,EAAuB,OAAO,OAAS,WAE5BV,EAAAG,EAAWR,EAAM,EAAI,CAAC,EAEtBK,EAAAG,EAAWR,CAAI,CAAC,EAGlC,EAEMgB,EAAsB,IAAM,CAChCd,EAAiB,EAAI,EACTG,EAAAG,EAAWR,CAAI,CAAC,CAC9B,EAEO,cAAA,iBAAiB,UAAWc,CAAa,EACzC,OAAA,iBAAiB,oBAAqBE,CAAmB,EAG5DV,MACFJ,EAAiB,EAAI,EACTG,EAAAG,EAAWR,CAAI,CAAC,GAGvB,IAAM,CACJ,OAAA,oBAAoB,UAAWc,CAAa,EAC5C,OAAA,oBAAoB,oBAAqBE,CAAmB,CACrE,CACC,EAAA,CAACR,EAAYF,EAAwBN,CAAI,CAAC,EAEtC,CACL,YAAaC,EACb,OAAQG,CACV,CACF"}