fictioneer-email-notifications/js/fcnen-frontend.min.js

1 line
No EOL
8.7 KiB
JavaScript

const fcnen_modal=document.getElementById("fcnen-subscription-modal"),fcnen_targetContainer=fcnen_modal?.querySelector('[data-target="fcnen-modal-loader"]'),fcnen_modalLoader=fcnen_modal?.querySelector('[data-target="fcnen-modal-loader"]').cloneNode(!0),fcnen_url_params=Object.fromEntries(new URLSearchParams(window.location.search).entries());function fcnen_shortcodeInputToggle(e){fcnen_getModalForm("new"),e.blur(),fcnen_modal.showModal();const n=document.getElementById("fcnen-modal-submit-email");n?setTimeout((()=>{n.focus()}),50):document.addEventListener("fcnenModalLoaded",(()=>{setTimeout((()=>{document.getElementById("fcnen-modal-submit-email").focus()}),50)}),{once:!0})}function fcnen_addEventListeners(){document.querySelector('[data-click-action="auth-mode"]')?.addEventListener("click",(()=>{fcnen_modal.querySelector('[data-target="auth-mode"]').hidden=!1,fcnen_modal.querySelector('[data-target="submit-mode"]').hidden=!0})),document.querySelector('[data-click-action="submit-mode"]')?.addEventListener("click",(()=>{fcnen_modal.querySelector('[data-target="auth-mode"]').hidden=!0,fcnen_modal.querySelector('[data-target="submit-mode"]').hidden=!1})),document.getElementById("fcnen-modal-submit-button")?.addEventListener("click",(e=>{fcnen_subscribe_or_update(e.currentTarget)})),document.getElementById("fcnen-modal-auth-button")?.addEventListener("click",(()=>{fcnen_getModalForm("edit")})),document.querySelector('[data-click-action="fcnen-delete-subscription"]')?.addEventListener("click",(()=>{fcnen_unsubscribe()})),document.getElementById("fcnen-modal-checkbox-scope-everything")?.addEventListener("change",(e=>{fcnen_modal.querySelector("form").classList.toggle("_everything",e.currentTarget.checked)})),fcnen_modal.querySelector(".fcnen-dialog-modal__advanced")&&(fcnen_initializeSearch(),fcnen_search(),fcnen_modal.querySelector('[data-input-target="fcnen-search"]').value="")}function fcnen_toggleInProgress(e=!0){fcnen_targetContainer.classList.toggle("ajax-in-progress",e)}function fcnen_getPreparedFormData(e){let n=new FormData(e),t={};for(let[e,a]of n.entries()){let n=e.replace(/\[\]/g,"");e.endsWith("[]")&&n in t?t[n].push(a):t[n]=[a]}for(let e in t)Array.isArray(t[e])&&(t[e]=t[e].join(","));return t}function fcnen_getModalForm(e="new",n={}){if("new"==e&&document.getElementById("fcnen-subscription-form"))return;const t=fcnen_url_params["fcnen-email"]??document.getElementById("fcnen-modal-auth-email")?.value??0,a=fcnen_url_params["fcnen-code"]??document.getElementById("fcnen-modal-auth-code")?.value??0;if("edit"==e&&!t&&!a)return;"edit"==e&&fcnen_toggleInProgress();const c={action:"fictioneer_ajax_fcnen_get_form_content","auth-email":t,"auth-code":a};n.id&&(c.story=n.id??0),fcn_ajaxPost(c).then((e=>{if(e.success){fcnen_targetContainer.innerHTML=e.data.html;const n=new Event("fcnenModalLoaded");document.dispatchEvent(n)}})).then((()=>{fcnen_toggleInProgress(!1),fcnen_addEventListeners()}))}function fcnen_subscribe_or_update(e){const n=e.closest("form"),t=document.getElementById("fcnen-modal-submit-email")?.value,a=fcnen_getPreparedFormData(n);if(!t)return void n.reportValidity();fcnen_toggleInProgress();let c={action:"fictioneer_ajax_fcnen_subscribe_or_update",email:t,nonce:fcnen_modal.querySelector('input[name="nonce"]')?.value??""};c={...c,...a},fcn_ajaxPost(c).then((e=>{fcnen_targetContainer.innerHTML=`<div class="fcnen-dialog-modal__notice"><p>${e.data.notice}</p></div>`,fcnen_toggleInProgress(!1)}))}function fcnen_unsubscribe(){fcnen_toggleInProgress();const e={action:"fictioneer_ajax_fcnen_unsubscribe",email:document.getElementById("fcnen-modal-submit-email")?.value??"",code:document.getElementById("fcnen-modal-submit-code")?.value??0,nonce:fcnen_modal.querySelector('input[name="nonce"]')?.value??""};fcn_ajaxPost(e).then((e=>{fcnen_targetContainer.innerHTML=`<div class="fcnen-dialog-modal__notice"><span>${e.data.notice}</span></div>`,fcnen_toggleInProgress(!1)}))}var fcncn_searchTimer;function fcnen_initializeSearch(){document.querySelector('[data-input-target="fcnen-search"]')?.addEventListener("input",(()=>{clearTimeout(fcncn_searchTimer),fcncn_searchTimer=setTimeout((()=>{fcnen_search()}),800)})),document.getElementById("fcnen-modal-search-select")?.addEventListener("change",(()=>{fcnen_search()})),fcnen_modal.querySelector('[data-target="fcnen-sources"]').addEventListener("click",(e=>{const n=e.target.closest('[data-click-action="fcnen-add"]');n&&!n.classList.contains("_disabled")&&fcnen_addSelection(n)})),fcnen_modal.querySelector('[data-target="fcnen-selection"]').addEventListener("click",(e=>{const n=e.target.closest('[data-click-action="fcnen-remove"]');n&&fcnen_removeSelection(n.closest("li"))}))}function fcnen_search(e=1,n=!1){const t=fcnen_modal.querySelector('[data-input-target="fcnen-search"]'),a=t.closest(".fcnen-dialog-modal__advanced").querySelector('[data-target="fcnen-sources"]'),c=document.getElementById("fcnen-modal-search-select");a.innerHTML="",a.appendChild(fcnen_modal.querySelector('[data-target="fcnen-loader-item"]').content.cloneNode(!0)),t.value>200&&(t.value=t.value.slice(0,200));fcnen_searchContent({action:"fictioneer_ajax_fcnen_search_content",search:t.value,filter:c?.value??t.dataset.defaultFilter,page:e,nonce:fcnen_modal.querySelector('input[name="nonce"]')?.value??""},n)}function fcnen_searchContent(e,n){const t=fcnen_modal.querySelector('[data-target="fcnen-sources"]');let a=null;fcn_ajaxPost(e).then((e=>(fcnen_modal.querySelector('[data-target="fcnen-observer-item"]')?.remove(),e))).then((e=>{e.success?(n?t.innerHTML+=e.data.html:t.innerHTML=e.data.html,fcnen_disableSelected(),fcnen_observe()):a=e.data.error})).catch((e=>{a=e})).then((()=>{if(a){const e=fcnen_modal.querySelector('[data-target="fcnen-error-item"]').content.cloneNode(!0);t.innerHTML="",e.querySelector(".fcnen-error-message").textContent=a,t.appendChild(e)}}))}function fcnen_observe(){const e=fcnen_modal.querySelector('[data-target="fcnen-sources"]'),n=new IntersectionObserver(((e,n)=>{e.forEach((e=>{if(e.isIntersecting){let t=fcnen_modal.querySelector('[data-input-target="fcnen-search"]');t.value>200&&(t.value=t.value.slice(0,200));const a={action:"fictioneer_ajax_fcnen_search_content",search:t.value,filter:document.getElementById("fcnen-modal-search-select")?.value??t.dataset.defaultFilter,page:e.target.dataset.page,nonce:fcnen_modal.querySelector('input[name="nonce"]')?.value??""};n.unobserve(e.target),fcnen_searchContent(a,!0)}}))}),{root:e,rootMargin:"0px",threshold:.5});fcnen_modal.querySelectorAll('[data-target="fcnen-observer-item"]').forEach((e=>{n.observe(e)}))}function fcnen_disableSelected(){const e=fcnen_modal.querySelector('[data-target="fcnen-selection"]');fcnen_modal.querySelectorAll('[data-target="fcnen-sources"] > li').forEach((n=>{n.classList.toggle("_disabled",e.querySelector(`[data-compare="${n.dataset.compare}"]`))}))}function fcnen_addSelection(e){const n=fcnen_modal.querySelector('[data-target="fcnen-selection"]'),t=n.dataset.max??10;if(t>0&&n.querySelectorAll(`[data-type="${e.dataset.type}"]`).length>=t)return e.dataset.tooMany=fcnen_modal.querySelector("[data-too-many]").dataset.tooMany,e.classList.add("flash-too-many"),void setTimeout((()=>{e.classList.remove("flash-too-many")}),700);if(n.querySelector(`[data-compare="${e.dataset.compare}"]`))return;const a=fcnen_modal.querySelector('[data-target="fcnen-selection-item"]').content.cloneNode(!0),c=a.querySelector("li"),o=c.querySelector('input[type="hidden"]');c.setAttribute("data-id",e.dataset.id),c.setAttribute("data-compare",e.dataset.compare),c.setAttribute("data-type",e.dataset.type),c.querySelector(".fcnen-item-label").innerHTML=e.querySelector(".fcnen-item-label").innerHTML,c.querySelector(".fcnen-item-name").innerHTML=e.querySelector(".fcnen-item-name").innerHTML,o.value=e.dataset.id,o.name=e.dataset.name,n.appendChild(a),e.classList.add("_disabled")}function fcnen_removeSelection(e){e.remove(),fcnen_disableSelected()}fcnen_modal&&(document.querySelectorAll('[data-click-action*="fcnen-load-modal-form"]').forEach((e=>{e.addEventListener("click",(e=>{fcnen_getModalForm("new",{id:e.currentTarget.dataset.storyId})}))})),fcnen_url_params["fcnen-email"]&&fcnen_url_params["fcnen-code"]&&document.addEventListener("DOMContentLoaded",(()=>{setTimeout((()=>{fcnen_modal.showModal(),fcnen_getModalForm()}),100)})),document.querySelectorAll('[data-click-action*="fcnen-input-modal-toggle"]').forEach((e=>{e.addEventListener("click",(e=>fcnen_shortcodeInputToggle(e.currentTarget)))})),document.querySelectorAll('.button-follow-story, [data-click="card-toggle-follow"]').forEach((e=>{e.addEventListener("click",(()=>{fcnen_targetContainer.innerHTML=fcnen_modalLoader.innerHTML}))}))),history.replaceState&&history.replaceState(null,"",location.pathname+location.search.replace(/[?&](fcnen-email|fcnen-code|fcnen-action|fcnen|)=[^&]+/g,"").replace(/^[?&]/,"?")+location.hash);