function fcn_validateCss(n){return(n.match(/{/g)||[]).length===(n.match(/}/g)||[]).length&&!n.includes("<")}function fcn_getSkins(){const n=FcnUtils.getCookie("fcnLoggedIn");if(!n)return null;const t={data:{},active:null,fingerprint:n},i=FcnUtils.parseJSON(localStorage.getItem("fcnSkins"))??t;return i?.fingerprint&&n===i.fingerprint?(("object"!=typeof i.data||Array.isArray(i.data))&&(i.data={}),i):t}function fcn_setSkins(n){"object"!=typeof n||null===n||"object"!=typeof n.data||Array.isArray(n.data)?fcn_showNotification(fcn_skinTranslations.invalidJson,3,"warning"):n?.fingerprint&&FcnUtils.getCookie("fcnLoggedIn")===n.fingerprint?localStorage.setItem("fcnSkins",JSON.stringify(n)):fcn_showNotification(fcn_skinTranslations.wrongFingerprint,3,"warning")}function fcn_getSkinInfo(n){const t=n.match(/Name:\s*(.+)/),i=n.match(/Author:\s*(.+)/),s=n.match(/Version:\s*(.+)/);return{name:t?FcnUtils.sanitizeHTML(t[1].trim()):null,author:i?FcnUtils.sanitizeHTML(i[1].trim()):null,version:s?FcnUtils.sanitizeHTML(s[1].trim()):null}}function fcn_toggleSkin(n){const t=n.closest('[data-css-skin-finder="skin-item"]'),i=fcn_getSkins();t.classList.contains("active")?(_$$('[data-css-skin-finder="skin-item"]').forEach((n=>n.classList.remove("active"))),i.active=null):(_$$('[data-css-skin-finder="skin-item"]').forEach((n=>n.classList.remove("active"))),t.classList.add("active"),i.active=n.dataset.skinId),fcn_setSkins(i),fcn_applySkin()}function fcn_deleteSkin(n){const t=n.closest('[data-css-skin-finder="skin-item"]'),i=fcn_getSkins();t.classList.contains("active")&&(i.active=null),delete i.data[n.dataset.skinId],_$('[data-css-skin-target="file"]').value="",fcn_setSkins(i),fcn_renderSkinList(),fcn_applySkin()}function fcn_applySkin(){const n=FcnUtils.getCookie("fcnLoggedIn");if(!n||_$("body.wp-admin"))return;const t=fcn_getSkins();if(_$$$("fictioneer-active-custom-skin")?.remove(),t?.fingerprint===n&&t?.data?.[t.active]?.css){const n=document.createElement("style");n.textContent=t.data[t.active].css,n.id="fictioneer-active-custom-skin",_$("head").appendChild(n)}}function fcn_renderSkinList(){const n=_$('[data-css-skin-target="list"]'),t=FcnUtils.getCookie("fcnLoggedIn");if(!t||!n)return;const i=fcn_getSkins();n.innerHTML="",i?.fingerprint===t?(i?.data&&Object.keys(i.data).length>0&&(Object.entries(i.data).forEach((([t,s])=>{const e=_$('[data-css-skin-target="template"]').content.cloneNode(!0);i.active===t&&e.querySelector('[data-css-skin-finder="skin-item"]').classList.add("active"),e.querySelector('[data-action="click->css-skin#toggle"]').dataset.skinId=t,e.querySelector('[data-action="click->css-skin#delete"]').dataset.skinId=t,e.querySelector('[data-css-skin-finder="name"]').innerText=s.name,e.querySelector('[data-css-skin-finder="version"]').innerText=s.version,e.querySelector('[data-css-skin-finder="author"]').innerText=s.author,n.appendChild(e)})),_$$('[data-action="click->css-skin#toggle"]').forEach((n=>{n.addEventListener("click",(n=>fcn_toggleSkin(n.currentTarget)))})),_$$('[data-action="click->css-skin#delete"]').forEach((n=>{n.addEventListener("click",(n=>fcn_deleteSkin(n.currentTarget)))}))),Object.keys(i.data).length>2?_$('[data-css-skin-target="form"]').style.display="none":_$('[data-css-skin-target="form"]').style.display=""):_$('[data-css-skin-target="form"]').style.display=""}function fcn_uploadSkins(n){if(!FcnUtils.loggedIn()||n.classList.contains("disabled"))return;const t=fcn_getSkins();_$('[data-css-skin-target="action-status-message"]').classList.add("invisible"),FcnUtils.remoteAction("fictioneer_ajax_save_skins",{element:n,payload:{skins:JSON.stringify(t)},callback:n=>{n.success&&(fcn_showNotification(n.data.message,3,"success"),fcn_toggleSkinNotice(_$('[data-css-skin-target="action-status-message"]')))},finalCallback:()=>{_$('[data-css-skin-target="file"]').value=""}})}function fcn_downloadSkins(n){FcnUtils.loggedIn()&&!n.classList.contains("disabled")&&(_$('[data-css-skin-target="action-status-message"]').classList.add("invisible"),FcnUtils.remoteAction("fictioneer_ajax_get_skins",{element:n,callback:n=>{n.success&&(fcn_showNotification(n.data.message,3,"success"),fcn_toggleSkinNotice(_$('[data-css-skin-target="action-status-message"]')),fcn_setSkins(FcnUtils.parseJSON(n.data.skins)),fcn_renderSkinList(),fcn_applySkin())},finalCallback:()=>{_$('[data-css-skin-target="file"]').value=""}}))}function fcn_toggleSkinNotice(n){n.classList.remove("invisible"),setTimeout((()=>{n.classList.add("invisible")}),3e3)}fcn_renderSkinList(),_$('[data-css-skin-target="file"]')?.addEventListener("input",(n=>{n.preventDefault();const t=n.currentTarget.files[0],i=fcn_getSkins(),s=FcnUtils.getCookie("fcnLoggedIn");if(Object.keys(i.data).length>2)return void fcn_showNotification(fcn_skinTranslations.tooManySkins,3,"warning");if(i?.fingerprint!==s)return void fcn_showNotification(fcn_skinTranslations.wrongFingerprint,3,"warning");if(!t)return;if(t.size>2e5)return void fcn_showNotification(fcn_skinTranslations.fileTooLarge,3,"warning");if("text/css"!==t.type)return void fcn_showNotification(fcn_skinTranslations.wrongFileType,3,"warning");const e=new FileReader;e.onload=n=>{const t=n.target.result,i=fcn_getSkinInfo(t),s=fcn_getSkins();if(!fcn_validateCss(t))return void fcn_showNotification(fcn_skinTranslations.invalidCss,5,"warning");if(!i.name)return void fcn_showNotification(fcn_skinTranslations.missingMetaData,3,"warning");const e=btoa(i.name);s.data[e]={name:i.name,version:i.version,author:i.author,css:t},fcn_setSkins(s),fcn_renderSkinList()},e.onerror=()=>{console.error(e.error),fcn_showNotification(e.error,3,"warning")},e.readAsText(t)})),_$('[data-action="click->css-skin#upload"]')?.addEventListener("click",(n=>{fcn_uploadSkins(n.currentTarget)})),_$('[data-action="click->css-skin#download"]')?.addEventListener("click",(n=>{fcn_downloadSkins(n.currentTarget)}));