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.7",{requires:["yui-base"]});
function ownKeys(c,e){var f=Object.keys(c);if(Object.getOwnPropertySymbols){var k=Object.getOwnPropertySymbols(c);e&&(k=k.filter(function(p){return Object.getOwnPropertyDescriptor(c,p).enumerable}));f.push.apply(f,k)}return f}
function _objectSpread(c){for(var e=1;e<arguments.length;e++){var f=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(f),!0).forEach(function(k){_defineProperty(c,k,f[k])}):Object.getOwnPropertyDescriptors?Object.defineProperties(c,Object.getOwnPropertyDescriptors(f)):ownKeys(Object(f)).forEach(function(k){Object.defineProperty(c,k,Object.getOwnPropertyDescriptor(f,k))})}return c}
function _defineProperty(c,e,f){e in c?Object.defineProperty(c,e,{value:f,enumerable:!0,configurable:!0,writable:!0}):c[e]=f;return c}
AUI.add("liferay-session",function(c){var e=c.Lang,f=[],k=c.config,p=k.doc,B={active:"activated"},w={},x={src:w},z=themeDisplay.getPathMain()+"/portal/",A=c.Component.create({ATTRS:{autoExtend:{value:!1},redirectOnExpire:{value:!0},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:c.Base,NAME:"liferaysession",prototype:{_afterSessionStateChange:function(a){var b=a.details,d=a.newVal,g=null;"src"in a&&b.length&&(g=b[0]);this.fire(B[d]||d,g)},_defActivatedFn:function(a){var b=this;b.set("timestamp");a.src==w&&Liferay.Util.fetch(z+"extend_session").then(function(d){500===d.status&&b.expire()})},_defExpiredFn:function(a){c.clearInterval(this._intervalId);this.set("timestamp","expired");
a.src===w&&this._expireSession()},_expireSession:function(){var a=this;Liferay.Util.fetch(z+"expire_session").then(function(b){b.ok?(Liferay.fire("sessionExpired"),a.get("redirectOnExpire")&&(location.href=a.get("redirectUrl"))):c.setTimeout(function(){a._expireSession()},1E3)})},_getLengthInMillis:function(a){return 1E3*a},_getTimestamp:function(){return c.Cookie.get(this._cookieKey,this._cookieOptions)||this._initTimestamp},_getWarningTime:function(){return this.get("sessionLength")-this.get("warningLength")},
_initEvents:function(){var a=this;a.publish("activated",{defaultFn:c.bind("_defActivatedFn",a)});a.publish("expired",{defaultFn:c.bind("_defExpiredFn",a)});a.publish("warned");a._eventHandlers=[a.on("sessionStateChange",a._onSessionStateChange),a.after("sessionStateChange",a._afterSessionStateChange),c.on("io:complete",function(b,d,g){(!g||g&&g.sessionExtend||!e.isBoolean(g.sessionExtend))&&a.resetInterval()}),Liferay.once("screenLoad",function(){a.destroy()})]},_onSessionStateChange:function(a){var b=
a.newVal,d=a.prevVal;"expired"==d&&d!=b?a.preventDefault():"active"==d&&d==b&&this._afterSessionStateChange(a)},_setTimestamp:function(a){this._initTimestamp=a=String(a||Date.now());navigator.cookieEnabled&&c.Cookie.set(this._cookieKey,a,this._cookieOptions)},_setWarningLength:function(a){return Math.min(this.get("sessionLength"),a)},_startTimer:function(){var a=this,b=a.get("sessionLength"),d=a.get("sessionTimeoutOffset"),g=a.get("warningTime"),l=a._registered;a._intervalId=c.setInterval(function(){var q=
a.get("sessionState"),h=a.get("timestamp");var m=b;e.toInt(h)?(m=1E3*Math.floor((Date.now()-h)/1E3),a._initTimestamp!==h&&(a.set("timestamp",h),"active"!=q&&a.set("sessionState","active",x))):h="expired";var r=a.get("autoExtend"),t=!1,v=!1,u=m>=b,n=m>=b-d,y=m>=g;if(n||y)"expired"==h&&(t=!0,r=!1,n=u=!0),n&&"expired"!=q?r&&!u?(v=y=n=u=t=!1,a.extend()):(a.expire(),t=!0):!y||n||r||"warned"==q||(a.warn(),v=!0);for(var C in l)l[C](m,1E3,y,u,n,v,t)},1E3)},_stopTimer:function(){c.clearInterval(this._intervalId)},
destructor:function(){(new c.EventHandle(this._eventHandlers)).detach();this._stopTimer()},expire:function(){this.set("sessionState","expired",x)},extend:function(){this.set("sessionState","active",x)},initializer:function(){this._cookieKey="LFR_SESSION_STATE_"+themeDisplay.getRealUserId();this._cookieOptions={path:"/",secure:c.UA.secure};this._registered={};this.set("timestamp");this._initEvents();this._startTimer()},registerInterval:function(a){var b=this._registered;if(e.isFunction(a)){var d=c.stamp(a);
b[d]=a}return d},resetInterval:function(){this._stopTimer();this._startTimer()},unregisterInterval:function(a){var b=this._registered;Object.prototype.hasOwnProperty.call(b,a)&&delete b[a];return a},warn:function(){this.set("sessionState","warned",x)}}});A.SRC=w;var D=c.Component.create({ATTRS:{openToast:{validator:e.isFunction},pageTitle:{value:p.title}},EXTENDS:c.Plugin.Base,NAME:"liferaysessiondisplay",NS:"display",prototype:{_afterDefActivatedFn:function(){this._uiSetActivated()},_afterDefExpiredFn:function(){this._host.unregisterInterval(this._intervalId);
this._uiSetExpired()},_beforeHostWarned:function(){var a=this,b=a._host,d=b.get("sessionLength"),g=b.get("timestamp"),l=b.get("warningLength"),q=d;e.toInt(g)&&(q=1E3*Math.floor((Date.now()-g)/1E3));var h=d-q;h>l&&(h=l);a._getBanner();var m=document.querySelector("#".concat("sessionToast"," .countdown-timer"));a._uiSetRemainingTime(h,m);a._intervalId=b.registerInterval(function(r,t,v,u,n){v?u||(n&&0>=h&&(h=l),r=1E3*Math.floor((Date.now()-g)/1E3),h=d-r,a._uiSetRemainingTime(h,m)):a._uiSetActivated();
h-=t})},_destroyBanner:function(){var a=document.getElementById("sessionToast");a=null===a||void 0===a?void 0:a.parentElement;Liferay.destroyComponent("sessionToast");a&&a.remove();this._banner=!1},_formatNumber:function(a){return e.String.padNumber(Math.floor(a),2)},_formatTime:function(a){a=Number(a);e.isNumber(a)&&0<a?(a/=1E3,f[0]=this._formatNumber(a/3600),a%=3600,f[1]=this._formatNumber(a/60),f[2]=this._formatNumber(a%60),a=f.join(":")):a=0;return a},_getBanner:function(){var a=this,b=a._banner;
if(!b){var d=a.get("openToast"),g={onClick:function(l){l.event.target.classList.contains("alert-link")&&a._host.extend()},renderData:{componentId:"sessionToast"},toastProps:{autoClose:!1,id:"sessionToast",role:"alert"}};d(_objectSpread({message:a._warningText,type:"warning"},g));b=Liferay.component("sessionToast");b=_objectSpread({open:function(l){a._destroyBanner();d(_objectSpread(_objectSpread({},l),g))}},b);a._banner=b}return b},_onHostSessionStateChange:function(a){"warned"==a.newVal&&this._beforeHostWarned(a)},
_uiSetActivated:function(){p.title=this.reset("pageTitle").get("pageTitle");this._host.unregisterInterval(this._intervalId);this._banner&&this._destroyBanner()},_uiSetExpired:function(){this._getBanner().open({message:this._expiredText,title:"Danger",type:"danger"});p.title=this.get("pageTitle")},_uiSetRemainingTime:function(a,b){a=this._formatTime(a);if(!this._alertClosed){var d=b.closest('div[role\x3d"alert"]');d&&(d.removeAttribute("role"),this._alert=d);b.innerHTML=a}p.title=e.sub("Session expires in {0}.",
[a])+" | "+this.get("pageTitle")},destructor:function(){this._banner&&this._destroyBanner()},initializer:function(){var a=this.get("host");Liferay.Util.getTop()==k.win?(this._host=a,this._toggleText={hide:"Hide",show:"Show"},this._expiredText="Due to inactivity, your session has expired. Please save any data you may have entered before refreshing the page.",this._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}",
this._warningText=e.sub(this._warningText,['\x3cspan class\x3d"countdown-timer"\x3e{0}\x3c/span\x3e',a.get("sessionLength")/6E4,'\x3ca class\x3d"alert-link" href\x3d"javascript:;"\x3eExtend\x3c/a\x3e']),a.on("sessionStateChange",this._onHostSessionStateChange,this),this.afterHostMethod("_defActivatedFn",this._afterDefActivatedFn),this.afterHostMethod("_defExpiredFn",this._afterDefExpiredFn)):a.unplug(this)}}});Liferay.SessionBase=A;Liferay.SessionDisplay=D},"",{requires:["aui-base","aui-component",
"aui-timer","cookie","plugin"]});
