YUI.add("cookie",function(n,e){var t=n.Lang,o=n.Object,g=null,S=t.isString,r=t.isObject,k=t.isUndefined,s=t.isFunction,u=encodeURIComponent,b=decodeURIComponent,i=n.config.doc;function a(e){throw new TypeError(e)}function c(e){S(e)&&""!==e||a("Cookie name must be a non-empty string.")}function f(e){S(e)&&""!==e||a("Subcookie name must be a non-empty string.")}n.Cookie={_createCookieString:function(e,t,n,o){o=o||{};var e=u(e)+"="+(n?u(t):t),n=o.expires,t=o.path,i=o.domain;return r(o)&&(n instanceof Date&&(e+="; expires="+n.toUTCString()),S(t)&&""!==t&&(e+="; path="+t),S(i)&&""!==i&&(e+="; domain="+i),!0===o.secure&&(e+="; secure")),e},_createCookieHashString:function(e){r(e)||a("Cookie._createCookieHashString(): Argument must be an object.");var n=[];return o.each(e,function(e,t){s(e)||k(e)||n.push(u(t)+"="+u(String(e)))}),n.join("&")},_parseCookieHash:function(e){var t,n,o,i=e.split("&"),r={};if(e.length)for(t=0,n=i.length;t<n;t++)o=i[t].split("="),r[b(o[0])]=b(o[1]);return r},_parseCookieString:function(e,t,n){var o,i,r,s,u,a,c,f={};if(S(e)&&0<e.length)for(o=!1===t?function(e){return e}:b,i=e.split(/;\s/g),s=r=g,a=0,c=i.length;a<c;a++){if((u=i[a].match(/([^=]+)=/i))instanceof Array)try{r=b(u[1]),s=o(i[a].substring(u[1].length+1))}catch(h){}else r=b(i[a]),s="";(k(n)||!n.reverseCookieLoading||k(f[r]))&&(f[r]=s)}return f},_setDoc:function(e){i=e},exists:function(e){return c(e),this._parseCookieString(i.cookie,!0).hasOwnProperty(e)},get:function(e,t){var n;return c(e),s(t)?(n=t,t={}):r(t)?n=t.converter:t={},t=this._parseCookieString(i.cookie,!t.raw,t)[e],k(t)?g:s(n)?n(t):t},getSub:function(e,t,n,o){e=this.getSubs(e,o);return e===g||(f(t),k(e[t]))?g:s(n)?n(e[t]):e[t]},getSubs:function(e,t){c(e);t=this._parseCookieString(i.cookie,!1,t);return S(t[e])?this._parseCookieHash(t[e]):g},remove:function(e,t){return c(e),t=n.merge(t||{},{expires:new Date(0)}),this.set(e,"",t)},removeSub:function(e,t,n){var o,i;if(c(e),f(t),n=n||{},o=this.getSubs(e),r(o)&&o.hasOwnProperty(t)){if(delete o[t],n.removeIfEmpty){for(i in o)if(o.hasOwnProperty(i)&&!s(o[i])&&!k(o[i]))return this.setSubs(e,o,n);return this.remove(e,n)}return this.setSubs(e,o,n)}return""},set:function(e,t,n){c(e),k(t)&&a("Cookie.set(): Value cannot be undefined.");e=this._createCookieString(e,t,!(n=n||{}).raw,n);return i.cookie=e},setSub:function(e,t,n,o){c(e),f(t),k(n)&&a("Cookie.setSub(): Subcookie value cannot be undefined.");var i=this.getSubs(e);return(i=r(i)?i:{})[t]=n,this.setSubs(e,i,o)},setSubs:function(e,t,n){c(e),r(t)||a("Cookie.setSubs(): Cookie value must be an object.");e=this._createCookieString(e,this._createCookieHashString(t),!1,n);return i.cookie=e}}},"patched-v3.18.6",{requires:["yui-base"]});
function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly)symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable});keys.push.apply(keys,symbols)}return keys}
function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2)ownKeys(Object(source),true).forEach(function(key){_defineProperty(target,key,source[key])});else if(Object.getOwnPropertyDescriptors)Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));else ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}
function _defineProperty(obj,key,value){if(key in obj)Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});else obj[key]=value;return obj}
AUI.add("liferay-session",function(A){var Lang=A.Lang;var BUFFER_TIME=[];var CONFIG=A.config;var DOC=CONFIG.doc;var MAP_SESSION_STATE_EVENTS={active:"activated"};var SRC={};var SRC_EVENT_OBJ={src:SRC};var TOAST_ID="sessionToast";var URL_BASE=themeDisplay.getPathMain()+"/portal/";var SessionBase=A.Component.create({ATTRS:{autoExtend:{value:false},redirectOnExpire:{value:true},redirectUrl:{value:""},sessionLength:{getter:"_getLengthInMillis",value:0},sessionState:{value:"active"},sessionTimeoutOffset:{getter:"_getLengthInMillis",
value:0},timestamp:{getter:"_getTimestamp",setter:"_setTimestamp",value:0},warningLength:{getter:"_getLengthInMillis",setter:"_setWarningLength",value:0},warningTime:{getter:"_getWarningTime",value:0}},EXTENDS:A.Base,NAME:"liferaysession",prototype:{_afterSessionStateChange:function _afterSessionStateChange(event){var instance=this;var details=event.details;var newVal=event.newVal;var src=null;if("src"in event&&details.length)src=details[0];instance.fire(MAP_SESSION_STATE_EVENTS[newVal]||newVal,src)},
_defActivatedFn:function _defActivatedFn(event){var instance=this;instance.set("timestamp");if(event.src==SRC)Liferay.Util.fetch(URL_BASE+"extend_session").then(function(response){if(response.status===500)instance.expire()})},_defExpiredFn:function _defExpiredFn(event){var instance=this;A.clearInterval(instance._intervalId);instance.set("timestamp","expired");if(event.src===SRC)instance._expireSession()},_expireSession:function _expireSession(){var instance=this;Liferay.Util.fetch(URL_BASE+"expire_session").then(function(response){if(response.ok){Liferay.fire("sessionExpired");
if(instance.get("redirectOnExpire"))location.href=instance.get("redirectUrl")}else A.setTimeout(function(){instance._expireSession()},1E3)})},_getLengthInMillis:function _getLengthInMillis(value){return value*1E3},_getTimestamp:function _getTimestamp(){var instance=this;return A.Cookie.get(instance._cookieKey,instance._cookieOptions)||instance._initTimestamp},_getWarningTime:function _getWarningTime(){var instance=this;return instance.get("sessionLength")-instance.get("warningLength")},_initEvents:function _initEvents(){var instance=
this;instance.publish("activated",{defaultFn:A.bind("_defActivatedFn",instance)});instance.publish("expired",{defaultFn:A.bind("_defExpiredFn",instance)});instance.publish("warned");instance._eventHandlers=[instance.on("sessionStateChange",instance._onSessionStateChange),instance.after("sessionStateChange",instance._afterSessionStateChange),A.on("io:complete",function(transactionId,response,args){if(!args||args&&args.sessionExtend||!Lang.isBoolean(args.sessionExtend))instance.resetInterval()}),Liferay.once("screenLoad",
function(){instance.destroy()})]},_onSessionStateChange:function _onSessionStateChange(event){var instance=this;var newVal=event.newVal;var prevVal=event.prevVal;if(prevVal=="expired"&&prevVal!=newVal)event.preventDefault();else if(prevVal=="active"&&prevVal==newVal)instance._afterSessionStateChange(event)},_setTimestamp:function _setTimestamp(value){var instance=this;value=String(value||Date.now());instance._initTimestamp=value;if(navigator.cookieEnabled)A.Cookie.set(instance._cookieKey,value,instance._cookieOptions)},
_setWarningLength:function _setWarningLength(value){var instance=this;return Math.min(instance.get("sessionLength"),value)},_startTimer:function _startTimer(){var instance=this;var sessionLength=instance.get("sessionLength");var sessionTimeoutOffset=instance.get("sessionTimeoutOffset");var warningTime=instance.get("warningTime");var registered=instance._registered;var interval=1E3;instance._intervalId=A.setInterval(function(){var sessionState=instance.get("sessionState");var timeOffset;var timestamp=
instance.get("timestamp");var elapsed=sessionLength;if(Lang.toInt(timestamp)){timeOffset=Math.floor((Date.now()-timestamp)/1E3)*1E3;elapsed=timeOffset;if(instance._initTimestamp!==timestamp){instance.set("timestamp",timestamp);if(sessionState!="active")instance.set("sessionState","active",SRC_EVENT_OBJ)}}else timestamp="expired";var extend=instance.get("autoExtend");var expirationMoment=false;var warningMoment=false;var hasExpired=elapsed>=sessionLength;var hasExpiredTimeoutOffset=elapsed>=sessionLength-
sessionTimeoutOffset;var hasWarned=elapsed>=warningTime;if(hasExpiredTimeoutOffset||hasWarned){if(timestamp=="expired"){expirationMoment=true;extend=false;hasExpired=true;hasExpiredTimeoutOffset=true}if(hasExpiredTimeoutOffset&&sessionState!="expired")if(extend&&!hasExpired){expirationMoment=false;hasExpired=false;hasExpiredTimeoutOffset=false;hasWarned=false;warningMoment=false;instance.extend()}else{instance.expire();expirationMoment=true}else if(hasWarned&&!hasExpiredTimeoutOffset&&!extend&&sessionState!=
"warned"){instance.warn();warningMoment=true}}for(var i in registered)registered[i](elapsed,interval,hasWarned,hasExpired,hasExpiredTimeoutOffset,warningMoment,expirationMoment)},interval)},_stopTimer:function _stopTimer(){var instance=this;A.clearInterval(instance._intervalId)},destructor:function destructor(){var instance=this;(new A.EventHandle(instance._eventHandlers)).detach();instance._stopTimer()},expire:function expire(){var instance=this;instance.set("sessionState","expired",SRC_EVENT_OBJ)},
extend:function extend(){var instance=this;instance.set("sessionState","active",SRC_EVENT_OBJ)},initializer:function initializer(){var instance=this;instance._cookieKey="LFR_SESSION_STATE_"+themeDisplay.getRealUserId();instance._cookieOptions={path:"/",secure:A.UA.secure};instance._registered={};instance.set("timestamp");instance._initEvents();instance._startTimer()},registerInterval:function registerInterval(fn){var instance=this;var fnId;var registered=instance._registered;if(Lang.isFunction(fn)){fnId=
A.stamp(fn);registered[fnId]=fn}return fnId},resetInterval:function resetInterval(){var instance=this;instance._stopTimer();instance._startTimer()},unregisterInterval:function unregisterInterval(fnId){var instance=this;var registered=instance._registered;if(Object.prototype.hasOwnProperty.call(registered,fnId))delete registered[fnId];return fnId},warn:function warn(){var instance=this;instance.set("sessionState","warned",SRC_EVENT_OBJ)}}});SessionBase.SRC=SRC;var SessionDisplay=A.Component.create({ATTRS:{openToast:{validator:Lang.isFunction},
pageTitle:{value:DOC.title}},EXTENDS:A.Plugin.Base,NAME:"liferaysessiondisplay",NS:"display",prototype:{_afterDefActivatedFn:function _afterDefActivatedFn(){var instance=this;instance._uiSetActivated()},_afterDefExpiredFn:function _afterDefExpiredFn(){var instance=this;instance._host.unregisterInterval(instance._intervalId);instance._uiSetExpired()},_beforeHostWarned:function _beforeHostWarned(){var instance=this;var host=instance._host;var sessionLength=host.get("sessionLength");var timestamp=host.get("timestamp");
var warningLength=host.get("warningLength");var elapsed=sessionLength;if(Lang.toInt(timestamp))elapsed=Math.floor((Date.now()-timestamp)/1E3)*1E3;var remainingTime=sessionLength-elapsed;if(remainingTime>warningLength)remainingTime=warningLength;instance._getBanner();var counterTextNode=document.querySelector("#".concat(TOAST_ID," .countdown-timer"));instance._uiSetRemainingTime(remainingTime,counterTextNode);instance._intervalId=host.registerInterval(function(elapsed,interval,hasWarned,hasExpired,
warningMoment){if(!hasWarned)instance._uiSetActivated();else if(!hasExpired){if(warningMoment)if(remainingTime<=0)remainingTime=warningLength;elapsed=Math.floor((Date.now()-timestamp)/1E3)*1E3;remainingTime=sessionLength-elapsed;instance._uiSetRemainingTime(remainingTime,counterTextNode)}remainingTime-=interval})},_destroyBanner:function _destroyBanner(){var instance=this;var toast=document.getElementById(TOAST_ID);var toastRootElement=toast===null||toast===void 0?void 0:toast.parentElement;Liferay.destroyComponent(TOAST_ID);
if(toastRootElement)toastRootElement.remove();instance._banner=false},_formatNumber:function _formatNumber(value){return Lang.String.padNumber(Math.floor(value),2)},_formatTime:function _formatTime(time){var instance=this;time=Number(time);if(Lang.isNumber(time)&&time>0){time/=1E3;BUFFER_TIME[0]=instance._formatNumber(time/3600);time%=3600;BUFFER_TIME[1]=instance._formatNumber(time/60);time%=60;BUFFER_TIME[2]=instance._formatNumber(time);time=BUFFER_TIME.join(":")}else time=0;return time},_getBanner:function _getBanner(){var instance=
this;var banner=instance._banner;if(!banner){var openToast=instance.get("openToast");var toastDefaultConfig={onClick:function onClick(_ref){var event=_ref.event;if(event.target.classList.contains("alert-link"))instance._host.extend()},renderData:{componentId:TOAST_ID},toastProps:{autoClose:false,id:TOAST_ID,role:"alert"}};openToast(_objectSpread({message:instance._warningText,type:"warning"},toastDefaultConfig));var toastComponent=Liferay.component(TOAST_ID);banner=_objectSpread({open:function open(props){instance._destroyBanner();
openToast(_objectSpread(_objectSpread({},props),toastDefaultConfig))}},toastComponent);instance._banner=banner}return banner},_onHostSessionStateChange:function _onHostSessionStateChange(event){var instance=this;if(event.newVal=="warned")instance._beforeHostWarned(event)},_uiSetActivated:function _uiSetActivated(){var instance=this;DOC.title=instance.reset("pageTitle").get("pageTitle");instance._host.unregisterInterval(instance._intervalId);if(instance._banner)instance._destroyBanner()},_uiSetExpired:function _uiSetExpired(){var instance=
this;var banner=instance._getBanner();banner.open({message:instance._expiredText,title:"Danger",type:"danger"});DOC.title=instance.get("pageTitle")},_uiSetRemainingTime:function _uiSetRemainingTime(remainingTime,counterTextNode){var instance=this;remainingTime=instance._formatTime(remainingTime);if(!instance._alertClosed){var alert=counterTextNode.closest('div[role\x3d"alert"]');if(alert){alert.removeAttribute("role");instance._alert=alert}counterTextNode.innerHTML=remainingTime}DOC.title=Lang.sub("Session expires in {0}.",
[remainingTime])+" | "+instance.get("pageTitle")},destructor:function destructor(){var instance=this;if(instance._banner)instance._destroyBanner()},initializer:function initializer(){var instance=this;var host=instance.get("host");if(Liferay.Util.getTop()==CONFIG.win){instance._host=host;instance._toggleText={hide:"Hide",show:"Show"};instance._expiredText="Due to inactivity, your session has expired. Please save any data you may have entered before refreshing the page.";instance._warningText="Due to inactivity, your session will expire in {0}. To extend your session another {1} minute(s), please press the \x3cem\x3eExtend\x3c/em\x3e button. {2}";
instance._warningText=Lang.sub(instance._warningText,['\x3cspan class\x3d"countdown-timer"\x3e{0}\x3c/span\x3e',host.get("sessionLength")/6E4,'\x3ca class\x3d"alert-link" href\x3d"javascript:;"\x3e'+"Extend"+"\x3c/a\x3e"]);host.on("sessionStateChange",instance._onHostSessionStateChange,instance);instance.afterHostMethod("_defActivatedFn",instance._afterDefActivatedFn);instance.afterHostMethod("_defExpiredFn",instance._afterDefExpiredFn)}else host.unplug(instance)}}});Liferay.SessionBase=SessionBase;
Liferay.SessionDisplay=SessionDisplay},"",{requires:["aui-base","aui-component","aui-timer","cookie","plugin"]});
