{"version":3,"file":"cleantalk-modal.min.js","sources":["cleantalk-modal.js"],"sourcesContent":["/* Cleantalk Modal object */\ncleantalkModal = {\n\n    // Flags\n    loaded: false,\n    loading: false,\n    opened: false,\n    opening: false,\n\n    // Methods\n    load: function( action ) {\n        if( ! this.loaded ) {\n            this.loading = true;\n            callback = function( result, data, params, obj ) {\n                cleantalkModal.loading = false;\n                cleantalkModal.loaded = result;\n                document.dispatchEvent(\n                    new CustomEvent( \"cleantalkModalContentLoaded\", {\n                        bubbles: true,\n                    } )\n                );\n            };\n            if( typeof apbct_admin_sendAJAX === \"function\" ) {\n                apbct_admin_sendAJAX( { 'action' : action }, { 'callback': callback, 'notJson': true } );\n            } else {\n                apbct_public_sendAJAX( { 'action' : action }, { 'callback': callback, 'notJson': true } );\n            }\n\n        }\n    },\n\n    open: function () {\n        /* Cleantalk Modal CSS start */\n        var renderCss = function () {\n            var cssStr = '';\n            for ( key in this.styles ) {\n                cssStr += key + ':' + this.styles[key] + ';';\n            }\n            return cssStr;\n        };\n        var overlayCss = {\n            styles: {\n                \"z-index\": \"9999\",\n                \"position\": \"fixed\",\n                \"top\": \"0\",\n                \"left\": \"0\",\n                \"width\": \"100%\",\n                \"height\": \"100%\",\n                \"background\": \"rgba(0,0,0,0.5)\",\n                \"display\": \"flex\",\n                \"justify-content\" : \"center\",\n                \"align-items\" : \"center\",\n            },\n            toString: renderCss\n        };\n        var innerCss = {\n            styles: {\n                \"position\" : \"relative\",\n                \"padding\" : \"30px\",\n                \"background\" : \"#FFF\",\n                \"border\" : \"1px solid rgba(0,0,0,0.75)\",\n                \"border-radius\" : \"4px\",\n                \"box-shadow\" : \"7px 7px 5px 0px rgba(50,50,50,0.75)\",\n            },\n            toString: renderCss\n        };\n        var closeCss = {\n            styles: {\n                \"position\" : \"absolute\",\n                \"background\" : \"#FFF\",\n                \"width\" : \"20px\",\n                \"height\" : \"20px\",\n                \"border\" : \"2px solid rgba(0,0,0,0.75)\",\n                \"border-radius\" : \"15px\",\n                \"cursor\" : \"pointer\",\n                \"top\" : \"-8px\",\n                \"right\" : \"-8px\",\n                \"box-sizing\" : \"content-box\",\n            },\n            toString: renderCss\n        };\n        var closeCssBefore = {\n            styles: {\n                \"content\" : \"\\\"\\\"\",\n                \"display\" : \"block\",\n                \"position\" : \"absolute\",\n                \"background\" : \"#000\",\n                \"border-radius\" : \"1px\",\n                \"width\" : \"2px\",\n                \"height\" : \"16px\",\n                \"top\" : \"2px\",\n                \"left\" : \"9px\",\n                \"transform\" : \"rotate(45deg)\",\n            },\n            toString: renderCss\n        };\n        var closeCssAfter = {\n            styles: {\n                \"content\" : \"\\\"\\\"\",\n                \"display\" : \"block\",\n                \"position\" : \"absolute\",\n                \"background\" : \"#000\",\n                \"border-radius\" : \"1px\",\n                \"width\" : \"2px\",\n                \"height\" : \"16px\",\n                \"top\" : \"2px\",\n                \"left\" : \"9px\",\n                \"transform\" : \"rotate(-45deg)\",\n            },\n            toString: renderCss\n        };\n        var bodyCss = {\n            styles: {\n                \"overflow\" : \"hidden\",\n            },\n            toString: renderCss\n        };\n        var cleantalkModalStyle = document.createElement( 'style' );\n        cleantalkModalStyle.setAttribute( 'id', 'cleantalk-modal-styles' );\n        cleantalkModalStyle.innerHTML = 'body.cleantalk-modal-opened{' + bodyCss + '}';\n        cleantalkModalStyle.innerHTML += '#cleantalk-modal-overlay{' + overlayCss + '}';\n        cleantalkModalStyle.innerHTML += '#cleantalk-modal-close{' + closeCss + '}';\n        cleantalkModalStyle.innerHTML += '#cleantalk-modal-close:before{' + closeCssBefore + '}';\n        cleantalkModalStyle.innerHTML += '#cleantalk-modal-close:after{' + closeCssAfter + '}';\n        document.body.append( cleantalkModalStyle );\n        /* Cleantalk Modal CSS end */\n\n        var overlay = document.createElement( 'div' );\n        overlay.setAttribute( 'id', 'cleantalk-modal-overlay' );\n        document.body.append( overlay );\n\n        document.body.classList.add( 'cleantalk-modal-opened' );\n\n        var inner = document.createElement( 'div' );\n        inner.setAttribute( 'id', 'cleantalk-modal-inner' );\n        inner.setAttribute( 'style', innerCss );\n        overlay.append( inner );\n\n        var close = document.createElement( 'div' );\n        close.setAttribute( 'id', 'cleantalk-modal-close' );\n        inner.append( close );\n\n        var content = document.createElement( 'div' );\n        if ( this.loaded ) {\n            content.innerHTML = this.loaded;\n        } else {\n            content.innerHTML = 'Loading...';\n            // @ToDo Here is hardcoded parameter. Have to get this from a 'data-' attribute.\n            this.load( 'get_options_template' );\n        }\n        content.setAttribute( 'id', 'cleantalk-modal-content' );\n        inner.append( content );\n\n        this.opened = true;\n    },\n\n    close: function () {\n        document.body.classList.remove( 'cleantalk-modal-opened' );\n        document.getElementById( 'cleantalk-modal-overlay' ).remove();\n        document.getElementById( 'cleantalk-modal-styles' ).remove();\n        document.dispatchEvent(\n            new CustomEvent( \"cleantalkModalClosed\", {\n                bubbles: true,\n            } )\n        );\n    }\n\n};\n\n/* Cleantalk Modal helpers */\ndocument.addEventListener('click',function( e ){\n    if( e.target && e.target.id === 'cleantalk-modal-overlay' || e.target.id === 'cleantalk-modal-close' ){\n        cleantalkModal.close();\n    }\n});\ndocument.addEventListener(\"cleantalkModalContentLoaded\", function( e ) {\n    if( cleantalkModal.opened && cleantalkModal.loaded ) {\n        document.getElementById( 'cleantalk-modal-content' ).innerHTML = cleantalkModal.loaded;\n    }\n});"],"names":["cleantalkModal","loaded","loading","opened","opening","load","action","this","callback","result","data","params","obj","document","dispatchEvent","CustomEvent","bubbles","apbct_admin_sendAJAX","apbct_public_sendAJAX","notJson","open","renderCss","cssStr","key","styles","overlayCss","z-index","position","top","left","width","height","background","display","justify-content","align-items","toString","innerCss","padding","border","border-radius","box-shadow","closeCss","cursor","right","box-sizing","closeCssBefore","content","transform","closeCssAfter","bodyCss","overflow","cleantalkModalStyle","createElement","setAttribute","innerHTML","body","append","overlay","classList","add","inner","close","remove","getElementById","addEventListener","e","target","id"],"mappings":"AACAA,eAAiB,CAGbC,QAAQ,EACRC,SAAS,EACTC,QAAQ,EACRC,SAAS,EAGTC,KAAM,SAAUC,GACNC,KAAKN,SACPM,KAAKL,SAAU,EACfM,SAAW,SAAUC,EAAQC,EAAMC,EAAQC,GACvCZ,eAAeE,SAAU,EACzBF,eAAeC,OAASQ,EACxBI,SAASC,cACL,IAAIC,YAAa,8BAA+B,CAC5CC,SAAS,OAIe,mBAAzBC,qBACPA,qBAEAC,uBAFsB,CAAEZ,OAAWA,GAAU,CAAEE,SAAYA,SAAUW,SAAW,MAQ5FC,KAAM,WAEc,SAAZC,IACA,IAAIC,EAAS,GACb,IAAMC,OAAOhB,KAAKiB,OACdF,GAAUC,IAAM,IAAMhB,KAAKiB,OAAOD,KAAO,IAE7C,OAAOD,EALX,IAOIG,EAAa,CACbD,OAAQ,CACJE,UAAW,OACXC,SAAY,QACZC,IAAO,IACPC,KAAQ,IACRC,MAAS,OACTC,OAAU,OACVC,WAAc,kBACdC,QAAW,OACXC,kBAAoB,SACpBC,cAAgB,UAEpBC,SAAUf,GAEVgB,EAAW,CACXb,OAAQ,CACJG,SAAa,WACbW,QAAY,OACZN,WAAe,OACfO,OAAW,6BACXC,gBAAkB,MAClBC,aAAe,uCAEnBL,SAAUf,GAEVqB,EAAW,CACXlB,OAAQ,CACJG,SAAa,WACbK,WAAe,OACfF,MAAU,OACVC,OAAW,OACXQ,OAAW,6BACXC,gBAAkB,OAClBG,OAAW,UACXf,IAAQ,OACRgB,MAAU,OACVC,aAAe,eAEnBT,SAAUf,GAEVyB,EAAiB,CACjBtB,OAAQ,CACJuB,QAAY,KACZd,QAAY,QACZN,SAAa,WACbK,WAAe,OACfQ,gBAAkB,MAClBV,MAAU,MACVC,OAAW,OACXH,IAAQ,MACRC,KAAS,MACTmB,UAAc,iBAElBZ,SAAUf,GAEV4B,EAAgB,CAChBzB,OAAQ,CACJuB,QAAY,KACZd,QAAY,QACZN,SAAa,WACbK,WAAe,OACfQ,gBAAkB,MAClBV,MAAU,MACVC,OAAW,OACXH,IAAQ,MACRC,KAAS,MACTmB,UAAc,kBAElBZ,SAAUf,GAEV6B,EAAU,CACV1B,OAAQ,CACJ2B,SAAa,UAEjBf,SAAUf,GAEV+B,EAAsBvC,SAASwC,cAAe,SAClDD,EAAoBE,aAAc,KAAM,0BACxCF,EAAoBG,UAAY,+BAAiCL,EAAU,IAC3EE,EAAoBG,WAAa,4BAA8B9B,EAAa,IAC5E2B,EAAoBG,WAAa,0BAA4Bb,EAAW,IACxEU,EAAoBG,WAAa,iCAAmCT,EAAiB,IACrFM,EAAoBG,WAAa,gCAAkCN,EAAgB,IACnFpC,SAAS2C,KAAKC,OAAQL,GAGtB,IAAIM,EAAU7C,SAASwC,cAAe,OACtCK,EAAQJ,aAAc,KAAM,2BAC5BzC,SAAS2C,KAAKC,OAAQC,GAEtB7C,SAAS2C,KAAKG,UAAUC,IAAK,0BAE7B,IAAIC,EAAQhD,SAASwC,cAAe,OACpCQ,EAAMP,aAAc,KAAM,yBAC1BO,EAAMP,aAAc,QAASjB,GAC7BqB,EAAQD,OAAQI,GAEhB,IAAIC,EAAQjD,SAASwC,cAAe,OACpCS,EAAMR,aAAc,KAAM,yBAC1BO,EAAMJ,OAAQK,GAEd,IAAIf,EAAUlC,SAASwC,cAAe,OACjC9C,KAAKN,OACN8C,EAAQQ,UAAYhD,KAAKN,QAEzB8C,EAAQQ,UAAY,aAEpBhD,KAAKF,KAAM,yBAEf0C,EAAQO,aAAc,KAAM,2BAC5BO,EAAMJ,OAAQV,GAEdxC,KAAKJ,QAAS,GAGlB2D,MAAO,WACHjD,SAAS2C,KAAKG,UAAUI,OAAQ,0BAChClD,SAASmD,eAAgB,2BAA4BD,SACrDlD,SAASmD,eAAgB,0BAA2BD,SACpDlD,SAASC,cACL,IAAIC,YAAa,uBAAwB,CACrCC,SAAS,OAQzBH,SAASoD,iBAAiB,QAAQ,SAAUC,IACpCA,EAAEC,QAA0B,4BAAhBD,EAAEC,OAAOC,IAAoD,0BAAhBF,EAAEC,OAAOC,KAClEpE,eAAe8D,UAGvBjD,SAASoD,iBAAiB,8BAA+B,SAAUC,GAC3DlE,eAAeG,QAAUH,eAAeC,SACxCY,SAASmD,eAAgB,2BAA4BT,UAAYvD,eAAeC"}