@llmnative/react 1.15.4 → 1.16.0

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/index.mjs CHANGED
@@ -3762,7 +3762,7 @@ var Di = "rounded-lg border border-border bg-card text-card-foreground shadow-sm
3762
3762
  }))
3763
3763
  }, e);
3764
3764
  }, Ii = ({ menuKey: e, as: n = "ul", badges: r = {}, before: i = void 0, after: a = void 0, wrapperClassName: o = void 0, className: s = void 0, headerClassName: c = void 0, itemClassName: u = void 0, linkClassName: d = void 0, iconClassName: f = void 0, textClassName: p = void 0, badgeClassName: m = void 0, arrowClassName: g = void 0, submenuClassName: _ = void 0 }) => {
3765
- let y = Hh(e), b = Y("menu"), x = ({ item: e, index: i }) => {
3765
+ let y = tg(e), b = Y("menu"), x = ({ item: e, index: i }) => {
3766
3766
  let [a, o] = h(e.active);
3767
3767
  l(() => {
3768
3768
  o(e.active);
@@ -7888,30 +7888,36 @@ var bc = 120, xc = 88, Sc = (e) => {
7888
7888
  handleRemove: y
7889
7889
  };
7890
7890
  }, Oc = (e, t, n, r, i, a, o) => {
7891
- let { value: s, handleChange: c, formWrapClass: l } = Dd({
7891
+ let { value: s, handleChange: c, formWrapClass: u } = Dd({
7892
7892
  name: e,
7893
7893
  onChange: t,
7894
7894
  wrapperClassName: n
7895
- }), [u, d] = h(null), f = Dc({
7895
+ }), [d, f] = h(null), p = m(s), g = Dc({
7896
7896
  initialFiles: Array.isArray(s) ? s : [],
7897
- onFilesChange: (t) => c({ target: {
7898
- name: e,
7899
- value: t
7900
- } }),
7897
+ onFilesChange: (t) => {
7898
+ p.current = t, c({ target: {
7899
+ name: e,
7900
+ value: t
7901
+ } });
7902
+ },
7901
7903
  uploadPath: r,
7902
7904
  srcsetWidths: i,
7903
7905
  storageKey: a,
7904
7906
  storageProvider: o
7905
- }), p = (e) => {
7906
- u && (f.updateFile(u.key, e), d(null));
7907
+ });
7908
+ l(() => {
7909
+ s !== p.current && (p.current = s, g.setFiles(Array.isArray(s) ? s : []));
7910
+ }, [s]);
7911
+ let _ = (e) => {
7912
+ d && (g.updateFile(d.key, e), f(null));
7907
7913
  };
7908
7914
  return {
7909
- ...f,
7910
- formWrapClass: l,
7911
- currentFile: u,
7912
- handleSave: p,
7913
- handleEdit: (e) => d(e),
7914
- handleClose: () => d(null)
7915
+ ...g,
7916
+ formWrapClass: u,
7917
+ currentFile: d,
7918
+ handleSave: _,
7919
+ handleEdit: (e) => f(e),
7920
+ handleClose: () => f(null)
7915
7921
  };
7916
7922
  }, kc = ({ name: e, fileInputRef: n, accept: r, onUpload: i, onChange: a, required: o = !1, multiple: s = !1, height: c, width: l, feedback: u }) => /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement("button", {
7917
7923
  type: "button",
@@ -8362,6 +8368,10 @@ var al = (e, t) => {
8362
8368
  if (typeof e.type == "string") return e.type;
8363
8369
  }
8364
8370
  if (typeof t.error == "string") return t.error;
8371
+ if (Array.isArray(t.errors) && t.errors.length > 0) {
8372
+ let e = t.errors[0];
8373
+ if (e && typeof e.message == "string") return e.message;
8374
+ }
8365
8375
  if (typeof t.message == "string") return t.message;
8366
8376
  if (typeof t.detail == "string") return t.detail;
8367
8377
  if (typeof t.status == "number") return `HTTP ${t.status}`;
@@ -13833,7 +13843,7 @@ function Rf({ group: e, expanded: n, openItems: r, showIcons: i, onToggle: a })
13833
13843
  }))));
13834
13844
  }
13835
13845
  function zf({ menuKey: e, items: n, defaultCollapsed: r = !1, collapsed: i, onCollapsedChange: a, showIcons: o = !0, showCollapseButton: c = !0, footer: u, header: d, embedded: f = !1 }) {
13836
- let { pathname: p } = x(), g = Y("sideNav"), _ = Hh(e ?? ""), v = n ?? (e ? Mf(_) : []), y = i !== void 0, [b, S] = h(r), C = i === void 0 ? b : i, w = s((e) => {
13846
+ let { pathname: p } = x(), g = Y("sideNav"), _ = tg(e ?? ""), v = n ?? (e ? Mf(_) : []), y = i !== void 0, [b, S] = h(r), C = i === void 0 ? b : i, w = s((e) => {
13837
13847
  let t = typeof e == "function" ? e(C) : e;
13838
13848
  y ? a?.(t) : S(t);
13839
13849
  }, [
@@ -16950,7 +16960,87 @@ var fh = ({ id: t, label: n, description: r, configKey: i, requiredConfigKeys: a
16950
16960
  return dh(o);
16951
16961
  }
16952
16962
  };
16953
- }, ph = fh({
16963
+ }, ph = "https://api.cloudflare.com/client/v4", mh = 100, hh = 5, gh = /-guard-/, _h = "Cloudflare Workers AI", vh = "Open-weight models (Llama, GPT-OSS, Qwen, Gemma, GLM…) with a free daily allowance.", yh = "https://dash.cloudflare.com/?to=/:account/ai/workers-ai", bh = "Cloudflare dashboard → AI → Workers AI → REST API: create a Workers AI API token and copy the Account ID.", xh = [{
16964
+ key: "apiKey",
16965
+ label: "API Token",
16966
+ type: "password"
16967
+ }, {
16968
+ key: "accountId",
16969
+ label: "Account ID",
16970
+ type: "text",
16971
+ placeholder: "32-character account id"
16972
+ }], Sh = (e, t) => (e.properties ?? []).some((e) => e.property_id === t && String(e.value) === "true"), Ch = (e) => e?.map((e) => e.role === "assistant" && !e.content ? {
16973
+ ...e,
16974
+ content: ""
16975
+ } : e), wh = ({ accountId: e, defaultModel: t = "@cf/meta/llama-3.3-70b-instruct-fp8-fast", includePaidModels: n = !1 }) => {
16976
+ let r = `${ph}/accounts/${encodeURIComponent(e.trim())}`, i = `${r}/ai/models/search`, a = (e, t, n) => {
16977
+ let r = new URLSearchParams({
16978
+ task: "Text Generation",
16979
+ hide_experimental: "true",
16980
+ page: String(t),
16981
+ per_page: String(n)
16982
+ });
16983
+ return Wt(`${i}?${r}`, { headers: { Authorization: `Bearer ${e}` } }, al);
16984
+ }, o = fh({
16985
+ id: "cloudflare",
16986
+ label: _h,
16987
+ description: vh,
16988
+ configKey: "cloudflare",
16989
+ requiredConfigKeys: ["ai.cloudflare.apiToken", "ai.cloudflare.accountId"],
16990
+ defaultModel: t,
16991
+ fallbackModels: [
16992
+ t,
16993
+ "@cf/openai/gpt-oss-120b",
16994
+ "@cf/qwen/qwen3-30b-a3b-fp8",
16995
+ "@cf/meta/llama-4-scout-17b-16e-instruct"
16996
+ ].filter((e, t, n) => n.indexOf(e) === t),
16997
+ baseUrl: `${r}/ai/v1`,
16998
+ dashboardUrl: yh,
16999
+ credentialsHint: bh,
17000
+ validateApiKey: async (e) => {
17001
+ try {
17002
+ let t = await a(e, 1, 1);
17003
+ return t === null ? {
17004
+ valid: !1,
17005
+ error: "Nessuna risposta dal server (CORS o proxy non attivo)"
17006
+ } : t.success ? { valid: !0 } : {
17007
+ valid: !1,
17008
+ error: ul(t)
17009
+ };
17010
+ } catch (e) {
17011
+ return {
17012
+ valid: !1,
17013
+ error: ul(e)
17014
+ };
17015
+ }
17016
+ }
17017
+ });
17018
+ return {
17019
+ ...o,
17020
+ credentialFields: xh,
17021
+ discoverModels: async (e) => {
17022
+ let t = [];
17023
+ for (let r = 1; r <= hh; r++) {
17024
+ let i = await a(e, r, mh), o = Array.isArray(i?.result) ? i.result : [];
17025
+ if (o.filter((e) => !gh.test(e.name ?? "")).filter((e) => n || !Sh(e, "require_workers_paid")).forEach((e) => {
17026
+ e.name && t.push(e.name);
17027
+ }), o.length < mh) break;
17028
+ }
17029
+ return t;
17030
+ },
17031
+ complete: (e, t) => o.complete(e, {
17032
+ ...t,
17033
+ history: Ch(t.history)
17034
+ })
17035
+ };
17036
+ }, Th = {
17037
+ id: "cloudflare",
17038
+ label: _h,
17039
+ description: vh,
17040
+ credentialFields: xh,
17041
+ credentialsUrl: yh,
17042
+ credentialsHint: bh
17043
+ }, Eh = fh({
16954
17044
  id: "deepseek",
16955
17045
  label: "DeepSeek",
16956
17046
  description: "Cost-efficient reasoning and chat models.",
@@ -16960,15 +17050,15 @@ var fh = ({ id: t, label: n, description: r, configKey: i, requiredConfigKeys: a
16960
17050
  baseUrl: "https://api.deepseek.com",
16961
17051
  dashboardUrl: "https://platform.deepseek.com/api_keys",
16962
17052
  credentialsHint: "DeepSeek platform → API Keys → Create new API key."
16963
- }), mh = "https://generativelanguage.googleapis.com/v1beta/models", hh = "https://generativelanguage.googleapis.com/v1beta/models";
16964
- function gh(e) {
17053
+ }), Dh = "https://generativelanguage.googleapis.com/v1beta/models", Oh = "https://generativelanguage.googleapis.com/v1beta/models";
17054
+ function kh(e) {
16965
17055
  return [{ function_declarations: e.map((e) => ({
16966
17056
  name: e.name,
16967
17057
  description: e.description,
16968
17058
  parameters: e.inputSchema
16969
17059
  })) }];
16970
17060
  }
16971
- function _h(e) {
17061
+ function Ah(e) {
16972
17062
  if (e.role === "user") return {
16973
17063
  role: "user",
16974
17064
  parts: [{ text: e.content }]
@@ -16993,7 +17083,7 @@ function _h(e) {
16993
17083
  } }))
16994
17084
  };
16995
17085
  }
16996
- function vh(e) {
17086
+ function jh(e) {
16997
17087
  let t = e?.candidates?.[0]?.content?.parts;
16998
17088
  if (!Array.isArray(t)) return null;
16999
17089
  let n = t.filter((e) => typeof e?.text == "string").map((e) => e.text), r = t.filter((e) => e?.functionCall);
@@ -17012,7 +17102,7 @@ function vh(e) {
17012
17102
  text: i
17013
17103
  } : null;
17014
17104
  }
17015
- var yh = {
17105
+ var Mh = {
17016
17106
  id: "gemini",
17017
17107
  label: "Gemini",
17018
17108
  description: "Google's multimodal Gemini model family.",
@@ -17036,12 +17126,12 @@ var yh = {
17036
17126
  supportsDocuments: !0
17037
17127
  },
17038
17128
  discoverModels: async (e) => {
17039
- let t = await Wt(`${mh}?key=${e}`, null, al);
17129
+ let t = await Wt(`${Dh}?key=${e}`, null, al);
17040
17130
  return Array.isArray(t?.models) ? t.models.map((e) => e.name?.replace(/^models\//, "")).filter(Boolean) : [];
17041
17131
  },
17042
17132
  validateApiKey: async (e) => {
17043
17133
  try {
17044
- let t = await Wt(`${mh}?key=${e}`, null, al);
17134
+ let t = await Wt(`${Dh}?key=${e}`, null, al);
17045
17135
  return t === null ? {
17046
17136
  valid: !1,
17047
17137
  error: "Nessuna risposta dal server (CORS o rete)"
@@ -17062,22 +17152,22 @@ var yh = {
17062
17152
  mime_type: e.mimeType,
17063
17153
  data: e.base64
17064
17154
  } }), { text: n.prompt }];
17065
- return vh(await Wt(`${hh}/${n.model}:generateContent?key=${t}`, {
17155
+ return jh(await Wt(`${Oh}/${n.model}:generateContent?key=${t}`, {
17066
17156
  method: "POST",
17067
17157
  headers: n.logId ? { [e]: n.logId } : void 0,
17068
17158
  body: {
17069
- contents: [...(n.history ?? []).map(_h), ...n.prompt ? [{
17159
+ contents: [...(n.history ?? []).map(Ah), ...n.prompt ? [{
17070
17160
  role: "user",
17071
17161
  parts: r
17072
17162
  }] : []],
17073
17163
  ...n.role ? { systemInstruction: { parts: [{ text: Jc.parseRole(n.role, n) }] } } : {},
17074
- ...n.tools?.length ? { tools: gh(n.tools) } : {},
17164
+ ...n.tools?.length ? { tools: kh(n.tools) } : {},
17075
17165
  generationConfig: typeof n.temperature == "number" ? { temperature: n.temperature } : void 0
17076
17166
  },
17077
17167
  signal: n.signal
17078
17168
  }, al));
17079
17169
  }
17080
- }, bh = fh({
17170
+ }, Nh = fh({
17081
17171
  id: "mistral",
17082
17172
  label: "Mistral",
17083
17173
  description: "European-hosted open and commercial language models.",
@@ -17091,7 +17181,7 @@ var yh = {
17091
17181
  baseUrl: "https://api.mistral.ai/v1",
17092
17182
  dashboardUrl: "https://console.mistral.ai/api-keys",
17093
17183
  credentialsHint: "Mistral Console → API Keys → Create new key."
17094
- }), xh = fh({
17184
+ }), Ph = fh({
17095
17185
  id: "openai",
17096
17186
  label: "OpenAI",
17097
17187
  description: "GPT models via the OpenAI API.",
@@ -17109,7 +17199,7 @@ var yh = {
17109
17199
  baseUrl: "https://api.openai.com/v1",
17110
17200
  dashboardUrl: "https://platform.openai.com/api-keys",
17111
17201
  credentialsHint: "OpenAI dashboard → API keys → Create new secret key."
17112
- }), Sh = "https://opencode.ai/zen/v1/models", Ch = "https://opencode.ai/zen/v1/chat/completions", wh = {
17202
+ }), Fh = "https://opencode.ai/zen/v1/models", Ih = "https://opencode.ai/zen/v1/chat/completions", Lh = {
17113
17203
  id: "opencode",
17114
17204
  label: "OpenCode",
17115
17205
  description: "OpenCode Zen — a curated set of coding-focused models.",
@@ -17141,7 +17231,7 @@ var yh = {
17141
17231
  supportsDocuments: !0
17142
17232
  },
17143
17233
  discoverModels: async (e) => {
17144
- let t = await Wt(Sh, { headers: { Authorization: `Bearer ${e}` } }, al);
17234
+ let t = await Wt(Fh, { headers: { Authorization: `Bearer ${e}` } }, al);
17145
17235
  return (Array.isArray(t?.data) ? t.data : Array.isArray(t?.models) ? t.models : Array.isArray(t) ? t : []).map((e) => e.id).filter((e) => typeof e == "string" && e.length > 0);
17146
17236
  },
17147
17237
  complete: async (t, n) => {
@@ -17157,7 +17247,7 @@ var yh = {
17157
17247
  }).concat({
17158
17248
  type: "text",
17159
17249
  text: n.prompt
17160
- }) : n.prompt, a = await Wt(Ch, {
17250
+ }) : n.prompt, a = await Wt(Ih, {
17161
17251
  method: "POST",
17162
17252
  headers: {
17163
17253
  Authorization: `Bearer ${t}`,
@@ -17184,7 +17274,7 @@ var yh = {
17184
17274
  if (!a) throw dl("OpenCode");
17185
17275
  return dh(a);
17186
17276
  }
17187
- }, Th = fh({
17277
+ }, Rh = fh({
17188
17278
  id: "openrouter",
17189
17279
  label: "OpenRouter",
17190
17280
  description: "Unified access to many model providers through one API.",
@@ -17218,7 +17308,7 @@ var yh = {
17218
17308
  };
17219
17309
  }
17220
17310
  }
17221
- }), Eh = {
17311
+ }), zh = {
17222
17312
  dbRealtime: {
17223
17313
  service: "data",
17224
17314
  create: () => new Rm()
@@ -17235,7 +17325,7 @@ var yh = {
17235
17325
  service: "auth",
17236
17326
  create: () => new Hm()
17237
17327
  }
17238
- }, Dh = {
17328
+ }, Bh = {
17239
17329
  googleAuth: {
17240
17330
  service: "auth",
17241
17331
  create: () => new ym()
@@ -17249,10 +17339,10 @@ var yh = {
17249
17339
  create: (e) => new qm(e.serviceAccount),
17250
17340
  when: (e) => !!e.serviceAccount
17251
17341
  }
17252
- }, Oh = { dropboxAuth: {
17342
+ }, Vh = { dropboxAuth: {
17253
17343
  service: "auth",
17254
17344
  create: (e) => new Ym(e)
17255
- } }, kh = {
17345
+ } }, Hh = {
17256
17346
  supabaseDb: {
17257
17347
  service: "data",
17258
17348
  create: (e) => new co(e)
@@ -17265,30 +17355,39 @@ var yh = {
17265
17355
  service: "auth",
17266
17356
  create: (e) => new eh(e)
17267
17357
  }
17268
- }, Ah = { mock: {
17358
+ }, Uh = { mock: {
17269
17359
  service: "data",
17270
17360
  create: (e) => new go(e?.data)
17271
- } }, jh = (e, t) => ({
17361
+ } }, Wh = (e, t) => ({
17272
17362
  service: "ai",
17273
17363
  create: (n) => new _l(e, n?.[t] || ""),
17274
17364
  when: (e) => !!e?.[t]
17275
- }), Mh = {
17276
- firebase: Eh,
17277
- google: Dh,
17278
- dropbox: Oh,
17279
- supabase: kh,
17280
- mock: Ah,
17365
+ }), Gh = {
17366
+ firebase: zh,
17367
+ google: Bh,
17368
+ dropbox: Vh,
17369
+ supabase: Hh,
17370
+ mock: Uh,
17281
17371
  ai: {
17282
- openai: jh(xh, "openaiApiKey"),
17283
- openrouter: jh(Th, "openRouterApiKey"),
17284
- opencode: jh(wh, "openCodeApiKey"),
17285
- deepseek: jh(ph, "deepSeekApiKey"),
17286
- gemini: jh(yh, "geminiApiKey"),
17287
- anthropic: jh(oh, "anthropicApiKey"),
17288
- mistral: jh(bh, "mistralApiKey")
17372
+ openai: Wh(Ph, "openaiApiKey"),
17373
+ openrouter: Wh(Rh, "openRouterApiKey"),
17374
+ opencode: Wh(Lh, "openCodeApiKey"),
17375
+ deepseek: Wh(Eh, "deepSeekApiKey"),
17376
+ gemini: Wh(Mh, "geminiApiKey"),
17377
+ anthropic: Wh(oh, "anthropicApiKey"),
17378
+ mistral: Wh(Nh, "mistralApiKey"),
17379
+ cloudflare: {
17380
+ service: "ai",
17381
+ create: (e) => new _l(wh({
17382
+ accountId: e?.cloudflare?.accountId?.trim() || "",
17383
+ defaultModel: e?.cloudflare?.defaultModel?.trim() || void 0,
17384
+ includePaidModels: e?.cloudflare?.includePaidModels
17385
+ }), e?.cloudflare?.apiToken?.trim() || ""),
17386
+ when: (e) => !!e?.cloudflare?.apiToken?.trim() && !!e?.cloudflare?.accountId?.trim()
17387
+ }
17289
17388
  }
17290
- }, Nh = () => /* @__PURE__ */ t.createElement("div", { className: "flex min-h-[calc(100vh-4rem)] items-center justify-center" }, /* @__PURE__ */ t.createElement("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-muted border-t-primary" }));
17291
- function Ph(e, t) {
17389
+ }, Kh = () => /* @__PURE__ */ t.createElement("div", { className: "flex min-h-[calc(100vh-4rem)] items-center justify-center" }, /* @__PURE__ */ t.createElement("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-muted border-t-primary" }));
17390
+ function qh(e, t) {
17292
17391
  if (!t) return;
17293
17392
  let n = t, r = typeof t == "object" && !Array.isArray(t) ? Object.entries(n) : [];
17294
17393
  if (r.length > 0 && r.every(([, e]) => typeof e == "object" && !!e)) {
@@ -17297,10 +17396,10 @@ function Ph(e, t) {
17297
17396
  }
17298
17397
  e.custom = t;
17299
17398
  }
17300
- function Fh(e, t, n = "default") {
17399
+ function Jh(e, t, n = "default") {
17301
17400
  return t && e[t] ? t : Object.keys(e)[0] ?? n;
17302
17401
  }
17303
- function Ih(e = {}) {
17402
+ function Yh(e = {}) {
17304
17403
  let t = {
17305
17404
  data: {},
17306
17405
  storage: {},
@@ -17309,24 +17408,24 @@ function Ih(e = {}) {
17309
17408
  ai: {},
17310
17409
  credentials: {}
17311
17410
  }, n = (e) => t[e] ??= {};
17312
- for (let [t, r] of Object.entries(Mh)) {
17411
+ for (let [t, r] of Object.entries(Gh)) {
17313
17412
  let i = e[t];
17314
17413
  if (i !== void 0) for (let [e, t] of Object.entries(r)) t.when && !t.when(i) || (n(t.service)[e] = t.create(i));
17315
17414
  }
17316
- for (let [t, r] of Object.entries(e.custom ?? {})) Ph(n(t), r);
17415
+ for (let [t, r] of Object.entries(e.custom ?? {})) qh(n(t), r);
17317
17416
  Object.keys(t.data).length === 0 && (t.data.mock = new go()), Object.keys(t.auth).length === 0 && (t.auth.googleAuth = new ym());
17318
17417
  let r = e.services ?? {}, i = {};
17319
17418
  for (let [e, n] of Object.entries(t)) i[e] = {
17320
17419
  registry: n,
17321
- defaultKey: Fh(n, r[e])
17420
+ defaultKey: Jh(n, r[e])
17322
17421
  };
17323
17422
  return i;
17324
17423
  }
17325
- var Lh = {}, Rh = (e) => {
17326
- Lh = e;
17327
- }, zh = (e) => Lh[e] || [];
17328
- function Bh({ contextProviders: e, providers: n = {}, appName: r = "LLM Native", scrapeConfig: i, iconProvider: a, googleMaps: o, themeProvider: s, i18n: c, children: l, errorReportUrl: u, debug: d, basename: f }) {
17329
- let [p, g] = h(() => Ih(n)), v = m(p);
17424
+ var Xh = {}, Zh = (e) => {
17425
+ Xh = e;
17426
+ }, Qh = (e) => Xh[e] || [];
17427
+ function $h({ contextProviders: e, providers: n = {}, appName: r = "LLM Native", scrapeConfig: i, iconProvider: a, googleMaps: o, themeProvider: s, i18n: c, children: l, errorReportUrl: u, debug: d, basename: f }) {
17428
+ let [p, g] = h(() => Yh(n)), v = m(p);
17330
17429
  v.current = p;
17331
17430
  let y = m(void 0);
17332
17431
  y.current ||= (async (e, t, n) => {
@@ -17367,8 +17466,8 @@ function Bh({ contextProviders: e, providers: n = {}, appName: r = "LLM Native",
17367
17466
  setProvider: b
17368
17467
  }, /* @__PURE__ */ t.createElement(ti, p.auth, /* @__PURE__ */ t.createElement(wm, p.credentials, /* @__PURE__ */ t.createElement(wi, p.data, /* @__PURE__ */ t.createElement(cc, p.storage, /* @__PURE__ */ t.createElement(xm, p.email, /* @__PURE__ */ t.createElement(Qc, p.ai, /* @__PURE__ */ t.createElement(Sr, { config: a }, /* @__PURE__ */ t.createElement(pf, { config: o }, /* @__PURE__ */ t.createElement(Cp, { appName: r }, /* @__PURE__ */ t.createElement(Pn, { config: c }, /* @__PURE__ */ t.createElement(xn, { config: s }, /* @__PURE__ */ t.createElement(x, null, l))))))))))))))));
17369
17468
  }
17370
- function Vh({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, children: a, ...o }) {
17371
- Rh(r);
17469
+ function eg({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, children: a, ...o }) {
17470
+ Zh(r);
17372
17471
  let s = ({ children: e }) => /* @__PURE__ */ t.createElement(t.Fragment, null, e), c = ({ pageSource: e, message: n }) => /* @__PURE__ */ t.createElement(Io, { variant: "warning" }, "Missing Page: ", e, n && /* @__PURE__ */ t.createElement("code", { className: "ml-2" }, n));
17373
17472
  function l(r, a, l) {
17374
17473
  let u = `./pages${a.component ? "/" + a.component : a.path === "/" ? "/Home" : et.toCamel(a.path.split("*")[0])}.js`, d = a.page || t.lazy(() => e(u).then((e) => typeof e.default == "function" ? { default: e.default } : (console.warn(`⚠️ Invalid default export in ${u}`), { default: () => /* @__PURE__ */ t.createElement(c, { pageSource: u }) })).catch((e) => (console.error(`❌ Failed to load ${u}:`, e), { default: () => /* @__PURE__ */ t.createElement(c, {
@@ -17382,16 +17481,16 @@ function Vh({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, chil
17382
17481
  key: a.path,
17383
17482
  reportUrl: o.errorReportUrl,
17384
17483
  debug: o.debug
17385
- }, /* @__PURE__ */ t.createElement(i, { fallback: /* @__PURE__ */ t.createElement(Nh, null) }, /* @__PURE__ */ t.createElement(d, null))))
17484
+ }, /* @__PURE__ */ t.createElement(i, { fallback: /* @__PURE__ */ t.createElement(Kh, null) }, /* @__PURE__ */ t.createElement(d, null))))
17386
17485
  });
17387
17486
  }
17388
17487
  let u = (e) => Object.keys(e).flatMap((t) => e[t].flatMap((e, n) => [e.path && l(t, e, n), e.children && u({ children: e.children })].filter(Boolean)));
17389
- return /* @__PURE__ */ t.createElement(Bh, o, a, /* @__PURE__ */ t.createElement(b, null, /* @__PURE__ */ t.createElement(y, {
17488
+ return /* @__PURE__ */ t.createElement($h, o, a, /* @__PURE__ */ t.createElement(b, null, /* @__PURE__ */ t.createElement(y, {
17390
17489
  path: ci,
17391
17490
  element: /* @__PURE__ */ t.createElement(hi, null)
17392
17491
  }), /* @__PURE__ */ t.createElement(t.Fragment, null, u({
17393
17492
  default: [{ path: "/" }],
17394
- ...Lh,
17493
+ ...Xh,
17395
17494
  _auth: [{
17396
17495
  path: "/users",
17397
17496
  page: cm,
@@ -17402,8 +17501,8 @@ function Vh({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, chil
17402
17501
  element: /* @__PURE__ */ t.createElement(lm, null)
17403
17502
  })));
17404
17503
  }
17405
- var Hh = (e) => {
17406
- let t = zh(e), n = x(), r = (e) => e.map((e) => {
17504
+ var tg = (e) => {
17505
+ let t = Qh(e), n = x(), r = (e) => e.map((e) => {
17407
17506
  let t = n.pathname === e.path, i = e.children ? r(e.children) : [], a = t || i.some((e) => e.active);
17408
17507
  return {
17409
17508
  ...e,
@@ -17412,7 +17511,7 @@ var Hh = (e) => {
17412
17511
  };
17413
17512
  });
17414
17513
  return p(() => r(t), [n.pathname]);
17415
- }, Uh = {
17514
+ }, ng = {
17416
17515
  common: {
17417
17516
  save: "Salva",
17418
17517
  cancel: "Annulla",
@@ -17581,7 +17680,7 @@ var Hh = (e) => {
17581
17680
  notConfigured: "La ricerca indirizzi non è configurata (manca la API key Google Maps).",
17582
17681
  loadError: "Impossibile caricare la ricerca indirizzi."
17583
17682
  }
17584
- }, Wh = {
17683
+ }, rg = {
17585
17684
  common: {
17586
17685
  save: "Speichern",
17587
17686
  cancel: "Abbrechen",
@@ -17750,7 +17849,7 @@ var Hh = (e) => {
17750
17849
  notConfigured: "Adresssuche ist nicht konfiguriert (Google Maps API-Schlüssel fehlt).",
17751
17850
  loadError: "Adresssuche konnte nicht geladen werden."
17752
17851
  }
17753
- }, Gh = {
17852
+ }, ig = {
17754
17853
  common: {
17755
17854
  save: "Сохранить",
17756
17855
  cancel: "Отменить",
@@ -17919,7 +18018,7 @@ var Hh = (e) => {
17919
18018
  notConfigured: "Поиск адресов не настроен (отсутствует ключ Google Maps API).",
17920
18019
  loadError: "Не удалось загрузить поиск адресов."
17921
18020
  }
17922
- }, Kh = {
18021
+ }, ag = {
17923
18022
  common: {
17924
18023
  save: "保存",
17925
18024
  cancel: "取消",
@@ -18088,7 +18187,7 @@ var Hh = (e) => {
18088
18187
  notConfigured: "地址搜索未配置(缺少 Google Maps API 密钥)。",
18089
18188
  loadError: "无法加载地址搜索。"
18090
18189
  }
18091
- }, qh = {
18190
+ }, og = {
18092
18191
  common: {
18093
18192
  save: "حفظ",
18094
18193
  cancel: "إلغاء",
@@ -18257,22 +18356,22 @@ var Hh = (e) => {
18257
18356
  notConfigured: "البحث عن العناوين غير مُعد (مفتاح Google Maps API مفقود).",
18258
18357
  loadError: "تعذر تحميل البحث عن العناوين."
18259
18358
  }
18260
- }, Jh = /* @__PURE__ */ Je({
18261
- ar: () => qh,
18262
- de: () => Wh,
18359
+ }, sg = /* @__PURE__ */ Je({
18360
+ ar: () => og,
18361
+ de: () => rg,
18263
18362
  en: () => wn,
18264
- it: () => Uh,
18265
- ru: () => Gh,
18266
- zh: () => Kh
18267
- }), Yh = (e) => ya("api", e);
18363
+ it: () => ng,
18364
+ ru: () => ig,
18365
+ zh: () => ag
18366
+ }), cg = (e) => ya("api", e);
18268
18367
  //#endregion
18269
18368
  //#region src/providers/api/direct.ts
18270
- async function Xh(e) {
18369
+ async function lg(e) {
18271
18370
  if (!e.ok) throw Error(`ApiProvider request failed: ${e.status} ${e.statusText}`);
18272
18371
  let t = await e.text();
18273
18372
  return t ? JSON.parse(t) : void 0;
18274
18373
  }
18275
- var Zh = class {
18374
+ var ug = class {
18276
18375
  config;
18277
18376
  constructor(e) {
18278
18377
  this.config = e;
@@ -18287,7 +18386,7 @@ var Zh = class {
18287
18386
  ...e.body,
18288
18387
  ...this.config.body
18289
18388
  };
18290
- return Xh(await al(n.toString(), {
18389
+ return lg(await al(n.toString(), {
18291
18390
  method: t,
18292
18391
  headers: {
18293
18392
  "Content-Type": "application/json",
@@ -18296,7 +18395,7 @@ var Zh = class {
18296
18395
  body: t === "GET" || t === "HEAD" ? void 0 : JSON.stringify(r)
18297
18396
  }));
18298
18397
  }
18299
- }, Qh = class {
18398
+ }, dg = class {
18300
18399
  resolver;
18301
18400
  constructor(e) {
18302
18401
  this.resolver = e;
@@ -18304,7 +18403,7 @@ var Zh = class {
18304
18403
  async fetch(e) {
18305
18404
  return this.resolver(e);
18306
18405
  }
18307
- }, $h = class {
18406
+ }, fg = class {
18308
18407
  config;
18309
18408
  constructor(e) {
18310
18409
  this.config = e;
@@ -18315,7 +18414,7 @@ var Zh = class {
18315
18414
  request: e
18316
18415
  }, void 0, this.config.region);
18317
18416
  }
18318
- }, eg = class {
18417
+ }, pg = class {
18319
18418
  config;
18320
18419
  constructor(e) {
18321
18420
  this.config = e;
@@ -18328,7 +18427,7 @@ var Zh = class {
18328
18427
  if (n) throw n;
18329
18428
  return t;
18330
18429
  }
18331
- }, tg = [
18430
+ }, mg = [
18332
18431
  {
18333
18432
  id: "resend",
18334
18433
  label: "Resend",
@@ -18439,7 +18538,7 @@ var Zh = class {
18439
18538
  ],
18440
18539
  credentialsHint: "Ask your mail host or hosting provider for the SMTP host, port, and credentials."
18441
18540
  }
18442
- ], ng = [
18541
+ ], hg = [
18443
18542
  {
18444
18543
  id: "cloudflare_pages",
18445
18544
  label: "Cloudflare Pages",
@@ -18669,14 +18768,14 @@ var Zh = class {
18669
18768
  description: "No vendor — packages the build as a downloadable archive for self-hosting anywhere else.",
18670
18769
  credentialFields: []
18671
18770
  }
18672
- ], rg = [
18673
- xh,
18674
- Th,
18675
- wh,
18676
- ph,
18677
- yh,
18771
+ ], gg = [
18772
+ Ph,
18773
+ Rh,
18774
+ Lh,
18775
+ Eh,
18776
+ Mh,
18678
18777
  oh,
18679
- bh,
18778
+ Nh,
18680
18779
  fh({
18681
18780
  id: "glm",
18682
18781
  label: "ZhipuAI (GLM)",
@@ -18694,7 +18793,7 @@ var Zh = class {
18694
18793
  dashboardUrl: "https://bigmodel.cn/usercenter/apikeys",
18695
18794
  credentialsHint: "Zhipu BigModel → User Center → API Keys → Create Key."
18696
18795
  })
18697
- ], ig = (e) => ({
18796
+ ], _g = (e) => ({
18698
18797
  id: e.id,
18699
18798
  label: e.label,
18700
18799
  description: e.description ?? "",
@@ -18705,7 +18804,7 @@ var Zh = class {
18705
18804
  }],
18706
18805
  credentialsUrl: e.dashboardUrl,
18707
18806
  credentialsHint: e.credentialsHint
18708
- }), ag = rg.map(ig), og = {
18807
+ }), vg = [...gg.map(_g), Th], yg = {
18709
18808
  id: "openai-compatible",
18710
18809
  label: "OpenAI-compatible",
18711
18810
  description: "Any OpenAI-compatible endpoint (self-hosted or third-party).",
@@ -18719,9 +18818,15 @@ var Zh = class {
18719
18818
  type: "text",
18720
18819
  placeholder: "https://api.example.com/v1"
18721
18820
  }]
18722
- }, sg = (e) => {
18723
- let t = e?.openAICompatible?.baseUrl?.trim();
18724
- return t ? [fh({
18821
+ }, bg = (e) => {
18822
+ let t = [], n = e?.cloudflare?.accountId?.trim();
18823
+ n && t.push(wh({
18824
+ accountId: n,
18825
+ defaultModel: e?.cloudflare?.defaultModel?.trim() || void 0,
18826
+ includePaidModels: e?.cloudflare?.includePaidModels
18827
+ }));
18828
+ let r = e?.openAICompatible?.baseUrl?.trim();
18829
+ return r ? [...t, fh({
18725
18830
  id: "openai-compatible",
18726
18831
  label: e?.openAICompatible?.label?.trim() || "OpenAI-compatible",
18727
18832
  description: "Any OpenAI-compatible endpoint (self-hosted or third-party).",
@@ -18729,39 +18834,39 @@ var Zh = class {
18729
18834
  requiredConfigKeys: ["ai.openAICompatible.apiKey", "ai.openAICompatible.baseUrl"],
18730
18835
  defaultModel: e?.openAICompatible?.defaultModel?.trim() || "default",
18731
18836
  fallbackModels: e?.openAICompatible?.fallbackModels?.filter(Boolean) || ["default"],
18732
- baseUrl: t,
18837
+ baseUrl: r,
18733
18838
  modelsUrl: e?.openAICompatible?.modelsUrl?.trim() || void 0,
18734
18839
  chatCompletionsUrl: e?.openAICompatible?.chatCompletionsUrl?.trim() || void 0
18735
- })] : [];
18736
- }, cg = (e) => e ? [...rg, ...sg(e)].reduce((t, n) => {
18737
- let r = n.id === "openai-compatible" ? e.openAICompatible?.apiKey?.trim() || "" : typeof n.configKey == "string" && typeof e[n.configKey] == "string" ? String(e[n.configKey] || "").trim() : "";
18840
+ })] : t;
18841
+ }, xg = (e) => e ? [...gg, ...bg(e)].reduce((t, n) => {
18842
+ let r = n.id === "openai-compatible" ? e.openAICompatible?.apiKey?.trim() || "" : n.id === "cloudflare" ? e.cloudflare?.apiToken?.trim() || "" : typeof n.configKey == "string" && typeof e[n.configKey] == "string" ? String(e[n.configKey] || "").trim() : "";
18738
18843
  return r && (t[n.id] = new _l(n, r)), t;
18739
- }, {}) : {}, lg = void 0;
18844
+ }, {}) : {}, Sg = void 0;
18740
18845
  typeof wa == "function" && wa((e) => {
18741
- lg = e.google;
18846
+ Sg = e.google;
18742
18847
  });
18743
- var ug = {
18848
+ var Cg = {
18744
18849
  ita: "geoTargetConstants/2380",
18745
18850
  rome: "geoTargetConstants/1033236",
18746
18851
  mil: "geoTargetConstants/1033239",
18747
18852
  nap: "geoTargetConstants/1033245",
18748
18853
  tor: "geoTargetConstants/1033247"
18749
- }, dg = {
18854
+ }, wg = {
18750
18855
  it: "languageConstants/1000",
18751
18856
  en: "languageConstants/1001",
18752
18857
  fr: "languageConstants/1002",
18753
18858
  es: "languageConstants/1003",
18754
18859
  de: "languageConstants/1005"
18755
18860
  };
18756
- function fg(e) {
18757
- return ug[e.toLowerCase()] || "geoTargetConstants/2380";
18861
+ function Tg(e) {
18862
+ return Cg[e.toLowerCase()] || "geoTargetConstants/2380";
18758
18863
  }
18759
- function pg(e) {
18760
- return dg[e.toLowerCase()] || "languageConstants/1000";
18864
+ function Eg(e) {
18865
+ return wg[e.toLowerCase()] || "languageConstants/1000";
18761
18866
  }
18762
- async function mg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", languageCode: r = "it" }) {
18763
- if (!lg?.developerToken) return console.error("\n❌ Google Ads API: developerToken non configurato.\n\nPer ottenere un developerToken segui questi passaggi:\n\n1️⃣ Vai su https://ads.google.com/aw/apicenter\n2️⃣ Seleziona o crea un account Google Ads Manager (MCC) se non ne hai uno.\n3️⃣ Vai alla sezione \"Strumenti e impostazioni\" → \"Accesso API\" (o \"API Center\").\n4️⃣ Clicca su \"Richiedi accesso API\" se non l'hai ancora fatto.\n5️⃣ Copia il valore del tuo Developer Token (è un identificatore simile a: 'ABc123456789xyz').\n6️⃣ Inseriscilo nel tuo file di configurazione, nella sezione:\n config.google.developerToken\n\nℹ️ Attenzione: Inizialmente il token sarà in modalità di test. Per usarlo in produzione, dovrai richiedere l'approvazione da Google Ads.\n"), [];
18764
- let i = await Xm(["https://www.googleapis.com/auth/adwords"]), a = fg(n), o = pg(r), s = `https://googleads.googleapis.com/v13/customers/${t}:generateKeywordIdeas`, c = {
18867
+ async function Dg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", languageCode: r = "it" }) {
18868
+ if (!Sg?.developerToken) return console.error("\n❌ Google Ads API: developerToken non configurato.\n\nPer ottenere un developerToken segui questi passaggi:\n\n1️⃣ Vai su https://ads.google.com/aw/apicenter\n2️⃣ Seleziona o crea un account Google Ads Manager (MCC) se non ne hai uno.\n3️⃣ Vai alla sezione \"Strumenti e impostazioni\" → \"Accesso API\" (o \"API Center\").\n4️⃣ Clicca su \"Richiedi accesso API\" se non l'hai ancora fatto.\n5️⃣ Copia il valore del tuo Developer Token (è un identificatore simile a: 'ABc123456789xyz').\n6️⃣ Inseriscilo nel tuo file di configurazione, nella sezione:\n config.google.developerToken\n\nℹ️ Attenzione: Inizialmente il token sarà in modalità di test. Per usarlo in produzione, dovrai richiedere l'approvazione da Google Ads.\n"), [];
18869
+ let i = await Xm(["https://www.googleapis.com/auth/adwords"]), a = Tg(n), o = Eg(r), s = `https://googleads.googleapis.com/v13/customers/${t}:generateKeywordIdeas`, c = {
18765
18870
  keywordSeed: { keywords: [e] },
18766
18871
  geoTargetConstants: [a],
18767
18872
  language: o
@@ -18769,7 +18874,7 @@ async function mg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", langu
18769
18874
  method: "POST",
18770
18875
  headers: {
18771
18876
  Authorization: `Bearer ${i}`,
18772
- "developer-token": lg.developerToken,
18877
+ "developer-token": Sg.developerToken,
18773
18878
  "Content-Type": "application/json"
18774
18879
  },
18775
18880
  body: JSON.stringify(c)
@@ -18787,7 +18892,7 @@ async function mg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", langu
18787
18892
  }
18788
18893
  //#endregion
18789
18894
  //#region src/providers/seo/google/trend.ts
18790
- async function hg(e, t = "IT", n = "today 12-m") {
18895
+ async function Og(e, t = "IT", n = "today 12-m") {
18791
18896
  let r = `https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({
18792
18897
  comparisonItem: [{
18793
18898
  keyword: e,
@@ -18807,7 +18912,7 @@ async function hg(e, t = "IT", n = "today 12-m") {
18807
18912
  }))
18808
18913
  };
18809
18914
  }
18810
- async function gg(e, t = "IT", n = "today 12-m") {
18915
+ async function kg(e, t = "IT", n = "today 12-m") {
18811
18916
  let r = `https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({
18812
18917
  comparisonItem: [{
18813
18918
  keyword: e,
@@ -18833,13 +18938,13 @@ async function gg(e, t = "IT", n = "today 12-m") {
18833
18938
  }
18834
18939
  //#endregion
18835
18940
  //#region src/providers/storage/dropbox.tsx
18836
- var _g = 5e3, vg = "https://www.dropbox.com/home", yg = void 0;
18941
+ var Ag = 5e3, jg = "https://www.dropbox.com/home", Mg = void 0;
18837
18942
  typeof wa == "function" && wa((e) => {
18838
- yg = e.dropbox;
18943
+ Mg = e.dropbox;
18839
18944
  });
18840
- var bg = async (e, t, n = {}) => {
18841
- if (!yg) return console.error("DropBox: Config not found"), null;
18842
- let r = await bi(yg.clientId);
18945
+ var Ng = async (e, t, n = {}) => {
18946
+ if (!Mg) return console.error("DropBox: Config not found"), null;
18947
+ let r = await bi(Mg.clientId);
18843
18948
  if (!r) throw Error("DropBox: Access token not found");
18844
18949
  return await fetch(e, {
18845
18950
  method: "POST",
@@ -18852,12 +18957,12 @@ var bg = async (e, t, n = {}) => {
18852
18957
  }).catch((e) => (console.error("There was a problem with the fetch operation:", e), null)).finally(() => {
18853
18958
  console.log("DropBox: Fetch operation completed");
18854
18959
  });
18855
- }, xg = async (e, t, n = {}) => {
18856
- if (!yg) {
18960
+ }, Pg = async (e, t, n = {}) => {
18961
+ if (!Mg) {
18857
18962
  console.error("DropBox: Config not found");
18858
18963
  return;
18859
18964
  }
18860
- let r = await bi(yg.clientId);
18965
+ let r = await bi(Mg.clientId);
18861
18966
  if (!r) {
18862
18967
  console.error("DropBox: Access token not found");
18863
18968
  return;
@@ -18882,47 +18987,47 @@ var bg = async (e, t, n = {}) => {
18882
18987
  }).finally(() => {
18883
18988
  console.log("DropBox: Fetch operation completed", e, t);
18884
18989
  });
18885
- }, Sg = (e, t = !1) => {
18886
- let n = yg?.rootPath || "";
18887
- return (t ? vg : "") + (e.startsWith(n) ? e : n + e);
18888
- }, Cg = async (e, t = "", n = !1) => {
18990
+ }, Fg = (e, t = !1) => {
18991
+ let n = Mg?.rootPath || "";
18992
+ return (t ? jg : "") + (e.startsWith(n) ? e : n + e);
18993
+ }, Ig = async (e, t = "", n = !1) => {
18889
18994
  let r = {};
18890
- return (await Lg.listFolders({
18995
+ return (await Xg.listFolders({
18891
18996
  path: `${e + t}`,
18892
18997
  recursive: !0
18893
18998
  })).forEach((e) => {
18894
18999
  e[".tag"] !== "folder" && (r[n ? ri.changeFilename(e.path_display, { ext: "" }) : e.path_display] = e.name);
18895
19000
  }), r;
18896
- }, wg = async (e, t) => {
19001
+ }, Lg = async (e, t) => {
18897
19002
  if (!e.async_job_id) return Promise.reject(e);
18898
19003
  let n, r = !0;
18899
- for (; r;) await ut(100), n = await xg(`https://api.dropboxapi.com/2/${t}/check`, { async_job_id: e.async_job_id }), console.log("DropBox: Check folders response: ", n), n?.[".tag"] !== "in_progress" && (r = !1);
19004
+ for (; r;) await ut(100), n = await Pg(`https://api.dropboxapi.com/2/${t}/check`, { async_job_id: e.async_job_id }), console.log("DropBox: Check folders response: ", n), n?.[".tag"] !== "in_progress" && (r = !1);
18900
19005
  return n?.[".tag"] === "complete" ? Promise.resolve(n.entries) : Promise.reject(n);
18901
- }, Tg = async (e, t = "") => {
18902
- let n = "files/create_folder_batch", r = await xg(`https://api.dropboxapi.com/2/${n}`, {
19006
+ }, Rg = async (e, t = "") => {
19007
+ let n = "files/create_folder_batch", r = await Pg(`https://api.dropboxapi.com/2/${n}`, {
18903
19008
  autorename: !1,
18904
19009
  force_async: !0,
18905
- paths: e.map((e) => Sg(t + e))
19010
+ paths: e.map((e) => Fg(t + e))
18906
19011
  });
18907
- return r ? wg(r, n) : void 0;
18908
- }, Eg = async (e, t = "") => {
18909
- let n = "files/create_folder_batch", r = await xg(`https://api.dropboxapi.com/2/${n}`, { entries: e.map((e) => ({ path: Sg(t + e) })) });
18910
- return r ? wg(r, n) : void 0;
18911
- }, Dg = async (e, t) => xg("https://api.dropboxapi.com/2/files/tags/add", {
19012
+ return r ? Lg(r, n) : void 0;
19013
+ }, zg = async (e, t = "") => {
19014
+ let n = "files/create_folder_batch", r = await Pg(`https://api.dropboxapi.com/2/${n}`, { entries: e.map((e) => ({ path: Fg(t + e) })) });
19015
+ return r ? Lg(r, n) : void 0;
19016
+ }, Bg = async (e, t) => Pg("https://api.dropboxapi.com/2/files/tags/add", {
18912
19017
  path: e,
18913
19018
  tag_text: t.toLowerCase().replaceAll(/[^a-z0-9]/g, "")
18914
- }), Og = async (e, t = "") => {
18915
- for (let n in e) for (let r of e[n]) await Dg(Sg(t + n), r);
18916
- }, kg = async ({ path: e = "", recursive: t = !1 } = {}) => {
18917
- let n = [], r = async ({ path: e, cursor: t, recursive: n }) => e ? await xg("https://api.dropboxapi.com/2/files/list_folder", {
19019
+ }), Vg = async (e, t = "") => {
19020
+ for (let n in e) for (let r of e[n]) await Bg(Fg(t + n), r);
19021
+ }, Hg = async ({ path: e = "", recursive: t = !1 } = {}) => {
19022
+ let n = [], r = async ({ path: e, cursor: t, recursive: n }) => e ? await Pg("https://api.dropboxapi.com/2/files/list_folder", {
18918
19023
  include_deleted: !1,
18919
19024
  include_has_explicit_shared_members: !1,
18920
19025
  include_media_info: !1,
18921
19026
  include_mounted_folders: !0,
18922
19027
  include_non_downloadable_files: !0,
18923
- path: Sg(e),
19028
+ path: Fg(e),
18924
19029
  recursive: n
18925
- }) : await xg("https://api.dropboxapi.com/2/files/list_folder/continue", { cursor: t }), i = {
19030
+ }) : await Pg("https://api.dropboxapi.com/2/files/list_folder/continue", { cursor: t }), i = {
18926
19031
  has_more: !0,
18927
19032
  cursor: "",
18928
19033
  entries: []
@@ -18935,44 +19040,44 @@ var bg = async (e, t, n = {}) => {
18935
19040
  recursive: t
18936
19041
  }), i && n.push(...i.entries);
18937
19042
  return n;
18938
- }, Ag = async (e) => {
18939
- let t = async (e) => await xg("https://api.dropboxapi.com/2/files/copy_batch_v2", {
19043
+ }, Ug = async (e) => {
19044
+ let t = async (e) => await Pg("https://api.dropboxapi.com/2/files/copy_batch_v2", {
18940
19045
  entries: e,
18941
19046
  autorename: !1
18942
- }), n = async (e) => await xg("https://api.dropboxapi.com/2/files/copy_batch/check_v2", { async_job_id: e }), r = [], i = [];
19047
+ }), n = async (e) => await Pg("https://api.dropboxapi.com/2/files/copy_batch/check_v2", { async_job_id: e }), r = [], i = [];
18943
19048
  for (let a = 0; a < e.length; a += 900) {
18944
19049
  i = e.slice(a, a + 900).map((e) => ({
18945
- from_path: Sg(e.from),
18946
- to_path: Sg(e.to)
19050
+ from_path: Fg(e.from),
19051
+ to_path: Fg(e.to)
18947
19052
  }));
18948
19053
  let o = await t(i);
18949
19054
  if (!o) continue;
18950
19055
  if (o.error) throw Error(`Error starting copy: ${o.error}`);
18951
19056
  let s = o;
18952
- for (; s?.[".tag"] === "async_job_id" || s?.[".tag"] === "in_progress";) await ut(_g), s = await n(o.async_job_id ?? "");
19057
+ for (; s?.[".tag"] === "async_job_id" || s?.[".tag"] === "in_progress";) await ut(Ag), s = await n(o.async_job_id ?? "");
18953
19058
  if (s?.[".tag"] === "failed") throw Error(`Copy operation failed: ${s[".tag"]}`);
18954
19059
  s?.[".tag"] === "complete" && s.entries && r.push(...s.entries);
18955
19060
  }
18956
19061
  return r.filter((e) => e[".tag"] === "failure").map((e) => e.failure);
18957
- }, jg = async (e) => {
18958
- let t = async (e) => await xg("https://api.dropboxapi.com/2/files/move_v2", {
19062
+ }, Wg = async (e) => {
19063
+ let t = async (e) => await Pg("https://api.dropboxapi.com/2/files/move_v2", {
18959
19064
  ...e,
18960
19065
  autorename: !0
18961
19066
  });
18962
19067
  for (let n of e) await t({
18963
- from_path: Sg(n.from),
18964
- to_path: Sg(n.to)
19068
+ from_path: Fg(n.from),
19069
+ to_path: Fg(n.to)
18965
19070
  });
18966
- }, Mg = async ({ thumbnailsRequest: e = [], size: t = "w64h64", format: n = "jpeg", mode: r = "strict" }, i) => {
19071
+ }, Gg = async ({ thumbnailsRequest: e = [], size: t = "w64h64", format: n = "jpeg", mode: r = "strict" }, i) => {
18967
19072
  let a = {}, o = [];
18968
19073
  for (let s = 0; s < e.length; s += 25) {
18969
19074
  let c = e.slice(s, s + 25), l = c.map((e) => ({
18970
- path: Sg(e.path),
19075
+ path: Fg(e.path),
18971
19076
  format: n,
18972
19077
  size: t,
18973
19078
  mode: r
18974
19079
  }));
18975
- await ut(100), o.push(xg("https://content.dropboxapi.com/2/files/get_thumbnail_batch", { entries: l }).then((e) => {
19080
+ await ut(100), o.push(Pg("https://content.dropboxapi.com/2/files/get_thumbnail_batch", { entries: l }).then((e) => {
18976
19081
  if (!e) return;
18977
19082
  let n = e.entries.reduce((e, n, r) => {
18978
19083
  let i = c[r].path, [a, o] = t.replace("w", "").split("h").map(Number), s = n;
@@ -18991,7 +19096,7 @@ var bg = async (e, t, n = {}) => {
18991
19096
  }));
18992
19097
  }
18993
19098
  return Promise.all(o).then(() => a);
18994
- }, Ng = (e, t = "application/octet-stream", n = 512) => {
19099
+ }, Kg = (e, t = "application/octet-stream", n = 512) => {
18995
19100
  let r = atob(e), i = [];
18996
19101
  for (let e = 0; e < r.length; e += n) {
18997
19102
  let t = r.slice(e, e + n), a = Array(t.length);
@@ -19000,11 +19105,11 @@ var bg = async (e, t, n = {}) => {
19000
19105
  i.push(o);
19001
19106
  }
19002
19107
  return new Blob(i, { type: t });
19003
- }, Pg = async (e, t) => {
19108
+ }, qg = async (e, t) => {
19004
19109
  try {
19005
19110
  let n = t.split(",")[1];
19006
- bg("https://content.dropboxapi.com/2/files/upload", Ng(n, "application/octet-stream"), { "Dropbox-API-Arg": JSON.stringify({
19007
- path: Sg(e),
19111
+ Ng("https://content.dropboxapi.com/2/files/upload", Kg(n, "application/octet-stream"), { "Dropbox-API-Arg": JSON.stringify({
19112
+ path: Fg(e),
19008
19113
  mode: "overwrite",
19009
19114
  autorename: !0,
19010
19115
  mute: !1
@@ -19014,12 +19119,12 @@ var bg = async (e, t, n = {}) => {
19014
19119
  } catch (e) {
19015
19120
  console.error("Errore durante il caricamento su Dropbox:", e);
19016
19121
  }
19017
- }, Fg = (e = !1) => yg ? _i(yg.clientId, e) : !1, Ig = (e = {}) => {
19018
- if (!yg) return /* @__PURE__ */ t.createElement("div", {
19122
+ }, Jg = (e = !1) => Mg ? _i(Mg.clientId, e) : !1, Yg = (e = {}) => {
19123
+ if (!Mg) return /* @__PURE__ */ t.createElement("div", {
19019
19124
  title: "DropBox: configurazione mancante. Recupera il \"Client ID\" accedendo a https://www.dropbox.com/developers, vai su \"App Console\", seleziona un'app esistente o chiedi il Client ID a chi ha configurato il sistema.",
19020
19125
  className: "text-danger flex items-center gap-2"
19021
19126
  }, /* @__PURE__ */ t.createElement(Q, { name: "warning" }), /* @__PURE__ */ t.createElement("span", null, "Dropbox non configurato"));
19022
- let n = Fg(!0);
19127
+ let n = Jg(!0);
19023
19128
  return /* @__PURE__ */ t.createElement(Si, {
19024
19129
  provider: "dropboxAuth",
19025
19130
  intent: "connect",
@@ -19031,33 +19136,33 @@ var bg = async (e, t, n = {}) => {
19031
19136
  title: n ? "DropBox Connected" : "DropBox Disconnected"
19032
19137
  }
19033
19138
  });
19034
- }, Lg = {
19139
+ }, Xg = {
19035
19140
  setRootPath: (e) => {
19036
- yg && (yg.rootPath = e);
19141
+ Mg && (Mg.rootPath = e);
19037
19142
  },
19038
- resolvePath: Sg,
19039
- createFolders: Tg,
19040
- deleteBulk: Eg,
19041
- addTags: Og,
19042
- listFolders: kg,
19043
- getThumbnails: Mg,
19044
- search: Cg,
19045
- upload: Pg,
19046
- copy: Ag,
19047
- move: jg
19048
- }, Rg = "https://api.serpapi.com/search", zg = "google", Bg = "google_images", Vg = "google_autocomplete", Hg = "google_trends", Ug = "google_maps", Wg = "google_maps_photos", Gg = "google_maps_reviews", Kg = {
19143
+ resolvePath: Fg,
19144
+ createFolders: Rg,
19145
+ deleteBulk: zg,
19146
+ addTags: Vg,
19147
+ listFolders: Hg,
19148
+ getThumbnails: Gg,
19149
+ search: Ig,
19150
+ upload: qg,
19151
+ copy: Ug,
19152
+ move: Wg
19153
+ }, Zg = "https://api.serpapi.com/search", Qg = "google", $g = "google_images", e_ = "google_autocomplete", t_ = "google_trends", n_ = "google_maps", r_ = "google_maps_photos", i_ = "google_maps_reviews", a_ = {
19049
19154
  engine: null,
19050
19155
  device: null,
19051
19156
  no_cache: !1,
19052
19157
  async: !1,
19053
19158
  output: "json"
19054
- }, qg = { q: null }, Jg = {
19159
+ }, o_ = { q: null }, s_ = {
19055
19160
  tbs: null,
19056
19161
  safe: "active",
19057
19162
  nfpr: 0,
19058
19163
  filter: 1
19059
19164
  };
19060
- function Yg(e) {
19165
+ function c_(e) {
19061
19166
  let t = Rc(), n = Rc(!0), r = zc(!0), i = {
19062
19167
  location: t,
19063
19168
  uule: null
@@ -19075,13 +19180,13 @@ function Yg(e) {
19075
19180
  hl: r
19076
19181
  };
19077
19182
  return {
19078
- [zg]: {
19079
- ...Kg,
19183
+ [Qg]: {
19184
+ ...a_,
19080
19185
  ...i,
19081
19186
  ...o,
19082
- ...Jg,
19083
- ...qg,
19084
- engine: zg,
19187
+ ...s_,
19188
+ ...o_,
19189
+ engine: Qg,
19085
19190
  ludocid: null,
19086
19191
  lsig: null,
19087
19192
  kgmid: null,
@@ -19090,29 +19195,29 @@ function Yg(e) {
19090
19195
  start: null,
19091
19196
  num: null
19092
19197
  },
19093
- [Bg]: {
19094
- ...Kg,
19198
+ [$g]: {
19199
+ ...a_,
19095
19200
  ...i,
19096
19201
  ...o,
19097
- ...Jg,
19098
- ...qg,
19099
- engine: Bg,
19202
+ ...s_,
19203
+ ...o_,
19204
+ engine: $g,
19100
19205
  chips: null,
19101
19206
  ijn: null
19102
19207
  },
19103
- [Vg]: {
19104
- ...Kg,
19208
+ [e_]: {
19209
+ ...a_,
19105
19210
  ...o,
19106
- ...qg,
19107
- engine: Vg,
19211
+ ...o_,
19212
+ engine: e_,
19108
19213
  cp: null,
19109
19214
  client: null
19110
19215
  },
19111
- [Hg]: {
19112
- ...Kg,
19216
+ [t_]: {
19217
+ ...a_,
19113
19218
  ...a,
19114
- ...qg,
19115
- engine: Hg,
19219
+ ...o_,
19220
+ engine: t_,
19116
19221
  data_type: null,
19117
19222
  tz: null,
19118
19223
  cat: null,
@@ -19120,73 +19225,73 @@ function Yg(e) {
19120
19225
  date: null,
19121
19226
  csv: null
19122
19227
  },
19123
- [Ug]: {
19124
- ...Kg,
19228
+ [n_]: {
19229
+ ...a_,
19125
19230
  ...i,
19126
19231
  ...o,
19127
- ...Jg,
19128
- ...qg,
19129
- engine: Ug
19232
+ ...s_,
19233
+ ...o_,
19234
+ engine: n_
19130
19235
  },
19131
- [Wg]: {
19132
- ...Kg,
19236
+ [r_]: {
19237
+ ...a_,
19133
19238
  ...s,
19134
- engine: Wg
19239
+ engine: r_
19135
19240
  },
19136
- [Gg]: {
19137
- ...Kg,
19241
+ [i_]: {
19242
+ ...a_,
19138
19243
  ...s,
19139
- engine: Gg
19244
+ engine: i_
19140
19245
  }
19141
19246
  }[e] ?? {};
19142
19247
  }
19143
- var Xg = void 0;
19248
+ var l_ = void 0;
19144
19249
  typeof wa == "function" && wa((e) => {
19145
- Xg = e.scrape;
19250
+ l_ = e.scrape;
19146
19251
  });
19147
- function Zg(e) {
19252
+ function u_(e) {
19148
19253
  let t = {};
19149
19254
  for (let n in e) e[n] !== null && (t[n] = e[n]);
19150
19255
  return t;
19151
19256
  }
19152
- var Qg = 0;
19153
- function $g(e = !1) {
19154
- let t = Xg?.serpApiKey?.split(",").map((e) => e.trim()).filter(Boolean) || [];
19155
- return t.length === 0 ? null : (e && Qg++, Qg < t.length ? t[Qg] : null);
19257
+ var d_ = 0;
19258
+ function f_(e = !1) {
19259
+ let t = l_?.serpApiKey?.split(",").map((e) => e.trim()).filter(Boolean) || [];
19260
+ return t.length === 0 ? null : (e && d_++, d_ < t.length ? t[d_] : null);
19156
19261
  }
19157
- var e_ = async (e, t) => {
19262
+ var p_ = async (e, t) => {
19158
19263
  let n = (n) => {
19159
- let r = Zg({
19160
- ...Yg(t),
19264
+ let r = u_({
19265
+ ...c_(t),
19161
19266
  api_key: n,
19162
19267
  q: e
19163
19268
  });
19164
- return console.log(Rg, r), `${Rg}?${new URLSearchParams(r)}`;
19165
- }, r = $g();
19269
+ return console.log(Zg, r), `${Zg}?${new URLSearchParams(r)}`;
19270
+ }, r = f_();
19166
19271
  for (; r;) try {
19167
19272
  return await Wt(n(r));
19168
19273
  } catch (e) {
19169
19274
  if (e?.error === "quota_exceeded") {
19170
- console.warn(`SerpApi: invalid api key: ${r}`, e), r = $g(!0);
19275
+ console.warn(`SerpApi: invalid api key: ${r}`, e), r = f_(!0);
19171
19276
  continue;
19172
19277
  }
19173
19278
  throw console.error(`SerpApi: ${r}`, e), e;
19174
19279
  }
19175
19280
  return null;
19176
- }, t_ = async (e, t, n) => {
19281
+ }, m_ = async (e, t, n) => {
19177
19282
  let r = `${ka}/${ct(t)}/${ct(e)}`, i = await n.read(r);
19178
19283
  if (i) return i;
19179
- let a = await e_(e, t);
19284
+ let a = await p_(e, t);
19180
19285
  return a ? n.set(r, a) : console.warn(`SerpApi ${t}: No Result`), a ?? {};
19181
- }, n_ = (e) => ({
19182
- googleSearch: async (t) => t_(t, zg, e),
19183
- googleImages: async (t) => t_(t, Bg, e),
19184
- googleAutocomplete: async (t) => t_(t, Vg, e),
19185
- googleTrends: async (t) => t_(t, Hg, e),
19186
- googleMaps: async (t) => t_(t, Ug, e),
19187
- googleMapsPhotos: async (t) => t_(t, Wg, e),
19188
- googleMapsReviews: async (t) => t_(t, Gg, e)
19189
- }), r_ = {
19286
+ }, h_ = (e) => ({
19287
+ googleSearch: async (t) => m_(t, Qg, e),
19288
+ googleImages: async (t) => m_(t, $g, e),
19289
+ googleAutocomplete: async (t) => m_(t, e_, e),
19290
+ googleTrends: async (t) => m_(t, t_, e),
19291
+ googleMaps: async (t) => m_(t, n_, e),
19292
+ googleMapsPhotos: async (t) => m_(t, r_, e),
19293
+ googleMapsReviews: async (t) => m_(t, i_, e)
19294
+ }), g_ = {
19190
19295
  "+": "+",
19191
19296
  "﹢": "+",
19192
19297
  "-": "-",
@@ -19261,7 +19366,7 @@ var e_ = async (e, t) => {
19261
19366
  x: "x",
19262
19367
  y: "y",
19263
19368
  z: "z"
19264
- }, i_ = {
19369
+ }, __ = {
19265
19370
  email: {
19266
19371
  description: "Email: no spaces -> Lower/Trim",
19267
19372
  transformations: [{
@@ -19307,7 +19412,7 @@ var e_ = async (e, t) => {
19307
19412
  transformations: [],
19308
19413
  mask: ["toSlug"]
19309
19414
  }
19310
- }, a_ = [
19415
+ }, v_ = [
19311
19416
  {
19312
19417
  pattern: "email*",
19313
19418
  use: "email"
@@ -19324,24 +19429,24 @@ var e_ = async (e, t) => {
19324
19429
  pattern: "date*",
19325
19430
  use: "date"
19326
19431
  }
19327
- ], o_ = new RegExp(Object.keys(r_).join("|"), "g");
19328
- function s_(e) {
19329
- return e ? e.normalize("NFKC").replace(o_, (e) => r_[e] ?? e) : "";
19432
+ ], y_ = new RegExp(Object.keys(g_).join("|"), "g");
19433
+ function b_(e) {
19434
+ return e ? e.normalize("NFKC").replace(y_, (e) => g_[e] ?? e) : "";
19330
19435
  }
19331
- var c_ = class {
19436
+ var x_ = class {
19332
19437
  config;
19333
19438
  matches;
19334
19439
  constructor(e = {}, t = []) {
19335
19440
  this.config = {
19336
- ...i_,
19441
+ ...__,
19337
19442
  ...e
19338
- }, this.matches = [...a_, ...t];
19443
+ }, this.matches = [...v_, ...t];
19339
19444
  }
19340
19445
  apply(e, t, n = !1) {
19341
19446
  let r = this.config[e];
19342
19447
  if (!r) return n ? It(t) : t;
19343
19448
  let i = t;
19344
- i = s_(String(i ?? ""));
19449
+ i = b_(String(i ?? ""));
19345
19450
  let a = r.exclusions;
19346
19451
  if (Array.isArray(a) && a.length) {
19347
19452
  let e = String(i).toLowerCase();
@@ -19400,7 +19505,7 @@ var c_ = class {
19400
19505
  };
19401
19506
  //#endregion
19402
19507
  //#region src/libs/csv.ts
19403
- function l_(e, t) {
19508
+ function S_(e, t) {
19404
19509
  let n = Oe.parse(e, {
19405
19510
  header: !0,
19406
19511
  skipEmptyLines: !0,
@@ -19413,6 +19518,6 @@ function l_(e, t) {
19413
19518
  };
19414
19519
  }
19415
19520
  //#endregion
19416
- export { Qc as AIProvider, rg as AI_PROVIDER_DEFINITIONS, ag as AI_PROVIDER_DESCRIPTORS, Hr as ActionButton, Ef as AddressAutocomplete, Io as Alert, Vh as App, Bh as AppProvider, zi as AsyncDropdown, Si as AuthButton, ti as AuthProvider, Js as Autocomplete, sn as BUILT_IN_THEMES, nn as BUILT_IN_THEME_IDS, Ur as BackLink, Qn as Badge, Zn as BadgeOverlay, Ki as Brand, ea as Breadcrumbs, wl as CONTEXT_MENU_SEARCH_THRESHOLD, ji as Card, ta as Carousel, Gl as Chatbot, js as Checkbox, Ys as Checklist, Go as Code, Mu as CodeEditor, pu as CodeSyntaxError, Jn as Col, Ss as Color, nd as Component, rd as ComponentBlock, Kn as Container, Bl as ContextMenu, yc as CropImage, ap as DEFAULT_DOCUMENT_HEAD, ip as DEFAULT_HEAD_APP_NAME, op as DEFAULT_LANGUAGE_HEAD, Is as DEFAULT_ORDER, wi as DataProvider, Cs as Date, Ts as DateTime, Zh as DirectApiProviderAdapter, Ig as DropBoxConnectButton, Ym as DropboxAuthProvider, Ri as Dropdown, Bi as DropdownButton, Ui as DropdownDivider, Hi as DropdownHeader, Vi as DropdownItem, Wi as DropdownMenu, tg as EMAIL_PROVIDER_DEFINITIONS, bs as Email, xm as EmailProvider, hs as FieldError, Ec as FileNameEditor, $h as FirebaseApiProviderAdapter, Hm as FirebaseAuthProvider, Rm as FirebaseDataProvider, So as FirebaseStorageProvider, Ya as FirestoreDataProvider, jd as Form, gd as FormControllerContext, Kp as Gallery, Qm as GmailEmailProvider, Wr as GoSite, ym as GoogleAuthProvider, pf as GoogleMapsProvider, qm as GoogleServiceAccountProvider, sm as Grid, om as GridArray, am as GridCore, Hf as GridDB, qp as GridGalleryView, tp as GridTableView, Fp as Head, Cp as HeadProvider, As as Hidden, Pn as I18nProvider, Q as Icon, Sr as IconProvider, Gi as Image, ii as ImageAvatar, dc as ImageEditor, pc as ImageField, _s as Input, Ns as Label, df as LayoutBuilder, kf as ListCard, Fs as ListGroup, Ei as Loader, Vr as LoadingButton, qo as LocaleSwitcher, dr as LucideIconProvider, Up as MarkdownReader, Ii as Menu, Qh as MockApiProviderAdapter, go as MockDataProvider, Mi as Modal, Fi as ModalOk, Pi as ModalYesNo, Ds as Month, r_ as NORMALIZE_MAP, na as Notifications, ys as Number, og as OPENAI_COMPATIBLE_PROVIDER_DESCRIPTOR, zs as Order, ng as PUBLISH_PROVIDER_DEFINITIONS, cm as PageUsers, Gp as Pagination, xs as Password, $o as Percentage, mr as PhosphorIconProvider, ru as Prompt, Kl as PromptMode, Cl as PromptUtils, No as ProviderSwitcher, Os as Range, Gr as ReferSite, Hd as Repeat, ed as RichText, qn as Row, c_ as Sanitizer, ia as Search, qs as Select, zf as SideNav, cc as StorageProvider, vs as String, eg as SupabaseApiProviderAdapter, eh as SupabaseAuthProvider, co as SupabaseDataProvider, Co as SupabaseStorageProvider, Ms as Switch, Xd as Tab, Wp as TabDynamic, Jd as TabItem, qd as TabLayouts, $d as Table, Ps as TextArea, ma as ThemeSwitcher, ws as Time, sa as Toolbar, Df as UploadCSV, Pc as UploadDocument, Fc as UploadImage, ks as Url, Es as Week, Z as Wrapper, xt as arrayUnique, Et as arraysEqual, Tt as base64Encode, At as base64ToBlob, jt as base64ToUrl, qi as buildBreadcrumbSchema, Ll as buildTextCommandContext, Er as buttonBaseClass, kr as buttonDangerClass, Pr as buttonDarkClass, Mr as buttonInfoClass, Nr as buttonLightClass, zr as buttonLinkClass, Lr as buttonOutlineDangerClass, Fr as buttonOutlinePrimaryClass, Ir as buttonOutlineSecondaryClass, Rr as buttonOutlineSuccessClass, Dr as buttonPrimaryClass, Or as buttonSecondaryClass, Ar as buttonSuccessClass, jr as buttonWarningClass, Ra as callFirebaseFunction, ht as checkConditions, Nt as cleanRecord, X as cn, il as configureProxy, et as converter, it as copyToClipboard, gt as crc32, cg as createAIProviderRegistry, rr as createMotionTransition, En as createTranslations, rt as decodeJWT, Tn as defineLocaleMessages, lt as dirname, Lg as dropBox, ft as eventClosest, Wt as fetchJson, Ut as fetchRest, Gt as fetchWithRetry, ss as fieldAddonClass, is as fieldControlBaseClass, rs as fieldFeedbackClass, os as fieldGroupClass, ns as fieldLabelClass, as as fieldTextAreaBaseClass, Yc as formatAIModelRef, dt as generateUniqueId, gl as getAIModelCatalog, bi as getAccessToken, Pl as getAutoClosedSuffixLength, Cu as getCodeValidationResult, Nc as getFileUrl, Zr as getGlobalVars, hg as getGoogleTrendsData, gg as getGoogleTrendsRelated, mg as getKeywordIdeas, si as getProviderConfigurationState, Mt as getRecordValue, Wd as getTabLayoutConfig, Kd as getTabPaneClassName, Gd as getTabTriggerClassName, Xm as googleGetAccessToken, Nl as hasAutoClosedSuffix, Dn as interpolate, yt as intersectObjects, Yn as isBadgeDescriptor, St as isEmpty, Ot as isInteractiveElement, sl as isProxyEnabled, _f as loadGoogleMaps, vt as loadScripts, Jh as locales, Fl as matchCommandTrigger, Xn as normalizeBadgeProps, ct as normalizeKey, ot as normalizePath, s_ as normalizeVisualChars, Xc as parseAIModelRef, l_ as parseCsvText, ri as path, al as proxyFetch, Ft as recordsEqual, To as registerProviderSessionFactory, $r as removeGlobalVars, kt as render2Base64, mt as replacePlaceholders, bt as replaceVariables, ir as resolveMotionEffect, fu as runPrompt, wt as safeClone, Dt as sanitizeKey, n_ as scrape, Zm as sendEmail, Qr as setGlobalVars, ut as sleep, It as smartTypeCast, pt as substrCount, ig as toProviderDescriptor, at as trimPath, st as trimSlash, _t as ucfirst, $c as useAIProvider, el as useAIProviderRegistry, _i as useAccessToken, Yh as useApiProvider, Mp as useAssetsHead, ni as useAuthProvider, Tm as useCredentialsProvider, Ti as useDataProvider, jp as useDocumentHead, Fg as useDropBoxConnect, ts as useEditorHeight, Sm as useEmailProvider, cr as useEnterMotion, Dc as useFileUploadCore, vd as useFormActions, Dd as useFormContext, _d as useFormController, Xr as useGlobalVars, mf as useGoogleMapsConfig, Ep as useHead, Op as useHeadLinks, Fn as useI18n, wr as useIconController, Cr as useIconProvider, ec as useImage, Ap as useLanguageHead, Hh as useMenu, ar as useMotionEffect, or as useMotionState, kp as usePaginationHead, sr as usePressMotion, ya as useProvider, jo as useProviderSession, ol as useProxy, Np as usePwaHead, Pp as useSchemaOrgHead, va as useSetProvider, Dp as useSocialHead, lc as useStorageProvider, Y as useTheme, Cn as useThemeController, Su as validateCodeSyntax };
19521
+ export { Qc as AIProvider, gg as AI_PROVIDER_DEFINITIONS, vg as AI_PROVIDER_DESCRIPTORS, Hr as ActionButton, Ef as AddressAutocomplete, Io as Alert, eg as App, $h as AppProvider, zi as AsyncDropdown, Si as AuthButton, ti as AuthProvider, Js as Autocomplete, sn as BUILT_IN_THEMES, nn as BUILT_IN_THEME_IDS, Ur as BackLink, Qn as Badge, Zn as BadgeOverlay, Ki as Brand, ea as Breadcrumbs, Th as CLOUDFLARE_PROVIDER_DESCRIPTOR, wl as CONTEXT_MENU_SEARCH_THRESHOLD, ji as Card, ta as Carousel, Gl as Chatbot, js as Checkbox, Ys as Checklist, Go as Code, Mu as CodeEditor, pu as CodeSyntaxError, Jn as Col, Ss as Color, nd as Component, rd as ComponentBlock, Kn as Container, Bl as ContextMenu, yc as CropImage, ap as DEFAULT_DOCUMENT_HEAD, ip as DEFAULT_HEAD_APP_NAME, op as DEFAULT_LANGUAGE_HEAD, Is as DEFAULT_ORDER, wi as DataProvider, Cs as Date, Ts as DateTime, ug as DirectApiProviderAdapter, Yg as DropBoxConnectButton, Ym as DropboxAuthProvider, Ri as Dropdown, Bi as DropdownButton, Ui as DropdownDivider, Hi as DropdownHeader, Vi as DropdownItem, Wi as DropdownMenu, mg as EMAIL_PROVIDER_DEFINITIONS, bs as Email, xm as EmailProvider, hs as FieldError, Ec as FileNameEditor, fg as FirebaseApiProviderAdapter, Hm as FirebaseAuthProvider, Rm as FirebaseDataProvider, So as FirebaseStorageProvider, Ya as FirestoreDataProvider, jd as Form, gd as FormControllerContext, Kp as Gallery, Qm as GmailEmailProvider, Wr as GoSite, ym as GoogleAuthProvider, pf as GoogleMapsProvider, qm as GoogleServiceAccountProvider, sm as Grid, om as GridArray, am as GridCore, Hf as GridDB, qp as GridGalleryView, tp as GridTableView, Fp as Head, Cp as HeadProvider, As as Hidden, Pn as I18nProvider, Q as Icon, Sr as IconProvider, Gi as Image, ii as ImageAvatar, dc as ImageEditor, pc as ImageField, _s as Input, Ns as Label, df as LayoutBuilder, kf as ListCard, Fs as ListGroup, Ei as Loader, Vr as LoadingButton, qo as LocaleSwitcher, dr as LucideIconProvider, Up as MarkdownReader, Ii as Menu, dg as MockApiProviderAdapter, go as MockDataProvider, Mi as Modal, Fi as ModalOk, Pi as ModalYesNo, Ds as Month, g_ as NORMALIZE_MAP, na as Notifications, ys as Number, yg as OPENAI_COMPATIBLE_PROVIDER_DESCRIPTOR, zs as Order, hg as PUBLISH_PROVIDER_DEFINITIONS, cm as PageUsers, Gp as Pagination, xs as Password, $o as Percentage, mr as PhosphorIconProvider, ru as Prompt, Kl as PromptMode, Cl as PromptUtils, No as ProviderSwitcher, Os as Range, Gr as ReferSite, Hd as Repeat, ed as RichText, qn as Row, x_ as Sanitizer, ia as Search, qs as Select, zf as SideNav, cc as StorageProvider, vs as String, pg as SupabaseApiProviderAdapter, eh as SupabaseAuthProvider, co as SupabaseDataProvider, Co as SupabaseStorageProvider, Ms as Switch, Xd as Tab, Wp as TabDynamic, Jd as TabItem, qd as TabLayouts, $d as Table, Ps as TextArea, ma as ThemeSwitcher, ws as Time, sa as Toolbar, Df as UploadCSV, Pc as UploadDocument, Fc as UploadImage, ks as Url, Es as Week, Z as Wrapper, xt as arrayUnique, Et as arraysEqual, Tt as base64Encode, At as base64ToBlob, jt as base64ToUrl, qi as buildBreadcrumbSchema, Ll as buildTextCommandContext, Er as buttonBaseClass, kr as buttonDangerClass, Pr as buttonDarkClass, Mr as buttonInfoClass, Nr as buttonLightClass, zr as buttonLinkClass, Lr as buttonOutlineDangerClass, Fr as buttonOutlinePrimaryClass, Ir as buttonOutlineSecondaryClass, Rr as buttonOutlineSuccessClass, Dr as buttonPrimaryClass, Or as buttonSecondaryClass, Ar as buttonSuccessClass, jr as buttonWarningClass, Ra as callFirebaseFunction, ht as checkConditions, Nt as cleanRecord, X as cn, il as configureProxy, et as converter, it as copyToClipboard, gt as crc32, xg as createAIProviderRegistry, wh as createCloudflareProviderDefinition, rr as createMotionTransition, En as createTranslations, rt as decodeJWT, Tn as defineLocaleMessages, lt as dirname, Xg as dropBox, ft as eventClosest, Wt as fetchJson, Ut as fetchRest, Gt as fetchWithRetry, ss as fieldAddonClass, is as fieldControlBaseClass, rs as fieldFeedbackClass, os as fieldGroupClass, ns as fieldLabelClass, as as fieldTextAreaBaseClass, Yc as formatAIModelRef, dt as generateUniqueId, gl as getAIModelCatalog, bi as getAccessToken, Pl as getAutoClosedSuffixLength, Cu as getCodeValidationResult, Nc as getFileUrl, Zr as getGlobalVars, Og as getGoogleTrendsData, kg as getGoogleTrendsRelated, Dg as getKeywordIdeas, si as getProviderConfigurationState, Mt as getRecordValue, Wd as getTabLayoutConfig, Kd as getTabPaneClassName, Gd as getTabTriggerClassName, Xm as googleGetAccessToken, Nl as hasAutoClosedSuffix, Dn as interpolate, yt as intersectObjects, Yn as isBadgeDescriptor, St as isEmpty, Ot as isInteractiveElement, sl as isProxyEnabled, _f as loadGoogleMaps, vt as loadScripts, sg as locales, Fl as matchCommandTrigger, Xn as normalizeBadgeProps, ct as normalizeKey, ot as normalizePath, b_ as normalizeVisualChars, Xc as parseAIModelRef, S_ as parseCsvText, ri as path, al as proxyFetch, Ft as recordsEqual, To as registerProviderSessionFactory, $r as removeGlobalVars, kt as render2Base64, mt as replacePlaceholders, bt as replaceVariables, ir as resolveMotionEffect, fu as runPrompt, wt as safeClone, Dt as sanitizeKey, h_ as scrape, Zm as sendEmail, Qr as setGlobalVars, ut as sleep, It as smartTypeCast, pt as substrCount, _g as toProviderDescriptor, at as trimPath, st as trimSlash, _t as ucfirst, $c as useAIProvider, el as useAIProviderRegistry, _i as useAccessToken, cg as useApiProvider, Mp as useAssetsHead, ni as useAuthProvider, Tm as useCredentialsProvider, Ti as useDataProvider, jp as useDocumentHead, Jg as useDropBoxConnect, ts as useEditorHeight, Sm as useEmailProvider, cr as useEnterMotion, Dc as useFileUploadCore, vd as useFormActions, Dd as useFormContext, _d as useFormController, Xr as useGlobalVars, mf as useGoogleMapsConfig, Ep as useHead, Op as useHeadLinks, Fn as useI18n, wr as useIconController, Cr as useIconProvider, ec as useImage, Ap as useLanguageHead, tg as useMenu, ar as useMotionEffect, or as useMotionState, kp as usePaginationHead, sr as usePressMotion, ya as useProvider, jo as useProviderSession, ol as useProxy, Np as usePwaHead, Pp as useSchemaOrgHead, va as useSetProvider, Dp as useSocialHead, lc as useStorageProvider, Y as useTheme, Cn as useThemeController, Su as validateCodeSyntax };
19417
19522
 
19418
19523
  //# sourceMappingURL=index.mjs.map