{"version":3,"file":"/js/units/gdpr.js","mappings":"AAAAA,IAAMC,OAAOD,KAAO,CAAC,EAmBrBA,IAAIE,KAAO,SAASC,EAASC,EAASC,GAgBlC,IAbAF,EAAWA,GAAiB,CAACG,kBAAkB,IACtCC,sBAAyBJ,EAASI,uBAA6B,WACxEJ,EAASK,cAAyBL,EAASK,eAA6B,oBACxEL,EAASM,cAAyBN,EAASM,eAA6B,4BACxEN,EAASO,uBAA2D,MAAjCP,EAASO,uBAAgCP,EAASO,sBACrFP,EAASQ,WAAsC,MAAvBR,EAASQ,aAA4C,IAAtBR,EAASQ,WAEhER,EAASS,iBAAoBT,EAASS,kBAAoB,CAAC,UAAU,UAAU,UAAU,WACzFT,EAASU,eAAmBV,EAASU,gBAAkB,GAEvDR,EAAcA,GAAcS,OAGO,KAA9BX,EAASG,mBAA8D,IAAhCH,EAASG,iBAA0B,MAAM,IAAIS,MAAM,kDAC/F,GAAkB,KAAbX,EAAoB,MAAM,IAAIW,MAAM,iGAIzC,IACIC,EAAQ,CACRC,cAAcZ,EAAE,IAAIF,EAASG,kBAC5BY,iBAAiBb,EAAEF,EAASI,uBAC5BY,OAAOd,EAAE,IAAIF,EAASK,eACtBY,OAAOf,EAAE,IAAIF,EAASM,eACtBY,kBAAkB,KAEtBC,EAAQ,CAETA,YAAgB,SAASC,GACrB,GAAKA,GAAcA,EAAWC,SAG1BD,EAAW,GAAGE,gBAAgB,UAE3BtB,EAASuB,WAAW,CACrB,IAGIC,EAHmBJ,EAAWK,cAGM,GACpCC,EAASC,SAASC,eAAe5B,EAASuB,WAC1CG,IAAQA,EAAOG,MAAMC,cAAgB,GAAGC,OAAOP,EAAgB,MACrE,CAER,EAEAL,YAAgB,SAASa,GAChBA,GAAcA,EAAWX,QAC1BY,WAAW,WAAWD,EAAWE,QAC7B,WAEIF,EAAWG,KAAK,UAAS,GACzBH,EAAW,GAAGV,gBAAgB,QAClC,EACJ,EAAET,EAAMK,kBAEhB,EAEAC,cAAkB,SAASiB,GAClBA,GAAgBA,EAAaf,QAC9Be,EAAaC,QAErB,EAEAlB,SAAa,WACTlB,EAASqC,aACb,EAEAnB,QAAY,WACRlB,EAASsC,YACb,EA0EApB,iBAAqB,WACjBqB,GAAI,EACJ,IAAIC,EAAQ,IAAIC,OAAQ1C,EAASS,iBAAiBkC,KAAK,KAAO,KAK9D,OAHG1C,EAAS2C,UAAyD,IAA7C9C,OAAO+C,SAASC,SAASC,OAAQN,MACrDD,GAAI,GAEDA,CACX,GA6BH,OAhByC,IAA/BvC,EAAS+C,mBAA+BhD,EAASO,uBAAkD,IAA1BN,EAASgD,gBAAsD,IAA3B9B,EAAI+B,oBAAgClD,EAASQ,aACzJW,EAAIgC,YAAYtC,EAAMC,gBAGI,IAA3BK,EAAI+B,qBAAwD,IAAxBlD,EAASQ,YAEzCK,EAAME,iBAAiBM,QAEtBR,EAAME,iBAAiBoB,KAAK,UAAS,GAnG1CtB,EAAMG,OAAOoC,GAAG,UAA0C,aAA9BvC,EAAMG,OAAOmB,KAAK,UAEb,IAA7BlC,EAAS+C,mBACRnC,EAAMG,OAAOmB,KAAK,UAAU,WAGhCtB,EAAMG,OAAOqC,GAAG,SAAS,SAASC,GAC9BA,EAAEC,iBACCC,KAAKC,SAEJtC,EAAIuC,WAEJvC,EAAIwC,YAAY9C,EAAMC,eACtBmB,WAAW,WAAWN,SAASkB,SAASe,QAAO,EAAM,EAAE/C,EAAMK,qBAG7DC,EAAI0C,UAEJ1C,EAAIwC,YAAY9C,EAAMC,eAE9B,KAIAD,EAAMG,OAAOqC,GAAG,QAAQ,SAASC,GAC7BA,EAAEC,iBAEFpC,EAAIuC,WACJ,IACX7D,IAAIiE,IAAIC,UAAU,yBAAyB,OAAO,GAClDlE,IAAIiE,IAAIE,aAAa,sBACdlE,OAAOmE,6BAA8BnE,OAAOoE,aACpD,CACA,MAAMC,GAAK,CAECxC,SAASkB,SAASe,QAAO,EAC7B,GAGC/C,EAAMI,OAAOoC,GAAG,QAAQ,SAASC,GAC9BA,EAAEC,iBAEFpC,EAAI0C,UAEJ1C,EAAIiD,cAAcvD,EAAMC,eAEnBjB,IAAIwE,kBACLxE,IAAIyE,aAAaC,QAAQ,iBAEjC,IAID1D,EAAME,iBAAiBM,QAEtBR,EAAME,iBAAiBsC,GAAG,QAAQ,SAASC,GACvCA,EAAEC,iBACFpC,EAAIgC,YAAYtC,EAAMC,eACtBZ,EAAE,cAAcsE,QAAQ,CAACC,UAAW5D,EAAMC,cAAc4D,SAASC,IAAI3E,EAASU,gBAAgB,IAAK,WAI/FG,EAAMC,cAAc,GAAGQ,gBAAgB,UACvCT,EAAMC,cAAc,GAAGQ,gBAAgB,QAE5C,EACH,GAyCJH,CACR","sources":["webpack:///./src/js/units/gdpr.js"],"sourcesContent":["TNZ = window.TNZ || {};\n/**\n * GDPR banners component\n *\n * This file handles the display of the GDPR banner and privacy settings menu. For cookie functions see the GDPRUtils.\n *\n * There is a high-level description of how this works for the analytics team that needs\n * updating if any of this changes @see https://tourismnz.atlassian.net/wiki/spaces/SWPRJ/pages/1975123977/GDPR+Front-end+code+setup\n *\n * This TNZ.GDPR component is dependent on the component TNZ.GDPRUtil existing and being initiated\n * The component should be initiated and passed in:\n * eg :\n *       var GDPRUtil = TNZ.GDPRUtil(settingsUtil.optin_market,settingsUtil.optin_version);\n *       var gdpr = TNZ.GDPR(settings,GDPRUtil,jQuery);\n *\n * @param {object} settings - settings object\n * @param {object} GDPRUtil - initialised GDPRUtils object\n * @param {object} $ - jQuery object\n */\nTNZ.GDPR = function(settings,GDPRUtil,$) {\n    // Defaults\n    // --------\n    settings = settings      || {message_block_id:-1};\n    settings.open_msg_link_jq_hook  = settings.open_msg_link_jq_hook     || '.js-none';//This can be an id eg '#id_value' or a class '.jq-class-hook'\n    settings.allow_link_id          = settings.allow_link_id             || 'gdpr-header-allow';//ID\n    settings.close_link_id          = settings.close_link_id             || 'gdpr-content-header-close';//ID\n    settings.show_message_on_load   = (settings.show_message_on_load == null || settings.show_message_on_load)? true:false;//So message when content this inits: default :true\n    settings.intestmode  = (settings.intestmode == null || settings.intestmode===false)? false:true;//defaults false, shows link while in test mode\n\n    settings.url_gdpr_markets =  settings.url_gdpr_markets || ['/de-de/','/en-ie/','/fr-fr/','/en-gb/'];//Markets that should display GDPR message\n    settings.scrollToOffset   = settings.scrollToOffset || 88;\n\n    $           = $          || jQuery;\n\n    //Made header id always require, foot is optional, although forus it will be required.\n    if(!!settings.message_block_id === false || settings.message_block_id  === -1) throw new Error('Settings param \"message_block_id\" is required.' );\n    if(!!GDPRUtil === false) throw new Error('The 2nd argument of \"GDPRUtil\" must inited and passed in. This is the TNZ.GDPRUtil component.');\n\n\t// private functions & variables\n\t// -----------------------------\n    var self_  = this;\n    var _data = {\n        $messageBlock:$('#'+settings.message_block_id) //header container\n        ,$openMessageLink:$(settings.open_msg_link_jq_hook) //footer link to open footer container\n        ,$allow:$('#'+settings.allow_link_id) //button/link click allow\n        ,$close:$('#'+settings.close_link_id) //button/link click close\n        ,reloadPauseTimeMs:200\n    };\n\tvar pub   = {};\n\n    pub.showMessage=function($divToShow){\n        if(!!$divToShow && $divToShow.length){\n            //$divToShow.show();\n            //$divToShow.removeAttr('hidden');\n            $divToShow[0].removeAttribute('hidden');\n            // Add padding to footer\n            if(settings.footer_id) {\n              var GDPRBannerHeight = $divToShow.outerHeight();\n              // We want to reserve the GDPR banners height and an additional 20px,\n              // which creates a separation between the footer and the banner\n              var spaceToReserve = GDPRBannerHeight + 20;\n              var footer = document.getElementById(settings.footer_id);\n              if (footer) footer.style.paddingBottom = ''.concat(spaceToReserve, 'px');\n            }\n        }\n    }\n\n    pub.hideMessage=function($divToHide){\n        if(!!$divToHide && $divToHide.length){\n            setTimeout(function(){$divToHide.slideUp(\n                function(){\n                    //console.log('hideMessage : slide up',$divToHide[0]);\n                    $divToHide.attr('hidden',true);\n                    $divToHide[0].removeAttribute('style');\n                });\n            },_data.reloadPauseTimeMs);\n        }\n    }\n\n    pub.removeMessage=function($divToRemove){\n        if(!!$divToRemove && $divToRemove.length){\n            $divToRemove.remove();\n        }\n    }\n\n    pub.setAllow=function(){\n        GDPRUtil.optin_allow();\n    };\n\n    pub.setDeny=function(){\n        GDPRUtil.optin_deny();\n    };\n\n\n\tvar _bind = function(){\n        if(_data.$allow.is('input') && _data.$allow.attr('type') === 'checkbox'){\n            //Set previous status if it exists\n            if(GDPRUtil.optin_marketing()===true){\n                _data.$allow.attr('checked','checked');\n            }\n            //Then bind on change\n            _data.$allow.on('change',function(e){\n                e.preventDefault();\n                if(this.checked){\n                    //set cookie for allowing GDPR tracking\n                    pub.setAllow();\n                    //Then do page reload from server\n                    pub.hideMessage(_data.$messageBlock);\n                    setTimeout(function(){document.location.reload(true);},_data.reloadPauseTimeMs);\n                }else{\n                    //set cookie to session and to deny, or just delete cookie.\n                    pub.setDeny();\n                    //Update display\n                    pub.hideMessage(_data.$messageBlock);\n                }\n            });\n        }else{\n            //mostly for header\n            //bind on click, as you're most likely a button or a link\n            _data.$allow.on('click',function(e){\n                e.preventDefault();\n                //set cookie for allowing GDPR tracking\n                pub.setAllow();\n                try {\n\t\t\t\t\tTNZ.DTM.setCookie('__dtm_forceactivevisit','true',0);\n\t\t\t\t\tTNZ.DTM.removeCookie(\"avtriggered\"); // We clear this but the DTM re-adds it too soon, so we have to use '__dtm_forceactivevisit' cookie\n\t\t\t\t\tdelete window.__load_marketing_tags; delete window.__avtriggered;\n\t\t\t\t}\n\t\t\t\tcatch(err){}\n                //Then do page reload from server\n                document.location.reload(true);\n            });\n\n             //bind on click, as you're most likely a button or a link\n             _data.$close.on('click',function(e){\n                e.preventDefault();\n                //set cookie for allowing GDPR tracking\n                pub.setDeny();\n                //Then do header remove\n                pub.removeMessage(_data.$messageBlock);\n\n                if(!!TNZ.GDPRStickyHeader) {\n                    TNZ.EventManager.trigger(\"TNZ.Resize.End\");\n                }\n            });\n\n        }\n\n        if(_data.$openMessageLink.length){\n            //This only shows the footer settings, this is the only place we have this.\n            _data.$openMessageLink.on('click',function(e){\n                e.preventDefault();\n                pub.showMessage(_data.$messageBlock);\n                $('html, body').animate({scrollTop: _data.$messageBlock.offset().top-settings.scrollToOffset},500, function() {\n                    // Animation complete.\n                    //console.log('Animation showMessage: animate',_data.$messageBlock[0]);\n                    //_data.$messageBlock.removeAttr('hidden').removeAttr('style');\n                    _data.$messageBlock[0].removeAttribute('hidden');\n                    _data.$messageBlock[0].removeAttribute('style');\n\n               });\n            });\n        }\n    }\n\n    pub.isEUMarketOrUser=function(){\n        r = false;\n        var rPatt = new RegExp( settings.url_gdpr_markets.join(\"|\") , \"i\" );\n\n        if(GDPRUtil.in_eu() ||  window.location.pathname.search( rPatt) !== -1){\n            r = true;\n        }\n        return r;\n    }\n\n    var _init = function(){\n        //Check if there is anything to show with cookies\n        /**\n         * If they haven't opt in for marketing\n         * AND if settings is to show the message on load\n         * AND if NO cookie has been set (regardless of value)\n         * AND User is either viewing for the EU or viewing a EU market\n         * Then show the message\n         * OR\n         * if we are testing and we're forcing the show of the message.\n         */\n        if(GDPRUtil.optin_marketing() === false && settings.show_message_on_load && GDPRUtil.cookie_set() === false && (pub.isEUMarketOrUser() === true  || settings.intestmode)){\n            pub.showMessage(_data.$messageBlock);\n        }\n\n        if(pub.isEUMarketOrUser() === false && settings.intestmode === false){\n            // Hide the link if not in the eu and not in test mode\n            if(_data.$openMessageLink.length){\n                //_data.$openMessageLink.hide();\n                _data.$openMessageLink.attr('hidden',true);\n            }\n        }\n\n        _bind();//hook up any bindings\n\t}\n\n\t_init();\n\treturn pub;\n}\n"],"names":["TNZ","window","GDPR","settings","GDPRUtil","$","message_block_id","open_msg_link_jq_hook","allow_link_id","close_link_id","show_message_on_load","intestmode","url_gdpr_markets","scrollToOffset","jQuery","Error","_data","$messageBlock","$openMessageLink","$allow","$close","reloadPauseTimeMs","pub","$divToShow","length","removeAttribute","footer_id","spaceToReserve","outerHeight","footer","document","getElementById","style","paddingBottom","concat","$divToHide","setTimeout","slideUp","attr","$divToRemove","remove","optin_allow","optin_deny","r","rPatt","RegExp","join","in_eu","location","pathname","search","optin_marketing","cookie_set","isEUMarketOrUser","showMessage","is","on","e","preventDefault","this","checked","setAllow","hideMessage","reload","setDeny","DTM","setCookie","removeCookie","__load_marketing_tags","__avtriggered","err","removeMessage","GDPRStickyHeader","EventManager","trigger","animate","scrollTop","offset","top"],"sourceRoot":""}