frontend-auto-cms 1.0.4 → 1.0.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.
package/dist/cli/setup.js CHANGED
@@ -93,6 +93,12 @@ function detectPageRoute(root, absoluteFile) {
93
93
  }
94
94
  return null;
95
95
  }
96
+ function isValidGithubRepository(value) {
97
+ return /^[^/\s]+\/[^/\s]+$/.test(value);
98
+ }
99
+ function isValidGitlabRepository(value) {
100
+ return /^([^/\s]+\/)+[^/\s]+$/.test(value);
101
+ }
96
102
  function detectPagesFromFiles(root, files, dashboardPath) {
97
103
  const routes = new Set();
98
104
  for (const file of files) {
@@ -100,8 +106,8 @@ function detectPagesFromFiles(root, files, dashboardPath) {
100
106
  if (!route) {
101
107
  continue;
102
108
  }
103
- const normalized = normalizeRoute(route);
104
- if (normalized !== normalizeRoute(dashboardPath)) {
109
+ const normalized = normalizeRoute(route).toLowerCase();
110
+ if (normalized !== normalizeRoute(dashboardPath).toLowerCase()) {
105
111
  routes.add(normalized);
106
112
  }
107
113
  }
@@ -154,21 +160,31 @@ function dashboardBootstrapHtml() {
154
160
  `;
155
161
  }
156
162
  function normalizeDashboardRewritePath(dashboardPath) {
157
- const normalized = normalizePath(dashboardPath).replace(/\/+$/, "") || "/";
163
+ const normalized = (normalizePath(dashboardPath).replace(/\/+$/, "") || "/").toLowerCase();
158
164
  if (normalized === "/") {
159
165
  return null;
160
166
  }
161
167
  return normalized;
162
168
  }
163
- function buildVercelDashboardRewrites(dashboardPath) {
169
+ function buildRewritePaths(dashboardPath, pages) {
170
+ const set = new Set();
164
171
  const base = normalizeDashboardRewritePath(dashboardPath);
165
- if (!base) {
166
- return [];
172
+ if (base)
173
+ set.add(base);
174
+ for (const page of pages) {
175
+ const normalized = normalizeDashboardRewritePath(page);
176
+ if (normalized) {
177
+ set.add(normalized);
178
+ }
167
179
  }
168
- return [
169
- { source: base, destination: "/" },
170
- { source: `${base}/:path*`, destination: "/" }
171
- ];
180
+ return Array.from(set);
181
+ }
182
+ function buildVercelDashboardRewrites(dashboardPath, pages) {
183
+ const paths = buildRewritePaths(dashboardPath, pages);
184
+ return paths.flatMap((path) => [
185
+ { source: path, destination: "/" },
186
+ { source: `${path}/:path*`, destination: "/" }
187
+ ]);
172
188
  }
173
189
  function isRewriteEntry(value) {
174
190
  return Boolean(value &&
@@ -176,8 +192,8 @@ function isRewriteEntry(value) {
176
192
  typeof value.source === "string" &&
177
193
  typeof value.destination === "string");
178
194
  }
179
- async function configureVercelRouting(cwd, dashboardPath) {
180
- const rewritesToAdd = buildVercelDashboardRewrites(dashboardPath);
195
+ async function configureVercelRouting(cwd, dashboardPath, pages) {
196
+ const rewritesToAdd = buildVercelDashboardRewrites(dashboardPath, pages);
181
197
  if (!rewritesToAdd.length) {
182
198
  return "skipped";
183
199
  }
@@ -212,15 +228,12 @@ async function configureVercelRouting(cwd, dashboardPath) {
212
228
  await writeFile(vercelPath, `${JSON.stringify(config, null, 2)}\n`, "utf8");
213
229
  return hasExisting ? "updated" : "created";
214
230
  }
215
- function dashboardRewriteLines(dashboardPath) {
216
- const base = normalizeDashboardRewritePath(dashboardPath);
217
- if (!base) {
218
- return [];
219
- }
220
- return [`${base} /index.html 200`, `${base}/* /index.html 200`];
231
+ function dashboardRewriteLines(dashboardPath, pages) {
232
+ const paths = buildRewritePaths(dashboardPath, pages);
233
+ return paths.flatMap((path) => [`${path} /index.html 200`, `${path}/* /index.html 200`]);
221
234
  }
222
- async function configurePublicRedirects(cwd, dashboardPath) {
223
- const rules = dashboardRewriteLines(dashboardPath);
235
+ async function configurePublicRedirects(cwd, dashboardPath, pages) {
236
+ const rules = dashboardRewriteLines(dashboardPath, pages);
224
237
  if (!rules.length) {
225
238
  return "skipped";
226
239
  }
@@ -253,9 +266,9 @@ async function configurePublicRedirects(cwd, dashboardPath) {
253
266
  await writeFile(redirectsPath, `${lines.join("\n")}\n`, "utf8");
254
267
  return hasExisting ? "updated" : "created";
255
268
  }
256
- async function configureFirebaseHosting(cwd, dashboardPath) {
257
- const base = normalizeDashboardRewritePath(dashboardPath);
258
- if (!base) {
269
+ async function configureFirebaseHosting(cwd, dashboardPath, pages) {
270
+ const paths = buildRewritePaths(dashboardPath, pages);
271
+ if (!paths.length) {
259
272
  return "skipped";
260
273
  }
261
274
  const firebasePath = resolve(cwd, "firebase.json");
@@ -281,10 +294,10 @@ async function configureFirebaseHosting(cwd, dashboardPath) {
281
294
  const rewrites = Array.isArray(rewritesRaw)
282
295
  ? rewritesRaw.filter((item) => item && typeof item === "object")
283
296
  : [];
284
- const required = [
285
- { source: base, destination: "/index.html" },
286
- { source: `${base}/**`, destination: "/index.html" }
287
- ];
297
+ const required = paths.flatMap((path) => [
298
+ { source: path, destination: "/index.html" },
299
+ { source: `${path}/**`, destination: "/index.html" }
300
+ ]);
288
301
  let changed = false;
289
302
  for (const entry of required) {
290
303
  const existsEntry = rewrites.some((item) => item.source === entry.source &&
@@ -414,7 +427,19 @@ export async function setupCms(options = {}) {
414
427
  name: "repository",
415
428
  message: "Repository slug (owner/repo or group/project):",
416
429
  when: (answers) => answers.provider !== "none",
417
- validate: (input) => (input.trim() ? true : "Repository is required.")
430
+ validate: (input, answers) => {
431
+ const repo = input.trim();
432
+ if (!repo) {
433
+ return "Repository is required.";
434
+ }
435
+ if (answers.provider === "github" && !isValidGithubRepository(repo)) {
436
+ return 'For GitHub use "owner/repo" (example: Gabo-Tech/testlanding).';
437
+ }
438
+ if (answers.provider === "gitlab" && !isValidGitlabRepository(repo)) {
439
+ return 'For GitLab use "group/project" (nested groups allowed).';
440
+ }
441
+ return true;
442
+ }
418
443
  },
419
444
  {
420
445
  type: "input",
@@ -479,15 +504,15 @@ export async function setupCms(options = {}) {
479
504
  }
480
505
  const deploymentActions = [];
481
506
  if (deploymentAnswers.host === "vercel") {
482
- const result = await configureVercelRouting(cwd, runtimeSettings.dashboardPath);
507
+ const result = await configureVercelRouting(cwd, runtimeSettings.dashboardPath, runtimeSettings.pages);
483
508
  deploymentActions.push(`vercel.json rewrites: ${result}`);
484
509
  }
485
510
  else if (deploymentAnswers.host === "netlify" || deploymentAnswers.host === "render") {
486
- const result = await configurePublicRedirects(cwd, runtimeSettings.dashboardPath);
511
+ const result = await configurePublicRedirects(cwd, runtimeSettings.dashboardPath, runtimeSettings.pages);
487
512
  deploymentActions.push(`public/_redirects: ${result}`);
488
513
  }
489
514
  else if (deploymentAnswers.host === "firebase-hosting") {
490
- const result = await configureFirebaseHosting(cwd, runtimeSettings.dashboardPath);
515
+ const result = await configureFirebaseHosting(cwd, runtimeSettings.dashboardPath, runtimeSettings.pages);
491
516
  deploymentActions.push(`firebase.json rewrites: ${result}`);
492
517
  }
493
518
  else if (deploymentAnswers.host === "github-pages") {
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,30 @@
1
- const ge = "cms-export.patch.json", be = "frontend-auto-cms::content", ee = "frontend-auto-cms::locales";
2
- function te(e) {
3
- localStorage.setItem(be, JSON.stringify(e));
1
+ const me = "cms-export.patch.json", ye = "frontend-auto-cms::content", te = "frontend-auto-cms::locales";
2
+ function ae(e) {
3
+ localStorage.setItem(ye, JSON.stringify(e));
4
4
  }
5
- function ae() {
5
+ function ne() {
6
6
  try {
7
- const e = localStorage.getItem(ee);
7
+ const e = localStorage.getItem(te);
8
8
  return e ? JSON.parse(e) : {};
9
9
  } catch {
10
10
  return {};
11
11
  }
12
12
  }
13
- function A(e) {
14
- localStorage.setItem(ee, JSON.stringify(e));
13
+ function T(e) {
14
+ localStorage.setItem(te, JSON.stringify(e));
15
15
  }
16
- async function me() {
16
+ async function he() {
17
+ try {
18
+ const e = await fetch("/cms-content.json", { cache: "no-store" });
19
+ if (!e.ok)
20
+ return null;
21
+ const t = await e.json();
22
+ return !t || !Array.isArray(t.nodes) ? null : t;
23
+ } catch {
24
+ return null;
25
+ }
26
+ }
27
+ async function xe() {
17
28
  try {
18
29
  const e = await fetch("/cms-locales.json", { cache: "no-store" });
19
30
  if (!e.ok)
@@ -24,29 +35,29 @@ async function me() {
24
35
  return {};
25
36
  }
26
37
  }
27
- function ye(e) {
38
+ function ve(e) {
28
39
  const t = new Blob([JSON.stringify(e, null, 2)], { type: "application/json" }), a = URL.createObjectURL(t), o = document.createElement("a");
29
- o.href = a, o.download = ge, o.click(), URL.revokeObjectURL(a);
40
+ o.href = a, o.download = me, o.click(), URL.revokeObjectURL(a);
30
41
  }
31
- function E(e) {
42
+ function _(e) {
32
43
  return e.replace(/[^\w]+/g, "_").replace(/^_+|_+$/g, "").toLowerCase();
33
44
  }
34
- function k(e) {
45
+ function v(e) {
35
46
  const t = e.getAttribute("id");
36
47
  if (t)
37
48
  return `#${t}`;
38
49
  const a = (e.getAttribute("class") ?? "").split(/\s+/).filter(Boolean)[0];
39
50
  return a ? `${e.tagName.toLowerCase()}.${a}` : e.tagName.toLowerCase();
40
51
  }
41
- function ne(e) {
52
+ function oe(e) {
42
53
  return ["SCRIPT", "STYLE", "NOSCRIPT", "IFRAME"].includes(e.tagName);
43
54
  }
44
55
  function N(e) {
45
56
  return (e ?? "").replace(/\s+/g, " ").trim();
46
57
  }
47
- function xe(e, t, a) {
58
+ function ke(e, t, a) {
48
59
  const o = t.parentElement;
49
- if (!o || ne(o))
60
+ if (!o || oe(o))
50
61
  return null;
51
62
  if (Array.from(o.childNodes).filter(
52
63
  (s) => s.nodeType === Node.TEXT_NODE && N(s.nodeValue).length > 0
@@ -55,7 +66,7 @@ function xe(e, t, a) {
55
66
  const r = e.createElement("span");
56
67
  return r.textContent = t.nodeValue ?? "", r.setAttribute("data-cms-key", a), t.parentNode?.replaceChild(r, t), r;
57
68
  }
58
- function T(e = document, t) {
69
+ function $(e = document, t) {
59
70
  const a = [];
60
71
  let o = 0, n = 0, r = 0, s = 0;
61
72
  const l = t ?? e.location?.pathname ?? location.pathname, c = e.body;
@@ -73,36 +84,36 @@ function T(e = document, t) {
73
84
  if (m.length < 2)
74
85
  continue;
75
86
  o += 1;
76
- const G = `${E(l || "index")}.text.${o}`, O = xe(e, b, G);
77
- if (!O)
87
+ const K = `${_(l || "index")}.text.${o}`, j = ke(e, b, K);
88
+ if (!j)
78
89
  continue;
79
90
  a.push({
80
91
  id: `dom_txt_${o}`,
81
- key: G,
92
+ key: K,
82
93
  type: "text",
83
- label: k(O),
94
+ label: v(j),
84
95
  value: m,
85
- selector: k(O),
96
+ selector: v(j),
86
97
  sourceRefs: [{ file: l, original: m }]
87
98
  });
88
99
  continue;
89
100
  }
90
101
  const i = d;
91
- if (ne(i))
102
+ if (oe(i))
92
103
  continue;
93
104
  const p = i.tagName.toLowerCase();
94
105
  if (p === "img" || p === "video") {
95
106
  const b = i.getAttribute("src") ?? "";
96
107
  if (b) {
97
108
  n += 1;
98
- const m = `${E(l || "index")}.${p}.${n}`;
109
+ const m = `${_(l || "index")}.${p}.${n}`;
99
110
  i.setAttribute("data-cms-key", m), a.push({
100
111
  id: `dom_media_${n}`,
101
112
  key: m,
102
113
  type: p === "img" ? "image" : "video",
103
- label: k(i),
114
+ label: v(i),
104
115
  value: b,
105
- selector: k(i),
116
+ selector: v(i),
106
117
  attrs: { src: b, alt: i.getAttribute("alt") ?? "" },
107
118
  sourceRefs: [{ file: l, original: b }]
108
119
  });
@@ -112,14 +123,14 @@ function T(e = document, t) {
112
123
  const b = Array.from(i.children).map((m) => N(m.textContent)).filter(Boolean);
113
124
  if (b.length >= 2) {
114
125
  r += 1;
115
- const m = `${E(l || "index")}.section.${r}`;
126
+ const m = `${_(l || "index")}.section.${r}`;
116
127
  i.setAttribute("data-cms-key", m), a.push({
117
128
  id: `dom_sec_${r}`,
118
129
  key: m,
119
130
  type: "section",
120
- label: k(i),
131
+ label: v(i),
121
132
  value: b.join(" | "),
122
- selector: k(i),
133
+ selector: v(i),
123
134
  sectionItems: b,
124
135
  sourceRefs: [{ file: l, original: i.innerHTML }]
125
136
  });
@@ -131,14 +142,14 @@ function T(e = document, t) {
131
142
  m != null && m.trim() && (g[b] = m);
132
143
  }), Object.keys(g).length > 0 && !(p === "img" || p === "video")) {
133
144
  s += 1;
134
- const b = `${E(l || "index")}.property.${s}`;
145
+ const b = `${_(l || "index")}.property.${s}`;
135
146
  a.push({
136
147
  id: `dom_prop_${s}`,
137
148
  key: b,
138
149
  type: "property",
139
- label: k(i),
150
+ label: v(i),
140
151
  value: JSON.stringify(g),
141
- selector: k(i),
152
+ selector: v(i),
142
153
  attrs: g,
143
154
  sourceRefs: [{ file: l, original: JSON.stringify(g) }]
144
155
  });
@@ -150,7 +161,7 @@ function T(e = document, t) {
150
161
  nodes: a
151
162
  };
152
163
  }
153
- function oe(e, t = document) {
164
+ function R(e, t = document) {
154
165
  if (!e.key)
155
166
  return;
156
167
  const a = t.querySelector(`[data-cms-key="${CSS.escape(e.key)}"]`);
@@ -169,7 +180,7 @@ function oe(e, t = document) {
169
180
  }
170
181
  }
171
182
  }
172
- const P = [
183
+ const B = [
173
184
  { code: "af", label: "Afrikaans", nllb: "afr_Latn" },
174
185
  { code: "ar", label: "Arabic", nllb: "arb_Arab" },
175
186
  { code: "az", label: "Azerbaijani", nllb: "azj_Latn" },
@@ -234,24 +245,24 @@ const P = [
234
245
  { code: "uz", label: "Uzbek", nllb: "uzn_Latn" },
235
246
  { code: "vi", label: "Vietnamese", nllb: "vie_Latn" },
236
247
  { code: "zh", label: "Chinese (Simplified)", nllb: "zho_Hans" }
237
- ], K = Object.fromEntries(
238
- P.map((e) => [e.nllb.slice(0, 3).toLowerCase(), e.code])
239
- ), he = "https://api.mymemory.translated.net/get";
240
- function J(e) {
248
+ ], J = Object.fromEntries(
249
+ B.map((e) => [e.nllb.slice(0, 3).toLowerCase(), e.code])
250
+ ), we = "https://api.mymemory.translated.net/get";
251
+ function F(e) {
241
252
  const t = e.trim().toLowerCase().split(/[-_]/)[0];
242
253
  if (/^[a-z]{2}$/i.test(t))
243
254
  return t;
244
- if (/^[a-z]{3}$/i.test(t) && K[t])
245
- return K[t];
255
+ if (/^[a-z]{3}$/i.test(t) && J[t])
256
+ return J[t];
246
257
  throw new Error(`Unsupported language code "${e}" for MyMemory translation.`);
247
258
  }
248
- async function ke(e, t, a) {
259
+ async function Le(e, t, a) {
249
260
  if (!e.trim())
250
261
  return e;
251
262
  const o = new URLSearchParams({
252
263
  q: e,
253
264
  langpair: `${t}|${a}`
254
- }), n = await fetch(`${he}?${o.toString()}`, { method: "GET" });
265
+ }), n = await fetch(`${we}?${o.toString()}`, { method: "GET" });
255
266
  if (!n.ok)
256
267
  throw new Error(`MyMemory request failed (${n.status})`);
257
268
  const r = await n.json();
@@ -260,8 +271,8 @@ async function ke(e, t, a) {
260
271
  const s = r.responseData?.translatedText;
261
272
  return typeof s == "string" && s.trim() ? s : e;
262
273
  }
263
- async function ve(e, t, a = "en", o) {
264
- const n = J(a), r = J(t), s = /* @__PURE__ */ new Map(), l = {}, c = Object.entries(e), f = c.length;
274
+ async function $e(e, t, a = "en", o) {
275
+ const n = F(a), r = F(t), s = /* @__PURE__ */ new Map(), l = {}, c = Object.entries(e), f = c.length;
265
276
  let d = 0;
266
277
  for (const [i, p] of c) {
267
278
  if (s.has(p)) {
@@ -269,7 +280,7 @@ async function ve(e, t, a = "en", o) {
269
280
  continue;
270
281
  }
271
282
  try {
272
- const g = await ke(p, n, r);
283
+ const g = await Le(p, n, r);
273
284
  s.set(p, g), l[i] = g;
274
285
  } catch {
275
286
  l[i] = p;
@@ -278,7 +289,13 @@ async function ve(e, t, a = "en", o) {
278
289
  }
279
290
  return l;
280
291
  }
281
- async function we(e, t, a) {
292
+ function re(e) {
293
+ return /^[^/\s]+\/[^/\s]+$/.test(e);
294
+ }
295
+ function se(e) {
296
+ return /^([^/\s]+\/)+[^/\s]+$/.test(e);
297
+ }
298
+ async function Se(e, t, a) {
282
299
  return (await fetch(
283
300
  `https://gitlab.com/api/v4/projects/${encodeURIComponent(e.repository)}/repository/files/${encodeURIComponent(a)}?ref=${encodeURIComponent(e.branch)}`,
284
301
  {
@@ -287,18 +304,21 @@ async function we(e, t, a) {
287
304
  }
288
305
  )).ok;
289
306
  }
290
- async function Le() {
307
+ async function Ee() {
291
308
  try {
292
309
  const e = await fetch("/cms-hosting.json", { cache: "no-store" });
293
310
  if (!e.ok)
294
311
  return null;
295
312
  const t = await e.json();
296
- return !t || !t.provider || t.provider === "none" || t.provider !== "github" && t.provider !== "gitlab" || typeof t.repository != "string" || !t.repository.trim() || typeof t.branch != "string" || !t.branch.trim() ? null : t;
313
+ if (!t || !t.provider || t.provider === "none" || t.provider !== "github" && t.provider !== "gitlab" || typeof t.repository != "string" || !t.repository.trim())
314
+ return null;
315
+ const a = t.repository.trim();
316
+ return t.provider === "github" && !re(a) || t.provider === "gitlab" && !se(a) || typeof t.branch != "string" || !t.branch.trim() ? null : { ...t, repository: a, branch: t.branch.trim() };
297
317
  } catch {
298
318
  return null;
299
319
  }
300
320
  }
301
- async function j(e, t, a, o, n) {
321
+ async function O(e, t, a, o, n) {
302
322
  const r = `https://api.github.com/repos/${e.repository}/contents/${encodeURIComponent(a).replace(/%2F/g, "/")}`;
303
323
  let s;
304
324
  const l = await fetch(`${r}?ref=${encodeURIComponent(e.branch)}`, {
@@ -321,14 +341,14 @@ async function j(e, t, a, o, n) {
321
341
  })).ok)
322
342
  throw new Error(`GitHub publish failed for ${a}`);
323
343
  }
324
- async function $e(e, t, a) {
344
+ async function _e(e, t, a) {
325
345
  const o = `chore(cms): publish content updates ${(/* @__PURE__ */ new Date()).toISOString()}`;
326
- if (await j(e, t, "cms-content.json", JSON.stringify(a.content, null, 2), o), a.locales)
346
+ if (await O(e, t, "cms-content.json", JSON.stringify(a.content, null, 2), o), a.locales)
327
347
  for (const [n, r] of Object.entries(a.locales))
328
- await j(e, t, `locales/${n}.json`, JSON.stringify(r, null, 2), o);
329
- await j(e, t, "cms-export.patch.json", JSON.stringify(a, null, 2), o);
348
+ await O(e, t, `locales/${n}.json`, JSON.stringify(r, null, 2), o);
349
+ await O(e, t, "cms-export.patch.json", JSON.stringify(a, null, 2), o);
330
350
  }
331
- async function Se(e, t, a) {
351
+ async function Ae(e, t, a) {
332
352
  const o = [
333
353
  { filePath: "cms-content.json", content: JSON.stringify(a.content, null, 2) },
334
354
  { filePath: "cms-export.patch.json", content: JSON.stringify(a, null, 2) }
@@ -338,7 +358,7 @@ async function Se(e, t, a) {
338
358
  o.push({ filePath: `locales/${s}.json`, content: JSON.stringify(l, null, 2) });
339
359
  const n = [];
340
360
  for (const s of o) {
341
- const l = await we(e, t, s.filePath);
361
+ const l = await Se(e, t, s.filePath);
342
362
  n.push({
343
363
  action: l ? "update" : "create",
344
364
  file_path: s.filePath,
@@ -359,12 +379,18 @@ async function Se(e, t, a) {
359
379
  })).ok)
360
380
  throw new Error("GitLab publish failed.");
361
381
  }
362
- async function Ee(e, t, a) {
363
- return !a || !t.trim() ? !1 : a.provider === "github" ? (await $e(a, t.trim(), e), !0) : a.provider === "gitlab" ? (await Se(a, t.trim(), e), !0) : !1;
364
- }
365
- const F = "facms-auth-modal", M = "facms-auth-missing", Y = "facms-token-modal", W = "facms-language-modal", _e = "frontend-auto-cms::theme", re = "frontend-auto-cms::main-language", se = "frontend-auto-cms::language-labels";
366
- let R = !1, v = null, V = !1, h = null, u = "dark";
367
- function ie() {
382
+ async function Te(e, t, a) {
383
+ if (!a || !t.trim())
384
+ return !1;
385
+ if (a.provider === "github" && !re(a.repository))
386
+ throw new Error('Invalid GitHub repository format. Use "owner/repo".');
387
+ if (a.provider === "gitlab" && !se(a.repository))
388
+ throw new Error('Invalid GitLab repository format. Use "group/project".');
389
+ return a.provider === "github" ? (await _e(a, t.trim(), e), !0) : a.provider === "gitlab" ? (await Ae(a, t.trim(), e), !0) : !1;
390
+ }
391
+ const Y = "facms-auth-modal", M = "facms-auth-missing", V = "facms-token-modal", W = "facms-language-modal", Ie = "frontend-auto-cms::theme", ie = "frontend-auto-cms::main-language", le = "frontend-auto-cms::language-labels";
392
+ let D = !1, k = null, X = !1, x = null, u = "dark";
393
+ function ce() {
368
394
  if (document.getElementById("facms-dashboard-css"))
369
395
  return;
370
396
  const e = document.createElement("style");
@@ -603,59 +629,59 @@ function ie() {
603
629
  }
604
630
  `, document.head.appendChild(e);
605
631
  }
606
- function le(e) {
632
+ function de(e) {
607
633
  u = e;
608
634
  const t = e === "dark";
609
- document.documentElement.classList.toggle("dark", t), document.body.classList.toggle("dark", t), document.documentElement.style.background = t ? "#020617" : "#f1f5f9", document.body.style.background = t ? "#020617" : "#f1f5f9", document.documentElement.setAttribute("data-facms-theme", e), document.getElementById("facms-app")?.classList.toggle("dark", t), localStorage.setItem(_e, e);
635
+ document.documentElement.classList.toggle("dark", t), document.body.classList.toggle("dark", t), document.documentElement.style.background = t ? "#020617" : "#f1f5f9", document.body.style.background = t ? "#020617" : "#f1f5f9", document.documentElement.setAttribute("data-facms-theme", e), document.getElementById("facms-app")?.classList.toggle("dark", t), localStorage.setItem(Ie, e);
610
636
  const o = document.getElementById("facms-theme-toggle");
611
637
  o && (o.textContent = e === "dark" ? "Switch to light" : "Switch to dark");
612
638
  }
613
- function ce() {
614
- u = "dark", le("dark");
639
+ function ue() {
640
+ u = "dark", de("dark");
615
641
  }
616
- function Ae(e) {
642
+ function Ce(e) {
617
643
  return Array.from(new Uint8Array(e)).map((t) => t.toString(16).padStart(2, "0")).join("");
618
644
  }
619
- async function Te(e) {
645
+ async function je(e) {
620
646
  const t = new TextEncoder().encode(e), a = await crypto.subtle.digest("SHA-256", t);
621
- return Ae(a);
647
+ return Ce(a);
622
648
  }
623
- async function de() {
624
- if (h)
625
- return h;
649
+ async function fe() {
650
+ if (x)
651
+ return x;
626
652
  try {
627
653
  const e = await fetch("/cms-settings.json", { cache: "no-store" });
628
654
  if (e.ok) {
629
655
  const t = await e.json();
630
- return h = {
656
+ return x = {
631
657
  dashboardPath: t.dashboardPath || "/dashboard",
632
- pages: (t.pages?.length ? t.pages : ["/"]).map((a) => a.startsWith("/") ? a : `/${a}`),
658
+ pages: (t.pages?.length ? t.pages : ["/"]).map((a) => Re(a)),
633
659
  showFloatingButton: t.showFloatingButton ?? !1,
634
660
  autoTranslateEnabled: t.autoTranslateEnabled ?? !0
635
- }, h;
661
+ }, x;
636
662
  }
637
663
  } catch {
638
664
  }
639
- return h = { dashboardPath: "/dashboard", pages: ["/"], showFloatingButton: !1, autoTranslateEnabled: !0 }, h;
665
+ return x = { dashboardPath: "/dashboard", pages: ["/"], showFloatingButton: !1, autoTranslateEnabled: !0 }, x;
640
666
  }
641
- async function D() {
642
- if (!V) {
643
- V = !0;
667
+ async function G() {
668
+ if (!X) {
669
+ X = !0;
644
670
  try {
645
671
  const e = await fetch("/cms-runtime-auth.json", { cache: "no-store" });
646
672
  if (!e.ok) return;
647
673
  const t = await e.json();
648
- t.algorithm === "sha256" && typeof t.salt == "string" && typeof t.passcodeHash == "string" && (v = { algorithm: "sha256", salt: t.salt, passcodeHash: t.passcodeHash });
674
+ t.algorithm === "sha256" && typeof t.salt == "string" && typeof t.passcodeHash == "string" && (k = { algorithm: "sha256", salt: t.salt, passcodeHash: t.passcodeHash });
649
675
  } catch {
650
- v = null;
676
+ k = null;
651
677
  }
652
678
  }
653
679
  }
654
- async function Ie(e) {
680
+ async function Oe(e) {
655
681
  const t = e.trim();
656
- return !t || (await D(), !v) ? !1 : await Te(`${v.salt}:${t}`) === v.passcodeHash;
682
+ return !t || (await G(), !k) ? !1 : await je(`${k.salt}:${t}`) === k.passcodeHash;
657
683
  }
658
- function Ce() {
684
+ function ze() {
659
685
  let e = document.getElementById(M);
660
686
  e || (e = document.createElement("div"), e.id = M, e.style.position = "fixed", e.style.inset = "0", e.style.zIndex = "2147483647", e.style.background = "rgba(2, 6, 23, 0.88)", e.style.display = "grid", e.style.placeItems = "center", e.innerHTML = `
661
687
  <div style="width:min(560px,92vw);background:#0f172a;color:#e2e8f0;border:1px solid #334155;border-radius:16px;padding:16px;box-shadow:0 20px 55px rgba(2,6,23,.45);font-family:Inter,system-ui,sans-serif;">
@@ -665,20 +691,20 @@ function Ce() {
665
691
  </div>
666
692
  `, document.body.appendChild(e));
667
693
  }
668
- function Oe() {
694
+ function Ne() {
669
695
  document.getElementById(M)?.remove();
670
696
  }
671
- async function ue() {
672
- return await D(), v ? (Oe(), !0) : (Ce(), !1);
697
+ async function pe() {
698
+ return await G(), k ? (Ne(), !0) : (ze(), !1);
673
699
  }
674
- function fe(e) {
675
- const t = document.getElementById(F);
700
+ function ge(e) {
701
+ const t = document.getElementById(Y);
676
702
  if (t) {
677
703
  t.style.display = "grid";
678
704
  return;
679
705
  }
680
706
  const a = document.createElement("div");
681
- a.id = F, a.style.position = "fixed", a.style.inset = "0", a.style.zIndex = "2147483647", a.style.background = "rgba(2, 6, 23, 0.45)", a.style.display = "grid", a.style.placeItems = "center", a.innerHTML = `
707
+ a.id = Y, a.style.position = "fixed", a.style.inset = "0", a.style.zIndex = "2147483647", a.style.background = "rgba(2, 6, 23, 0.45)", a.style.display = "grid", a.style.placeItems = "center", a.innerHTML = `
682
708
  <div style="width: min(420px, 92vw); background: ${u === "dark" ? "#0f172a" : "#ffffff"}; color: ${u === "dark" ? "#e2e8f0" : "#0f172a"}; border: 1px solid ${u === "dark" ? "#334155" : "#e2e8f0"}; border-radius: 16px; padding: 16px; box-shadow: 0 20px 55px rgba(2,6,23,0.45); font-family: Inter, system-ui, sans-serif;">
683
709
  <h3 style="margin: 0 0 6px 0; font-size: 20px; line-height: 1.2; font-weight: 700;">Unlock CMS</h3>
684
710
  <p style="margin: 0 0 12px 0; font-size: 12px; color: ${u === "dark" ? "#94a3b8" : "#475569"};">Enter your passcode to edit content.</p>
@@ -691,23 +717,23 @@ function fe(e) {
691
717
  </div>
692
718
  `;
693
719
  const o = a.querySelector("#facms-passcode-input"), n = a.querySelector("#facms-passcode-error"), r = () => a.style.display = "none", s = async () => {
694
- if (await D(), !v) {
720
+ if (await G(), !k) {
695
721
  n && (n.textContent = "CMS auth is not configured. Run setup to generate runtime auth files.", n.style.display = "block");
696
722
  return;
697
723
  }
698
- if (!await Ie(o?.value ?? "")) {
724
+ if (!await Oe(o?.value ?? "")) {
699
725
  n && (n.textContent = "Incorrect passcode.", n.style.display = "block");
700
726
  return;
701
727
  }
702
- n && (n.style.display = "none"), R = !0, r(), e();
728
+ n && (n.style.display = "none"), D = !0, r(), e();
703
729
  };
704
730
  a.querySelector("#facms-passcode-cancel")?.addEventListener("click", r), a.querySelector("#facms-passcode-submit")?.addEventListener("click", s), o?.addEventListener("keydown", (l) => l.key === "Enter" && void s()), document.body.appendChild(a), o?.focus();
705
731
  }
706
- function je(e, t) {
707
- const a = document.getElementById(Y);
732
+ function Me(e, t) {
733
+ const a = document.getElementById(V);
708
734
  a && a.remove();
709
735
  const o = document.createElement("div");
710
- o.id = Y, o.style.position = "fixed", o.style.inset = "0", o.style.zIndex = "2147483647", o.style.background = "rgba(2, 6, 23, 0.45)", o.style.display = "grid", o.style.placeItems = "center", o.innerHTML = `
736
+ o.id = V, o.style.position = "fixed", o.style.inset = "0", o.style.zIndex = "2147483647", o.style.background = "rgba(2, 6, 23, 0.45)", o.style.display = "grid", o.style.placeItems = "center", o.innerHTML = `
711
737
  <div style="width: min(520px, 92vw); background: ${u === "dark" ? "#0f172a" : "#ffffff"}; color: ${u === "dark" ? "#e2e8f0" : "#0f172a"}; border: 1px solid ${u === "dark" ? "#334155" : "#e2e8f0"}; border-radius: 16px; padding: 16px; box-shadow: 0 20px 55px rgba(2,6,23,0.45); font-family: Inter, system-ui, sans-serif;">
712
738
  <h3 style="margin: 0 0 6px 0; font-size: 20px; line-height: 1.2; font-weight: 700;">Publish token required</h3>
713
739
  <p style="margin: 0 0 12px 0; font-size: 12px; color: ${u === "dark" ? "#94a3b8" : "#475569"};">Enter your ${e} token for this publish only. It is not stored.</p>
@@ -729,7 +755,7 @@ function je(e, t) {
729
755
  };
730
756
  o.querySelector("#facms-token-cancel")?.addEventListener("click", s), o.querySelector("#facms-token-submit")?.addEventListener("click", l), n?.addEventListener("keydown", (c) => c.key === "Enter" && l()), document.body.appendChild(o), n?.focus();
731
757
  }
732
- function ze(e, t, a) {
758
+ function Pe(e, t, a) {
733
759
  const o = document.getElementById(W);
734
760
  o && o.remove();
735
761
  const n = document.createElement("div");
@@ -739,7 +765,7 @@ function ze(e, t, a) {
739
765
  <p style="margin: 0 0 8px 0; font-size: 12px; color: ${u === "dark" ? "#94a3b8" : "#475569"};">Pick a supported language or define a custom one for manual translation.</p>
740
766
  <select id="facms-language-select" style="width: 100%; border: 1px solid ${u === "dark" ? "#475569" : "#cbd5e1"}; background: ${u === "dark" ? "#1e293b" : "#ffffff"}; color: ${u === "dark" ? "#f1f5f9" : "#0f172a"}; border-radius: 10px; padding: 10px 12px; font-size: 14px; box-sizing: border-box; margin-bottom: 8px;">
741
767
  <option value="">Select supported language</option>
742
- ${P.filter((d) => !e.includes(d.code)).map((d) => `<option value="${d.code}">${d.label} (${d.code})</option>`).join("")}
768
+ ${B.filter((d) => !e.includes(d.code)).map((d) => `<option value="${d.code}">${d.label} (${d.code})</option>`).join("")}
743
769
  <option value="__custom__">Custom language (manual)</option>
744
770
  </select>
745
771
  <input id="facms-language-name" type="text" placeholder="Custom language name (e.g. Klingon)" style="width: 100%; border: 1px solid ${u === "dark" ? "#475569" : "#cbd5e1"}; background: ${u === "dark" ? "#1e293b" : "#ffffff"}; color: ${u === "dark" ? "#f1f5f9" : "#0f172a"}; border-radius: 10px; padding: 10px 12px; font-size: 14px; box-sizing: border-box; margin-bottom: 8px; display:none;" />
@@ -763,16 +789,16 @@ function ze(e, t, a) {
763
789
  const i = n.querySelector("#facms-language-error");
764
790
  let p = "";
765
791
  const g = s?.value ?? "";
766
- let x = "";
767
- if (g && g !== "__custom__" ? (p = I(g), x = $(p)) : (p = I(l?.value ?? ""), x = (c?.value ?? "").trim()), !p || !/^[a-z]{2,3}([_-][a-z0-9]{2,8})?$|^[a-z]{3}_[A-Za-z]+$/i.test(p)) {
792
+ let h = "";
793
+ if (g && g !== "__custom__" ? (p = I(g), h = S(p)) : (p = I(l?.value ?? ""), h = (c?.value ?? "").trim()), !p || !/^[a-z]{2,3}([_-][a-z0-9]{2,8})?$|^[a-z]{3}_[A-Za-z]+$/i.test(p)) {
768
794
  i && (i.textContent = "Enter a valid language code.", i.style.display = "block");
769
795
  return;
770
796
  }
771
- if (x || (x = $(p)), e.includes(p)) {
797
+ if (h || (h = S(p)), e.includes(p)) {
772
798
  i && (i.textContent = `Language "${p}" already exists.`, i.style.display = "block");
773
799
  return;
774
800
  }
775
- i && (i.style.display = "none"), r(), a(`${p}::${x}`, d);
801
+ i && (i.style.display = "none"), r(), a(`${p}::${h}`, d);
776
802
  };
777
803
  n.querySelector("#facms-language-manual")?.addEventListener("click", () => f("manual")), t && n.querySelector("#facms-language-autofill")?.addEventListener("click", () => f("auto")), document.body.appendChild(n);
778
804
  }
@@ -786,13 +812,17 @@ function z(e, t) {
786
812
  function I(e) {
787
813
  return e.trim().toLowerCase();
788
814
  }
789
- function $(e) {
790
- const t = I(e), a = P.find((o) => o.code === t);
815
+ function Re(e) {
816
+ const t = e.trim() || "/";
817
+ return t === "/" ? "/" : (t.startsWith("/") ? t : `/${t}`).toLowerCase();
818
+ }
819
+ function S(e) {
820
+ const t = I(e), a = B.find((o) => o.code === t);
791
821
  return a ? a.label : t.toUpperCase();
792
822
  }
793
- function Ne() {
823
+ function Be() {
794
824
  try {
795
- const e = localStorage.getItem(se);
825
+ const e = localStorage.getItem(le);
796
826
  if (!e)
797
827
  return {};
798
828
  const t = JSON.parse(e);
@@ -801,27 +831,27 @@ function Ne() {
801
831
  return {};
802
832
  }
803
833
  }
804
- function q(e) {
805
- localStorage.setItem(se, JSON.stringify(e));
834
+ function H(e) {
835
+ localStorage.setItem(le, JSON.stringify(e));
806
836
  }
807
837
  function C(e) {
808
- const t = localStorage.getItem(re);
838
+ const t = localStorage.getItem(ie);
809
839
  return t && e[t] ? t : e.en ? "en" : Object.keys(e)[0] ?? "en";
810
840
  }
811
- function X(e) {
812
- localStorage.setItem(re, e);
841
+ function Z(e) {
842
+ localStorage.setItem(ie, e);
813
843
  }
814
844
  function y(e) {
815
845
  return e.replace(/[&<>'"]/g, (t) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", "'": "&#39;", '"': "&quot;" })[t]);
816
846
  }
817
- function _(e, t = 72) {
847
+ function A(e, t = 72) {
818
848
  const a = e.replace(/\s+/g, " ").trim();
819
849
  return a.length <= t ? a : `${a.slice(0, t)}...`;
820
850
  }
821
- function Me(e) {
822
- return e.type === "section" ? _((e.sectionItems ?? []).join(" | ")) : e.type === "property" ? _(JSON.stringify(e.attrs ?? {})) : _(e.value);
851
+ function De(e) {
852
+ return e.type === "section" ? A((e.sectionItems ?? []).join(" | ")) : e.type === "property" ? A(JSON.stringify(e.attrs ?? {})) : A(e.value);
823
853
  }
824
- function Be(e) {
854
+ function Ge(e) {
825
855
  const t = [];
826
856
  return e.forEach((a, o) => {
827
857
  const n = (a.selector ?? "").trim(), r = t[t.length - 1];
@@ -836,7 +866,7 @@ function Be(e) {
836
866
  });
837
867
  }), t;
838
868
  }
839
- function Pe(e) {
869
+ function He(e) {
840
870
  const t = (a) => {
841
871
  if (Array.isArray(a))
842
872
  return a.map(t);
@@ -848,11 +878,11 @@ function Pe(e) {
848
878
  };
849
879
  return JSON.stringify(t(e));
850
880
  }
851
- async function Re(e) {
881
+ async function Ue(e) {
852
882
  const t = new TextEncoder().encode(e), a = await crypto.subtle.digest("SHA-256", t);
853
883
  return Array.from(new Uint8Array(a)).map((o) => o.toString(16).padStart(2, "0")).join("");
854
884
  }
855
- async function De(e, t, a) {
885
+ async function qe(e, t, a) {
856
886
  const o = e.nodes.flatMap(
857
887
  (s) => s.sourceRefs.map((l) => ({
858
888
  file: l.file,
@@ -865,7 +895,7 @@ async function De(e, t, a) {
865
895
  content: { ...e, updatedAt: (/* @__PURE__ */ new Date()).toISOString() },
866
896
  operations: o,
867
897
  locales: t
868
- }, r = await Re(Pe(n));
898
+ }, r = await Ue(He(n));
869
899
  return {
870
900
  ...n,
871
901
  integrity: {
@@ -874,7 +904,7 @@ async function De(e, t, a) {
874
904
  }
875
905
  };
876
906
  }
877
- function qe(e, t) {
907
+ function Ke(e, t) {
878
908
  const a = `${e.type.toUpperCase()} • ${y(e.label || e.selector || "")}`, o = `<div class="text-xs text-slate-500 dark:text-slate-400 mb-2">#${t + 1} ${a}</div>`;
879
909
  if (e.type === "text")
880
910
  return `<div class="rounded-lg p-2 bg-slate-50/60 dark:bg-slate-900/40">${o}<textarea data-cms-id="${e.id}" data-cms-field="value" class="w-full border border-slate-300 dark:border-slate-800 bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100 rounded-lg p-2 text-sm h-24 focus:outline-none focus:ring-2 focus:ring-indigo-500/40">${y(e.value)}</textarea></div>`;
@@ -887,23 +917,23 @@ function qe(e, t) {
887
917
  }
888
918
  return `<div class="rounded-lg p-2 bg-slate-50/60 dark:bg-slate-900/40">${o}<textarea data-cms-id="${e.id}" data-cms-field="attrs" class="w-full border border-slate-300 dark:border-slate-800 bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100 rounded-lg p-2 text-xs h-28 focus:outline-none focus:ring-2 focus:ring-indigo-500/40">${y(JSON.stringify(e.attrs ?? {}, null, 2))}</textarea></div>`;
889
919
  }
890
- function S(e, t, a, o) {
920
+ function E(e, t, a, o) {
891
921
  e.nodes.forEach((n) => {
892
- n.type === "text" && (n.value = t[n.key] ?? o[n.key] ?? n.value, oe(n, a));
922
+ n.type === "text" && (n.value = t[n.key] ?? o[n.key] ?? n.value, R(n, a));
893
923
  });
894
924
  }
895
- function He(e, t) {
925
+ function Je(e, t) {
896
926
  e.activeLanguage = t;
897
927
  const a = e.locales[t] ?? e.locales[e.mainLanguage] ?? e.baseTextByKey;
898
- S(e.content, a, e.workingDocument, e.baseTextByKey);
928
+ E(e.content, a, e.workingDocument, e.baseTextByKey);
899
929
  }
900
- function Ue(e, t) {
930
+ function Fe(e, t) {
901
931
  const a = e.querySelector("#facms-language-tabs");
902
932
  if (!a)
903
933
  return;
904
934
  const o = Object.keys(t.locales);
905
935
  a.innerHTML = o.map((n) => {
906
- const r = n === t.activeLanguage, s = n === t.mainLanguage, l = t.languageLabels[n] ?? $(n);
936
+ const r = n === t.activeLanguage, s = n === t.mainLanguage, l = t.languageLabels[n] ?? S(n);
907
937
  return `<div class="inline-flex items-center rounded-lg overflow-hidden border ${r ? "border-indigo-500" : "border-slate-200 dark:border-slate-700"}">
908
938
  <button data-lang="${n}" class="px-2.5 py-1.5 text-xs ${r ? "bg-indigo-600 text-white" : "bg-slate-100 dark:bg-slate-800 text-slate-700 dark:text-slate-200"}">${y(l)}</button>
909
939
  ${s ? `<span class="px-2 py-1.5 text-[10px] font-semibold ${r ? "bg-indigo-700 text-indigo-100" : "bg-emerald-600 text-white"}">MAIN</span>` : `<button data-main-lang="${n}" title="Set as main language" class="px-2 py-1.5 text-xs ${r ? "bg-indigo-700 text-indigo-100 hover:bg-indigo-800" : "bg-emerald-600 text-white hover:bg-emerald-500"}">★</button>`}
@@ -912,13 +942,13 @@ function Ue(e, t) {
912
942
  }).join(""), a.querySelectorAll("[data-lang]").forEach((n) => {
913
943
  n.addEventListener("click", () => {
914
944
  const r = n.dataset.lang;
915
- r && (He(t, r), L(e, t));
945
+ r && (Je(t, r), L(e, t));
916
946
  });
917
947
  }), a.querySelectorAll("[data-main-lang]").forEach((n) => {
918
948
  n.addEventListener("click", (r) => {
919
949
  r.stopPropagation();
920
950
  const s = n.dataset.mainLang;
921
- !s || !t.locales[s] || (t.mainLanguage = s, X(s), t.baseTextByKey = { ...t.locales[s] }, L(e, t));
951
+ !s || !t.locales[s] || (t.mainLanguage = s, Z(s), t.baseTextByKey = { ...t.locales[s] }, L(e, t));
922
952
  });
923
953
  }), a.querySelectorAll("[data-remove-lang]").forEach((n) => {
924
954
  n.addEventListener("click", (r) => {
@@ -929,12 +959,12 @@ function Ue(e, t) {
929
959
  alert("You must keep at least one language.");
930
960
  return;
931
961
  }
932
- delete t.locales[s], delete t.languageLabels[s], q(t.languageLabels), A(t.locales), t.mainLanguage === s && (t.mainLanguage = C(t.locales), X(t.mainLanguage), t.baseTextByKey = { ...t.locales[t.mainLanguage] ?? {} }), t.activeLanguage === s && (t.activeLanguage = H(t.locales, t.mainLanguage)), pe(t), L(e, t);
962
+ delete t.locales[s], delete t.languageLabels[s], H(t.languageLabels), T(t.locales), t.mainLanguage === s && (t.mainLanguage = C(t.locales), Z(t.mainLanguage), t.baseTextByKey = { ...t.locales[t.mainLanguage] ?? {} }), t.activeLanguage === s && (t.activeLanguage = U(t.locales, t.mainLanguage)), be(t), L(e, t);
933
963
  }
934
964
  });
935
965
  });
936
966
  }
937
- function Ge(e, t) {
967
+ function Ye(e, t) {
938
968
  e.querySelectorAll("[data-cms-id]").forEach((a) => {
939
969
  const o = a.dataset.cmsId, n = a.dataset.cmsField;
940
970
  !o || !n || a.addEventListener("input", () => {
@@ -944,7 +974,7 @@ function Ge(e, t) {
944
974
  r.value = a.value, r.type === "text" && (t.activeLanguage === t.mainLanguage ? (t.baseTextByKey[r.key] = a.value, t.locales[t.mainLanguage] = { ...t.locales[t.mainLanguage] ?? {}, [r.key]: a.value }) : t.locales[t.activeLanguage] = {
945
975
  ...t.locales[t.activeLanguage] ?? {},
946
976
  [r.key]: a.value
947
- }, A(t.locales));
977
+ }, T(t.locales));
948
978
  else if (n === "alt") r.attrs = { ...r.attrs ?? {}, alt: a.value };
949
979
  else if (n === "sectionItems") r.sectionItems = a.value.split(`
950
980
  `).map((s) => s.trim()).filter(Boolean);
@@ -954,28 +984,28 @@ function Ge(e, t) {
954
984
  } catch {
955
985
  return;
956
986
  }
957
- oe(r, t.workingDocument), te(t.content);
987
+ R(r, t.workingDocument), ae(t.content);
958
988
  }
959
989
  });
960
990
  });
961
991
  }
962
992
  function w(e, t, a) {
963
993
  const o = e.querySelector("#facms-i18n-status"), n = e.querySelector("#facms-translate-loader"), r = e.querySelector("#facms-add-language");
964
- B(a, t), o && (o.textContent = t), n && (n.style.display = a ? "inline-flex" : "none"), r && (r.disabled = a);
994
+ P(a, t), o && (o.textContent = t), n && (n.style.display = a ? "inline-flex" : "none"), r && (r.disabled = a);
965
995
  }
966
- function B(e, t) {
996
+ function P(e, t) {
967
997
  const a = document.getElementById("facms-global-loader"), o = document.getElementById("facms-global-loader-label");
968
998
  a && (a.style.display = e ? "flex" : "none"), o && (o.textContent = e ? t : "Loading");
969
999
  }
970
1000
  function L(e, t) {
971
- const a = Be(t.content.nodes), o = a.length ? a.map((n) => {
972
- const r = n.items[0], s = n.items[n.items.length - 1], l = r.index === s.index ? `#${r.index + 1}` : `#${r.index + 1} - #${s.index + 1}`, c = n.items.map((i) => Me(i.node)).filter(Boolean).join(" • "), f = n.items.length > 1 ? `${l} ${y(n.selector || "Grouped fields")} (${n.items.length} fields)` : `${l} ${y(r.node.type.toUpperCase())} • ${y(r.node.label || r.node.selector || "")}`, d = n.items.map((i) => qe(i.node, i.index)).join("");
1001
+ const a = Ge(t.content.nodes), o = a.length ? a.map((n) => {
1002
+ const r = n.items[0], s = n.items[n.items.length - 1], l = r.index === s.index ? `#${r.index + 1}` : `#${r.index + 1} - #${s.index + 1}`, c = n.items.map((i) => De(i.node)).filter(Boolean).join(" • "), f = n.items.length > 1 ? `${l} ${y(n.selector || "Grouped fields")} (${n.items.length} fields)` : `${l} ${y(r.node.type.toUpperCase())} • ${y(r.node.label || r.node.selector || "")}`, d = n.items.map((i) => Ke(i.node, i.index)).join("");
973
1003
  return `
974
1004
  <details class="rounded-xl p-2 border border-slate-200 dark:border-transparent bg-white dark:bg-slate-900/60 shadow-sm">
975
1005
  <summary class="list-none cursor-pointer flex items-center justify-between gap-2 p-3 rounded-lg bg-slate-50 dark:bg-slate-800/70 border border-slate-200 dark:border-slate-800">
976
1006
  <div class="min-w-0">
977
1007
  <div class="text-xs text-slate-500 dark:text-slate-400">${f}</div>
978
- <div class="text-sm text-slate-700 dark:text-slate-300 truncate">${y(_(c || "No preview"))}</div>
1008
+ <div class="text-sm text-slate-700 dark:text-slate-300 truncate">${y(A(c || "No preview"))}</div>
979
1009
  </div>
980
1010
  <span class="text-xs text-indigo-600 dark:text-indigo-400">Expand</span>
981
1011
  </summary>
@@ -1001,29 +1031,30 @@ function L(e, t) {
1001
1031
  <p id="facms-i18n-status" class="text-xs text-slate-500 dark:text-slate-400"></p>
1002
1032
  </div>
1003
1033
  </div>
1004
- `, Ue(e, t), e.querySelector("#facms-save")?.addEventListener("click", async () => {
1005
- const n = await De(t.content, t.locales, t.baseTextByKey), r = await Le();
1034
+ `, Fe(e, t), e.querySelector("#facms-save")?.addEventListener("click", async () => {
1035
+ const n = await qe(t.content, t.locales, t.baseTextByKey), r = await Ee();
1006
1036
  if (!r || r.provider === "none") {
1007
- ye(n), alert("Patch downloaded. Configure hosting in setup for one-click publish.");
1037
+ ve(n), alert("Patch downloaded. Configure hosting in setup for one-click publish.");
1008
1038
  return;
1009
1039
  }
1010
1040
  const s = r.provider;
1011
- je(s, async (l) => {
1012
- let c = !1;
1041
+ Me(s, async (l) => {
1042
+ let c = !1, f = "Publishing failed. Please verify token permissions and repository settings.";
1013
1043
  try {
1014
- c = await Ee(n, l, r);
1015
- } catch {
1016
- c = !1;
1044
+ c = await Te(n, l, r);
1045
+ } catch (d) {
1046
+ const i = d instanceof Error ? d.message : String(d);
1047
+ i && (f = `Publishing failed: ${i}`), c = !1;
1017
1048
  }
1018
1049
  if (!c) {
1019
- alert("Publishing failed. Please verify token permissions and repository settings.");
1050
+ alert(f);
1020
1051
  return;
1021
1052
  }
1022
1053
  alert("Changes published successfully.");
1023
1054
  });
1024
1055
  }), e.querySelector("#facms-add-language")?.addEventListener("click", () => {
1025
- ze(Object.keys(t.locales), h?.autoTranslateEnabled ?? !0, async (n, r) => {
1026
- const [s, l] = n.split("::"), c = I(s ?? ""), f = (l ?? "").trim() || $(c);
1056
+ Pe(Object.keys(t.locales), x?.autoTranslateEnabled ?? !0, async (n, r) => {
1057
+ const [s, l] = n.split("::"), c = I(s ?? ""), f = (l ?? "").trim() || S(c);
1027
1058
  if (!c)
1028
1059
  return;
1029
1060
  const d = performance.now(), i = t.locales[t.mainLanguage] ?? t.baseTextByKey, p = { ...i };
@@ -1033,19 +1064,19 @@ function L(e, t) {
1033
1064
  sourceKeys: Object.keys(i).length,
1034
1065
  browserLanguage: navigator.language,
1035
1066
  browserLanguages: navigator.languages
1036
- }), t.locales[c] = p, t.languageLabels[c] = f, q(t.languageLabels), t.activeLanguage = c, A(t.locales), S(t.content, t.locales[c], t.workingDocument, t.baseTextByKey), L(e, t), z("Manual language tab created", { lang: c }), w(e, `Added ${f} tab prefilled with source text for manual translation.`, !1), r !== "auto" || !(h?.autoTranslateEnabled ?? !0)) {
1037
- r === "auto" && !(h?.autoTranslateEnabled ?? !0) && w(e, `Privacy mode is on. Added ${f} tab for manual translation only.`, !1);
1067
+ }), t.locales[c] = p, t.languageLabels[c] = f, H(t.languageLabels), t.activeLanguage = c, T(t.locales), E(t.content, t.locales[c], t.workingDocument, t.baseTextByKey), L(e, t), z("Manual language tab created", { lang: c }), w(e, `Added ${f} tab prefilled with source text for manual translation.`, !1), r !== "auto" || !(x?.autoTranslateEnabled ?? !0)) {
1068
+ r === "auto" && !(x?.autoTranslateEnabled ?? !0) && w(e, `Privacy mode is on. Added ${f} tab for manual translation only.`, !1);
1038
1069
  return;
1039
1070
  }
1040
1071
  try {
1041
1072
  const g = Object.keys(i).length;
1042
1073
  w(e, `Auto-filling ${f} translation... (0/${g})`, !0);
1043
- const x = await ve(i, c, t.mainLanguage, (U, b) => {
1044
- w(e, `Auto-filling ${f} translation... (${U}/${b})`, !0);
1074
+ const h = await $e(i, c, t.mainLanguage, (q, b) => {
1075
+ w(e, `Auto-filling ${f} translation... (${q}/${b})`, !0);
1045
1076
  });
1046
- t.locales[c] = x, A(t.locales), t.activeLanguage = c, S(t.content, x, t.workingDocument, t.baseTextByKey), L(e, t), z("Automatic translation succeeded", {
1077
+ t.locales[c] = h, T(t.locales), t.activeLanguage = c, E(t.content, h, t.workingDocument, t.baseTextByKey), L(e, t), z("Automatic translation succeeded", {
1047
1078
  lang: c,
1048
- translatedKeys: Object.keys(x).length,
1079
+ translatedKeys: Object.keys(h).length,
1049
1080
  ms: Math.round(performance.now() - d)
1050
1081
  }), w(e, `Added ${f} with auto-filled translation. Review and edit as needed.`, !1);
1051
1082
  } catch (g) {
@@ -1057,45 +1088,45 @@ function L(e, t) {
1057
1088
  }), w(e, `Auto-fill failed. ${f} stays prefilled with source text for manual editing.`, !1);
1058
1089
  }
1059
1090
  });
1060
- }), Ge(e, t);
1091
+ }), Ye(e, t);
1061
1092
  }
1062
- function H(e, t) {
1093
+ function U(e, t) {
1063
1094
  const a = Object.keys(e), o = t && e[t] ? t : C(e), n = [...navigator.languages ?? [], navigator.language].map((r) => r.toLowerCase().split("-")[0]);
1064
1095
  for (const r of n)
1065
1096
  if (a.includes(r))
1066
1097
  return r;
1067
1098
  return a.includes(o) ? o : a[0] ?? "en";
1068
1099
  }
1069
- function pe(e) {
1100
+ function be(e) {
1070
1101
  const t = e.locales[e.activeLanguage] ?? e.locales.en ?? e.baseTextByKey;
1071
- S(e.content, t, e.workingDocument, e.baseTextByKey);
1102
+ E(e.content, t, e.workingDocument, e.baseTextByKey);
1072
1103
  }
1073
- function Ke(e) {
1104
+ function Ve(e) {
1074
1105
  return new Promise((t) => window.setTimeout(t, e));
1075
1106
  }
1076
- async function Z(e, t) {
1107
+ async function Q(e, t) {
1077
1108
  const a = [0, 120, 280, 600, 1100, 1800, 2600];
1078
- let o = T(e, t);
1109
+ let o = $(e, t);
1079
1110
  if (o.nodes.length > 0)
1080
1111
  return o;
1081
1112
  for (const n of a.slice(1))
1082
- if (await Ke(n), o = T(e, t), o.nodes.length > 0)
1113
+ if (await Ve(n), o = $(e, t), o.nodes.length > 0)
1083
1114
  return o;
1084
1115
  return o;
1085
1116
  }
1086
- function Je(e, t, a) {
1087
- const o = ae(), n = {
1117
+ function We(e, t, a) {
1118
+ const o = ne(), n = {
1088
1119
  ...a,
1089
1120
  ...o
1090
- }, r = Ne(), s = Object.fromEntries(e.nodes.filter((i) => i.type === "text").map((i) => [i.key, i.value])), l = C(n), c = {
1121
+ }, r = Be(), s = Object.fromEntries(e.nodes.filter((i) => i.type === "text").map((i) => [i.key, i.value])), l = C(n), c = {
1091
1122
  ...n,
1092
1123
  [l]: { ...n[l] ?? {}, ...s }
1093
1124
  };
1094
1125
  !c.en && l === "en" && (c.en = Object.assign({}, c.en ?? {}, s));
1095
- const f = H(c, l), d = { ...r };
1126
+ const f = U(c, l), d = { ...r };
1096
1127
  return Object.keys(c).forEach((i) => {
1097
- d[i] || (d[i] = $(i));
1098
- }), q(d), {
1128
+ d[i] || (d[i] = S(i));
1129
+ }), H(d), {
1099
1130
  content: e,
1100
1131
  locales: c,
1101
1132
  workingDocument: t,
@@ -1105,20 +1136,34 @@ function Je(e, t, a) {
1105
1136
  languageLabels: d
1106
1137
  };
1107
1138
  }
1108
- function Fe() {
1109
- const e = ae();
1139
+ async function Xe() {
1140
+ const e = await he();
1141
+ if (!e?.nodes?.length)
1142
+ return;
1143
+ const t = $(document, location.pathname);
1144
+ if (!t.nodes.length)
1145
+ return;
1146
+ const a = new Map(e.nodes.map((o) => [o.key, o]));
1147
+ t.nodes.forEach((o) => {
1148
+ const n = a.get(o.key);
1149
+ !n || n.type !== o.type || (o.value = n.value, n.attrs && (o.attrs = { ...n.attrs }), n.sectionItems && (o.sectionItems = [...n.sectionItems]), R(o, document));
1150
+ });
1151
+ }
1152
+ async function Ze() {
1153
+ await Xe();
1154
+ const e = ne();
1110
1155
  if (!Object.keys(e).length)
1111
1156
  return;
1112
- const t = H(e, C(e));
1157
+ const t = U(e, C(e));
1113
1158
  if (!t || t === "en")
1114
1159
  return;
1115
- const a = T(document, location.pathname), o = e[t];
1160
+ const a = $(document, location.pathname), o = e[t];
1116
1161
  if (!o)
1117
1162
  return;
1118
1163
  const n = Object.fromEntries(a.nodes.filter((r) => r.type === "text").map((r) => [r.key, r.value]));
1119
- S(a, o, document, n);
1164
+ E(a, o, document, n);
1120
1165
  }
1121
- function Ye(e) {
1166
+ function Qe(e) {
1122
1167
  const t = e.pages.length ? e.pages : ["/"];
1123
1168
  document.documentElement.style.margin = "0", document.documentElement.style.padding = "0", document.documentElement.style.background = u === "dark" ? "#020617" : "#f1f5f9", document.body.style.margin = "0", document.body.style.padding = "0", document.body.style.background = u === "dark" ? "#020617" : "#f1f5f9", document.body.innerHTML = `
1124
1169
  <div id="facms-app" class="h-screen w-screen grid grid-cols-1 lg:grid-cols-[760px_1fr] bg-slate-100 dark:bg-slate-950 text-slate-900 dark:text-slate-100">
@@ -1159,56 +1204,56 @@ function Ye(e) {
1159
1204
  });
1160
1205
  });
1161
1206
  };
1162
- le(u), a.addEventListener("load", async () => {
1207
+ de(u), a.addEventListener("load", async () => {
1163
1208
  const f = a.contentDocument;
1164
1209
  if (f) {
1165
- B(!0, `Scanning page content for ${s}...`);
1210
+ P(!0, `Scanning page content for ${s}...`);
1166
1211
  try {
1167
1212
  let d = r.get(s);
1168
1213
  if (d) {
1169
1214
  d.workingDocument = f;
1170
- const i = d.content.nodes.length ? T(f, s) : await Z(f, s);
1215
+ const i = d.content.nodes.length ? $(f, s) : await Q(f, s);
1171
1216
  i.nodes.length && !d.content.nodes.length && (d.content = i);
1172
1217
  } else {
1173
- const i = await Z(f, s);
1174
- d = Je(i, f, l), r.set(s, d);
1218
+ const i = await Q(f, s);
1219
+ d = We(i, f, l), r.set(s, d);
1175
1220
  }
1176
- pe(d), te(d.content), L(o, d);
1221
+ be(d), ae(d.content), L(o, d);
1177
1222
  } finally {
1178
- B(!1, "Loading");
1223
+ P(!1, "Loading");
1179
1224
  }
1180
1225
  }
1181
- }), c(), me().then((f) => {
1226
+ }), c(), xe().then((f) => {
1182
1227
  l = f, a.src = s;
1183
1228
  });
1184
1229
  }
1185
- async function Q() {
1186
- if (ie(), ce(), !await ue())
1230
+ async function ee() {
1231
+ if (ce(), ue(), !await pe())
1187
1232
  return;
1188
- const e = await de(), t = () => Ye(e);
1189
- if (!R) {
1190
- fe(t);
1233
+ const e = await fe(), t = () => Qe(e);
1234
+ if (!D) {
1235
+ ge(t);
1191
1236
  return;
1192
1237
  }
1193
1238
  t();
1194
1239
  }
1195
- async function We() {
1196
- const e = await de(), a = new URLSearchParams(location.search).get("__facms") === "1";
1240
+ async function et() {
1241
+ const e = await fe(), a = new URLSearchParams(location.search).get("__facms") === "1";
1197
1242
  if (location.pathname !== e.dashboardPath && !a) {
1198
- Fe();
1243
+ Ze();
1199
1244
  return;
1200
1245
  }
1201
- if (ie(), ce(), !!await ue()) {
1202
- if (!R) {
1203
- fe(() => {
1204
- Q();
1246
+ if (ce(), ue(), !!await pe()) {
1247
+ if (!D) {
1248
+ ge(() => {
1249
+ ee();
1205
1250
  });
1206
1251
  return;
1207
1252
  }
1208
- Q();
1253
+ ee();
1209
1254
  }
1210
1255
  }
1211
1256
  export {
1212
- Q as launchDashboard,
1213
- We as registerCmsLauncher
1257
+ ee as launchDashboard,
1258
+ et as registerCmsLauncher
1214
1259
  };
@@ -3,5 +3,6 @@ import type { RuntimeLocaleMap } from "./types.js";
3
3
  export declare function saveCachedContent(content: CmsContentFile): void;
4
4
  export declare function loadLocales(): RuntimeLocaleMap;
5
5
  export declare function saveLocales(locales: RuntimeLocaleMap): void;
6
+ export declare function loadRuntimeContent(): Promise<CmsContentFile | null>;
6
7
  export declare function loadRuntimeLocales(): Promise<RuntimeLocaleMap>;
7
8
  export declare function downloadPatchFile(payload: unknown): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frontend-auto-cms",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Turn any frontend into an editable mini-CMS with one import.",
5
5
  "type": "module",
6
6
  "license": "MIT",