(()=>{"use strict";const e="newspack-ras",t={reader:"reader",data:"data",activity:"activity",overlay:"overlay"},n=Object.values(t);function r(t){return n.includes(t)?`${e}-${t}`:""}function a(e,t){if(!(e=r(e)))throw new Error("Invalid event");window.dispatchEvent(new CustomEvent(e,{detail:t}))}window.newspack_reader_data=window.newspack_reader_data||{};const o={storePrefix:newspack_reader_data?.store_prefix||"np_reader_",storage:newspack_reader_data?.is_temporary?window.sessionStorage:window.localStorage,collections:{maxItems:1e3,maxAge:2592e6}},i=[];function s(e,t=!1){if(!e)throw new Error("Key is required.");const n=[o.storePrefix];return t&&n.push("_"),n.push(e),n.join("")}function c(e){const t=d("unsynced",!0)||[];t.includes(e)||(t.push(e),u("unsynced",t,!0))}function d(e,t=!1){if(!e)throw new Error("Key is required.");return(n=o.storage.getItem(s(e,t)))&&"string"==typeof n?JSON.parse(n):n;var n}function u(e,n,r=!1){if(!e)throw new Error("Key is required.");if(null==n)throw new Error("Value cannot be undefined or null.");if("_"===e[0])throw new Error("Key cannot start with an underscore.");var i;o.storage.setItem(s(e,r),(i=n,JSON.stringify(i))),r||a(t.data,{key:e,value:n})}function w(e){if(!e)return"";const t=`; ${document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):""}function p(e,t,n=365){const r=new Date;r.setTime(r.getTime()+24*n*60*60*1e3),document.cookie=`${e}=${t}; expires=${r.toUTCString()}; path=/`}function f(e=9){let t="";for(let n=0;n{if(!i.length||newspack_reader_data?.is_temporary)return;const e=i.shift();(function(e){if(!e)return Promise.reject("Key is required.");if(!newspack_reader_data.api_url||!newspack_reader_data.nonce)return Promise.reject("API not available.");const t=d(e),n={key:e};t&&(n.value=JSON.stringify(t));const r=new XMLHttpRequest;return r.open(n.value?"POST":"DELETE",newspack_reader_data.api_url,!0),r.setRequestHeader("Content-Type","application/json"),r.setRequestHeader("X-WP-Nonce",newspack_reader_data.nonce),r.send(JSON.stringify(n)),new Promise(((e,t)=>{r.onreadystatechange=()=>{if(4===r.readyState)return 200!==r.status?t(r):e(r)}}))})(e).then((()=>function(e){const t=d("unsynced",!0)||[];t.includes(e)&&(t.splice(t.indexOf(e),1),u("unsynced",t,!0))}(e))).catch((()=>c(e)))}),1e3);const l=[],h={get:function(){return l||[]},add:function(e=""){return e||(e=f()),l.push(e),a(t.overlay,{overlays:l}),e},remove:function(e){if(!e)return l;const n=l.indexOf(e);return n>-1&&l.splice(n,1),a(t.overlay,{overlays:l}),l}};window.newspack_ras_config=window.newspack_ras_config||{};const _=function(){const e=d("unsynced",!0)||[];for(const t of e)i.push(t);if(newspack_reader_data?.items&&!newspack_reader_data?.is_temporary){const t=Object.keys(newspack_reader_data.items);for(const n of t)e.includes(n)||u(n,JSON.parse(newspack_reader_data.items[n]))}return{get:e=>{if(!e)throw new Error("Key is required.");return d(e)},set:(e,t,n=!0)=>{u(e,t,!1),n&&(c(e),i.push(e))},delete:e=>{if(!e)throw new Error("Key is required.");o.storage.removeItem(s(e)),a(t.data,{key:e,value:void 0}),c(e),i.push(e)},add:(e,t)=>{if(!e)throw new Error("Key cannot be empty.");if(!t)throw new Error("Value cannot be empty.");let n=d(e)||[];if(!Array.isArray(n))throw new Error(`Store key '${e}' is not an array.`);if(o.collections.maxAge){const e=Date.now();n=n.filter((t=>!t.timestamp||e-t.timestampt.action===e)):t}function g(e){if(!e)return;const n=k();n.email=e,_.set("reader",n,!1),a(t.reader,n)}function v(e=!0){const n=_.get("reader")||{};if(!n.email)throw new Error("Reader email not set");n.authenticated=Boolean(e),_.set("reader",n,!1),a(t.reader,n)}function k(){return _.get("reader")||{}}const E=["pwd","link"];function A(){return w("np_otp_hash")}const S={store:_,overlays:h,on:function(e,t){if(!(e=r(e)))throw new Error("Invalid event");window.addEventListener(e,t)},off:function(e,t){if(!(e=r(e)))throw new Error("Invalid event");window.removeEventListener(e,t)},dispatchActivity:m,getActivities:y,getUniqueActivitiesBy:function(e,t){const n=y(e),r=[],a={};for(const e of n){const n="function"==typeof t?t(e):e.data[t];a[n]||(r.push(e),a[n]=!0)}return r},setReaderEmail:g,setAuthenticated:v,refreshAuthentication:function(){const e=w("np_auth_reader");e?(g(e),v(!0)):g(w("np_auth_intention"))},getReader:k,hasAuthLink:function(){const e=k(),t=w("np_auth_link");return!(!e?.email||!t)},getOTPHash:A,authenticateOTP:function(e){return new Promise(((t,n)=>{const r=A(),a=k()?.email;return r?a?e?void fetch("",{method:"POST",headers:{Accept:"application/json"},body:new URLSearchParams({action:newspack_ras_config.otp_auth_action,email:a,hash:r,code:e})}).then((e=>e.json())).then((({success:e,message:r,data:o})=>{const i={...o,email:a,authenticated:!!e,message:r};v(!!e),e?t(i):n(i)})):n({message:"Invalid code"}):n({message:"You must provide an email"}):n({message:"Code has expired",expired:!0})}))},setAuthStrategy:function(e){if(!E.includes(e))throw new Error("Invalid authentication strategy");return p("np_auth_strategy",e),e},getAuthStrategy:function(){return A()?"otp":w("np_auth_strategy")},getCaptchaV3Token:window.newspack_grecaptcha?window.newspack_grecaptcha?.getCaptchaV3Token:()=>new Promise((e=>e("")))};function I(...e){e.forEach((e=>{Array.isArray(e)&&"string"==typeof e[0]?m(...e):"function"==typeof e?e(S):console.warn("Invalid newspackRAS.push argument",e)}))}window.newspackRASInitialized||function(){const e=newspack_ras_config,n=e?.authenticated_email||w("np_auth_intention"),r=!!e?.authenticated_email,o=k(),i={email:n||o?.email,authenticated:r};var s;o?.email===i?.email&&o?.authenticated===i?.authenticated||_.set("reader",i,!1),a(t.reader,i),function(){const e=newspack_ras_config.cid_cookie;w(e)||p(e,f(12))}(),(s=S).on("activity",(({detail:{action:e,data:t,timestamp:n}})=>{if("article_view"!==e)return;const r=new Date(n);r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0);const a=6-r.getDay();r.setDate(r.getDate()+a);const o=r.getTime(),i=s.store.get("article_view_per_week")||{};i[o]||(i[o]={}),i[o][t.post_id]=!0,s.store.set("article_view_per_week",i),r.setMonth(r.getMonth()+1),r.setDate(1);const c=r.getTime(),d=s.store.get("article_view_per_month")||{};d[c]||(d[c]={}),d[c][t.post_id]=!0,s.store.set("article_view_per_month",d)})),function(){if(w("np_auth_reader"))return;const e=setInterval((()=>{const t=k(),n=w("np_auth_intention");if(n&&t.email!==n)g(n);else{const t=w("np_auth_reader");t&&(g(t),v(!0),clearInterval(e))}}),1e3)}(),function(){const e=document.querySelectorAll(".newspack-newsletters-subscribe,.newspack-subscribe-form,.mc4wp-form");e.length&&e.forEach((e=>{"FORM"!==e.tagName&&(e=e.querySelector("form")),e&&e.addEventListener("submit",(()=>{_.set("is_newsletter_subscriber",!0)}))}))}(),(newspack_reader_data?.reader_activity||[]).forEach((({action:e,data:t})=>m(e,t))),function(){const e=document.referrer?new URL(document.referrer).hostname:"";e&&e!==window.location.hostname&&_.set("referrer",e.replace("www.","").trim().toLowerCase())}(),window.newspackReaderActivation=S,window.newspackRAS=window.newspackRAS||[],window.newspackRAS.forEach((e=>I(e))),window.newspackRAS.push=I,window.newspackRASInitialized=!0}()})();