ngx-xtroedge-cms 1.3.4 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var XtroedgeCMSLib=(()=>{var x=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var k=(g,t)=>{for(var e in t)x(g,e,{get:t[e],enumerable:!0})},I=(g,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of L(t))!C.call(g,s)&&s!==e&&x(g,s,{get:()=>t[s],enumerable:!(i=M(t,s))||i.enumerable});return g};var P=g=>I(x({},"__esModule",{value:!0}),g);var O={};k(O,{XtroedgeCMS:()=>v});var w=`
1
+ "use strict";var XtroedgeCMSLib=(()=>{var x=Object.defineProperty;var L=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var k=(g,t)=>{for(var e in t)x(g,e,{get:t[e],enumerable:!0})},I=(g,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of M(t))!C.call(g,s)&&s!==e&&x(g,s,{get:()=>t[s],enumerable:!(i=L(t,s))||i.enumerable});return g};var P=g=>I(x({},"__esModule",{value:!0}),g);var O={};k(O,{XtroedgeCMS:()=>v});var w=`
2
2
  /* ===== XTROEDGE CMS ===== */
3
3
 
4
4
  /* LOADER */
@@ -320,4 +320,4 @@
320
320
  <button class="lcms-login-btn" id="lcms-login-btn">Sign In</button>
321
321
  <div class="lcms-login-error" id="lcms-login-error"></div>
322
322
  </div>
323
- `,document.body.appendChild(t),this.loginModalEl=t;let e=t.querySelector("#lcms-login-btn"),i=t.querySelector("#lcms-login-email"),s=t.querySelector("#lcms-login-password"),n=()=>this.attemptLogin(i.value.trim(),s.value);e.addEventListener("click",n),s.addEventListener("keydown",a=>{a.key==="Enter"&&n()}),setTimeout(()=>i.focus(),50)}hideLoginModal(){this.loginModalEl?.remove(),this.loginModalEl=null}async attemptLogin(t,e){let i=document.getElementById("lcms-login-btn"),s=document.getElementById("lcms-login-error");if(!t||!e){s.textContent="Please enter your username and password.",s.classList.add("visible");return}i.disabled=!0,i.textContent="Signing in...",s.classList.remove("visible");try{let n=this.config.loginUrl||`${this.config.apiBase}/auth/login`,a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:t,password:e})});if(!a.ok)throw new Error(`HTTP ${a.status}`);let o=await a.json(),r=o?.token||o?.authToken||o?.auth_token||o?.data?.token;if(!r)throw new Error("No token in response");localStorage.setItem("builder_token",r),this.hideLoginModal(),this.editMode=!0,this.pendingEditMode=!1,sessionStorage.setItem("builder_edit_mode","true"),this.applyEditMode(!0),this.updateUI(),this.loadPageContent("draft")}catch{i.disabled=!1,i.textContent="Sign In",s.textContent="Invalid credentials. Please try again.",s.classList.add("visible")}}resolveSiteIdentifier(){let t=window.location.hostname;if(t&&t!=="localhost"&&t!=="127.0.0.1"&&!t.startsWith("192.168."))return t;let e=localStorage.getItem("xtroedge_site_id");return e||(e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let s=Math.random()*16|0;return(i==="x"?s:s&3|8).toString(16)}),localStorage.setItem("xtroedge_site_id",e)),e}hexToRgb(t){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?`${parseInt(e[1],16)},${parseInt(e[2],16)},${parseInt(e[3],16)}`:"0,200,83"}getDarkerColor(t){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);if(!e)return"#2E7D32";let i=Math.max(0,Math.floor(parseInt(e[1],16)*.6)),s=Math.max(0,Math.floor(parseInt(e[2],16)*.6)),n=Math.max(0,Math.floor(parseInt(e[3],16)*.6));return`#${i.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}`}applyThemeColor(t){if(this.highlightColor=t,document.documentElement.style.setProperty("--lcms-primary",t),document.documentElement.style.setProperty("--lcms-primary-rgb",this.hexToRgb(t)),document.documentElement.style.setProperty("--lcms-primary-dark",this.getDarkerColor(t)),this.editMode){for(let[i]of this.managedElements)i.style.borderBottom=`2px dashed ${t}`;for(let[i]of this.managedImages)i.style.outline=`2px dashed ${t}`}this.panelEl?.querySelectorAll(".lcms-theme-swatch")?.forEach(i=>{i.classList.toggle("active",i.dataset.color===t)}),localStorage.setItem("xtroedge_theme_color",t)}static create(t){let e=new g(t);return e.init(),e}static autoInit(){if(window.__xtroedge_cms_instance__)return;let t=window.__XTROEDGE_CMS_CONFIG__||{},e=g.create(t);window.__xtroedge_cms_instance__=e}};function T(){v.autoInit()}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",T):T());return P(O);})();
323
+ `,document.body.appendChild(t),this.loginModalEl=t;let e=t.querySelector("#lcms-login-btn"),i=t.querySelector("#lcms-login-email"),s=t.querySelector("#lcms-login-password"),n=()=>this.attemptLogin(i.value.trim(),s.value);e.addEventListener("click",n),s.addEventListener("keydown",a=>{a.key==="Enter"&&n()}),setTimeout(()=>i.focus(),50)}hideLoginModal(){this.loginModalEl?.remove(),this.loginModalEl=null}async attemptLogin(t,e){let i=document.getElementById("lcms-login-btn"),s=document.getElementById("lcms-login-error");if(!t||!e){s.textContent="Please enter your username and password.",s.classList.add("visible");return}i.disabled=!0,i.textContent="Signing in...",s.classList.remove("visible");try{let n=this.config.loginUrl||`${this.config.apiBase}/auth/login`,a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:t,password:e})}),o=null;try{o=await a.json()}catch{}if(!a.ok){let d=o?.message||o?.error||null;throw new Error(d||`HTTP ${a.status}`)}let r=o?.token||o?.authToken||o?.auth_token||o?.data?.token;if(!r)throw new Error("Login successful but no token returned.");localStorage.setItem("builder_token",r),this.hideLoginModal(),this.editMode=!0,this.pendingEditMode=!1,sessionStorage.setItem("builder_edit_mode","true"),this.applyEditMode(!0),this.updateUI(),this.loadPageContent("draft")}catch(n){i.disabled=!1,i.textContent="Sign In",s.textContent=n?.message||"Login failed. Please try again.",s.classList.add("visible")}}resolveSiteIdentifier(){let t=window.location.hostname;if(t&&t!=="localhost"&&t!=="127.0.0.1"&&!t.startsWith("192.168."))return t;let e=localStorage.getItem("xtroedge_site_id");return e||(e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let s=Math.random()*16|0;return(i==="x"?s:s&3|8).toString(16)}),localStorage.setItem("xtroedge_site_id",e)),e}hexToRgb(t){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?`${parseInt(e[1],16)},${parseInt(e[2],16)},${parseInt(e[3],16)}`:"0,200,83"}getDarkerColor(t){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);if(!e)return"#2E7D32";let i=Math.max(0,Math.floor(parseInt(e[1],16)*.6)),s=Math.max(0,Math.floor(parseInt(e[2],16)*.6)),n=Math.max(0,Math.floor(parseInt(e[3],16)*.6));return`#${i.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}`}applyThemeColor(t){if(this.highlightColor=t,document.documentElement.style.setProperty("--lcms-primary",t),document.documentElement.style.setProperty("--lcms-primary-rgb",this.hexToRgb(t)),document.documentElement.style.setProperty("--lcms-primary-dark",this.getDarkerColor(t)),this.editMode){for(let[i]of this.managedElements)i.style.borderBottom=`2px dashed ${t}`;for(let[i]of this.managedImages)i.style.outline=`2px dashed ${t}`}this.panelEl?.querySelectorAll(".lcms-theme-swatch")?.forEach(i=>{i.classList.toggle("active",i.dataset.color===t)}),localStorage.setItem("xtroedge_theme_color",t)}static create(t){let e=new g(t);return e.init(),e}static autoInit(){if(window.__xtroedge_cms_instance__)return;let t=window.__XTROEDGE_CMS_CONFIG__||{},e=g.create(t);window.__xtroedge_cms_instance__=e}};function T(){v.autoInit()}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",T):T());return P(O);})();
package/dist/index.js CHANGED
@@ -1847,10 +1847,17 @@ var XtroedgeCMS = class _XtroedgeCMS {
1847
1847
  headers: { "Content-Type": "application/json" },
1848
1848
  body: JSON.stringify({ username: email, password })
1849
1849
  });
