@llmnative/react 1.15.5 → 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);
@@ -8368,6 +8368,10 @@ var al = (e, t) => {
8368
8368
  if (typeof e.type == "string") return e.type;
8369
8369
  }
8370
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
+ }
8371
8375
  if (typeof t.message == "string") return t.message;
8372
8376
  if (typeof t.detail == "string") return t.detail;
8373
8377
  if (typeof t.status == "number") return `HTTP ${t.status}`;
@@ -13839,7 +13843,7 @@ function Rf({ group: e, expanded: n, openItems: r, showIcons: i, onToggle: a })
13839
13843
  }))));
13840
13844
  }
13841
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 }) {
13842
- 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) => {
13843
13847
  let t = typeof e == "function" ? e(C) : e;
13844
13848
  y ? a?.(t) : S(t);
13845
13849
  }, [
@@ -16956,7 +16960,87 @@ var fh = ({ id: t, label: n, description: r, configKey: i, requiredConfigKeys: a
16956
16960
  return dh(o);
16957
16961
  }
16958
16962
  };
16959
- }, 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({
16960
17044
  id: "deepseek",
16961
17045
  label: "DeepSeek",
16962
17046
  description: "Cost-efficient reasoning and chat models.",
@@ -16966,15 +17050,15 @@ var fh = ({ id: t, label: n, description: r, configKey: i, requiredConfigKeys: a
16966
17050
  baseUrl: "https://api.deepseek.com",
16967
17051
  dashboardUrl: "https://platform.deepseek.com/api_keys",
16968
17052
  credentialsHint: "DeepSeek platform → API Keys → Create new API key."
16969
- }), mh = "https://generativelanguage.googleapis.com/v1beta/models", hh = "https://generativelanguage.googleapis.com/v1beta/models";
16970
- function gh(e) {
17053
+ }), Dh = "https://generativelanguage.googleapis.com/v1beta/models", Oh = "https://generativelanguage.googleapis.com/v1beta/models";
17054
+ function kh(e) {
16971
17055
  return [{ function_declarations: e.map((e) => ({
16972
17056
  name: e.name,
16973
17057
  description: e.description,
16974
17058
  parameters: e.inputSchema
16975
17059
  })) }];
16976
17060
  }
16977
- function _h(e) {
17061
+ function Ah(e) {
16978
17062
  if (e.role === "user") return {
16979
17063
  role: "user",
16980
17064
  parts: [{ text: e.content }]
@@ -16999,7 +17083,7 @@ function _h(e) {
16999
17083
  } }))
17000
17084
  };
17001
17085
  }
