{"version":3,"sources":["webpack:///./scripts/Actions/Overlay.action.js","webpack:///./scripts/Components/OverlayContainer.js"],"names":["addOverlay","componentName","onOverlayClick","type","OVERLAY_ADD_OVERLAY","payload","updateOverlay","OVERLAY_UPDATE_OVERLAY","removeOverlay","OVERLAY_REMOVE_OVERLAY","closeOverlay","OVERLAY_CLOSE_OVERLAY","activeOverlays","OVERLAY_CLASS","OverlayContainer","dispatch","useDispatch","disableOverlayClick","useSelector","state","overlay","overlayClasses","length","map","c","name","useEffect","classesToRemove","Array","from","document","body","classList","filter","startsWith","className","remove","add","useCallback","component","removeOverlayAction","React","join","onClick"],"mappings":"gJAOO,MAAMA,EAAaA,CAACC,EAAeC,KAAmB,CAC3DC,KAAMC,KACNC,QAAS,CACPJ,gBACAC,oBAISI,EAAgBA,CAACL,EAAeC,KAAmB,CAC9DC,KAAMI,KACNF,QAAS,CACPJ,gBACAC,oBAISM,EAAiBP,IAAa,CACzCE,KAAMM,KACNJ,QAAS,CACPJ,mBAISS,EAAeA,KAAA,CAC1BP,KAAMQ,KACNN,QAAS,CACPO,eAAgB,K,iGC1BpB,MAAMC,EAAgB,UA+EtB,EA7EyBC,KACvB,MAAMC,GAAWC,WAEX,eAAEJ,EAAc,oBAAEK,IAAwBC,SAC7CC,GAAUA,EAAMC,UAObC,EAAiBT,EACnB,CACEA,EAAeU,OAAS,GAAKT,KAC1BD,EAAeW,KAAKC,GAAM,GAAGX,MAAkBW,EAAEC,UAEtD,IAIJC,gBAAU,KAER,MAAMC,EAAkBC,MAAMC,KAAKC,SAASC,KAAKC,WAAWC,QACzDT,GAAMA,EAAEU,WAAWrB,IAAkBW,GAAKX,IAE7C,GAAIc,GAAmBA,EAAgBL,OAAS,EAC9C,IAAK,IAAIa,KAAaR,EACpBG,SAASC,KAAKC,UAAUI,OAAOD,GAKnC,GAAIvB,GAAkBA,EAAeU,OAAS,EAC5C,IAAK,IAAIa,KAAad,EACpBS,SAASC,KAAKC,UAAUK,IAAIF,EAEhC,GACC,CAACvB,IAMJ,MAAMV,GAAiBoC,kBAAY,KAnCZrC,MAoCrB,IAAIgB,EAEJ,IAAK,IAAIsB,KAAa3B,EAChB2B,EAAUrC,iBACuB,IAA/BqC,EAAUrC,mBAxCGD,EAyCDsC,EAAUd,KAxC9BV,GAASyB,QAAoBvC,IA2C7B,GACC,CAACW,EAAgBK,IAEpB,OACEL,GACAA,EAAeU,OAAS,GACtBmB,gBAAA,OAAKN,UAAWd,EAAeqB,KAAK,KAAMC,QAASzC,GACpD,C","file":"9543.0e5b2c0adcd400e8e64e.js","sourcesContent":["import {\n OVERLAY_ADD_OVERLAY,\n OVERLAY_CLOSE_OVERLAY,\n OVERLAY_REMOVE_OVERLAY,\n OVERLAY_UPDATE_OVERLAY,\n} from '../constants';\n\nexport const addOverlay = (componentName, onOverlayClick) => ({\n type: OVERLAY_ADD_OVERLAY,\n payload: {\n componentName,\n onOverlayClick,\n },\n});\n\nexport const updateOverlay = (componentName, onOverlayClick) => ({\n type: OVERLAY_UPDATE_OVERLAY,\n payload: {\n componentName,\n onOverlayClick,\n },\n});\n\nexport const removeOverlay = (componentName) => ({\n type: OVERLAY_REMOVE_OVERLAY,\n payload: {\n componentName,\n },\n});\n\nexport const closeOverlay = () => ({\n type: OVERLAY_CLOSE_OVERLAY,\n payload: {\n activeOverlays: [],\n },\n});\n","import React, { useCallback, useEffect } from 'react';\nimport { connect, Provider, useDispatch, useSelector } from 'react-redux';\nimport {\n closeOverlay as closeOverlayAction,\n removeOverlay as removeOverlayAction,\n} from '../Actions/Overlay.action';\n\nconst OVERLAY_CLASS = 'overlay';\n\nconst OverlayContainer = () => {\n const dispatch = useDispatch();\n\n const { activeOverlays, disableOverlayClick } = useSelector(\n (state) => state.overlay\n );\n\n const closeOverlay = () => dispatch(closeOverlayAction());\n const removeOverlay = (componentName) =>\n dispatch(removeOverlayAction(componentName));\n\n const overlayClasses = activeOverlays\n ? [\n activeOverlays.length > 0 && OVERLAY_CLASS,\n ...activeOverlays.map((c) => `${OVERLAY_CLASS}--${c.name}`),\n ]\n : [];\n /**\n * Adds overlay classes to body to enable styling on components based on active overlays\n */\n useEffect(() => {\n // Remove all overlay classes that are not active anymore, before adding new\n const classesToRemove = Array.from(document.body.classList).filter(\n (c) => c.startsWith(OVERLAY_CLASS) || c == OVERLAY_CLASS\n );\n if (classesToRemove && classesToRemove.length > 0) {\n for (let className of classesToRemove) {\n document.body.classList.remove(className);\n }\n }\n\n // Add overlay classes to body\n if (activeOverlays && activeOverlays.length > 0) {\n for (let className of overlayClasses) {\n document.body.classList.add(className);\n }\n }\n }, [activeOverlays]);\n\n /**\n * Removes all overlays.\n * Triggers onOverLay click on all active overlay components\n */\n const onOverlayClick = useCallback(() => {\n if (disableOverlayClick) return;\n\n for (let component of activeOverlays) {\n if (component.onOverlayClick) {\n if (component.onOverlayClick() !== false) {\n removeOverlay(component.name);\n }\n }\n }\n }, [activeOverlays, disableOverlayClick]);\n\n return (\n activeOverlays &&\n activeOverlays.length > 0 && (\n
\n )\n );\n};\n\nconst mapStateToProps = (state) => {\n return {\n ...state.overlay,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n closeOverlay: dispatch(closeOverlay()),\n removeOverlay: (componentName) =>\n dispatch(removeOverlayAction(componentName)),\n };\n};\n\nexport default OverlayContainer;\n"],"sourceRoot":""}