ngx-xtroedge-cms 1.3.3 → 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 */
@@ -310,8 +310,8 @@
310
310
  <div class="lcms-login-title">Builder Login</div>
311
311
  <div class="lcms-login-sub">Sign in to access edit mode</div>
312
312
  <div class="lcms-login-field">
313
- <label class="lcms-login-label">Email or Username</label>
314
- <input class="lcms-login-input" id="lcms-login-email" type="text" placeholder="Enter your email or username" autocomplete="username" />
313
+ <label class="lcms-login-label">Username</label>
314
+ <input class="lcms-login-input" id="lcms-login-email" type="text" placeholder="Enter your username" autocomplete="username" />
315
315
  </div>
316
316
  <div class="lcms-login-field">
317
317
  <label class="lcms-login-label">Password</label>
@@ -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 email/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({email: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
@@ -1802,8 +1802,8 @@ var XtroedgeCMS = class _XtroedgeCMS {
1802
1802
  <div class="lcms-login-title">Builder Login</div>
1803
1803
  <div class="lcms-login-sub">Sign in to access edit mode</div>
1804
1804
  <div class="lcms-login-field">
1805
- <label class="lcms-login-label">Email or Username</label>
1806
- <input class="lcms-login-input" id="lcms-login-email" type="text" placeholder="Enter your email or username" autocomplete="username" />
1805
+ <label class="lcms-login-label">Username</label>
1806
+ <input class="lcms-login-input" id="lcms-login-email" type="text" placeholder="Enter your username" autocomplete="username" />
1807
1807
  </div>
1808
1808
  <div class="lcms-login-field">
1809
1809
  <label class="lcms-login-label">Password</label>
@@ -1833,7 +1833,7 @@ var XtroedgeCMS = class _XtroedgeCMS {
1833
1833
  const btn = document.getElementById("lcms-login-btn");
1834
1834
  const errorEl = document.getElementById("lcms-login-error");
1835
1835
  if (!email || !password) {
1836
- errorEl.textContent = "Please enter your email/username and password.";
1836
+ errorEl.textContent = "Please enter your username and password.";
1837
1837
  errorEl.classList.add("visible");
1838
1838
  return;
1839
1839
  }
@@ -1845,12 +1845,19 @@ var XtroedgeCMS = class _XtroedgeCMS {
1845
1845
  const res = await fetch(loginUrl, {
1846
1846
  method: "POST",
1847
1847
  headers: { "Content-Type": "application/json" },
1848
- body: JSON.stringify({ email, password })
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
  }