17002
- function vh(e) {
17086
+ function jh(e) {
17003
17087
  let t = e?.candidates?.[0]?.content?.parts;
17004
17088
  if (!Array.isArray(t)) return null;
17005
17089
  let n = t.filter((e) => typeof e?.text == "string").map((e) => e.text), r = t.filter((e) => e?.functionCall);
@@ -17018,7 +17102,7 @@ function vh(e) {
17018
17102
  text: i
17019
17103
  } : null;
17020
17104
  }
17021
- var yh = {
17105
+ var Mh = {
17022
17106
  id: "gemini",
17023
17107
  label: "Gemini",
17024
17108
  description: "Google's multimodal Gemini model family.",
@@ -17042,12 +17126,12 @@ var yh = {
17042
17126
  supportsDocuments: !0
17043
17127
  },
17044
17128
  discoverModels: async (e) => {
17045
- let t = await Wt(`${mh}?key=${e}`, null, al);
17129
+ let t = await Wt(`${Dh}?key=${e}`, null, al);
17046
17130
  return Array.isArray(t?.models) ? t.models.map((e) => e.name?.replace(/^models\//, "")).filter(Boolean) : [];
17047
17131
  },
17048
17132
  validateApiKey: async (e) => {
17049
17133
  try {
17050
- let t = await Wt(`${mh}?key=${e}`, null, al);
17134
+ let t = await Wt(`${Dh}?key=${e}`, null, al);
17051
17135
  return t === null ? {
17052
17136
  valid: !1,
17053
17137
  error: "Nessuna risposta dal server (CORS o rete)"
@@ -17068,22 +17152,22 @@ var yh = {
17068
17152
  mime_type: e.mimeType,
17069
17153
  data: e.base64
17070
17154
  } }), { text: n.prompt }];
17071
- return vh(await Wt(`${hh}/${n.model}:generateContent?key=${t}`, {
17155
+ return jh(await Wt(`${Oh}/${n.model}:generateContent?key=${t}`, {
17072
17156
  method: "POST",
17073
17157
  headers: n.logId ? { [e]: n.logId } : void 0,
17074
17158
  body: {
17075
- contents: [...(n.history ?? []).map(_h), ...n.prompt ? [{
17159
+ contents: [...(n.history ?? []).map(Ah), ...n.prompt ? [{
17076
17160
  role: "user",
17077
17161
  parts: r
17078
17162
  }] : []],
17079
17163
  ...n.role ? { systemInstruction: { parts: [{ text: Jc.parseRole(n.role, n) }] } } : {},
17080
- ...n.tools?.length ? { tools: gh(n.tools) } : {},
17164
+ ...n.tools?.length ? { tools: kh(n.tools) } : {},
17081
17165
  generationConfig: typeof n.temperature == "number" ? { temperature: n.temperature } : void 0
17082
17166
  },
17083
17167
  signal: n.signal
17084
17168
  }, al));
17085
17169
  }
17086
- }, bh = fh({
17170
+ }, Nh = fh({
17087
17171
  id: "mistral",
17088
17172
  label: "Mistral",
17089
17173
  description: "European-hosted open and commercial language models.",
@@ -17097,7 +17181,7 @@ var yh = {
17097
17181
  baseUrl: "https://api.mistral.ai/v1",
17098
17182
  dashboardUrl: "https://console.mistral.ai/api-keys",
17099
17183
  credentialsHint: "Mistral Console → API Keys → Create new key."
17100
- }), xh = fh({
17184
+ }), Ph = fh({
17101
17185
  id: "openai",
17102
17186
  label: "OpenAI",
17103
17187
  description: "GPT models via the OpenAI API.",
@@ -17115,7 +17199,7 @@ var yh = {
17115
17199
  baseUrl: "https://api.openai.com/v1",
17116
17200
  dashboardUrl: "https://platform.openai.com/api-keys",
17117
17201
  credentialsHint: "OpenAI dashboard → API keys → Create new secret key."
17118
- }), 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 = {
17119
17203
  id: "opencode",
17120
17204
  label: "OpenCode",
17121
17205
  description: "OpenCode Zen — a curated set of coding-focused models.",
@@ -17147,7 +17231,7 @@ var yh = {
17147
17231
  supportsDocuments: !0
17148
17232
  },
17149
17233
  discoverModels: async (e) => {
17150
- let t = await Wt(Sh, { headers: { Authorization: `Bearer ${e}` } }, al);
17234
+ let t = await Wt(Fh, { headers: { Authorization: `Bearer ${e}` } }, al);
17151
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);
17152
17236
  },
17153
17237
  complete: async (t, n) => {
@@ -17163,7 +17247,7 @@ var yh = {
17163
17247
  }).concat({
17164
17248
  type: "text",
17165
17249
  text: n.prompt
17166
- }) : n.prompt, a = await Wt(Ch, {
17250
+ }) : n.prompt, a = await Wt(Ih, {
17167
17251
  method: "POST",
17168
17252
  headers: {
17169
17253
  Authorization: `Bearer ${t}`,
@@ -17190,7 +17274,7 @@ var yh = {
17190
17274
  if (!a) throw dl("OpenCode");
17191
17275
  return dh(a);
17192
17276
  }
17193
- }, Th = fh({
17277
+ }, Rh = fh({
17194
17278
  id: "openrouter",
17195
17279
  label: "OpenRouter",
17196
17280
  description: "Unified access to many model providers through one API.",
@@ -17224,7 +17308,7 @@ var yh = {
17224
17308
  };
17225
17309
  }
17226
17310
  }
17227
- }), Eh = {
17311
+ }), zh = {
17228
17312
  dbRealtime: {
17229
17313
  service: "data",
17230
17314
  create: () => new Rm()
@@ -17241,7 +17325,7 @@ var yh = {
17241
17325
  service: "auth",
17242
17326
  create: () => new Hm()
17243
17327
  }
17244
- }, Dh = {
17328
+ }, Bh = {
17245
17329
  googleAuth: {
17246
17330
  service: "auth",
17247
17331
  create: () => new ym()
@@ -17255,10 +17339,10 @@ var yh = {
17255
17339
  create: (e) => new qm(e.serviceAccount),
17256
17340
  when: (e) => !!e.serviceAccount
17257
17341
  }
17258
- }, Oh = { dropboxAuth: {
17342
+ }, Vh = { dropboxAuth: {
17259
17343
  service: "auth",
17260
17344
  create: (e) => new Ym(e)
17261
- } }, kh = {
17345
+ } }, Hh = {
17262
17346
  supabaseDb: {
17263
17347
  service: "data",
17264
17348
  create: (e) => new co(e)
@@ -17271,30 +17355,39 @@ var yh = {
17271
17355
  service: "auth",
17272
17356
  create: (e) => new eh(e)
17273
17357
  }
17274
- }, Ah = { mock: {
17358
+ }, Uh = { mock: {
17275
17359
  service: "data",
17276
17360
  create: (e) => new go(e?.data)
17277
- } }, jh = (e, t) => ({
17361
+ } }, Wh = (e, t) => ({
17278
17362
  service: "ai",
17279
17363
  create: (n) => new _l(e, n?.[t] || ""),
17280
17364
  when: (e) => !!e?.[t]
17281
- }), Mh = {
17282
- firebase: Eh,
17283
- google: Dh,
17284
- dropbox: Oh,
17285
- supabase: kh,
17286
- mock: Ah,
17365
+ }), Gh = {
17366
+ firebase: zh,
17367
+ google: Bh,
17368
+ dropbox: Vh,
17369
+ supabase: Hh,
17370
+ mock: Uh,
17287
17371
  ai: {
17288
- openai: jh(xh, "openaiApiKey"),
17289
- openrouter: jh(Th, "openRouterApiKey"),
17290
- opencode: jh(wh, "openCodeApiKey"),
17291
- deepseek: jh(ph, "deepSeekApiKey"),
17292
- gemini: jh(yh, "geminiApiKey"),
17293
- anthropic: jh(oh, "anthropicApiKey"),
17294
- 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
+ }
17295
17388
  }
17296
- }, 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" }));
17297
- 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) {
17298
17391
  if (!t) return;
17299
17392
  let n = t, r = typeof t == "object" && !Array.isArray(t) ? Object.entries(n) : [];
17300
17393
  if (r.length > 0 && r.every(([, e]) => typeof e == "object" && !!e)) {
@@ -17303,10 +17396,10 @@ function Ph(e, t) {
17303
17396
  }
17304
17397
  e.custom = t;
17305
17398
  }
17306
- function Fh(e, t, n = "default") {
17399
+ function Jh(e, t, n = "default") {
17307
17400
  return t && e[t] ? t : Object.keys(e)[0] ?? n;
17308
17401
  }
17309
- function Ih(e = {}) {
17402
+ function Yh(e = {}) {
17310
17403
  let t = {
17311
17404
  data: {},
17312
17405
  storage: {},
@@ -17315,24 +17408,24 @@ function Ih(e = {}) {
17315
17408
  ai: {},
17316
17409
  credentials: {}
17317
17410
  }, n = (e) => t[e] ??= {};
17318
- for (let [t, r] of Object.entries(Mh)) {
17411
+ for (let [t, r] of Object.entries(Gh)) {
17319
17412
  let i = e[t];
17320
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));
17321
17414
  }
17322
- 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);
17323
17416
  Object.keys(t.data).length === 0 && (t.data.mock = new go()), Object.keys(t.auth).length === 0 && (t.auth.googleAuth = new ym());
17324
17417
  let r = e.services ?? {}, i = {};
17325
17418
  for (let [e, n] of Object.entries(t)) i[e] = {
17326
17419
  registry: n,
17327
- defaultKey: Fh(n, r[e])
17420
+ defaultKey: Jh(n, r[e])
17328
17421
  };
17329
17422
  return i;
17330
17423
  }
17331
- var Lh = {}, Rh = (e) => {
17332
- Lh = e;
17333
- }, zh = (e) => Lh[e] || [];
17334
- 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 }) {
17335
- 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);
17336
17429
  v.current = p;
17337
17430
  let y = m(void 0);
17338
17431
  y.current ||= (async (e, t, n) => {
@@ -17373,8 +17466,8 @@ function Bh({ contextProviders: e, providers: n = {}, appName: r = "LLM Native",
17373
17466
  setProvider: b
17374
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))))))))))))))));
17375
17468
  }