1850
- if (!res.ok) throw new Error(`HTTP ${res.status}`);
1851
- const data = await res.json();
1850
+ let data = null;
1851
+ try {
1852
+ data = await res.json();
1853
+ } catch {
1854
+ }
1855
+ if (!res.ok) {
1856
+ const apiMsg = data?.message || data?.error || null;
1857
+ throw new Error(apiMsg || `HTTP ${res.status}`);
1858
+ }
1852
1859
  const token = data?.token || data?.authToken || data?.auth_token || data?.data?.token;
1853
- if (!token) throw new Error("No token in response");
1860
+ if (!token) throw new Error("Login successful but no token returned.");
1854
1861
  localStorage.setItem("builder_token", token);
1855
1862
  this.hideLoginModal();
1856
1863
  this.editMode = true;
@@ -1859,10 +1866,10 @@ var XtroedgeCMS = class _XtroedgeCMS {
1859
1866
  this.applyEditMode(true);
1860
1867
  this.updateUI();
1861
1868
  this.loadPageContent("draft");
1862
- } catch {
1869
+ } catch (err) {
1863
1870
  btn.disabled = false;
1864
1871
  btn.textContent = "Sign In";
1865
- errorEl.textContent = "Invalid credentials. Please try again.";
1872
+ errorEl.textContent = err?.message || "Login failed. Please try again.";
1866
1873
  errorEl.classList.add("visible");
1867
1874
  }
1868
1875
  }