@llmnative/react 1.27.0 → 1.28.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
@@ -3889,7 +3889,7 @@ var Li = "rounded-lg border border-border bg-card text-card-foreground shadow-sm
3889
3889
  }))
3890
3890
  }, e);
3891
3891
  }, Qi = ({ menuKey: e, as: t = "ul", badges: n = {}, before: r = void 0, after: i = void 0, wrapperClassName: a = void 0, className: o = void 0, headerClassName: s = void 0, itemClassName: c = void 0, linkClassName: l = void 0, iconClassName: u = void 0, textClassName: f = void 0, badgeClassName: p = void 0, arrowClassName: m = void 0, submenuClassName: h = void 0 }) => {
3892
- let g = Yg(e), _ = Y("menu"), v = ({ item: e, index: r }) => {
3892
+ let g = Qg(e), _ = Y("menu"), v = ({ item: e, index: r }) => {
3893
3893
  let [i, a] = T(e.active);
3894
3894
  y(() => {
3895
3895
  a(e.active);
@@ -14270,7 +14270,7 @@ function Sp({ group: e, expanded: t, openItems: n, showIcons: r, onToggle: i })
14270
14270
  }))));
14271
14271
  }
14272
14272
  function Cp({ menuKey: e, items: t, bottomItems: n = [], defaultCollapsed: r = !1, collapsed: i, onCollapsedChange: a, showIcons: o = !0, showCollapseButton: s = !0, footer: c, header: l, embedded: u = !1 }) {
14273
- let { pathname: f } = j(), p = Y("sideNav"), m = Gn("sideNav"), h = Yg(e ?? ""), g = t ?? (e ? gp(h) : []), v = i !== void 0, [b, x] = T(r), S = i === void 0 ? b : i, C = _((e) => {
14273
+ let { pathname: f } = j(), p = Y("sideNav"), m = Gn("sideNav"), h = Qg(e ?? ""), g = t ?? (e ? gp(h) : []), v = i !== void 0, [b, x] = T(r), S = i === void 0 ? b : i, C = _((e) => {
14274
14274
  let t = typeof e == "function" ? e(S) : e;
14275
14275
  v ? a?.(t) : x(t);
14276
14276
  }, [
@@ -16947,7 +16947,65 @@ var jh = class {
16947
16947
  isAuthenticated() {
16948
16948
  return this.isConfigured() ? !!Oi(this.config.clientId)?.access_token : !1;
16949
16949
  }
16950
- }, Ph = (e) => {
16950
+ }, Ph = (e) => ({
16951
+ uid: e.login,
16952
+ displayName: e.name || e.login,
16953
+ ...e.email ? { email: e.email } : {},
16954
+ ...e.avatarUrl ? { photoURL: e.avatarUrl } : {},
16955
+ provider: "github",
16956
+ login: e.login
16957
+ }), Fh = class {
16958
+ config;
16959
+ user = null;
16960
+ listeners = /* @__PURE__ */ new Set();
16961
+ loading = null;
16962
+ constructor(e) {
16963
+ this.config = e, this.isConfigured() && typeof window < "u" && this.refresh();
16964
+ }
16965
+ getConfigurationState() {
16966
+ return gi("GitHubAuthProvider", hi(this.config, ["sessionUrl"], "github."));
16967
+ }
16968
+ isConfigured() {
16969
+ return this.getConfigurationState().configured;
16970
+ }
16971
+ get base() {
16972
+ return (this.config.sessionUrl ?? "").replace(/\/+$/, "");
16973
+ }
16974
+ getUser() {
16975
+ return this.user;
16976
+ }
16977
+ isAuthenticated() {
16978
+ return !!this.user;
16979
+ }
16980
+ refresh() {
16981
+ return this.loading ??= fetch(`${this.base}/me`, {
16982
+ credentials: "include",
16983
+ headers: { Accept: "application/json" }
16984
+ }).then(async (e) => e.ok ? Ph(await e.json()) : null).catch(() => null).then((e) => (this.setUser(e), e)).finally(() => {
16985
+ this.loading = null;
16986
+ }), this.loading;
16987
+ }
16988
+ async signIn(e = {}) {
16989
+ if (!this.isConfigured()) throw Error("GitHubAuthProvider: missing github.sessionUrl configuration.");
16990
+ let t = new URLSearchParams({ returnTo: `${window.location.pathname}${window.location.search}` });
16991
+ return e.scopes?.length && t.set("scope", e.scopes.join(" ")), window.location.assign(`${this.base}/login?${t.toString()}`), this.user;
16992
+ }
16993
+ async signOut() {
16994
+ this.isConfigured() && await fetch(`${this.base}/logout`, {
16995
+ method: "POST",
16996
+ credentials: "include"
16997
+ }).catch(() => void 0), this.setUser(null);
16998
+ }
16999
+ onAuthChange(e) {
17000
+ return this.listeners.add(e), () => {
17001
+ this.listeners.delete(e);
17002
+ };
17003
+ }
17004
+ setUser(e) {
17005
+ let t = (e?.uid ?? null) !== (this.user?.uid ?? null);
17006
+ this.user = e, t && this.listeners.forEach((t) => t(e));
17007
+ }
17008
+ }, Ih = (e) => {
16951
17009
  let t = Wa("oAuth2");
16952
17010
  if (!t) return console.warn("GoogleAuth: Missing oAuth2.clientId in configuration"), Promise.reject("Google client ID not found");
16953
17011
  let n = e.join(" "), r = `googleAccessToken::${n}`, i = `googleExpiresAt::${n}`;
@@ -16964,8 +17022,8 @@ var jh = class {
16964
17022
  };
16965
17023
  //#endregion
16966
17024
  //#region src/providers/email/google/email.ts
16967
- async function Fh({ to: e, bcc: t, subject: n, message: r }) {
16968
- let i = await Ph(["https://www.googleapis.com/auth/gmail.send"]), a = [`To: ${e.join(", ")}`];
17025
+ async function Lh({ to: e, bcc: t, subject: n, message: r }) {
17026
+ let i = await Ih(["https://www.googleapis.com/auth/gmail.send"]), a = [`To: ${e.join(", ")}`];
16969
17027
  t && t.length && a.push(`Bcc: ${t.join(", ")}`);
16970
17028
  let o = [
16971
17029
  ...a,
@@ -16990,7 +17048,7 @@ async function Fh({ to: e, bcc: t, subject: n, message: r }) {
16990
17048
  }
16991
17049
  //#endregion
16992
17050
  //#region src/providers/email/google/GmailEmailProvider.ts
16993
- var Ih = class {
17051
+ var Rh = class {
16994
17052
  getConfigurationState() {
16995
17053
  return gi("GmailEmailProvider", hi(Wa("oAuth2"), ["clientId"], "google.oAuth2."));
16996
17054
  }
@@ -16999,7 +17057,7 @@ var Ih = class {
16999
17057
  }
17000
17058
  async send(e) {
17001
17059
  if (!this.isConfigured()) throw Error(this.getConfigurationState().reason || "GmailEmailProvider is not configured.");
17002
- await Fh({
17060
+ await Lh({
17003
17061
  to: Array.isArray(e.to) ? e.to : [e.to],
17004
17062
  bcc: e.bcc ? Array.isArray(e.bcc) ? e.bcc : [e.bcc] : void 0,
17005
17063
  subject: e.subject,
@@ -17009,7 +17067,7 @@ var Ih = class {
17009
17067
  };
17010
17068
  //#endregion
17011
17069
  //#region src/providers/auth/supabase/SupabaseAuthProvider.ts
17012
- function Lh(e) {
17070
+ function zh(e) {
17013
17071
  return e ? {
17014
17072
  uid: e.id,
17015
17073
  email: e.email ?? void 0,
@@ -17018,7 +17076,7 @@ function Lh(e) {
17018
17076
  raw: e
17019
17077
  } : null;
17020
17078
  }
17021
- var Rh = class {
17079
+ var Bh = class {
17022
17080
  config;
17023
17081
  get client() {
17024
17082
  return mo(this.config.url, this.config.anonKey);
@@ -17033,7 +17091,7 @@ var Rh = class {
17033
17091
  return this.getConfigurationState().configured;
17034
17092
  }
17035
17093
  getUser() {
17036
- return Lh((this.client.auth?._session ?? null)?.user ?? null);
17094
+ return zh((this.client.auth?._session ?? null)?.user ?? null);
17037
17095
  }
17038
17096
  isAuthenticated() {
17039
17097
  return !!this.getUser();
@@ -17043,7 +17101,7 @@ var Rh = class {
17043
17101
  if (t === "anonymous") {
17044
17102
  let { data: e, error: t } = await this.client.auth.signInAnonymously();
17045
17103
  if (t) throw t;
17046
- return Lh(e.user);
17104
+ return zh(e.user);
17047
17105
  }
17048
17106
  if (t === "magic_link") {
17049
17107
  let t = e.email;
@@ -17072,7 +17130,7 @@ var Rh = class {
17072
17130
  password: r
17073
17131
  });
17074
17132
  if (a) throw a;
17075
- return Lh(i.user);
17133
+ return zh(i.user);
17076
17134
  }
17077
17135
  async signOut() {
17078
17136
  let { error: e } = await this.client.auth.signOut();
@@ -17080,10 +17138,10 @@ var Rh = class {
17080
17138
  }
17081
17139
  onAuthChange(e) {
17082
17140
  this.client.auth.getSession().then(({ data: t }) => {
17083
- e(Lh(t.session?.user ?? null));
17141
+ e(zh(t.session?.user ?? null));
17084
17142
  });
17085
17143
  let { data: { subscription: t } } = this.client.auth.onAuthStateChange((t, n) => {
17086
- e(Lh(n?.user ?? null));
17144
+ e(zh(n?.user ?? null));
17087
17145
  });
17088
17146
  return () => t.unsubscribe();
17089
17147
  }
@@ -17094,15 +17152,15 @@ var Rh = class {
17094
17152
  if (!n) throw Error("SupabaseAuthProvider: no active session");
17095
17153
  return n;
17096
17154
  }
17097
- }, zh = "https://api.anthropic.com/v1/models", Bh = "https://api.anthropic.com/v1/messages";
17098
- function Vh(e) {
17155
+ }, Vh = "https://api.anthropic.com/v1/models", Hh = "https://api.anthropic.com/v1/messages";
17156
+ function Uh(e) {
17099
17157
  return {
17100
17158
  name: e.name,
17101
17159
  description: e.description,
17102
17160
  input_schema: e.inputSchema
17103
17161
  };
17104
17162
  }
17105
- function Hh(e) {
17163
+ function Wh(e) {
17106
17164
  if (e.role === "user") return {
17107
17165
  role: "user",
17108
17166
  content: e.content
@@ -17134,7 +17192,7 @@ function Hh(e) {
17134
17192
  }))
17135
17193
  };
17136
17194
  }
17137
- function Uh(e) {
17195
+ function Gh(e) {
17138
17196
  let t = e?.content;
17139
17197
  if (!Array.isArray(t)) return null;
17140
17198
  let n = t.filter((e) => e?.type === "text").map((e) => String(e.text ?? "")), r = t.filter((e) => e?.type === "tool_use");
@@ -17153,7 +17211,7 @@ function Uh(e) {
17153
17211
  text: i
17154
17212
  } : null;
17155
17213
  }
17156
- var Wh = {
17214
+ var Kh = {
17157
17215
  id: "anthropic",
17158
17216
  label: "Anthropic",
17159
17217
  description: "Claude models via the Anthropic API.",
@@ -17177,7 +17235,7 @@ var Wh = {
17177
17235
  supportsDocuments: !0
17178
17236
  },
17179
17237
  discoverModels: async (e) => {
17180
- let t = await en(zh, { headers: {
17238
+ let t = await en(Vh, { headers: {
17181
17239
  "x-api-key": e,
17182
17240
  "anthropic-version": "2023-06-01"
17183
17241
  } }, Pl);
@@ -17205,7 +17263,7 @@ var Wh = {
17205
17263
  type: "text",
17206
17264
  text: t.prompt
17207
17265
  }] : t.prompt;
17208
- return Uh(await en(Bh, {
17266
+ return Gh(await en(Hh, {
17209
17267
  method: "POST",
17210
17268
  headers: {
17211
17269
  "x-api-key": e,
@@ -17216,18 +17274,18 @@ var Wh = {
17216
17274
  model: t.model,
17217
17275
  max_tokens: 4096,
17218
17276
  ...t.role ? { system: bl.parseRole(t.role, t) } : {},
17219
- messages: [...(t.history ?? []).map(Hh), ...t.prompt ? [{
17277
+ messages: [...(t.history ?? []).map(Wh), ...t.prompt ? [{
17220
17278
  role: "user",
17221
17279
  content: r
17222
17280
  }] : []],
17223
- ...t.tools?.length ? { tools: t.tools.map(Vh) } : {},
17281
+ ...t.tools?.length ? { tools: t.tools.map(Uh) } : {},
17224
17282
  ...typeof t.temperature == "number" ? { temperature: t.temperature } : {}
17225
17283
  },
17226
17284
  signal: t.signal
17227
17285
  }, Pl));
17228
17286
  }
17229
- }, Gh = (e) => typeof e.id == "string" ? e.id : void 0, Kh = (e) => e.replace(/\/+$/, "");
17230
- function qh(e) {
17287
+ }, qh = (e) => typeof e.id == "string" ? e.id : void 0, Jh = (e) => e.replace(/\/+$/, "");
17288
+ function Yh(e) {
17231
17289
  return {
17232
17290
  type: "function",
17233
17291
  function: {
@@ -17237,7 +17295,7 @@ function qh(e) {
17237
17295
  }
17238
17296
  };
17239
17297
  }
17240
- function Jh(e) {
17298
+ function Xh(e) {
17241
17299
  if (typeof e != "string") return {};
17242
17300
  try {
17243
17301
  return JSON.parse(e);
@@ -17245,7 +17303,7 @@ function Jh(e) {
17245
17303
  return {};
17246
17304
  }
17247
17305
  }
17248
- function Yh(e) {
17306
+ function Zh(e) {
17249
17307
  return e.role === "user" ? [{
17250
17308
  role: "user",
17251
17309
  content: e.content
@@ -17266,7 +17324,7 @@ function Yh(e) {
17266
17324
  content: typeof e.output == "string" ? e.output : JSON.stringify(e.output)
17267
17325
  }));
17268
17326
  }
17269
- function Xh(e) {
17327
+ function Qh(e) {
17270
17328
  let t = e?.choices?.[0]?.message;
17271
17329
  if (!t) return null;
17272
17330
  let n = Array.isArray(t.tool_calls) ? t.tool_calls : [];
@@ -17279,7 +17337,7 @@ function Xh(e) {
17279
17337
  return {
17280
17338
  id: String(e.id),
17281
17339
  name: String(t.name ?? ""),
17282
- input: Jh(t.arguments)
17340
+ input: Xh(t.arguments)
17283
17341
  };
17284
17342
  }),
17285
17343
  text: e || void 0
@@ -17291,8 +17349,8 @@ function Xh(e) {
17291
17349
  text: r
17292
17350
  } : null;
17293
17351
  }
17294
- var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i, defaultModel: a, fallbackModels: o, baseUrl: s, modelsUrl: c, chatCompletionsUrl: l, dashboardUrl: d, credentialsHint: f, validateApiKey: p, mapModelEntry: m = Gh }) => {
17295
- let h = Kh(s), g = c || `${h}/models`, _ = l || `${h}/chat/completions`;
17352
+ var $h = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i, defaultModel: a, fallbackModels: o, baseUrl: s, modelsUrl: c, chatCompletionsUrl: l, dashboardUrl: d, credentialsHint: f, validateApiKey: p, mapModelEntry: m = qh }) => {
17353
+ let h = Jh(s), g = c || `${h}/models`, _ = l || `${h}/chat/completions`;
17296
17354
  return {
17297
17355
  id: e,
17298
17356
  label: t,
@@ -17369,22 +17427,22 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17369
17427
  role: "system",
17370
17428
  content: bl.parseRole(n.role, n)
17371
17429
  }] : [],
17372
- ...(n.history ?? []).flatMap(Yh),
17430
+ ...(n.history ?? []).flatMap(Zh),
17373
17431
  ...n.prompt ? [{
17374
17432
  role: "user",
17375
17433
  content: i
17376
17434
  }] : []
17377
17435
  ],
17378
- ...n.tools?.length ? { tools: n.tools.map(qh) } : {},
17436
+ ...n.tools?.length ? { tools: n.tools.map(Yh) } : {},
17379
17437
  ...typeof n.temperature == "number" ? { temperature: n.temperature } : {}
17380
17438
  },
17381
17439
  signal: n.signal
17382
17440
  }, Pl);
17383
17441
  if (!a) throw Bl(t);
17384
- return Xh(a);
17442
+ return Qh(a);
17385
17443
  }
17386
17444
  };
17387
- }, Qh = "https://api.cloudflare.com/client/v4", $h = 100, eg = 5, tg = /-guard-/, ng = "Cloudflare Workers AI", rg = "Open-weight models (Llama, GPT-OSS, Qwen, Gemma, GLM…) with a free daily allowance.", ig = "https://dash.cloudflare.com/?to=/:account/ai/workers-ai", ag = "Cloudflare dashboard → AI → Workers AI → REST API: create a Workers AI API token and copy the Account ID.", og = [{
17445
+ }, eg = "https://api.cloudflare.com/client/v4", tg = 100, ng = 5, rg = /-guard-/, ig = "Cloudflare Workers AI", ag = "Open-weight models (Llama, GPT-OSS, Qwen, Gemma, GLM…) with a free daily allowance.", og = "https://dash.cloudflare.com/?to=/:account/ai/workers-ai", sg = "Cloudflare dashboard → AI → Workers AI → REST API: create a Workers AI API token and copy the Account ID.", cg = [{
17388
17446
  key: "apiKey",
17389
17447
  label: "API Token",
17390
17448
  type: "password"
@@ -17393,7 +17451,7 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17393
17451
  label: "Account ID",
17394
17452
  type: "text",
17395
17453
  placeholder: "32-character account id"
17396
- }], sg = (e, t) => (e.properties ?? []).some((e) => e.property_id === t && String(e.value) === "true"), cg = (e) => {
17454
+ }], lg = (e, t) => (e.properties ?? []).some((e) => e.property_id === t && String(e.value) === "true"), ug = (e) => {
17397
17455
  let t = (e.properties ?? []).find((e) => e.property_id === "price")?.value;
17398
17456
  if (!Array.isArray(t)) return;
17399
17457
  let n = (e) => {
@@ -17406,11 +17464,11 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17406
17464
  currency: "USD",
17407
17465
  source: "provider"
17408
17466
  };
17409
- }, lg = (e) => e?.map((e) => e.role === "assistant" && !e.content ? {
17467
+ }, dg = (e) => e?.map((e) => e.role === "assistant" && !e.content ? {
17410
17468
  ...e,
17411
17469
  content: ""
17412
- } : e), ug = ({ accountId: e, defaultModel: t = "@cf/meta/llama-3.3-70b-instruct-fp8-fast", includePaidModels: n = !1 }) => {
17413
- let r = `${Qh}/accounts/${encodeURIComponent(e.trim())}`, i = `${r}/ai/models/search`, a = (e, t, n) => {
17470
+ } : e), fg = ({ accountId: e, defaultModel: t = "@cf/meta/llama-3.3-70b-instruct-fp8-fast", includePaidModels: n = !1 }) => {
17471
+ let r = `${eg}/accounts/${encodeURIComponent(e.trim())}`, i = `${r}/ai/models/search`, a = (e, t, n) => {
17414
17472
  let r = new URLSearchParams({
17415
17473
  task: "Text Generation",
17416
17474
  hide_experimental: "true",
@@ -17418,10 +17476,10 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17418
17476
  per_page: String(n)
17419
17477
  });
17420
17478
  return en(`${i}?${r}`, { headers: { Authorization: `Bearer ${e}` } }, Pl);
17421
- }, o = Zh({
17479
+ }, o = $h({
17422
17480
  id: "cloudflare",
17423
- label: ng,
17424
- description: rg,
17481
+ label: ig,
17482
+ description: ag,
17425
17483
  configKey: "cloudflare",
17426
17484
  requiredConfigKeys: ["ai.cloudflare.apiToken", "ai.cloudflare.accountId"],
17427
17485
  defaultModel: t,
@@ -17432,8 +17490,8 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17432
17490
  "@cf/meta/llama-4-scout-17b-16e-instruct"
17433
17491
  ].filter((e, t, n) => n.indexOf(e) === t),
17434
17492
  baseUrl: `${r}/ai/v1`,
17435
- dashboardUrl: ig,
17436
- credentialsHint: ag,
17493
+ dashboardUrl: og,
17494
+ credentialsHint: sg,
17437
17495
  validateApiKey: async (e) => {
17438
17496
  try {
17439
17497
  let t = await a(e, 1, 1);
@@ -17454,33 +17512,33 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17454
17512
  });
17455
17513
  return {
17456
17514
  ...o,
17457
- credentialFields: og,
17515
+ credentialFields: cg,
17458
17516
  discoverModels: async (e) => {
17459
17517
  let t = [];
17460
- for (let r = 1; r <= eg; r++) {
17461
- let i = await a(e, r, $h), o = Array.isArray(i?.result) ? i.result : [];
17462
- if (o.filter((e) => !tg.test(e.name ?? "")).filter((e) => n || !sg(e, "require_workers_paid")).forEach((e) => {
17518
+ for (let r = 1; r <= ng; r++) {
17519
+ let i = await a(e, r, tg), o = Array.isArray(i?.result) ? i.result : [];
17520
+ if (o.filter((e) => !rg.test(e.name ?? "")).filter((e) => n || !lg(e, "require_workers_paid")).forEach((e) => {
17463
17521
  e.name && t.push({
17464
17522
  model: e.name,
17465
- pricing: cg(e)
17523
+ pricing: ug(e)
17466
17524
  });
17467
- }), o.length < $h) break;
17525
+ }), o.length < tg) break;
17468
17526
  }
17469
17527
  return t;
17470
17528
  },
17471
17529
  complete: (e, t) => o.complete(e, {
17472
17530
  ...t,
17473
- history: lg(t.history)
17531
+ history: dg(t.history)
17474
17532
  })
17475
17533
  };
17476
- }, dg = {
17534
+ }, pg = {
17477
17535
  id: "cloudflare",
17478
- label: ng,
17479
- description: rg,
17480
- credentialFields: og,
17481
- credentialsUrl: ig,
17482
- credentialsHint: ag
17483
- }, fg = Zh({
17536
+ label: ig,
17537
+ description: ag,
17538
+ credentialFields: cg,
17539
+ credentialsUrl: og,
17540
+ credentialsHint: sg
17541
+ }, mg = $h({
17484
17542
  id: "deepseek",
17485
17543
  label: "DeepSeek",
17486
17544
  description: "Cost-efficient reasoning and chat models.",
@@ -17490,15 +17548,15 @@ var Zh = ({ id: e, label: t, description: n, configKey: r, requiredConfigKeys: i
17490
17548
  baseUrl: "https://api.deepseek.com",
17491
17549
  dashboardUrl: "https://platform.deepseek.com/api_keys",
17492
17550
  credentialsHint: "DeepSeek platform → API Keys → Create new API key."
17493
- }), pg = "https://generativelanguage.googleapis.com/v1beta/models", mg = "https://generativelanguage.googleapis.com/v1beta/models";
17494
- function hg(e) {
17551
+ }), hg = "https://generativelanguage.googleapis.com/v1beta/models", gg = "https://generativelanguage.googleapis.com/v1beta/models";
17552
+ function _g(e) {
17495
17553
  return [{ function_declarations: e.map((e) => ({
17496
17554
  name: e.name,
17497
17555
  description: e.description,
17498
17556
  parameters: e.inputSchema
17499
17557
  })) }];
17500
17558
  }
17501
- function gg(e) {
17559
+ function vg(e) {
17502
17560
  if (e.role === "user") return {
17503
17561
  role: "user",
17504
17562
  parts: [{ text: e.content }]
@@ -17523,7 +17581,7 @@ function gg(e) {
17523
17581
  } }))
17524
17582
  };
17525
17583
  }
17526
- function _g(e) {
17584
+ function yg(e) {
17527
17585
  let t = e?.candidates?.[0]?.content?.parts;
17528
17586
  if (!Array.isArray(t)) return null;
17529
17587
  let n = t.filter((e) => typeof e?.text == "string").map((e) => e.text), r = t.filter((e) => e?.functionCall);
@@ -17542,7 +17600,7 @@ function _g(e) {
17542
17600
  text: i
17543
17601
  } : null;
17544
17602
  }
17545
- var vg = {
17603
+ var bg = {
17546
17604
  id: "gemini",
17547
17605
  label: "Gemini",
17548
17606
  description: "Google's multimodal Gemini model family.",
@@ -17566,12 +17624,12 @@ var vg = {
17566
17624
  supportsDocuments: !0
17567
17625
  },
17568
17626
  discoverModels: async (e) => {
17569
- let t = await en(`${pg}?key=${e}`, null, Pl);
17627
+ let t = await en(`${hg}?key=${e}`, null, Pl);
17570
17628
  return Array.isArray(t?.models) ? t.models.map((e) => e.name?.replace(/^models\//, "")).filter(Boolean) : [];
17571
17629
  },
17572
17630
  validateApiKey: async (e) => {
17573
17631
  try {
17574
- let t = await en(`${pg}?key=${e}`, null, Pl);
17632
+ let t = await en(`${hg}?key=${e}`, null, Pl);
17575
17633
  return t === null ? {
17576
17634
  valid: !1,
17577
17635
  error: "Nessuna risposta dal server (CORS o rete)"
@@ -17592,22 +17650,22 @@ var vg = {
17592
17650
  mime_type: e.mimeType,
17593
17651
  data: e.base64
17594
17652
  } }), { text: t.prompt }];
17595
- return _g(await en(`${mg}/${t.model}:generateContent?key=${e}`, {
17653
+ return yg(await en(`${gg}/${t.model}:generateContent?key=${e}`, {
17596
17654
  method: "POST",
17597
17655
  headers: t.logId ? { [u]: t.logId } : void 0,
17598
17656
  body: {
17599
- contents: [...(t.history ?? []).map(gg), ...t.prompt ? [{
17657
+ contents: [...(t.history ?? []).map(vg), ...t.prompt ? [{
17600
17658
  role: "user",
17601
17659
  parts: n
17602
17660
  }] : []],
17603
17661
  ...t.role ? { systemInstruction: { parts: [{ text: bl.parseRole(t.role, t) }] } } : {},
17604
- ...t.tools?.length ? { tools: hg(t.tools) } : {},
17662
+ ...t.tools?.length ? { tools: _g(t.tools) } : {},
17605
17663
  generationConfig: typeof t.temperature == "number" ? { temperature: t.temperature } : void 0
17606
17664
  },
17607
17665
  signal: t.signal
17608
17666
  }, Pl));
17609
17667
  }
17610
- }, yg = Zh({
17668
+ }, xg = $h({
17611
17669
  id: "mistral",
17612
17670
  label: "Mistral",
17613
17671
  description: "European-hosted open and commercial language models.",
@@ -17621,7 +17679,7 @@ var vg = {
17621
17679
  baseUrl: "https://api.mistral.ai/v1",
17622
17680
  dashboardUrl: "https://console.mistral.ai/api-keys",
17623
17681
  credentialsHint: "Mistral Console → API Keys → Create new key."
17624
- }), bg = /whisper|orpheus|tts|guard/i, xg = Zh({
17682
+ }), Sg = /whisper|orpheus|tts|guard/i, Cg = $h({
17625
17683
  id: "groq",
17626
17684
  label: "Groq",
17627
17685
  description: "Very fast inference on open-weight models, with a free tier.",
@@ -17631,8 +17689,8 @@ var vg = {
17631
17689
  baseUrl: "https://api.groq.com/openai/v1",
17632
17690
  dashboardUrl: "https://console.groq.com/keys",
17633
17691
  credentialsHint: "Groq Console → API Keys → Create API Key.",
17634
- mapModelEntry: (e) => typeof e.id == "string" && e.active !== !1 && !bg.test(e.id) ? e.id : void 0
17635
- }), Sg = Zh({
17692
+ mapModelEntry: (e) => typeof e.id == "string" && e.active !== !1 && !Sg.test(e.id) ? e.id : void 0
17693
+ }), wg = $h({
17636
17694
  id: "openai",
17637
17695
  label: "OpenAI",
17638
17696
  description: "GPT models via the OpenAI API.",
@@ -17650,8 +17708,8 @@ var vg = {
17650
17708
  baseUrl: "https://api.openai.com/v1",
17651
17709
  dashboardUrl: "https://platform.openai.com/api-keys",
17652
17710
  credentialsHint: "OpenAI dashboard → API keys → Create new secret key."
17653
- }), Cg = "https://opencode.ai/zen/v1/models", wg = "https://opencode.ai/zen/v1/chat/completions", Tg = "deepseek-v4.1-flash", Eg = [
17654
- Tg,
17711
+ }), Tg = "https://opencode.ai/zen/v1/models", Eg = "https://opencode.ai/zen/v1/chat/completions", Dg = "deepseek-v4.1-flash", Og = [
17712
+ Dg,
17655
17713
  "deepseek-v4-pro",
17656
17714
  "glm-5.3",
17657
17715
  "glm-5.3-flash",
@@ -17659,13 +17717,13 @@ var vg = {
17659
17717
  "kimi-k3",
17660
17718
  "minimax-m3",
17661
17719
  "qwen3.8-flash"
17662
- ], Dg = /-free$/, Og = /* @__PURE__ */ new Set(["big-pickle"]), kg = (e) => Dg.test(e) || Og.has(e), Ag = {
17720
+ ], kg = /-free$/, Ag = /* @__PURE__ */ new Set(["big-pickle"]), jg = (e) => kg.test(e) || Ag.has(e), Mg = {
17663
17721
  id: "opencode",
17664
17722
  label: "OpenCode",
17665
17723
  description: "OpenCode Zen — a curated set of coding-focused models.",
17666
17724
  configKey: "openCodeApiKey",
17667
- defaultModel: Tg,
17668
- fallbackModels: Eg,
17725
+ defaultModel: Dg,
17726
+ fallbackModels: Og,
17669
17727
  dashboardUrl: "https://opencode.ai",
17670
17728
  credentialsHint: "OpenCode Zen dashboard → API Keys → Create Key.",
17671
17729
  credentialFields: [{
@@ -17679,8 +17737,8 @@ var vg = {
17679
17737
  supportsDocuments: !0
17680
17738
  },
17681
17739
  discoverModels: async (e) => {
17682
- let t = await en(Cg, { headers: { Authorization: `Bearer ${e}` } }, Pl);
17683
- 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).filter((e) => !kg(e));
17740
+ let t = await en(Tg, { headers: { Authorization: `Bearer ${e}` } }, Pl);
17741
+ 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).filter((e) => !jg(e));
17684
17742
  },
17685
17743
  complete: async (e, t) => {
17686
17744
  let n = t.attachments ?? [], r = n.length > 0 ? n.map((e) => e.mimeType.startsWith("image/") ? {
@@ -17695,7 +17753,7 @@ var vg = {
17695
17753
  }).concat({
17696
17754
  type: "text",
17697
17755
  text: t.prompt
17698
- }) : t.prompt, i = await en(wg, {
17756
+ }) : t.prompt, i = await en(Eg, {
17699
17757
  method: "POST",
17700
17758
  headers: {
17701
17759
  Authorization: `Bearer ${e}`,
@@ -17708,21 +17766,21 @@ var vg = {
17708
17766
  role: "system",
17709
17767
  content: bl.parseRole(t.role, t)
17710
17768
  }] : [],
17711
- ...(t.history ?? []).flatMap(Yh),
17769
+ ...(t.history ?? []).flatMap(Zh),
17712
17770
  ...t.prompt ? [{
17713
17771
  role: "user",
17714
17772
  content: r
17715
17773
  }] : []
17716
17774
  ],
17717
- ...t.tools?.length ? { tools: t.tools.map(qh) } : {},
17775
+ ...t.tools?.length ? { tools: t.tools.map(Yh) } : {},
17718
17776
  ...typeof t.temperature == "number" ? { temperature: t.temperature } : {}
17719
17777
  },
17720
17778
  signal: t.signal
17721
17779
  }, Pl);
17722
17780
  if (!i) throw Bl("OpenCode");
17723
- return Xh(i);
17781
+ return Qh(i);
17724
17782
  }
17725
- }, jg = (e) => {
17783
+ }, Ng = (e) => {
17726
17784
  if (!e || typeof e != "object") return;
17727
17785
  let { prompt: t, completion: n } = e, r = Number(t), i = Number(n);
17728
17786
  if (t === void 0 || n === void 0 || !Number.isFinite(r) || !Number.isFinite(i) || r < 0 || i < 0) return;
@@ -17733,7 +17791,7 @@ var vg = {
17733
17791
  currency: "USD",
17734
17792
  source: "provider"
17735
17793
  };
17736
- }, Mg = Zh({
17794
+ }, Pg = $h({
17737
17795
  id: "openrouter",
17738
17796
  label: "OpenRouter",
17739
17797
  description: "Unified access to many model providers through one API.",
@@ -17749,7 +17807,7 @@ var vg = {
17749
17807
  credentialsHint: "OpenRouter → Settings → API Keys → Create Key.",
17750
17808
  mapModelEntry: (e) => typeof e.id == "string" ? {
17751
17809
  model: e.id,
17752
- pricing: jg(e.pricing)
17810
+ pricing: Ng(e.pricing)
17753
17811
  } : void 0,
17754
17812
  validateApiKey: async (e) => {
17755
17813
  try {
@@ -17771,7 +17829,7 @@ var vg = {
17771
17829
  };
17772
17830
  }
17773
17831
  }
17774
- }), Ng = {
17832
+ }), Fg = {
17775
17833
  dbRealtime: {
17776
17834
  service: "data",
17777
17835
  create: () => new Sh()
@@ -17788,24 +17846,28 @@ var vg = {
17788
17846
  service: "auth",
17789
17847
  create: () => new Eh()
17790
17848
  }
17791
- }, Pg = {
17849
+ }, Ig = {
17792
17850
  googleAuth: {
17793
17851
  service: "auth",
17794
17852
  create: () => new rh()
17795
17853
  },
17796
17854
  gmail: {
17797
17855
  service: "email",
17798
- create: () => new Ih()
17856
+ create: () => new Rh()
17799
17857
  },
17800
17858
  googleServiceAccount: {
17801
17859
  service: "credentials",
17802
17860
  create: (e) => new jh(e.serviceAccount),
17803
17861
  when: (e) => !!e.serviceAccount
17804
17862
  }
17805
- }, Fg = { dropboxAuth: {
17863
+ }, Lg = { dropboxAuth: {
17806
17864
  service: "auth",
17807
17865
  create: (e) => new Nh(e)
17808
- } }, Ig = {
17866
+ } }, Rg = { githubAuth: {
17867
+ service: "auth",
17868
+ create: (e) => new Fh(e),
17869
+ when: (e) => !!e?.sessionUrl?.trim()
17870
+ } }, zg = {
17809
17871
  supabaseDb: {
17810
17872
  service: "data",
17811
17873
  create: (e) => new To(e)
@@ -17816,33 +17878,34 @@ var vg = {
17816
17878
  },
17817
17879
  supabaseAuth: {
17818
17880
  service: "auth",
17819
- create: (e) => new Rh(e)
17881
+ create: (e) => new Bh(e)
17820
17882
  }
17821
- }, Lg = { mock: {
17883
+ }, Bg = { mock: {
17822
17884
  service: "data",
17823
17885
  create: (e) => new Mo(e?.data)
17824
- } }, Rg = (e, t) => ({
17886
+ } }, Vg = (e, t) => ({
17825
17887
  service: "ai",
17826
17888
  create: (n) => new Kl(e, n?.[t] || ""),
17827
17889
  when: (e) => !!e?.[t]
17828
- }), zg = {
17829
- firebase: Ng,
17830
- google: Pg,
17831
- dropbox: Fg,
17832
- supabase: Ig,
17833
- mock: Lg,
17890
+ }), Hg = {
17891
+ firebase: Fg,
17892
+ google: Ig,
17893
+ dropbox: Lg,
17894
+ github: Rg,
17895
+ supabase: zg,
17896
+ mock: Bg,
17834
17897
  ai: {
17835
- openai: Rg(Sg, "openaiApiKey"),
17836
- openrouter: Rg(Mg, "openRouterApiKey"),
17837
- opencode: Rg(Ag, "openCodeApiKey"),
17838
- deepseek: Rg(fg, "deepSeekApiKey"),
17839
- gemini: Rg(vg, "geminiApiKey"),
17840
- anthropic: Rg(Wh, "anthropicApiKey"),
17841
- mistral: Rg(yg, "mistralApiKey"),
17842
- groq: Rg(xg, "groqApiKey"),
17898
+ openai: Vg(wg, "openaiApiKey"),
17899
+ openrouter: Vg(Pg, "openRouterApiKey"),
17900
+ opencode: Vg(Mg, "openCodeApiKey"),
17901
+ deepseek: Vg(mg, "deepSeekApiKey"),
17902
+ gemini: Vg(bg, "geminiApiKey"),
17903
+ anthropic: Vg(Kh, "anthropicApiKey"),
17904
+ mistral: Vg(xg, "mistralApiKey"),
17905
+ groq: Vg(Cg, "groqApiKey"),
17843
17906
  cloudflare: {
17844
17907
  service: "ai",
17845
- create: (e) => new Kl(ug({
17908
+ create: (e) => new Kl(fg({
17846
17909
  accountId: e?.cloudflare?.accountId?.trim() || "",
17847
17910
  defaultModel: e?.cloudflare?.defaultModel?.trim() || void 0,
17848
17911
  includePaidModels: e?.cloudflare?.includePaidModels
@@ -17850,8 +17913,8 @@ var vg = {
17850
17913
  when: (e) => !!e?.cloudflare?.apiToken?.trim() && !!e?.cloudflare?.accountId?.trim()
17851
17914
  }
17852
17915
  }
17853
- }, Bg = () => /* @__PURE__ */ d.createElement("div", { className: "flex min-h-[calc(100vh-4rem)] items-center justify-center" }, /* @__PURE__ */ d.createElement("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-muted border-t-primary" }));
17854
- function Vg(e, t) {
17916
+ }, Ug = () => /* @__PURE__ */ d.createElement("div", { className: "flex min-h-[calc(100vh-4rem)] items-center justify-center" }, /* @__PURE__ */ d.createElement("div", { className: "h-8 w-8 animate-spin rounded-full border-2 border-muted border-t-primary" }));
17917
+ function Wg(e, t) {
17855
17918
  if (!t) return;
17856
17919
  let n = t, r = typeof t == "object" && !Array.isArray(t) ? Object.entries(n) : [];
17857
17920
  if (r.length > 0 && r.every(([, e]) => typeof e == "object" && !!e)) {
@@ -17860,10 +17923,10 @@ function Vg(e, t) {
17860
17923
  }
17861
17924
  e.custom = t;
17862
17925
  }
17863
- function Hg(e, t, n = "default") {
17926
+ function Gg(e, t, n = "default") {
17864
17927
  return t && e[t] ? t : Object.keys(e)[0] ?? n;
17865
17928
  }
17866
- function Ug(e = {}) {
17929
+ function Kg(e = {}) {
17867
17930
  let t = {
17868
17931
  data: {},
17869
17932
  storage: {},
@@ -17872,24 +17935,24 @@ function Ug(e = {}) {
17872
17935
  ai: {},
17873
17936
  credentials: {}
17874
17937
  }, n = (e) => t[e] ??= {};
17875
- for (let [t, r] of Object.entries(zg)) {
17938
+ for (let [t, r] of Object.entries(Hg)) {
17876
17939
  let i = e[t];
17877
17940
  if (i !== void 0) for (let [e, t] of Object.entries(r)) (!t.when || t.when(i)) && (n(t.service)[e] = t.create(i));
17878
17941
  }
17879
- for (let [t, r] of Object.entries(e.custom ?? {})) Vg(n(t), r);
17942
+ for (let [t, r] of Object.entries(e.custom ?? {})) Wg(n(t), r);
17880
17943
  Object.keys(t.data).length === 0 && (t.data.mock = new Mo()), Object.keys(t.auth).length === 0 && (t.auth.googleAuth = new rh());
17881
17944
  let r = e.services ?? {}, i = {};
17882
17945
  for (let [e, n] of Object.entries(t)) i[e] = {
17883
17946
  registry: n,
17884
- defaultKey: Hg(n, r[e])
17947
+ defaultKey: Gg(n, r[e])
17885
17948
  };
17886
17949
  return i;
17887
17950
  }
17888
- var Wg = {}, Gg = (e) => {
17889
- Wg = e;
17890
- }, Kg = (e) => Wg[e] || [];
17891
- function qg({ contextProviders: e, providers: t = {}, appName: n = "LLM Native", scrapeConfig: r, iconProvider: i, googleMaps: a, themeProvider: o, i18n: s, children: c, errorReportUrl: l, debug: u, basename: f }) {
17892
- let [p, m] = T(() => Ug(t)), h = w(p);
17951
+ var qg = {}, Jg = (e) => {
17952
+ qg = e;
17953
+ }, Yg = (e) => qg[e] || [];
17954
+ function Xg({ contextProviders: e, providers: t = {}, appName: n = "LLM Native", scrapeConfig: r, iconProvider: i, googleMaps: a, themeProvider: o, i18n: s, children: c, errorReportUrl: l, debug: u, basename: f }) {
17955
+ let [p, m] = T(() => Kg(t)), h = w(p);
17893
17956
  h.current = p;
17894
17957
  let g = w(void 0);
17895
17958
  g.current ||= (async (e, t, n) => {
@@ -17930,8 +17993,8 @@ function qg({ contextProviders: e, providers: t = {}, appName: n = "LLM Native",
17930
17993
  setProvider: _
17931
17994
  }, /* @__PURE__ */ d.createElement(di, p.auth, /* @__PURE__ */ d.createElement(ch, p.credentials, /* @__PURE__ */ d.createElement(Pi, p.data, /* @__PURE__ */ d.createElement(Pc, p.storage, /* @__PURE__ */ d.createElement(ah, p.email, /* @__PURE__ */ d.createElement(Tl, p.ai, /* @__PURE__ */ d.createElement(Mr, { config: i }, /* @__PURE__ */ d.createElement(Zf, { config: a }, /* @__PURE__ */ d.createElement(sm, { appName: n }, /* @__PURE__ */ d.createElement(Wn, { config: s }, /* @__PURE__ */ d.createElement(jn, { config: o }, /* @__PURE__ */ d.createElement(v, null, c))))))))))))))));
17932
17995
  }
17933
- function Jg({ importPage: e, LayoutDefault: t = void 0, menuConfig: n = {}, children: r, ...i }) {
17934
- Gg(n);
17996
+ function Zg({ importPage: e, LayoutDefault: t = void 0, menuConfig: n = {}, children: r, ...i }) {
17997
+ Jg(n);
17935
17998
  let a = ({ children: e }) => /* @__PURE__ */ d.createElement(d.Fragment, null, e), o = ({ pageSource: e, message: t }) => /* @__PURE__ */ d.createElement(Qo, { variant: "warning" }, "Missing Page: ", e, t && /* @__PURE__ */ d.createElement("code", { className: "ml-2" }, t));
17936
17999
  function s(n, r, s) {
17937
18000
  let c = `./pages${r.component ? "/" + r.component : r.path === "/" ? "/Home" : ut.toCamel(r.path.split("*")[0])}.js`, l = r.page || d.lazy(() => e(c).then((e) => typeof e.default == "function" ? { default: e.default } : (console.warn(`⚠️ Invalid default export in ${c}`), { default: () => /* @__PURE__ */ d.createElement(o, { pageSource: c }) })).catch((e) => (console.error(`❌ Failed to load ${c}:`, e), { default: () => /* @__PURE__ */ d.createElement(o, {
@@ -17945,16 +18008,16 @@ function Jg({ importPage: e, LayoutDefault: t = void 0, menuConfig: n = {}, chil
17945
18008
  key: r.path,
17946
18009
  reportUrl: i.errorReportUrl,
17947
18010
  debug: i.debug
17948
- }, /* @__PURE__ */ d.createElement(m, { fallback: /* @__PURE__ */ d.createElement(Bg, null) }, /* @__PURE__ */ d.createElement(l, null))))
18011
+ }, /* @__PURE__ */ d.createElement(m, { fallback: /* @__PURE__ */ d.createElement(Ug, null) }, /* @__PURE__ */ d.createElement(l, null))))
17949
18012
  });
17950
18013
  }
17951
- let c = (e) => Object.keys(e).flatMap((t) => e[t].flatMap((e, n) => [e.path && s(t, e, n), e.children && c({ children: e.children })].filter(Boolean))), l = (e, t) => e.some((e) => e.path === t || !!e.children && l(e.children, t)), u = Object.values(Wg).some((e) => l(e, "/")) ? {} : { default: [{ path: "/" }] };
17952
- return /* @__PURE__ */ d.createElement(qg, i, r, /* @__PURE__ */ d.createElement(A, null, /* @__PURE__ */ d.createElement(k, {
18014
+ let c = (e) => Object.keys(e).flatMap((t) => e[t].flatMap((e, n) => [e.path && s(t, e, n), e.children && c({ children: e.children })].filter(Boolean))), l = (e, t) => e.some((e) => e.path === t || !!e.children && l(e.children, t)), u = Object.values(qg).some((e) => l(e, "/")) ? {} : { default: [{ path: "/" }] };
18015
+ return /* @__PURE__ */ d.createElement(Xg, i, r, /* @__PURE__ */ d.createElement(A, null, /* @__PURE__ */ d.createElement(k, {
17953
18016
  path: vi,
17954
18017
  element: /* @__PURE__ */ d.createElement(Ti, null)
17955
18018
  }), /* @__PURE__ */ d.createElement(d.Fragment, null, c({
17956
18019
  ...u,
17957
- ...Wg,
18020
+ ...qg,
17958
18021
  _auth: [{
17959
18022
  path: "/users",
17960
18023
  page: Km,
@@ -17965,8 +18028,8 @@ function Jg({ importPage: e, LayoutDefault: t = void 0, menuConfig: n = {}, chil
17965
18028
  element: /* @__PURE__ */ d.createElement(qm, null)
17966
18029
  })));
17967
18030
  }
17968
- var Yg = (e) => {
17969
- let t = Kg(e), n = j(), r = (e) => e.map((e) => {
18031
+ var Qg = (e) => {
18032
+ let t = Yg(e), n = j(), r = (e) => e.map((e) => {
17970
18033
  let t = n.pathname === e.path, i = e.children ? r(e.children) : [], a = t || i.some((e) => e.active);
17971
18034
  return {
17972
18035
  ...e,
@@ -17975,7 +18038,7 @@ var Yg = (e) => {
17975
18038
  };
17976
18039
  });
17977
18040
  return C(() => r(t), [n.pathname]);
17978
- }, Xg = {
18041
+ }, $g = {
17979
18042
  common: {
17980
18043
  save: "Salva",
17981
18044
  cancel: "Annulla",
@@ -18158,7 +18221,7 @@ var Yg = (e) => {
18158
18221
  notConfigured: "La ricerca indirizzi non è configurata (manca la API key Google Maps).",
18159
18222
  loadError: "Impossibile caricare la ricerca indirizzi."
18160
18223
  }
18161
- }, Zg = {
18224
+ }, e_ = {
18162
18225
  common: {
18163
18226
  save: "Speichern",
18164
18227
  cancel: "Abbrechen",
@@ -18341,7 +18404,7 @@ var Yg = (e) => {
18341
18404
  notConfigured: "Adresssuche ist nicht konfiguriert (Google Maps API-Schlüssel fehlt).",
18342
18405
  loadError: "Adresssuche konnte nicht geladen werden."
18343
18406
  }
18344
- }, Qg = {
18407
+ }, t_ = {
18345
18408
  common: {
18346
18409
  save: "Сохранить",
18347
18410
  cancel: "Отменить",
@@ -18524,7 +18587,7 @@ var Yg = (e) => {
18524
18587
  notConfigured: "Поиск адресов не настроен (отсутствует ключ Google Maps API).",
18525
18588
  loadError: "Не удалось загрузить поиск адресов."
18526
18589
  }
18527
- }, $g = {
18590
+ }, n_ = {
18528
18591
  common: {
18529
18592
  save: "保存",
18530
18593
  cancel: "取消",
@@ -18707,7 +18770,7 @@ var Yg = (e) => {
18707
18770
  notConfigured: "地址搜索未配置(缺少 Google Maps API 密钥)。",
18708
18771
  loadError: "无法加载地址搜索。"
18709
18772
  }
18710
- }, e_ = {
18773
+ }, r_ = {
18711
18774
  common: {
18712
18775
  save: "حفظ",
18713
18776
  cancel: "إلغاء",
@@ -18890,22 +18953,22 @@ var Yg = (e) => {
18890
18953
  notConfigured: "البحث عن العناوين غير مُعد (مفتاح Google Maps API مفقود).",
18891
18954
  loadError: "تعذر تحميل البحث عن العناوين."
18892
18955
  }
18893
- }, t_ = /* @__PURE__ */ it({
18894
- ar: () => e_,
18895
- de: () => Zg,
18956
+ }, i_ = /* @__PURE__ */ it({
18957
+ ar: () => r_,
18958
+ de: () => e_,
18896
18959
  en: () => Pn,
18897
- it: () => Xg,
18898
- ru: () => Qg,
18899
- zh: () => $g
18900
- }), n_ = (e) => Fa("api", e);
18960
+ it: () => $g,
18961
+ ru: () => t_,
18962
+ zh: () => n_
18963
+ }), a_ = (e) => Fa("api", e);
18901
18964
  //#endregion
18902
18965
  //#region src/providers/api/direct.ts
18903
- async function r_(e) {
18966
+ async function o_(e) {
18904
18967
  if (!e.ok) throw Error(`ApiProvider request failed: ${e.status} ${e.statusText}`);
18905
18968
  let t = await e.text();
18906
18969
  return t ? JSON.parse(t) : void 0;
18907
18970
  }
18908
- var i_ = class {
18971
+ var s_ = class {
18909
18972
  config;
18910
18973
  constructor(e) {
18911
18974
  this.config = e;
@@ -18920,7 +18983,7 @@ var i_ = class {
18920
18983
  ...e.body,
18921
18984
  ...this.config.body
18922
18985
  };
18923
- return r_(await Pl(n.toString(), {
18986
+ return o_(await Pl(n.toString(), {
18924
18987
  method: t,
18925
18988
  headers: {
18926
18989
  "Content-Type": "application/json",
@@ -18929,7 +18992,7 @@ var i_ = class {
18929
18992
  body: t === "GET" || t === "HEAD" ? void 0 : JSON.stringify(r)
18930
18993
  }));
18931
18994
  }
18932
- }, a_ = class {
18995
+ }, c_ = class {
18933
18996
  resolver;
18934
18997
  constructor(e) {
18935
18998
  this.resolver = e;
@@ -18937,7 +19000,7 @@ var i_ = class {
18937
19000
  async fetch(e) {
18938
19001
  return this.resolver(e);
18939
19002
  }
18940
- }, o_ = class {
19003
+ }, l_ = class {
18941
19004
  config;
18942
19005
  constructor(e) {
18943
19006
  this.config = e;
@@ -18948,7 +19011,7 @@ var i_ = class {
18948
19011
  request: e
18949
19012
  }, void 0, this.config.region);
18950
19013
  }
18951
- }, s_ = class {
19014
+ }, u_ = class {
18952
19015
  config;
18953
19016
  constructor(e) {
18954
19017
  this.config = e;
@@ -18961,7 +19024,7 @@ var i_ = class {
18961
19024
  if (n) throw n;
18962
19025
  return t;
18963
19026
  }
18964
- }, c_ = [
19027
+ }, d_ = [
18965
19028
  {
18966
19029
  id: "resend",
18967
19030
  label: "Resend",
@@ -19072,7 +19135,7 @@ var i_ = class {
19072
19135
  ],
19073
19136
  credentialsHint: "Ask your mail host or hosting provider for the SMTP host, port, and credentials."
19074
19137
  }
19075
- ], l_ = [
19138
+ ], f_ = [
19076
19139
  {
19077
19140
  id: "cloudflare_pages",
19078
19141
  label: "Cloudflare Pages",
@@ -19302,15 +19365,15 @@ var i_ = class {
19302
19365
  description: "No vendor — packages the build as a downloadable archive for self-hosting anywhere else.",
19303
19366
  credentialFields: []
19304
19367
  }
19305
- ], u_ = [
19306
- Sg,
19368
+ ], p_ = [
19369
+ wg,
19370
+ Pg,
19307
19371
  Mg,
19308
- Ag,
19309
- fg,
19310
- vg,
19311
- Wh,
19312
- yg,
19313
- Zh({
19372
+ mg,
19373
+ bg,
19374
+ Kh,
19375
+ xg,
19376
+ $h({
19314
19377
  id: "glm",
19315
19378
  label: "ZhipuAI (GLM)",
19316
19379
  description: "Zhipu AI's GLM model family.",
@@ -19327,8 +19390,8 @@ var i_ = class {
19327
19390
  dashboardUrl: "https://bigmodel.cn/usercenter/apikeys",
19328
19391
  credentialsHint: "Zhipu BigModel → User Center → API Keys → Create Key."
19329
19392
  }),
19330
- xg
19331
- ], d_ = (e) => ({
19393
+ Cg
19394
+ ], m_ = (e) => ({
19332
19395
  id: e.id,
19333
19396
  label: e.label,
19334
19397
  description: e.description ?? "",
@@ -19339,7 +19402,7 @@ var i_ = class {
19339
19402
  }],
19340
19403
  credentialsUrl: e.dashboardUrl,
19341
19404
  credentialsHint: e.credentialsHint
19342
- }), f_ = [...u_.map(d_), dg], p_ = {
19405
+ }), h_ = [...p_.map(m_), pg], g_ = {
19343
19406
  id: "openai-compatible",
19344
19407
  label: "OpenAI-compatible",
19345
19408
  description: "Any OpenAI-compatible endpoint (self-hosted or third-party).",
@@ -19353,15 +19416,15 @@ var i_ = class {
19353
19416
  type: "text",
19354
19417
  placeholder: "https://api.example.com/v1"
19355
19418
  }]
19356
- }, m_ = (e) => {
19419
+ }, __ = (e) => {
19357
19420
  let t = [], n = e?.cloudflare?.accountId?.trim();
19358
- n && t.push(ug({
19421
+ n && t.push(fg({
19359
19422
  accountId: n,
19360
19423
  defaultModel: e?.cloudflare?.defaultModel?.trim() || void 0,
19361
19424
  includePaidModels: e?.cloudflare?.includePaidModels
19362
19425
  }));
19363
19426
  let r = e?.openAICompatible?.baseUrl?.trim();
19364
- return r ? [...t, Zh({
19427
+ return r ? [...t, $h({
19365
19428
  id: "openai-compatible",
19366
19429
  label: e?.openAICompatible?.label?.trim() || "OpenAI-compatible",
19367
19430
  description: "Any OpenAI-compatible endpoint (self-hosted or third-party).",
@@ -19373,10 +19436,10 @@ var i_ = class {
19373
19436
  modelsUrl: e?.openAICompatible?.modelsUrl?.trim() || void 0,
19374
19437
  chatCompletionsUrl: e?.openAICompatible?.chatCompletionsUrl?.trim() || void 0
19375
19438
  })] : t;
19376
- }, h_ = (e) => e ? [...u_, ...m_(e)].reduce((t, n) => {
19439
+ }, v_ = (e) => e ? [...p_, ...__(e)].reduce((t, n) => {
19377
19440
  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() : "";
19378
19441
  return r && (t[n.id] = new Kl(n, r)), t;
19379
- }, {}) : {}, g_ = (e, { scope: t }) => h_(e.reduce((e, r) => {
19442
+ }, {}) : {}, y_ = (e, { scope: t }) => v_(e.reduce((e, r) => {
19380
19443
  let i = n(t, r.id);
19381
19444
  if (r.id === "openai-compatible") return r.baseUrl ? {
19382
19445
  ...e,
@@ -19394,37 +19457,37 @@ var i_ = class {
19394
19457
  accountId: r.accountId
19395
19458
  }
19396
19459
  } : e;
19397
- let a = u_.find((e) => e.id === r.id)?.configKey;
19460
+ let a = p_.find((e) => e.id === r.id)?.configKey;
19398
19461
  return a ? {
19399
19462
  ...e,
19400
19463
  [a]: i
19401
19464
  } : e;
19402
- }, {})), __ = void 0;
19465
+ }, {})), b_ = void 0;
19403
19466
  typeof Ba == "function" && Ba((e) => {
19404
- __ = e.google;
19467
+ b_ = e.google;
19405
19468
  });
19406
- var v_ = {
19469
+ var x_ = {
19407
19470
  ita: "geoTargetConstants/2380",
19408
19471
  rome: "geoTargetConstants/1033236",
19409
19472
  mil: "geoTargetConstants/1033239",
19410
19473
  nap: "geoTargetConstants/1033245",
19411
19474
  tor: "geoTargetConstants/1033247"
19412
- }, y_ = {
19475
+ }, S_ = {
19413
19476
  it: "languageConstants/1000",
19414
19477
  en: "languageConstants/1001",
19415
19478
  fr: "languageConstants/1002",
19416
19479
  es: "languageConstants/1003",
19417
19480
  de: "languageConstants/1005"
19418
19481
  };
19419
- function b_(e) {
19420
- return v_[e.toLowerCase()] || "geoTargetConstants/2380";
19482
+ function C_(e) {
19483
+ return x_[e.toLowerCase()] || "geoTargetConstants/2380";
19421
19484
  }
19422
- function x_(e) {
19423
- return y_[e.toLowerCase()] || "languageConstants/1000";
19485
+ function w_(e) {
19486
+ return S_[e.toLowerCase()] || "languageConstants/1000";
19424
19487
  }
19425
- async function S_({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", languageCode: r = "it" }) {
19426
- if (!__?.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"), [];
19427
- let i = await Ph(["https://www.googleapis.com/auth/adwords"]), a = b_(n), o = x_(r), s = `https://googleads.googleapis.com/v13/customers/${t}:generateKeywordIdeas`, c = {
19488
+ async function T_({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", languageCode: r = "it" }) {
19489
+ if (!b_?.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"), [];
19490
+ let i = await Ih(["https://www.googleapis.com/auth/adwords"]), a = C_(n), o = w_(r), s = `https://googleads.googleapis.com/v13/customers/${t}:generateKeywordIdeas`, c = {
19428
19491
  keywordSeed: { keywords: [e] },
19429
19492
  geoTargetConstants: [a],
19430
19493
  language: o
@@ -19432,7 +19495,7 @@ async function S_({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", langu
19432
19495
  method: "POST",
19433
19496
  headers: {
19434
19497
  Authorization: `Bearer ${i}`,
19435
- "developer-token": __.developerToken,
19498
+ "developer-token": b_.developerToken,
19436
19499
  "Content-Type": "application/json"
19437
19500
  },
19438
19501
  body: JSON.stringify(c)
@@ -19450,7 +19513,7 @@ async function S_({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", langu
19450
19513
  }
19451
19514
  //#endregion
19452
19515
  //#region src/providers/seo/google/trend.ts
19453
- async function C_(e, t = "IT", n = "today 12-m") {
19516
+ async function E_(e, t = "IT", n = "today 12-m") {
19454
19517
  let r = `https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({
19455
19518
  comparisonItem: [{
19456
19519
  keyword: e,
@@ -19470,7 +19533,7 @@ async function C_(e, t = "IT", n = "today 12-m") {
19470
19533
  }))
19471
19534
  };
19472
19535
  }
19473
- async function w_(e, t = "IT", n = "today 12-m") {
19536
+ async function D_(e, t = "IT", n = "today 12-m") {
19474
19537
  let r = `https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({
19475
19538
  comparisonItem: [{
19476
19539
  keyword: e,
@@ -19496,13 +19559,13 @@ async function w_(e, t = "IT", n = "today 12-m") {
19496
19559
  }
19497
19560
  //#endregion
19498
19561
  //#region src/providers/storage/dropbox.tsx
19499
- var T_ = 5e3, E_ = "https://www.dropbox.com/home", D_ = void 0;
19562
+ var O_ = 5e3, k_ = "https://www.dropbox.com/home", A_ = void 0;
19500
19563
  typeof Ba == "function" && Ba((e) => {
19501
- D_ = e.dropbox;
19564
+ A_ = e.dropbox;
19502
19565
  });
19503
- var O_ = async (e, t, n = {}) => {
19504
- if (!D_) return console.error("DropBox: Config not found"), null;
19505
- let r = await Ai(D_.clientId);
19566
+ var j_ = async (e, t, n = {}) => {
19567
+ if (!A_) return console.error("DropBox: Config not found"), null;
19568
+ let r = await Ai(A_.clientId);
19506
19569
  if (!r) throw Error("DropBox: Access token not found");
19507
19570
  return await fetch(e, {
19508
19571
  method: "POST",
@@ -19515,12 +19578,12 @@ var O_ = async (e, t, n = {}) => {
19515
19578
  }).catch((e) => (console.error("There was a problem with the fetch operation:", e), null)).finally(() => {
19516
19579
  console.log("DropBox: Fetch operation completed");
19517
19580
  });
19518
- }, k_ = async (e, t, n = {}) => {
19519
- if (!D_) {
19581
+ }, M_ = async (e, t, n = {}) => {
19582
+ if (!A_) {
19520
19583
  console.error("DropBox: Config not found");
19521
19584
  return;
19522
19585
  }
19523
- let r = await Ai(D_.clientId);
19586
+ let r = await Ai(A_.clientId);
19524
19587
  if (!r) {
19525
19588
  console.error("DropBox: Access token not found");
19526
19589
  return;
@@ -19545,47 +19608,47 @@ var O_ = async (e, t, n = {}) => {
19545
19608
  }).finally(() => {
19546
19609
  console.log("DropBox: Fetch operation completed", e, t);
19547
19610
  });
19548
- }, A_ = (e, t = !1) => {
19549
- let n = D_?.rootPath || "";
19550
- return (t ? E_ : "") + (e.startsWith(n) ? e : n + e);
19551
- }, j_ = async (e, t = "", n = !1) => {
19611
+ }, N_ = (e, t = !1) => {
19612
+ let n = A_?.rootPath || "";
19613
+ return (t ? k_ : "") + (e.startsWith(n) ? e : n + e);
19614
+ }, P_ = async (e, t = "", n = !1) => {
19552
19615
  let r = {};
19553
- return (await G_.listFolders({
19616
+ return (await J_.listFolders({
19554
19617
  path: `${e + t}`,
19555
19618
  recursive: !0
19556
19619
  })).forEach((e) => {
19557
19620
  e[".tag"] !== "folder" && (r[n ? pi.changeFilename(e.path_display, { ext: "" }) : e.path_display] = e.name);
19558
19621
  }), r;
19559
- }, M_ = async (e, t) => {
19622
+ }, F_ = async (e, t) => {
19560
19623
  if (!e.async_job_id) return Promise.reject(e);
19561
19624
  let n, r = !0;
19562
- for (; r;) await bt(100), n = await k_(`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);
19625
+ for (; r;) await bt(100), n = await M_(`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);
19563
19626
  return n?.[".tag"] === "complete" ? Promise.resolve(n.entries) : Promise.reject(n);
19564
- }, N_ = async (e, t = "") => {
19565
- let n = "files/create_folder_batch", r = await k_(`https://api.dropboxapi.com/2/${n}`, {
19627
+ }, I_ = async (e, t = "") => {
19628
+ let n = "files/create_folder_batch", r = await M_(`https://api.dropboxapi.com/2/${n}`, {
19566
19629
  autorename: !1,
19567
19630
  force_async: !0,
19568
- paths: e.map((e) => A_(t + e))
19631
+ paths: e.map((e) => N_(t + e))
19569
19632
  });
19570
- return r ? M_(r, n) : void 0;
19571
- }, P_ = async (e, t = "") => {
19572
- let n = "files/create_folder_batch", r = await k_(`https://api.dropboxapi.com/2/${n}`, { entries: e.map((e) => ({ path: A_(t + e) })) });
19573
- return r ? M_(r, n) : void 0;
19574
- }, F_ = async (e, t) => k_("https://api.dropboxapi.com/2/files/tags/add", {
19633
+ return r ? F_(r, n) : void 0;
19634
+ }, L_ = async (e, t = "") => {
19635
+ let n = "files/create_folder_batch", r = await M_(`https://api.dropboxapi.com/2/${n}`, { entries: e.map((e) => ({ path: N_(t + e) })) });
19636
+ return r ? F_(r, n) : void 0;
19637
+ }, R_ = async (e, t) => M_("https://api.dropboxapi.com/2/files/tags/add", {
19575
19638
  path: e,
19576
19639
  tag_text: t.toLowerCase().replaceAll(/[^a-z0-9]/g, "")
19577
- }), I_ = async (e, t = "") => {
19578
- for (let n in e) for (let r of e[n]) await F_(A_(t + n), r);
19579
- }, L_ = async ({ path: e = "", recursive: t = !1 } = {}) => {
19580
- let n = [], r = async ({ path: e, cursor: t, recursive: n }) => e ? await k_("https://api.dropboxapi.com/2/files/list_folder", {
19640
+ }), z_ = async (e, t = "") => {
19641
+ for (let n in e) for (let r of e[n]) await R_(N_(t + n), r);
19642
+ }, B_ = async ({ path: e = "", recursive: t = !1 } = {}) => {
19643
+ let n = [], r = async ({ path: e, cursor: t, recursive: n }) => e ? await M_("https://api.dropboxapi.com/2/files/list_folder", {
19581
19644
  include_deleted: !1,
19582
19645
  include_has_explicit_shared_members: !1,
19583
19646
  include_media_info: !1,
19584
19647
  include_mounted_folders: !0,
19585
19648
  include_non_downloadable_files: !0,
19586
- path: A_(e),
19649
+ path: N_(e),
19587
19650
  recursive: n
19588
- }) : await k_("https://api.dropboxapi.com/2/files/list_folder/continue", { cursor: t }), i = {
19651
+ }) : await M_("https://api.dropboxapi.com/2/files/list_folder/continue", { cursor: t }), i = {
19589
19652
  has_more: !0,
19590
19653
  cursor: "",
19591
19654
  entries: []
@@ -19598,44 +19661,44 @@ var O_ = async (e, t, n = {}) => {
19598
19661
  recursive: t
19599
19662
  }), i && n.push(...i.entries);
19600
19663
  return n;
19601
- }, R_ = async (e) => {
19602
- let t = async (e) => await k_("https://api.dropboxapi.com/2/files/copy_batch_v2", {
19664
+ }, V_ = async (e) => {
19665
+ let t = async (e) => await M_("https://api.dropboxapi.com/2/files/copy_batch_v2", {
19603
19666
  entries: e,
19604
19667
  autorename: !1
19605
- }), n = async (e) => await k_("https://api.dropboxapi.com/2/files/copy_batch/check_v2", { async_job_id: e }), r = [], i = [];
19668
+ }), n = async (e) => await M_("https://api.dropboxapi.com/2/files/copy_batch/check_v2", { async_job_id: e }), r = [], i = [];
19606
19669
  for (let a = 0; a < e.length; a += 900) {
19607
19670
  i = e.slice(a, a + 900).map((e) => ({
19608
- from_path: A_(e.from),
19609
- to_path: A_(e.to)
19671
+ from_path: N_(e.from),
19672
+ to_path: N_(e.to)
19610
19673
  }));
19611
19674
  let o = await t(i);
19612
19675
  if (!o) continue;
19613
19676
  if (o.error) throw Error(`Error starting copy: ${o.error}`);
19614
19677
  let s = o;
19615
- for (; s?.[".tag"] === "async_job_id" || s?.[".tag"] === "in_progress";) await bt(T_), s = await n(o.async_job_id ?? "");
19678
+ for (; s?.[".tag"] === "async_job_id" || s?.[".tag"] === "in_progress";) await bt(O_), s = await n(o.async_job_id ?? "");
19616
19679
  if (s?.[".tag"] === "failed") throw Error(`Copy operation failed: ${s[".tag"]}`);
19617
19680
  s?.[".tag"] === "complete" && s.entries && r.push(...s.entries);
19618
19681
  }
19619
19682
  return r.filter((e) => e[".tag"] === "failure").map((e) => e.failure);
19620
- }, z_ = async (e) => {
19621
- let t = async (e) => await k_("https://api.dropboxapi.com/2/files/move_v2", {
19683
+ }, H_ = async (e) => {
19684
+ let t = async (e) => await M_("https://api.dropboxapi.com/2/files/move_v2", {
19622
19685
  ...e,
19623
19686
  autorename: !0
19624
19687
  });
19625
19688
  for (let n of e) await t({
19626
- from_path: A_(n.from),
19627
- to_path: A_(n.to)
19689
+ from_path: N_(n.from),
19690
+ to_path: N_(n.to)
19628
19691
  });
19629
- }, B_ = async ({ thumbnailsRequest: e = [], size: t = "w64h64", format: n = "jpeg", mode: r = "strict" }, i) => {
19692
+ }, U_ = async ({ thumbnailsRequest: e = [], size: t = "w64h64", format: n = "jpeg", mode: r = "strict" }, i) => {
19630
19693
  let a = {}, o = [];
19631
19694
  for (let s = 0; s < e.length; s += 25) {
19632
19695
  let c = e.slice(s, s + 25), l = c.map((e) => ({
19633
- path: A_(e.path),
19696
+ path: N_(e.path),
19634
19697
  format: n,
19635
19698
  size: t,
19636
19699
  mode: r
19637
19700
  }));
19638
- await bt(100), o.push(k_("https://content.dropboxapi.com/2/files/get_thumbnail_batch", { entries: l }).then((e) => {
19701
+ await bt(100), o.push(M_("https://content.dropboxapi.com/2/files/get_thumbnail_batch", { entries: l }).then((e) => {
19639
19702
  if (!e) return;
19640
19703
  let n = e.entries.reduce((e, n, r) => {
19641
19704
  let i = c[r].path, [a, o] = t.replace("w", "").split("h").map(Number), s = n;
@@ -19654,7 +19717,7 @@ var O_ = async (e, t, n = {}) => {
19654
19717
  }));
19655
19718
  }
19656
19719
  return Promise.all(o).then(() => a);
19657
- }, V_ = (e, t = "application/octet-stream", n = 512) => {
19720
+ }, W_ = (e, t = "application/octet-stream", n = 512) => {
19658
19721
  let r = atob(e), i = [];
19659
19722
  for (let e = 0; e < r.length; e += n) {
19660
19723
  let t = r.slice(e, e + n), a = Array(t.length);
@@ -19663,11 +19726,11 @@ var O_ = async (e, t, n = {}) => {
19663
19726
  i.push(o);
19664
19727
  }
19665
19728
  return new Blob(i, { type: t });
19666
- }, H_ = async (e, t) => {
19729
+ }, G_ = async (e, t) => {
19667
19730
  try {
19668
19731
  let n = t.split(",")[1];
19669
- O_("https://content.dropboxapi.com/2/files/upload", V_(n, "application/octet-stream"), { "Dropbox-API-Arg": JSON.stringify({
19670
- path: A_(e),
19732
+ j_("https://content.dropboxapi.com/2/files/upload", W_(n, "application/octet-stream"), { "Dropbox-API-Arg": JSON.stringify({
19733
+ path: N_(e),
19671
19734
  mode: "overwrite",
19672
19735
  autorename: !0,
19673
19736
  mute: !1
@@ -19677,12 +19740,12 @@ var O_ = async (e, t, n = {}) => {
19677
19740
  } catch (e) {
19678
19741
  console.error("Errore durante il caricamento su Dropbox:", e);
19679
19742
  }
19680
- }, U_ = (e = !1) => D_ ? Di(D_.clientId, e) : !1, W_ = (e = {}) => {
19681
- if (!D_) return /* @__PURE__ */ d.createElement("div", {
19743
+ }, K_ = (e = !1) => A_ ? Di(A_.clientId, e) : !1, q_ = (e = {}) => {
19744
+ if (!A_) return /* @__PURE__ */ d.createElement("div", {
19682
19745
  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.",
19683
19746
  className: "text-danger flex items-center gap-2"
19684
19747
  }, /* @__PURE__ */ d.createElement(Q, { name: "warning" }), /* @__PURE__ */ d.createElement("span", null, "Dropbox non configurato"));
19685
- let t = U_(!0);
19748
+ let t = K_(!0);
19686
19749
  return /* @__PURE__ */ d.createElement(Mi, {
19687
19750
  provider: "dropboxAuth",
19688
19751
  intent: "connect",
@@ -19694,33 +19757,33 @@ var O_ = async (e, t, n = {}) => {
19694
19757
  title: t ? "DropBox Connected" : "DropBox Disconnected"
19695
19758
  }
19696
19759
  });
19697
- }, G_ = {
19760
+ }, J_ = {
19698
19761
  setRootPath: (e) => {
19699
- D_ && (D_.rootPath = e);
19700
- },
19701
- resolvePath: A_,
19702
- createFolders: N_,
19703
- deleteBulk: P_,
19704
- addTags: I_,
19705
- listFolders: L_,
19706
- getThumbnails: B_,
19707
- search: j_,
19708
- upload: H_,
19709
- copy: R_,
19710
- move: z_
19711
- }, K_ = "https://api.serpapi.com/search", q_ = "google", J_ = "google_images", Y_ = "google_autocomplete", X_ = "google_trends", Z_ = "google_maps", Q_ = "google_maps_photos", $_ = "google_maps_reviews", ev = {
19762
+ A_ && (A_.rootPath = e);
19763
+ },
19764
+ resolvePath: N_,
19765
+ createFolders: I_,
19766
+ deleteBulk: L_,
19767
+ addTags: z_,
19768
+ listFolders: B_,
19769
+ getThumbnails: U_,
19770
+ search: P_,
19771
+ upload: G_,
19772
+ copy: V_,
19773
+ move: H_
19774
+ }, Y_ = "https://api.serpapi.com/search", X_ = "google", Z_ = "google_images", Q_ = "google_autocomplete", $_ = "google_trends", ev = "google_maps", tv = "google_maps_photos", nv = "google_maps_reviews", rv = {
19712
19775
  engine: null,
19713
19776
  device: null,
19714
19777
  no_cache: !1,
19715
19778
  async: !1,
19716
19779
  output: "json"
19717
- }, tv = { q: null }, nv = {
19780
+ }, iv = { q: null }, av = {
19718
19781
  tbs: null,
19719
19782
  safe: "active",
19720
19783
  nfpr: 0,
19721
19784
  filter: 1
19722
19785
  };
19723
- function rv(e) {
19786
+ function ov(e) {
19724
19787
  let t = ul(), n = ul(!0), r = dl(!0), i = {
19725
19788
  location: t,
19726
19789
  uule: null
@@ -19738,13 +19801,13 @@ function rv(e) {
19738
19801
  hl: r
19739
19802
  };
19740
19803
  return {
19741
- [q_]: {
19742
- ...ev,
19804
+ [X_]: {
19805
+ ...rv,
19743
19806
  ...i,
19744
19807
  ...o,
19745
- ...nv,
19746
- ...tv,
19747
- engine: q_,
19808
+ ...av,
19809
+ ...iv,
19810
+ engine: X_,
19748
19811
  ludocid: null,
19749
19812
  lsig: null,
19750
19813
  kgmid: null,
@@ -19753,29 +19816,29 @@ function rv(e) {
19753
19816
  start: null,
19754
19817
  num: null
19755
19818
  },
19756
- [J_]: {
19757
- ...ev,
19819
+ [Z_]: {
19820
+ ...rv,
19758
19821
  ...i,
19759
19822
  ...o,
19760
- ...nv,
19761
- ...tv,
19762
- engine: J_,
19823
+ ...av,
19824
+ ...iv,
19825
+ engine: Z_,
19763
19826
  chips: null,
19764
19827
  ijn: null
19765
19828
  },
19766
- [Y_]: {
19767
- ...ev,
19829
+ [Q_]: {
19830
+ ...rv,
19768
19831
  ...o,
19769
- ...tv,
19770
- engine: Y_,
19832
+ ...iv,
19833
+ engine: Q_,
19771
19834
  cp: null,
19772
19835
  client: null
19773
19836
  },
19774
- [X_]: {
19775
- ...ev,
19837
+ [$_]: {
19838
+ ...rv,
19776
19839
  ...a,
19777
- ...tv,
19778
- engine: X_,
19840
+ ...iv,
19841
+ engine: $_,
19779
19842
  data_type: null,
19780
19843
  tz: null,
19781
19844
  cat: null,
@@ -19783,73 +19846,73 @@ function rv(e) {
19783
19846
  date: null,
19784
19847
  csv: null
19785
19848
  },
19786
- [Z_]: {
19787
- ...ev,
19849
+ [ev]: {
19850
+ ...rv,
19788
19851
  ...i,
19789
19852
  ...o,
19790
- ...nv,
19791
- ...tv,
19792
- engine: Z_
19853
+ ...av,
19854
+ ...iv,
19855
+ engine: ev
19793
19856
  },
19794
- [Q_]: {
19795
- ...ev,
19857
+ [tv]: {
19858
+ ...rv,
19796
19859
  ...s,
19797
- engine: Q_
19860
+ engine: tv
19798
19861
  },
19799
- [$_]: {
19800
- ...ev,
19862
+ [nv]: {
19863
+ ...rv,
19801
19864
  ...s,
19802
- engine: $_
19865
+ engine: nv
19803
19866
  }
19804
19867
  }[e] ?? {};
19805
19868
  }
19806
- var iv = void 0;
19869
+ var sv = void 0;
19807
19870
  typeof Ba == "function" && Ba((e) => {
19808
- iv = e.scrape;
19871
+ sv = e.scrape;
19809
19872
  });
19810
- function av(e) {
19873
+ function cv(e) {
19811
19874
  let t = {};
19812
19875
  for (let n in e) e[n] !== null && (t[n] = e[n]);
19813
19876
  return t;
19814
19877
  }
19815
- var ov = 0;
19816
- function sv(e = !1) {
19817
- let t = iv?.serpApiKey?.split(",").map((e) => e.trim()).filter(Boolean) || [];
19818
- return t.length === 0 ? null : (e && ov++, ov < t.length ? t[ov] : null);
19878
+ var lv = 0;
19879
+ function uv(e = !1) {
19880
+ let t = sv?.serpApiKey?.split(",").map((e) => e.trim()).filter(Boolean) || [];
19881
+ return t.length === 0 ? null : (e && lv++, lv < t.length ? t[lv] : null);
19819
19882
  }
19820
- var cv = async (e, t) => {
19883
+ var dv = async (e, t) => {
19821
19884
  let n = (n) => {
19822
- let r = av({
19823
- ...rv(t),
19885
+ let r = cv({
19886
+ ...ov(t),
19824
19887
  api_key: n,
19825
19888
  q: e
19826
19889
  });
19827
- return console.log(K_, r), `${K_}?${new URLSearchParams(r)}`;
19828
- }, r = sv();
19890
+ return console.log(Y_, r), `${Y_}?${new URLSearchParams(r)}`;
19891
+ }, r = uv();
19829
19892
  for (; r;) try {
19830
19893
  return await en(n(r));
19831
19894
  } catch (e) {
19832
19895
  if (e?.error === "quota_exceeded") {
19833
- console.warn(`SerpApi: invalid api key: ${r}`, e), r = sv(!0);
19896
+ console.warn(`SerpApi: invalid api key: ${r}`, e), r = uv(!0);
19834
19897
  continue;
19835
19898
  }
19836
19899
  throw console.error(`SerpApi: ${r}`, e), e;
19837
19900
  }
19838
19901
  return null;
19839
- }, lv = async (e, t, n) => {
19902
+ }, fv = async (e, t, n) => {
19840
19903
  let r = `${Ga}/${vt(t)}/${vt(e)}`, i = await n.read(r);
19841
19904
  if (i) return i;
19842
- let a = await cv(e, t);
19905
+ let a = await dv(e, t);
19843
19906
  return a ? n.set(r, a) : console.warn(`SerpApi ${t}: No Result`), a ?? {};
19844
- }, uv = (e) => ({
19845
- googleSearch: async (t) => lv(t, q_, e),
19846
- googleImages: async (t) => lv(t, J_, e),
19847
- googleAutocomplete: async (t) => lv(t, Y_, e),
19848
- googleTrends: async (t) => lv(t, X_, e),
19849
- googleMaps: async (t) => lv(t, Z_, e),
19850
- googleMapsPhotos: async (t) => lv(t, Q_, e),
19851
- googleMapsReviews: async (t) => lv(t, $_, e)
19852
- }), dv = {
19907
+ }, pv = (e) => ({
19908
+ googleSearch: async (t) => fv(t, X_, e),
19909
+ googleImages: async (t) => fv(t, Z_, e),
19910
+ googleAutocomplete: async (t) => fv(t, Q_, e),
19911
+ googleTrends: async (t) => fv(t, $_, e),
19912
+ googleMaps: async (t) => fv(t, ev, e),
19913
+ googleMapsPhotos: async (t) => fv(t, tv, e),
19914
+ googleMapsReviews: async (t) => fv(t, nv, e)
19915
+ }), mv = {
19853
19916
  "+": "+",
19854
19917
  "﹢": "+",
19855
19918
  "-": "-",
@@ -19924,7 +19987,7 @@ var cv = async (e, t) => {
19924
19987
  x: "x",
19925
19988
  y: "y",
19926
19989
  z: "z"
19927
- }, fv = {
19990
+ }, hv = {
19928
19991
  email: {
19929
19992
  description: "Email: no spaces -> Lower/Trim",
19930
19993
  transformations: [{
@@ -19970,7 +20033,7 @@ var cv = async (e, t) => {
19970
20033
  transformations: [],
19971
20034
  mask: ["toSlug"]
19972
20035
  }
19973
- }, pv = [
20036
+ }, gv = [
19974
20037
  {
19975
20038
  pattern: "email*",
19976
20039
  use: "email"
@@ -19987,24 +20050,24 @@ var cv = async (e, t) => {
19987
20050
  pattern: "date*",
19988
20051
  use: "date"
19989
20052
  }
19990
- ], mv = new RegExp(Object.keys(dv).join("|"), "g");
19991
- function hv(e) {
19992
- return e ? e.normalize("NFKC").replace(mv, (e) => dv[e] ?? e) : "";
20053
+ ], _v = new RegExp(Object.keys(mv).join("|"), "g");
20054
+ function vv(e) {
20055
+ return e ? e.normalize("NFKC").replace(_v, (e) => mv[e] ?? e) : "";
19993
20056
  }
19994
- var gv = class {
20057
+ var yv = class {
19995
20058
  config;
19996
20059
  matches;
19997
20060
  constructor(e = {}, t = []) {
19998
20061
  this.config = {
19999
- ...fv,
20062
+ ...hv,
20000
20063
  ...e
20001
- }, this.matches = [...pv, ...t];
20064
+ }, this.matches = [...gv, ...t];
20002
20065
  }
20003
20066
  apply(e, t, n = !1) {
20004
20067
  let r = this.config[e];
20005
20068
  if (!r) return n ? Kt(t) : t;
20006
20069
  let i = t;
20007
- i = hv(String(i ?? ""));
20070
+ i = vv(String(i ?? ""));
20008
20071
  let a = r.exclusions;
20009
20072
  if (Array.isArray(a) && a.length) {
20010
20073
  let e = String(i).toLowerCase();
@@ -20063,7 +20126,7 @@ var gv = class {
20063
20126
  };
20064
20127
  //#endregion
20065
20128
  //#region src/libs/csv.ts
20066
- function _v(e, t) {
20129
+ function bv(e, t) {
20067
20130
  let n = Le.parse(e, {
20068
20131
  header: !0,
20069
20132
  skipEmptyLines: !0,
@@ -20076,6 +20139,6 @@ function _v(e, t) {
20076
20139
  };
20077
20140
  }
20078
20141
  //#endregion
20079
- export { Tl as AIProvider, u_ as AI_PROVIDER_DEFINITIONS, f_ as AI_PROVIDER_DESCRIPTORS, a as AI_PROVIDER_HOSTS, Qr as ActionButton, up as AddressAutocomplete, Qo as Alert, Jg as App, qg as AppProvider, ta as AsyncDropdown, Mi as AuthButton, di as AuthProvider, bc as Autocomplete, _n as BUILT_IN_THEMES, pn as BUILT_IN_THEME_IDS, $r as BackLink, cr as Badge, sr as BadgeOverlay, ca as Brand, ga as Breadcrumbs, dg as CLOUDFLARE_PROVIDER_DESCRIPTOR, $l as CONTEXT_MENU_SEARCH_THRESHOLD, Vi as Card, _a as Carousel, Ou as Chatbot, tc as Checkbox, xc as Checklist, hs as Code, hd as CodeEditor, Xu as CodeSyntaxError, ir as Col, Ks as Color, Bd as Component, Vd as ComponentBlock, nr as Container, hu as ContextMenu, Gc as CropImage, Up as DEFAULT_DOCUMENT_HEAD, Hp as DEFAULT_HEAD_APP_NAME, Wp as DEFAULT_LANGUAGE_HEAD, oc as DEFAULT_ORDER, Pi as DataProvider, qs as Date, Ys as DateTime, ts as DescriptionList, i_ as DirectApiProviderAdapter, W_ as DropBoxConnectButton, Nh as DropboxAuthProvider, ea as Dropdown, na as DropdownButton, aa as DropdownDivider, ia as DropdownHeader, ra as DropdownItem, oa as DropdownMenu, c_ as EMAIL_PROVIDER_DEFINITIONS, Ws as Email, ah as EmailProvider, zs as FieldError, Qc as FileNameEditor, o_ as FirebaseApiProviderAdapter, Eh as FirebaseAuthProvider, Sh as FirebaseDataProvider, Ro as FirebaseStorageProvider, fo as FirestoreDataProvider, gf as Form, ef as FormControllerContext, Am as Gallery, Ih as GmailEmailProvider, ei as GoSite, rh as GoogleAuthProvider, Zf as GoogleMapsProvider, jh as GoogleServiceAccountProvider, Gm as Grid, Wm as GridArray, Um as GridCore, Ep as GridDB, jm as GridGalleryView, zp as GridTableView, ym as Head, sm as HeadProvider, ec as Hidden, Wn as I18nProvider, Q as Icon, Mr as IconProvider, sa as Image, mi as ImageAvatar, Lc as ImageEditor, zc as ImageField, Vs as Input, rc as Label, Yf as LayoutBuilder, pp as ListCard, ac as ListGroup, Ii as Loader, Zr as LoadingButton, _s as LocaleSwitcher, xr as LucideIconProvider, Dm as MarkdownReader, Qi as Menu, a_ as MockApiProviderAdapter, Mo as MockDataProvider, Ji as Modal, Zi as ModalOk, Xi as ModalYesNo, Zs as Month, dv as NORMALIZE_MAP, va as Notifications, Us as Number, p_ as OPENAI_COMPATIBLE_PROVIDER_DESCRIPTOR, lc as Order, l_ as PUBLISH_PROVIDER_DEFINITIONS, Km as PageUsers, km as Pagination, Gs as Password, Cs as Percentage, wr as PhosphorIconProvider, Bu as Prompt, ku as PromptMode, Ql as PromptUtils, Yo as ProviderSwitcher, Qs as Range, ti as ReferSite, Df as Repeat, Ld as RichText, rr as Row, s as SERVER_CREDENTIAL_PREFIX, gv as Sanitizer, ba as Search, vc as Select, Cp as SideNav, Pc as StorageProvider, Hs as String, s_ as SupabaseApiProviderAdapter, Rh as SupabaseAuthProvider, To as SupabaseDataProvider, zo as SupabaseStorageProvider, nc as Switch, Ff as Tab, Om as TabDynamic, Nf as TabItem, Mf as TabLayouts, Rf as Table, ic as TextArea, Aa as ThemeSwitcher, Js as Time, Ca as Toolbar, as as Tree, dp as UploadCSV, ol as UploadDocument, sl as UploadImage, $s as Url, Xs as Week, Z as Wrapper, jt as arrayUnique, It as arraysEqual, Ft as base64Encode, Bt as base64ToBlob, Vt as base64ToUrl, la as buildBreadcrumbSchema, c as buildModelIdentityIndex, fu as buildTextCommandContext, Ir as buttonBaseClass, zr as buttonDangerClass, Wr as buttonDarkClass, Hr as buttonInfoClass, Ur as buttonLightClass, Yr as buttonLinkClass, qr as buttonOutlineDangerClass, Gr as buttonOutlinePrimaryClass, Kr as buttonOutlineSecondaryClass, Jr as buttonOutlineSuccessClass, Lr as buttonPrimaryClass, Rr as buttonSecondaryClass, Br as buttonSuccessClass, Vr as buttonWarningClass, eo as callFirebaseFunction, i as canonicalModelName, Tt as checkConditions, Ut as cleanRecord, X as cn, jl as configureProxy, ut as converter, mt as copyToClipboard, Et as crc32, h_ as createAIProviderRegistry, ug as createCloudflareProviderDefinition, pr as createMotionTransition, g_ as createServerCredentialAIRegistry, In as createTranslations, pt as decodeJWT, Fn as defineLocaleMessages, yt as dirname, G_ as dropBox, St as eventClosest, en as fetchJson, $t as fetchRest, tn as fetchWithRetry, js as fieldAddonClass, Os as fieldControlBaseClass, Ds as fieldFeedbackClass, As as fieldGroupClass, Es as fieldLabelClass, ks as fieldTextAreaBaseClass, Sl as formatAIModelRef, xt as generateUniqueId, Gl as getAIModelCatalog, Ai as getAccessToken, lu as getAutoClosedSuffixLength, od as getCodeValidationResult, al as getFileUrl, si as getGlobalVars, C_ as getGoogleTrendsData, w_ as getGoogleTrendsRelated, S_ as getKeywordIdeas, _i as getProviderConfigurationState, Ht as getRecordValue, kf as getTabLayoutConfig, jf as getTabPaneClassName, Af as getTabTriggerClassName, Ph as googleGetAccessToken, gu as groupModelOptions, cu as hasAutoClosedSuffix, Ln as interpolate, kt as intersectObjects, l as isAIProviderTarget, ar as isBadgeDescriptor, Mt as isEmpty, xl as isFreeAIModel, vu as isFreeModelOption, Rt as isInteractiveElement, Il as isProxyEnabled, uc as labelText, tp as loadGoogleMaps, o as loadModelIdentityIndex, Ot as loadScripts, t_ as locales, uu as matchCommandTrigger, or as normalizeBadgeProps, vt as normalizeKey, gt as normalizePath, hv as normalizeVisualChars, Cl as parseAIModelRef, _v as parseCsvText, pi as path, Pl as proxyFetch, Gt as recordsEqual, Vo as registerProviderSessionFactory, li as removeGlobalVars, zt as render2Base64, wt as replacePlaceholders, At as replaceVariables, r as resolveModel, mr as resolveMotionEffect, Yu as runPrompt, Pt as safeClone, Lt as sanitizeKey, uv as scrape, Fh as sendEmail, n as serverCredential, ci as setGlobalVars, bt as sleep, Kt as smartTypeCast, Ct as substrCount, d_ as toProviderDescriptor, os as treeFromPaths, ht as trimPath, _t as trimSlash, Dt as ucfirst, El as useAIProvider, Dl as useAIProviderRegistry, Di as useAccessToken, n_ as useApiProvider, gm as useAssetsHead, fi as useAuthProvider, lh as useCredentialsProvider, Fi as useDataProvider, hm as useDocumentHead, U_ as useDropBoxConnect, Ts as useEditorHeight, oh as useEmailProvider, vr as useEnterMotion, $c as useFileUploadCore, nf as useFormActions, ff as useFormContext, tf as useFormController, oi as useGlobalVars, Qf as useGoogleMapsConfig, um as useHead, fm as useHeadLinks, Gn as useI18n, Pr as useIconController, Nr as useIconProvider, Ec as useImage, mm as useLanguageHead, Yg as useMenu, hr as useMotionEffect, gr as useMotionState, pm as usePaginationHead, _r as usePressMotion, Fa as useProvider, qo as useProviderSession, Fl as useProxy, _m as usePwaHead, vm as useSchemaOrgHead, Pa as useSetProvider, dm as useSocialHead, Fc as useStorageProvider, Y as useTheme, Nn as useThemeController, ad as validateCodeSyntax };
20142
+ export { Tl as AIProvider, p_ as AI_PROVIDER_DEFINITIONS, h_ as AI_PROVIDER_DESCRIPTORS, a as AI_PROVIDER_HOSTS, Qr as ActionButton, up as AddressAutocomplete, Qo as Alert, Zg as App, Xg as AppProvider, ta as AsyncDropdown, Mi as AuthButton, di as AuthProvider, bc as Autocomplete, _n as BUILT_IN_THEMES, pn as BUILT_IN_THEME_IDS, $r as BackLink, cr as Badge, sr as BadgeOverlay, ca as Brand, ga as Breadcrumbs, pg as CLOUDFLARE_PROVIDER_DESCRIPTOR, $l as CONTEXT_MENU_SEARCH_THRESHOLD, Vi as Card, _a as Carousel, Ou as Chatbot, tc as Checkbox, xc as Checklist, hs as Code, hd as CodeEditor, Xu as CodeSyntaxError, ir as Col, Ks as Color, Bd as Component, Vd as ComponentBlock, nr as Container, hu as ContextMenu, Gc as CropImage, Up as DEFAULT_DOCUMENT_HEAD, Hp as DEFAULT_HEAD_APP_NAME, Wp as DEFAULT_LANGUAGE_HEAD, oc as DEFAULT_ORDER, Pi as DataProvider, qs as Date, Ys as DateTime, ts as DescriptionList, s_ as DirectApiProviderAdapter, q_ as DropBoxConnectButton, Nh as DropboxAuthProvider, ea as Dropdown, na as DropdownButton, aa as DropdownDivider, ia as DropdownHeader, ra as DropdownItem, oa as DropdownMenu, d_ as EMAIL_PROVIDER_DEFINITIONS, Ws as Email, ah as EmailProvider, zs as FieldError, Qc as FileNameEditor, l_ as FirebaseApiProviderAdapter, Eh as FirebaseAuthProvider, Sh as FirebaseDataProvider, Ro as FirebaseStorageProvider, fo as FirestoreDataProvider, gf as Form, ef as FormControllerContext, Am as Gallery, Fh as GitHubAuthProvider, Rh as GmailEmailProvider, ei as GoSite, rh as GoogleAuthProvider, Zf as GoogleMapsProvider, jh as GoogleServiceAccountProvider, Gm as Grid, Wm as GridArray, Um as GridCore, Ep as GridDB, jm as GridGalleryView, zp as GridTableView, ym as Head, sm as HeadProvider, ec as Hidden, Wn as I18nProvider, Q as Icon, Mr as IconProvider, sa as Image, mi as ImageAvatar, Lc as ImageEditor, zc as ImageField, Vs as Input, rc as Label, Yf as LayoutBuilder, pp as ListCard, ac as ListGroup, Ii as Loader, Zr as LoadingButton, _s as LocaleSwitcher, xr as LucideIconProvider, Dm as MarkdownReader, Qi as Menu, c_ as MockApiProviderAdapter, Mo as MockDataProvider, Ji as Modal, Zi as ModalOk, Xi as ModalYesNo, Zs as Month, mv as NORMALIZE_MAP, va as Notifications, Us as Number, g_ as OPENAI_COMPATIBLE_PROVIDER_DESCRIPTOR, lc as Order, f_ as PUBLISH_PROVIDER_DEFINITIONS, Km as PageUsers, km as Pagination, Gs as Password, Cs as Percentage, wr as PhosphorIconProvider, Bu as Prompt, ku as PromptMode, Ql as PromptUtils, Yo as ProviderSwitcher, Qs as Range, ti as ReferSite, Df as Repeat, Ld as RichText, rr as Row, s as SERVER_CREDENTIAL_PREFIX, yv as Sanitizer, ba as Search, vc as Select, Cp as SideNav, Pc as StorageProvider, Hs as String, u_ as SupabaseApiProviderAdapter, Bh as SupabaseAuthProvider, To as SupabaseDataProvider, zo as SupabaseStorageProvider, nc as Switch, Ff as Tab, Om as TabDynamic, Nf as TabItem, Mf as TabLayouts, Rf as Table, ic as TextArea, Aa as ThemeSwitcher, Js as Time, Ca as Toolbar, as as Tree, dp as UploadCSV, ol as UploadDocument, sl as UploadImage, $s as Url, Xs as Week, Z as Wrapper, jt as arrayUnique, It as arraysEqual, Ft as base64Encode, Bt as base64ToBlob, Vt as base64ToUrl, la as buildBreadcrumbSchema, c as buildModelIdentityIndex, fu as buildTextCommandContext, Ir as buttonBaseClass, zr as buttonDangerClass, Wr as buttonDarkClass, Hr as buttonInfoClass, Ur as buttonLightClass, Yr as buttonLinkClass, qr as buttonOutlineDangerClass, Gr as buttonOutlinePrimaryClass, Kr as buttonOutlineSecondaryClass, Jr as buttonOutlineSuccessClass, Lr as buttonPrimaryClass, Rr as buttonSecondaryClass, Br as buttonSuccessClass, Vr as buttonWarningClass, eo as callFirebaseFunction, i as canonicalModelName, Tt as checkConditions, Ut as cleanRecord, X as cn, jl as configureProxy, ut as converter, mt as copyToClipboard, Et as crc32, v_ as createAIProviderRegistry, fg as createCloudflareProviderDefinition, pr as createMotionTransition, y_ as createServerCredentialAIRegistry, In as createTranslations, pt as decodeJWT, Fn as defineLocaleMessages, yt as dirname, J_ as dropBox, St as eventClosest, en as fetchJson, $t as fetchRest, tn as fetchWithRetry, js as fieldAddonClass, Os as fieldControlBaseClass, Ds as fieldFeedbackClass, As as fieldGroupClass, Es as fieldLabelClass, ks as fieldTextAreaBaseClass, Sl as formatAIModelRef, xt as generateUniqueId, Gl as getAIModelCatalog, Ai as getAccessToken, lu as getAutoClosedSuffixLength, od as getCodeValidationResult, al as getFileUrl, si as getGlobalVars, E_ as getGoogleTrendsData, D_ as getGoogleTrendsRelated, T_ as getKeywordIdeas, _i as getProviderConfigurationState, Ht as getRecordValue, kf as getTabLayoutConfig, jf as getTabPaneClassName, Af as getTabTriggerClassName, Ih as googleGetAccessToken, gu as groupModelOptions, cu as hasAutoClosedSuffix, Ln as interpolate, kt as intersectObjects, l as isAIProviderTarget, ar as isBadgeDescriptor, Mt as isEmpty, xl as isFreeAIModel, vu as isFreeModelOption, Rt as isInteractiveElement, Il as isProxyEnabled, uc as labelText, tp as loadGoogleMaps, o as loadModelIdentityIndex, Ot as loadScripts, i_ as locales, uu as matchCommandTrigger, or as normalizeBadgeProps, vt as normalizeKey, gt as normalizePath, vv as normalizeVisualChars, Cl as parseAIModelRef, bv as parseCsvText, pi as path, Pl as proxyFetch, Gt as recordsEqual, Vo as registerProviderSessionFactory, li as removeGlobalVars, zt as render2Base64, wt as replacePlaceholders, At as replaceVariables, r as resolveModel, mr as resolveMotionEffect, Yu as runPrompt, Pt as safeClone, Lt as sanitizeKey, pv as scrape, Lh as sendEmail, n as serverCredential, ci as setGlobalVars, bt as sleep, Kt as smartTypeCast, Ct as substrCount, m_ as toProviderDescriptor, os as treeFromPaths, ht as trimPath, _t as trimSlash, Dt as ucfirst, El as useAIProvider, Dl as useAIProviderRegistry, Di as useAccessToken, a_ as useApiProvider, gm as useAssetsHead, fi as useAuthProvider, lh as useCredentialsProvider, Fi as useDataProvider, hm as useDocumentHead, K_ as useDropBoxConnect, Ts as useEditorHeight, oh as useEmailProvider, vr as useEnterMotion, $c as useFileUploadCore, nf as useFormActions, ff as useFormContext, tf as useFormController, oi as useGlobalVars, Qf as useGoogleMapsConfig, um as useHead, fm as useHeadLinks, Gn as useI18n, Pr as useIconController, Nr as useIconProvider, Ec as useImage, mm as useLanguageHead, Qg as useMenu, hr as useMotionEffect, gr as useMotionState, pm as usePaginationHead, _r as usePressMotion, Fa as useProvider, qo as useProviderSession, Fl as useProxy, _m as usePwaHead, vm as useSchemaOrgHead, Pa as useSetProvider, dm as useSocialHead, Fc as useStorageProvider, Y as useTheme, Nn as useThemeController, ad as validateCodeSyntax };
20080
20143
 
20081
20144
  //# sourceMappingURL=index.mjs.map