17376
- function Vh({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, children: a, ...o }) {
17377
- Rh(r);
17469
+ function eg({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, children: a, ...o }) {
17470
+ Zh(r);
17378
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));
17379
17472
  function l(r, a, l) {
17380
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, {
@@ -17388,16 +17481,16 @@ function Vh({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, chil
17388
17481
  key: a.path,
17389
17482
  reportUrl: o.errorReportUrl,
17390
17483
  debug: o.debug
17391
- }, /* @__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))))
17392
17485
  });
17393
17486
  }
17394
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)));
17395
- 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, {
17396
17489
  path: ci,
17397
17490
  element: /* @__PURE__ */ t.createElement(hi, null)
17398
17491
  }), /* @__PURE__ */ t.createElement(t.Fragment, null, u({
17399
17492
  default: [{ path: "/" }],
17400
- ...Lh,
17493
+ ...Xh,
17401
17494
  _auth: [{
17402
17495
  path: "/users",
17403
17496
  page: cm,
@@ -17408,8 +17501,8 @@ function Vh({ importPage: e, LayoutDefault: n = void 0, menuConfig: r = {}, chil
17408
17501
  element: /* @__PURE__ */ t.createElement(lm, null)
17409
17502
  })));
17410
17503
  }
17411
- var Hh = (e) => {
17412
- 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) => {
17413
17506
  let t = n.pathname === e.path, i = e.children ? r(e.children) : [], a = t || i.some((e) => e.active);
17414
17507
  return {
17415
17508
  ...e,
@@ -17418,7 +17511,7 @@ var Hh = (e) => {
17418
17511
  };
17419
17512
  });
17420
17513
  return p(() => r(t), [n.pathname]);
17421
- }, Uh = {
17514
+ }, ng = {
17422
17515
  common: {
17423
17516
  save: "Salva",
17424
17517
  cancel: "Annulla",
@@ -17587,7 +17680,7 @@ var Hh = (e) => {
17587
17680
  notConfigured: "La ricerca indirizzi non è configurata (manca la API key Google Maps).",
17588
17681
  loadError: "Impossibile caricare la ricerca indirizzi."
17589
17682
  }
17590
- }, Wh = {
17683
+ }, rg = {
17591
17684
  common: {
17592
17685
  save: "Speichern",
17593
17686
  cancel: "Abbrechen",
@@ -17756,7 +17849,7 @@ var Hh = (e) => {
17756
17849
  notConfigured: "Adresssuche ist nicht konfiguriert (Google Maps API-Schlüssel fehlt).",
17757
17850
  loadError: "Adresssuche konnte nicht geladen werden."
17758
17851
  }
17759
- }, Gh = {
17852
+ }, ig = {
17760
17853
  common: {
17761
17854
  save: "Сохранить",
17762
17855
  cancel: "Отменить",
@@ -17925,7 +18018,7 @@ var Hh = (e) => {
17925
18018
  notConfigured: "Поиск адресов не настроен (отсутствует ключ Google Maps API).",
17926
18019
  loadError: "Не удалось загрузить поиск адресов."
17927
18020
  }
17928
- }, Kh = {
18021
+ }, ag = {
17929
18022
  common: {
17930
18023
  save: "保存",
17931
18024
  cancel: "取消",
@@ -18094,7 +18187,7 @@ var Hh = (e) => {
18094
18187
  notConfigured: "地址搜索未配置(缺少 Google Maps API 密钥)。",
18095
18188
  loadError: "无法加载地址搜索。"
18096
18189
  }
18097
- }, qh = {
18190
+ }, og = {
18098
18191
  common: {
18099
18192
  save: "حفظ",
18100
18193
  cancel: "إلغاء",
@@ -18263,22 +18356,22 @@ var Hh = (e) => {
18263
18356
  notConfigured: "البحث عن العناوين غير مُعد (مفتاح Google Maps API مفقود).",
18264
18357
  loadError: "تعذر تحميل البحث عن العناوين."
18265
18358
  }
18266
- }, Jh = /* @__PURE__ */ Je({
18267
- ar: () => qh,
18268
- de: () => Wh,
18359
+ }, sg = /* @__PURE__ */ Je({
18360
+ ar: () => og,
18361
+ de: () => rg,
18269
18362
  en: () => wn,
18270
- it: () => Uh,
18271
- ru: () => Gh,
18272
- zh: () => Kh
18273
- }), Yh = (e) => ya("api", e);
18363
+ it: () => ng,
18364
+ ru: () => ig,
18365
+ zh: () => ag
18366
+ }), cg = (e) => ya("api", e);
18274
18367
  //#endregion
18275
18368
  //#region src/providers/api/direct.ts
18276
- async function Xh(e) {
18369
+ async function lg(e) {
18277
18370
  if (!e.ok) throw Error(`ApiProvider request failed: ${e.status} ${e.statusText}`);
18278
18371
  let t = await e.text();
18279
18372
  return t ? JSON.parse(t) : void 0;
18280
18373
  }
18281
- var Zh = class {
18374
+ var ug = class {
18282
18375
  config;
18283
18376
  constructor(e) {
18284
18377
  this.config = e;
@@ -18293,7 +18386,7 @@ var Zh = class {
18293
18386
  ...e.body,
18294
18387
  ...this.config.body
18295
18388
  };
18296
- return Xh(await al(n.toString(), {
18389
+ return lg(await al(n.toString(), {
18297
18390
  method: t,
18298
18391
  headers: {
18299
18392
  "Content-Type": "application/json",
@@ -18302,7 +18395,7 @@ var Zh = class {
18302
18395
  body: t === "GET" || t === "HEAD" ? void 0 : JSON.stringify(r)
18303
18396
  }));
18304
18397
  }
18305
- }, Qh = class {
18398
+ }, dg = class {
18306
18399
  resolver;
18307
18400
  constructor(e) {
18308
18401
  this.resolver = e;
@@ -18310,7 +18403,7 @@ var Zh = class {
18310
18403
  async fetch(e) {
18311
18404
  return this.resolver(e);
18312
18405
  }
18313
- }, $h = class {
18406
+ }, fg = class {
18314
18407
  config;
18315
18408
  constructor(e) {
18316
18409
  this.config = e;
@@ -18321,7 +18414,7 @@ var Zh = class {
18321
18414
  request: e
18322
18415
  }, void 0, this.config.region);
18323
18416
  }
18324
- }, eg = class {
18417
+ }, pg = class {
18325
18418
  config;
18326
18419
  constructor(e) {
18327
18420
  this.config = e;
@@ -18334,7 +18427,7 @@ var Zh = class {
18334
18427
  if (n) throw n;
18335
18428
  return t;
18336
18429
  }
18337
- }, tg = [
18430
+ }, mg = [
18338
18431
  {
18339
18432
  id: "resend",
18340
18433
  label: "Resend",
@@ -18445,7 +18538,7 @@ var Zh = class {
18445
18538
  ],
18446
18539
  credentialsHint: "Ask your mail host or hosting provider for the SMTP host, port, and credentials."
18447
18540
  }
18448
- ], ng = [
18541
+ ], hg = [
18449
18542
  {
18450
18543
  id: "cloudflare_pages",
18451
18544
  label: "Cloudflare Pages",
@@ -18675,14 +18768,14 @@ var Zh = class {
18675
18768
  description: "No vendor — packages the build as a downloadable archive for self-hosting anywhere else.",
18676
18769
  credentialFields: []
18677
18770
  }
18678
- ], rg = [
18679
- xh,
18680
- Th,
18681
- wh,
18682
- ph,
18683
- yh,
18771
+ ], gg = [
18772
+ Ph,
18773
+ Rh,
18774
+ Lh,
18775
+ Eh,
18776
+ Mh,
18684
18777
  oh,
18685
- bh,
18778
+ Nh,
18686
18779
  fh({
18687
18780
  id: "glm",
18688
18781
  label: "ZhipuAI (GLM)",
@@ -18700,7 +18793,7 @@ var Zh = class {
18700
18793
  dashboardUrl: "https://bigmodel.cn/usercenter/apikeys",
18701
18794
  credentialsHint: "Zhipu BigModel → User Center → API Keys → Create Key."
18702
18795
  })
18703
- ], ig = (e) => ({
18796
+ ], _g = (e) => ({
18704
18797
  id: e.id,
18705
18798
  label: e.label,
18706
18799
  description: e.description ?? "",
@@ -18711,7 +18804,7 @@ var Zh = class {
18711
18804
  }],
18712
18805
  credentialsUrl: e.dashboardUrl,
18713
18806
  credentialsHint: e.credentialsHint
18714
- }), ag = rg.map(ig), og = {
18807
+ }), vg = [...gg.map(_g), Th], yg = {
18715
18808
  id: "openai-compatible",
18716
18809
  label: "OpenAI-compatible",
18717
18810
  description: "Any OpenAI-compatible endpoint (self-hosted or third-party).",
@@ -18725,9 +18818,15 @@ var Zh = class {
18725
18818
  type: "text",
18726
18819
  placeholder: "https://api.example.com/v1"
18727
18820
  }]
18728
- }, sg = (e) => {
18729
- let t = e?.openAICompatible?.baseUrl?.trim();
18730
- 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({
18731
18830
  id: "openai-compatible",
18732
18831
  label: e?.openAICompatible?.label?.trim() || "OpenAI-compatible",
18733
18832
  description: "Any OpenAI-compatible endpoint (self-hosted or third-party).",
@@ -18735,39 +18834,39 @@ var Zh = class {
18735
18834
  requiredConfigKeys: ["ai.openAICompatible.apiKey", "ai.openAICompatible.baseUrl"],
18736
18835
  defaultModel: e?.openAICompatible?.defaultModel?.trim() || "default",
18737
18836
  fallbackModels: e?.openAICompatible?.fallbackModels?.filter(Boolean) || ["default"],
18738
- baseUrl: t,
18837
+ baseUrl: r,
18739
18838
  modelsUrl: e?.openAICompatible?.modelsUrl?.trim() || void 0,
18740
18839
  chatCompletionsUrl: e?.openAICompatible?.chatCompletionsUrl?.trim() || void 0
18741
- })] : [];
18742
- }, cg = (e) => e ? [...rg, ...sg(e)].reduce((t, n) => {
18743
- 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() : "";
18744
18843
  return r && (t[n.id] = new _l(n, r)), t;
18745
- }, {}) : {}, lg = void 0;
18844
+ }, {}) : {}, Sg = void 0;
18746
18845
  typeof wa == "function" && wa((e) => {
18747
- lg = e.google;
18846
+ Sg = e.google;
18748
18847
  });
18749
- var ug = {
18848
+ var Cg = {
18750
18849
  ita: "geoTargetConstants/2380",
18751
18850
  rome: "geoTargetConstants/1033236",
18752
18851
  mil: "geoTargetConstants/1033239",
18753
18852
  nap: "geoTargetConstants/1033245",
18754
18853
  tor: "geoTargetConstants/1033247"
18755
- }, dg = {
18854
+ }, wg = {
18756
18855
  it: "languageConstants/1000",
18757
18856
  en: "languageConstants/1001",
18758
18857
  fr: "languageConstants/1002",
18759
18858
  es: "languageConstants/1003",
18760
18859
  de: "languageConstants/1005"
18761
18860
  };
18762
- function fg(e) {
18763
- return ug[e.toLowerCase()] || "geoTargetConstants/2380";
18861
+ function Tg(e) {
18862
+ return Cg[e.toLowerCase()] || "geoTargetConstants/2380";
18764
18863
  }
18765
- function pg(e) {
18766
- return dg[e.toLowerCase()] || "languageConstants/1000";
18864
+ function Eg(e) {
18865
+ return wg[e.toLowerCase()] || "languageConstants/1000";
18767
18866
  }
18768
- async function mg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", languageCode: r = "it" }) {
18769
- 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"), [];
18770
- 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 = {
18771
18870
  keywordSeed: { keywords: [e] },
18772
18871
  geoTargetConstants: [a],
18773
18872
  language: o
@@ -18775,7 +18874,7 @@ async function mg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", langu
18775
18874
  method: "POST",
18776
18875
  headers: {
18777
18876
  Authorization: `Bearer ${i}`,
18778
- "developer-token": lg.developerToken,
18877
+ "developer-token": Sg.developerToken,
18779
18878
  "Content-Type": "application/json"
18780
18879
  },
18781
18880
  body: JSON.stringify(c)
@@ -18793,7 +18892,7 @@ async function mg({ keyword: e, googleAdsAccountId: t, geoCode: n = "ita", langu
18793
18892
  }
18794
18893
  //#endregion
18795
18894
  //#region src/providers/seo/google/trend.ts
18796
- async function hg(e, t = "IT", n = "today 12-m") {
18895
+ async function Og(e, t = "IT", n = "today 12-m") {
18797
18896
  let r = `https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({
18798
18897
  comparisonItem: [{
18799
18898
  keyword: e,
@@ -18813,7 +18912,7 @@ async function hg(e, t = "IT", n = "today 12-m") {
18813
18912
  }))
18814
18913
  };
18815
18914
  }
18816
- async function gg(e, t = "IT", n = "today 12-m") {
18915
+ async function kg(e, t = "IT", n = "today 12-m") {
18817
18916
  let r = `https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=${encodeURIComponent(JSON.stringify({
18818
18917
  comparisonItem: [{
18819
18918
  keyword: e,
@@ -18839,13 +18938,13 @@ async function gg(e, t = "IT", n = "today 12-m") {
18839
18938
  }
18840
18939
  //#endregion
18841
18940
  //#region src/providers/storage/dropbox.tsx
18842
- 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;
18843
18942
  typeof wa == "function" && wa((e) => {
18844
- yg = e.dropbox;
18943
+ Mg = e.dropbox;
18845
18944
  });
18846
- var bg = async (e, t, n = {}) => {
18847
- if (!yg) return console.error("DropBox: Config not found"), null;
18848
- 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);
18849
18948
  if (!r) throw Error("DropBox: Access token not found");
18850
18949
  return await fetch(e, {
18851
18950
  method: "POST",
@@ -18858,12 +18957,12 @@ var bg = async (e, t, n = {}) => {
18858
18957
  }).catch((e) => (console.error("There was a problem with the fetch operation:", e), null)).finally(() => {
18859
18958
  console.log("DropBox: Fetch operation completed");
18860
18959
  });
18861
- }, xg = async (e, t, n = {}) => {
18862
- if (!yg) {
18960
+ }, Pg = async (e, t, n = {}) => {
18961
+ if (!Mg) {
18863
18962
  console.error("DropBox: Config not found");
18864
18963
  return;
18865
18964
  }
18866
- let r = await bi(yg.clientId);
18965
+ let r = await bi(Mg.clientId);
18867
18966
  if (!r) {
18868
18967
  console.error("DropBox: Access token not found");
18869
18968
  return;
@@ -18888,47 +18987,47 @@ var bg = async (e, t, n = {}) => {
18888
18987
  }).finally(() => {
18889
18988
  console.log("DropBox: Fetch operation completed", e, t);
18890
18989
  });
18891
- }, Sg = (e, t = !1) => {
18892
- let n = yg?.rootPath || "";
18893
- return (t ? vg : "") + (e.startsWith(n) ? e : n + e);
18894
- }, 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) => {
18895
18994
  let r = {};
18896
- return (await Lg.listFolders({
18995
+ return (await Xg.listFolders({
18897
18996
  path: `${e + t}`,
18898
18997
  recursive: !0
18899
18998
  })).forEach((e) => {
18900
18999
  e[".tag"] !== "folder" && (r[n ? ri.changeFilename(e.path_display, { ext: "" }) : e.path_display] = e.name);
18901
19000
  }), r;
18902
- }, wg = async (e, t) => {
19001
+ }, Lg = async (e, t) => {
18903
19002
  if (!e.async_job_id) return Promise.reject(e);
18904
19003
  let n, r = !0;
18905
- 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);
18906
19005
  return n?.[".tag"] === "complete" ? Promise.resolve(n.entries) : Promise.reject(n);
18907
- }, Tg = async (e, t = "") => {
18908
- 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}`, {
18909
19008
  autorename: !1,
18910
19009
  force_async: !0,
18911
- paths: e.map((e) => Sg(t + e))
19010
+ paths: e.map((e) => Fg(t + e))
18912
19011
  });
18913
- return r ? wg(r, n) : void 0;
18914
- }, Eg = async (e, t = "") => {
18915
- let n = "files/create_folder_batch", r = await xg(`https://api.dropboxapi.com/2/${n}`, { entries: e.map((e) => ({ path: Sg(t + e) })) });
18916
- return r ? wg(r, n) : void 0;
18917
- }, 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", {
18918
19017
  path: e,
18919
19018
  tag_text: t.toLowerCase().replaceAll(/[^a-z0-9]/g, "")
18920
- }), Og = async (e, t = "") => {
18921
- for (let n in e) for (let r of e[n]) await Dg(Sg(t + n), r);
18922
- }, kg = async ({ path: e = "", recursive: t = !1 } = {}) => {
18923
- 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", {
18924
19023
  include_deleted: !1,
18925
19024
  include_has_explicit_shared_members: !1,
18926
19025
  include_media_info: !1,
18927
19026
  include_mounted_folders: !0,
18928
19027
  include_non_downloadable_files: !0,
18929
- path: Sg(e),
19028
+ path: Fg(e),
18930
19029
  recursive: n
18931
- }) : 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 = {
18932
19031
  has_more: !0,
18933
19032
  cursor: "",
18934
19033
  entries: []
@@ -18941,44 +19040,44 @@ var bg = async (e, t, n = {}) => {
18941
19040
  recursive: t
18942
19041
  }), i && n.push(...i.entries);
18943
19042
  return n;
18944
- }, Ag = async (e) => {
18945
- 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", {
18946
19045
  entries: e,
18947
19046
  autorename: !1
18948
- }), 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 = [];
18949
19048
  for (let a = 0; a < e.length; a += 900) {
18950
19049
  i = e.slice(a, a + 900).map((e) => ({
18951
- from_path: Sg(e.from),
18952
- to_path: Sg(e.to)
19050
+ from_path: Fg(e.from),
19051
+ to_path: Fg(e.to)
18953
19052
  }));
18954
19053
  let o = await t(i);
18955
19054
  if (!o) continue;
18956
19055
  if (o.error) throw Error(`Error starting copy: ${o.error}`);
18957
19056
  let s = o;
18958
- 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 ?? "");
18959
19058
  if (s?.[".tag"] === "failed") throw Error(`Copy operation failed: ${s[".tag"]}`);
18960
19059
  s?.[".tag"] === "complete" && s.entries && r.push(...s.entries);
18961
19060
  }
18962
19061
  return r.filter((e) => e[".tag"] === "failure").map((e) => e.failure);
18963
- }, jg = async (e) => {
18964
- 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", {
18965
19064
  ...e,
18966
19065
  autorename: !0
18967
19066
  });
18968
19067
  for (let n of e) await t({
18969
- from_path: Sg(n.from),
18970
- to_path: Sg(n.to)
19068
+ from_path: Fg(n.from),
19069
+ to_path: Fg(n.to)
18971
19070
  });
18972
- }, 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) => {
18973
19072
  let a = {}, o = [];
18974
19073
  for (let s = 0; s < e.length; s += 25) {
18975
19074
  let c = e.slice(s, s + 25), l = c.map((e) => ({
18976
- path: Sg(e.path),
19075
+ path: Fg(e.path),
18977
19076
  format: n,
18978
19077
  size: t,
18979
19078
  mode: r
18980
19079
  }));
18981
- 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) => {
18982
19081
  if (!e) return;
18983
19082
  let n = e.entries.reduce((e, n, r) => {
18984
19083
  let i = c[r].path, [a, o] = t.replace("w", "").split("h").map(Number), s = n;
@@ -18997,7 +19096,7 @@ var bg = async (e, t, n = {}) => {
18997
19096
  }));
18998
19097
  }
18999
19098
  return Promise.all(o).then(() => a);
19000
- }, Ng = (e, t = "application/octet-stream", n = 512) => {
19099
+ }, Kg = (e, t = "application/octet-stream", n = 512) => {
19001
19100
  let r = atob(e), i = [];
19002
19101
  for (let e = 0; e < r.length; e += n) {
19003
19102
  let t = r.slice(e, e + n), a = Array(t.length);
@@ -19006,11 +19105,11 @@ var bg = async (e, t, n = {}) => {
19006
19105
  i.push(o);
19007
19106
  }
19008
19107
  return new Blob(i, { type: t });
19009
- }, Pg = async (e, t) => {
19108
+ }, qg = async (e, t) => {
19010
19109
  try {
19011
19110
  let n = t.split(",")[1];
19012
- bg("https://content.dropboxapi.com/2/files/upload", Ng(n, "application/octet-stream"), { "Dropbox-API-Arg": JSON.stringify({
19013
- 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),
19014
19113
  mode: "overwrite",
19015
19114
  autorename: !0,
19016
19115
  mute: !1
@@ -19020,12 +19119,12 @@ var bg = async (e, t, n = {}) => {
19020
19119
  } catch (e) {
19021
19120
  console.error("Errore durante il caricamento su Dropbox:", e);
19022
19121
  }
19023
- }, Fg = (e = !1) => yg ? _i(yg.clientId, e) : !1, Ig = (e = {}) => {
19024
- 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", {
19025
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.",
19026
19125
  className: "text-danger flex items-center gap-2"
19027
19126
  }, /* @__PURE__ */ t.createElement(Q, { name: "warning" }), /* @__PURE__ */ t.createElement("span", null, "Dropbox non configurato"));
19028
- let n = Fg(!0);
19127
+ let n = Jg(!0);
19029
19128
  return /* @__PURE__ */ t.createElement(Si, {
19030
19129
  provider: "dropboxAuth",
19031
19130
  intent: "connect",
@@ -19037,33 +19136,33 @@ var bg = async (e, t, n = {}) => {
19037
19136
  title: n ? "DropBox Connected" : "DropBox Disconnected"
19038
19137
  }
19039
19138
  });
19040
- }, Lg = {
19139
+ }, Xg = {
19041
19140
  setRootPath: (e) => {
19042
- yg && (yg.rootPath = e);
19141
+ Mg && (Mg.rootPath = e);
19043
19142
  },
19044
- resolvePath: Sg,
19045
- createFolders: Tg,
19046
- deleteBulk: Eg,
19047
- addTags: Og,
19048
- listFolders: kg,
19049
- getThumbnails: Mg,
19050
- search: Cg,
19051
- upload: Pg,
19052
- copy: Ag,
19053
- move: jg
19054
- }, 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_ = {
19055
19154
  engine: null,
19056
19155
  device: null,
19057
19156
  no_cache: !1,
19058
19157
  async: !1,
19059
19158
  output: "json"
19060
- }, qg = { q: null }, Jg = {
19159
+ }, o_ = { q: null }, s_ = {
19061
19160
  tbs: null,
19062
19161
  safe: "active",
19063
19162
  nfpr: 0,
19064
19163
  filter: 1
19065
19164
  };
19066
- function Yg(e) {
19165
+ function c_(e) {
19067
19166
  let t = Rc(), n = Rc(!0), r = zc(!0), i = {
19068
19167
  location: t,
19069
19168
  uule: null
@@ -19081,13 +19180,13 @@ function Yg(e) {
19081
19180
  hl: r
19082
19181
  };
19083
19182
  return {
19084
- [zg]: {
19085
- ...Kg,
19183
+ [Qg]: {
19184
+ ...a_,
19086
19185
  ...i,
19087
19186
  ...o,
19088
- ...Jg,
19089
- ...qg,
19090
- engine: zg,
19187
+ ...s_,
19188
+ ...o_,
19189
+ engine: Qg,
19091
19190
  ludocid: null,
19092
19191
  lsig: null,
19093
19192
  kgmid: null,
@@ -19096,29 +19195,29 @@ function Yg(e) {
19096
19195
  start: null,
19097
19196
  num: null
19098
19197
  },
19099
- [Bg]: {
19100
- ...Kg,
19198
+ [$g]: {
19199
+ ...a_,
19101
19200
  ...i,
19102
19201
  ...o,
19103
- ...Jg,
19104
- ...qg,
19105
- engine: Bg,
19202
+ ...s_,
19203
+ ...o_,
19204
+ engine: $g,
19106
19205
  chips: null,
19107
19206
  ijn: null
19108
19207
  },
19109
- [Vg]: {
19110
- ...Kg,
19208
+ [e_]: {
19209
+ ...a_,
19111
19210
  ...o,
19112
- ...qg,
19113
- engine: Vg,
19211
+ ...o_,
19212
+ engine: e_,
19114
19213
  cp: null,
19115
19214
  client: null
19116
19215
  },
19117
- [Hg]: {
19118
- ...Kg,
19216
+ [t_]: {
19217
+ ...a_,
19119
19218
  ...a,
19120
- ...qg,
19121
- engine: Hg,
19219
+ ...o_,
19220
+ engine: t_,
19122
19221
  data_type: null,
19123
19222
  tz: null,
19124
19223
  cat: null,
@@ -19126,73 +19225,73 @@ function Yg(e) {
19126
19225
  date: null,
19127
19226
  csv: null
19128
19227
  },
19129
- [Ug]: {
19130
- ...Kg,
19228
+ [n_]: {
19229
+ ...a_,
19131
19230
  ...i,
19132
19231
  ...o,
19133
- ...Jg,
19134
- ...qg,
19135
- engine: Ug
19232
+ ...s_,
19233
+ ...o_,
19234
+ engine: n_
19136
19235
  },
19137
- [Wg]: {
19138
- ...Kg,
19236
+ [r_]: {
19237
+ ...a_,
19139
19238
  ...s,
19140
- engine: Wg
19239
+ engine: r_
19141
19240
  },
19142
- [Gg]: {
19143
- ...Kg,
19241
+ [i_]: {
19242
+ ...a_,
19144
19243
  ...s,
19145
- engine: Gg
19244
+ engine: i_
19146
19245
  }
19147
19246
  }[e] ?? {};
19148
19247
  }
19149
- var Xg = void 0;
19248
+ var l_ = void 0;
19150
19249
  typeof wa == "function" && wa((e) => {
19151
- Xg = e.scrape;
19250
+ l_ = e.scrape;
19152
19251
  });
19153
- function Zg(e) {
19252
+ function u_(e) {
19154
19253
  let t = {};
19155
19254
  for (let n in e) e[n] !== null && (t[n] = e[n]);
19156
19255
  return t;
19157
19256
  }
19158
- var Qg = 0;
19159
- function $g(e = !1) {
19160
- let t = Xg?.serpApiKey?.split(",").map((e) => e.trim()).filter(Boolean) || [];
19161
- 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);
19162
19261
  }
19163
- var e_ = async (e, t) => {
19262
+ var p_ = async (e, t) => {
19164
19263
  let n = (n) => {
19165
- let r = Zg({
19166
- ...Yg(t),
19264
+ let r = u_({
19265
+ ...c_(t),
19167
19266
  api_key: n,
19168
19267
  q: e
19169
19268
  });
19170
- return console.log(Rg, r), `${Rg}?${new URLSearchParams(r)}`;
19171
- }, r = $g();
19269
+ return console.log(Zg, r), `${Zg}?${new URLSearchParams(r)}`;
19270
+ }, r = f_();
19172
19271
  for (; r;) try {
19173
19272
  return await Wt(n(r));
19174
19273
  } catch (e) {
19175
19274
  if (e?.error === "quota_exceeded") {
19176
- console.warn(`SerpApi: invalid api key: ${r}`, e), r = $g(!0);
19275
+ console.warn(`SerpApi: invalid api key: ${r}`, e), r = f_(!0);
19177
19276
  continue;
19178
19277
  }
19179
19278
  throw console.error(`SerpApi: ${r}`, e), e;
19180
19279
  }
19181
19280
  return null;
19182
- }, t_ = async (e, t, n) => {
19281
+ }, m_ = async (e, t, n) => {
19183
19282
  let r = `${ka}/${ct(t)}/${ct(e)}`, i = await n.read(r);
19184
19283
  if (i) return i;
19185
- let a = await e_(e, t);
19284
+ let a = await p_(e, t);
19186
19285
  return a ? n.set(r, a) : console.warn(`SerpApi ${t}: No Result`), a ?? {};
19187
- }, n_ = (e) => ({
19188
- googleSearch: async (t) => t_(t, zg, e),
19189
- googleImages: async (t) => t_(t, Bg, e),
19190
- googleAutocomplete: async (t) => t_(t, Vg, e),
19191
- googleTrends: async (t) => t_(t, Hg, e),
19192
- googleMaps: async (t) => t_(t, Ug, e),
19193
- googleMapsPhotos: async (t) => t_(t, Wg, e),
19194
- googleMapsReviews: async (t) => t_(t, Gg, e)
19195
- }), 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_ = {
19196
19295
  "+": "+",
19197
19296
  "﹢": "+",
19198
19297
  "-": "-",
@@ -19267,7 +19366,7 @@ var e_ = async (e, t) => {
19267
19366
  x: "x",
19268
19367
  y: "y",
19269
19368
  z: "z"
19270
- }, i_ = {
19369
+ }, __ = {
19271
19370
  email: {
19272
19371
  description: "Email: no spaces -> Lower/Trim",
19273
19372
  transformations: [{
@@ -19313,7 +19412,7 @@ var e_ = async (e, t) => {
19313
19412
  transformations: [],
19314
19413
  mask: ["toSlug"]
19315
19414
  }
19316
- }, a_ = [
19415
+ }, v_ = [
19317
19416
  {
19318
19417
  pattern: "email*",
19319
19418
  use: "email"
@@ -19330,24 +19429,24 @@ var e_ = async (e, t) => {
19330
19429
  pattern: "date*",
19331
19430
  use: "date"
19332
19431
  }
19333
- ], o_ = new RegExp(Object.keys(r_).join("|"), "g");
19334
- function s_(e) {
19335
- 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) : "";
19336
19435
  }
19337
- var c_ = class {
19436
+ var x_ = class {
19338
19437
  config;
19339
19438
  matches;
19340
19439
  constructor(e = {}, t = []) {
19341
19440
  this.config = {
19342
- ...i_,
19441
+ ...__,
19343
19442
  ...e
19344
- }, this.matches = [...a_, ...t];
19443
+ }, this.matches = [...v_, ...t];
19345
19444
  }
19346
19445
  apply(e, t, n = !1) {
19347
19446
  let r = this.config[e];
19348
19447
  if (!r) return n ? It(t) : t;
19349
19448
  let i = t;
19350
- i = s_(String(i ?? ""));
19449
+ i = b_(String(i ?? ""));
19351
19450
  let a = r.exclusions;
19352
19451
  if (Array.isArray(a) && a.length) {
19353
19452
  let e = String(i).toLowerCase();
@@ -19406,7 +19505,7 @@ var c_ = class {
19406
19505
  };
19407
19506
  //#endregion
19408
19507
  //#region src/libs/csv.ts
19409
- function l_(e, t) {
19508
+ function S_(e, t) {
19410
19509
  let n = Oe.parse(e, {
19411
19510
  header: !0,
19412
19511
  skipEmptyLines: !0,
@@ -19419,6 +19518,6 @@ function l_(e, t) {
19419
19518
  };
19420
19519
  }
19421
19520
  //#endregion
19422
- 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 };
19423
19522
 
19424
19523
  //# sourceMappingURL=index.mjs.map