vitral 0.5.0 → 0.7.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.
Files changed (48) hide show
  1. package/dist/angular.d.ts +2 -2
  2. package/dist/angular.js +4 -4
  3. package/dist/auto.js +4 -4
  4. package/dist/{chunk-C3QOBAUE.js → chunk-4NSPG6NK.js} +1 -1
  5. package/dist/{chunk-5JNV45BB.js → chunk-72H4FXMD.js} +22 -5
  6. package/dist/chunk-B2MPYF4M.js +27 -0
  7. package/dist/{chunk-KZBH5MPD.js → chunk-O7DV3EVB.js} +4 -4
  8. package/dist/chunk-OVVGVPIV.js +21 -0
  9. package/dist/{chunk-4Z77XNBR.js → chunk-TXSHK3SK.js} +2 -2
  10. package/dist/{chunk-K6EG7DMO.js → chunk-V24ZNHUF.js} +6 -5
  11. package/dist/edge.d.ts +9 -3
  12. package/dist/edge.js +25 -10
  13. package/dist/element.d.ts +2 -2
  14. package/dist/element.js +4 -4
  15. package/dist/embed.js +2 -2
  16. package/dist/{events-0rxFlWJJ.d.ts → events-DLdbFqBM.d.ts} +1 -1
  17. package/dist/{expose-IAKYHJXF.js → expose-ZLYQZUP2.js} +2 -2
  18. package/dist/federation.d.ts +1 -1
  19. package/dist/{hydrate-YVZDJ2V7.js → hydrate-NFZZMYWT.js} +18 -4
  20. package/dist/iframe.js +3 -3
  21. package/dist/index.d.ts +4 -4
  22. package/dist/index.js +2 -2
  23. package/dist/match-CMBM_jLW.d.ts +16 -0
  24. package/dist/preact.d.ts +4 -4
  25. package/dist/preact.js +3 -3
  26. package/dist/prefetch.js +1 -1
  27. package/dist/react-server.d.ts +20 -0
  28. package/dist/react-server.js +13 -0
  29. package/dist/react.d.ts +7 -4
  30. package/dist/react.js +18 -30
  31. package/dist/{reframe-LQL4DZYP.js → reframe-7K5S6JC6.js} +2 -2
  32. package/dist/routes.d.ts +4 -13
  33. package/dist/routes.js +26 -22
  34. package/dist/single-spa.d.ts +1 -1
  35. package/dist/{slot-D49L1rdU.d.ts → slot-Ddzp7AgL.d.ts} +1 -1
  36. package/dist/solid.d.ts +3 -3
  37. package/dist/solid.js +3 -3
  38. package/dist/stale-HFTCJASS.js +15 -0
  39. package/dist/svelte.d.ts +4 -4
  40. package/dist/svelte.js +3 -3
  41. package/dist/testing.d.ts +1 -1
  42. package/dist/testing.js +2 -2
  43. package/dist/{types-DUtcF3HO.d.ts → types-EOz1rOHs.d.ts} +8 -0
  44. package/dist/vite.d.ts +7 -0
  45. package/dist/vite.js +6 -4
  46. package/dist/vue.d.ts +2 -2
  47. package/dist/vue.js +3 -3
  48. package/package.json +22 -7
package/dist/angular.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { InjectionToken, Type, ApplicationConfig, Signal, Provider, EnvironmentProviders } from '@angular/core';
2
- import { R as RemoteContext, P as Props, a as RemoteModule, S as Shared, V as VitralConfig } from './types-DUtcF3HO.js';
3
- export { e as events } from './events-0rxFlWJJ.js';
2
+ import { R as RemoteContext, P as Props, a as RemoteModule, S as Shared, V as VitralConfig } from './types-EOz1rOHs.js';
3
+ export { e as events } from './events-DLdbFqBM.js';
4
4
  export { n as navigate } from './navigate-BRG1WJUM.js';
5
5
  import './errors-kjBv6IH_.js';
6
6
 
package/dist/angular.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  defineVitralElement
3
- } from "./chunk-K6EG7DMO.js";
4
- import "./chunk-4Z77XNBR.js";
3
+ } from "./chunk-V24ZNHUF.js";
4
+ import "./chunk-TXSHK3SK.js";
5
5
  import {
6
6
  defineRemote,
7
7
  events,
@@ -9,10 +9,10 @@ import {
9
9
  navigate,
10
10
  same,
11
11
  shared
12
- } from "./chunk-KZBH5MPD.js";
12
+ } from "./chunk-O7DV3EVB.js";
13
13
  import {
14
14
  configure
15
- } from "./chunk-5JNV45BB.js";
15
+ } from "./chunk-72H4FXMD.js";
16
16
  import "./chunk-KU6HF2EW.js";
17
17
  import "./chunk-TW7KYJQ6.js";
18
18
  import "./chunk-463H6B56.js";
package/dist/auto.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  defineVitralElement
3
- } from "./chunk-K6EG7DMO.js";
4
- import "./chunk-4Z77XNBR.js";
5
- import "./chunk-KZBH5MPD.js";
6
- import "./chunk-5JNV45BB.js";
3
+ } from "./chunk-V24ZNHUF.js";
4
+ import "./chunk-TXSHK3SK.js";
5
+ import "./chunk-O7DV3EVB.js";
6
+ import "./chunk-72H4FXMD.js";
7
7
  import "./chunk-KU6HF2EW.js";
8
8
  import "./chunk-TW7KYJQ6.js";
9
9
  import "./chunk-463H6B56.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  mountable
3
- } from "./chunk-5JNV45BB.js";
3
+ } from "./chunk-72H4FXMD.js";
4
4
  import {
5
5
  RemoteError
6
6
  } from "./chunk-463H6B56.js";
@@ -79,21 +79,32 @@ function loadRemote(name) {
79
79
  return load(name).then((r) => r.module);
80
80
  }
81
81
  function loadModule(name) {
82
- return import("./expose-IAKYHJXF.js").then((m) => m.resolveModule(name, (n) => loadFile(n))).catch(fail);
82
+ return import("./expose-ZLYQZUP2.js").then((m) => m.resolveModule(name, (n) => loadFile(n))).catch(fail);
83
83
  }
84
84
  function preload(name) {
85
85
  load(name).catch(() => {
86
86
  });
87
87
  }
88
88
  var paths;
89
+ function warm() {
90
+ if (paths) return;
91
+ paths = import("./sri-576GTDIA.js").catch(() => null);
92
+ import("./dedupe-S7BHQMOZ.js").catch(() => {
93
+ });
94
+ }
95
+ function warmSsr(holder) {
96
+ paths ??= import("./sri-576GTDIA.js").catch(() => null);
97
+ if (holder.querySelector("script[data-vitral-manifest]")?.textContent?.includes('"dedupe"')) import("./dedupe-S7BHQMOZ.js").catch(() => {
98
+ });
99
+ }
89
100
  function load(name, isolate, priority) {
90
101
  const file = (n) => loadFile(n, isolate, priority);
91
- return (protocol().entry(name) || !name.includes("/") ? file(name).then((r) => mountable(name, r)) : import("./expose-IAKYHJXF.js").then((m) => m.resolveTarget(name, file))).catch(fail);
102
+ return (protocol().entry(name) || !name.includes("/") ? file(name).then((r) => mountable(name, r)) : import("./expose-ZLYQZUP2.js").then((m) => m.resolveTarget(name, file))).catch(fail);
92
103
  }
93
104
  function loadFile(name, isolate, priority) {
94
105
  const p = protocol();
95
106
  return p.load(name, async () => {
96
- paths ??= import("./sri-576GTDIA.js").catch(() => null);
107
+ warm();
97
108
  let resolved;
98
109
  try {
99
110
  await p.pending();
@@ -117,7 +128,7 @@ function loadFile(name, isolate, priority) {
117
128
  function devOverride(name) {
118
129
  try {
119
130
  const k = "vitral:overrides";
120
- if (location.search.includes("vitral") || localStorage[k] || sessionStorage[k]) return import("./overrides-NP754HY7.js").then((m) => m.overrideFor(name));
131
+ if (/[?&]vitral=/.test(location.search) || localStorage[k] || sessionStorage[k]) return import("./overrides-NP754HY7.js").then((m) => m.overrideFor(name));
121
132
  } catch {
122
133
  }
123
134
  }
@@ -128,7 +139,7 @@ async function loadLocal(name, entry) {
128
139
  }
129
140
  async function resolveEntry(name, entry, priority) {
130
141
  checkOrigin(name, entry.url);
131
- const m = entry.manifest ?? (new URL(entry.url).pathname.endsWith(".json") ? await fetchJson(entry.url, protocol().settings().timeout, name, { cache: "no-cache", priority }) : { name, entry: entry.url });
142
+ const m = entry.manifest ?? (new URL(entry.url).pathname.endsWith(".json") ? await manifestOf(entry.url, name, priority) : { name, entry: entry.url });
132
143
  if (m?.stable) return resolveEntry(name, await (await import("./channel-2YPYGX3J.js")).pick(name, entry, m), priority);
133
144
  if (typeof m?.entry !== "string") throw new RemoteError("INVALID_MODULE", name, `manifesto inv\xE1lido em ${entry.url}`);
134
145
  if (m.contract && (entry.contract || protocol().settings().contract)) {
@@ -168,6 +179,11 @@ async function resolveEntry(name, entry, priority) {
168
179
  }
169
180
  return resolved;
170
181
  }
182
+ function manifestOf(url, name, priority) {
183
+ const { timeout, maxStale } = protocol().settings();
184
+ const fresh = fetchJson(url, timeout, name, { cache: "no-cache", priority });
185
+ return maxStale ? import("./stale-HFTCJASS.js").then((m) => m.stale(url, fresh, maxStale), () => fresh) : fresh;
186
+ }
171
187
  async function importModule(name, r) {
172
188
  const { timeout } = protocol().settings();
173
189
  const run = (url) => withTimeout(timeout, name, import(
@@ -196,6 +212,7 @@ export {
196
212
  loadRemote,
197
213
  loadModule,
198
214
  preload,
215
+ warmSsr,
199
216
  load,
200
217
  loadFile,
201
218
  resolveEntry,
@@ -0,0 +1,27 @@
1
+ // src/react-tree.tsx
2
+ import { Component as ReactComponent, createContext } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ var VitralContext = createContext(null);
5
+ var Boundary = class extends ReactComponent {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.state = { failed: false };
9
+ }
10
+ static getDerivedStateFromError() {
11
+ return { failed: true };
12
+ }
13
+ componentDidCatch(error) {
14
+ this.props.ctx?.reportError(error);
15
+ }
16
+ render() {
17
+ return this.state.failed ? null : this.props.children;
18
+ }
19
+ };
20
+ function RemoteTree({ Component, props, ctx }) {
21
+ return /* @__PURE__ */ jsx(VitralContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(Boundary, { ctx, children: /* @__PURE__ */ jsx(Component, { ...props }) }) });
22
+ }
23
+
24
+ export {
25
+ VitralContext,
26
+ RemoteTree
27
+ };
@@ -3,7 +3,7 @@ import {
3
3
  loadFile,
4
4
  registerSrc,
5
5
  resolveEntry
6
- } from "./chunk-5JNV45BB.js";
6
+ } from "./chunk-72H4FXMD.js";
7
7
  import {
8
8
  injectStyles
9
9
  } from "./chunk-KU6HF2EW.js";
@@ -119,7 +119,7 @@ var noop = () => {
119
119
  async function checkUpdates() {
120
120
  const p = protocol();
121
121
  const found = [];
122
- const { splitName } = await import("./expose-IAKYHJXF.js");
122
+ const { splitName } = await import("./expose-ZLYQZUP2.js");
123
123
  const remotes = /* @__PURE__ */ new Map();
124
124
  for (const name of live.keys()) {
125
125
  const root = splitName(name)[0];
@@ -164,8 +164,8 @@ async function mountOnce(target, name, props, options) {
164
164
  const p = protocol();
165
165
  await p.pending();
166
166
  const isolate = options.isolate ?? registered(name)?.isolate ?? p.settings().isolate;
167
- if (isolate === "iframe") return (frames ?? (await import("./reframe-LQL4DZYP.js")).noFrames)(target, name, props, options).catch(fail);
168
- const { module: mod, ...resolved } = await (isolate == "reframe" ? (await import("./reframe-LQL4DZYP.js")).load : load)(name, isolate, options.priority);
167
+ if (isolate === "iframe") return (frames ?? (await import("./reframe-7K5S6JC6.js")).noFrames)(target, name, props, options).catch(fail);
168
+ const { module: mod, ...resolved } = await (isolate == "reframe" ? (await import("./reframe-7K5S6JC6.js")).load : load)(name, isolate, options.priority);
169
169
  const untrack = track(name, resolved);
170
170
  ctxHooks.watch?.(name);
171
171
  const label = resolved.name ?? name;
@@ -0,0 +1,21 @@
1
+ // src/core/match.ts
2
+ var compiled = /* @__PURE__ */ new Map();
3
+ function compile(pattern) {
4
+ let re = compiled.get(pattern);
5
+ if (!re) {
6
+ const body = pattern.replace(/\/\*$|^\*$/, "\0").replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/:(\w+)/g, "(?<$1>[^/]+)").replace(/\/$/, "").replace("\0", "(?:/.*)?");
7
+ compiled.set(pattern, re = new RegExp(`^${body}/?$`));
8
+ }
9
+ return re;
10
+ }
11
+ function matchRoute(path, routes) {
12
+ for (const [pattern, name] of Object.entries(routes)) {
13
+ const m = compile(pattern).exec(path);
14
+ if (m) return { name, pattern, params: { ...m.groups } };
15
+ }
16
+ return null;
17
+ }
18
+
19
+ export {
20
+ matchRoute
21
+ };
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  createSlot
3
- } from "./chunk-KZBH5MPD.js";
3
+ } from "./chunk-O7DV3EVB.js";
4
4
  import {
5
5
  preload,
6
6
  registerSrc
7
- } from "./chunk-5JNV45BB.js";
7
+ } from "./chunk-72H4FXMD.js";
8
8
 
9
9
  // src/core/host-slot.ts
10
10
  var noop = () => {
@@ -1,16 +1,17 @@
1
1
  import {
2
2
  hostSlot,
3
3
  timings
4
- } from "./chunk-4Z77XNBR.js";
4
+ } from "./chunk-TXSHK3SK.js";
5
5
  import {
6
6
  defineRemote,
7
7
  memoSelect,
8
8
  same,
9
9
  shared
10
- } from "./chunk-KZBH5MPD.js";
10
+ } from "./chunk-O7DV3EVB.js";
11
11
  import {
12
- registerSrc
13
- } from "./chunk-5JNV45BB.js";
12
+ registerSrc,
13
+ warmSsr
14
+ } from "./chunk-72H4FXMD.js";
14
15
 
15
16
  // src/element.ts
16
17
  var Base = typeof HTMLElement === "undefined" ? class {
@@ -68,7 +69,7 @@ var VitralRemoteElement = class extends Base {
68
69
  }
69
70
  };
70
71
  const ssr = true ? this.querySelector(":scope>[data-vitral-ssr]") : null;
71
- if (ssr) import("./hydrate-YVZDJ2V7.js").then((m) => this.isConnected && !this.#slot && (this.#slot = m.hydrateSlot(this, ssr, { ...options, props: this.#props })));
72
+ if (ssr) warmSsr(ssr), import("./hydrate-NFZZMYWT.js").then((m) => this.isConnected && !this.#slot && (this.#slot = m.hydrateSlot(this, ssr, { ...options, props: this.#props })));
72
73
  else this.#slot = hostSlot(this, options);
73
74
  }
74
75
  /**
package/dist/edge.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { P as Props } from './types-DUtcF3HO.js';
1
+ import { R as Routes } from './match-CMBM_jLW.js';
2
+ import { P as Props } from './types-EOz1rOHs.js';
2
3
  import './errors-kjBv6IH_.js';
3
4
 
4
5
  /**
5
6
  * Rewriter de HTML em streaming, para runtimes sem `HTMLRewriter` (Node, Deno,
6
- * Bun). Faz só o que o gateway precisa: acha as tags de abertura de um
7
- * elemento (`<vitral-remote>`) e dos filhos diretos dele, deixa ler e trocar
7
+ * Bun). Faz só o que o gateway precisa: acha as tags de abertura de alguns
8
+ * elementos (`<vitral-remote>`, `<vitral-outlet>`) e dos filhos diretos deles, deixa ler e trocar
8
9
  * atributos e inserir HTML logo depois da tag. O resto passa como veio.
9
10
  *
10
11
  * Ignora comentários e o conteúdo de `<script>`, `<style>`, `<textarea>` e
@@ -76,6 +77,11 @@ interface GatewayOptions {
76
77
  isolate?: EdgeIsolation;
77
78
  /** Remotes que esta URL usa, para os hints da primeira visita. */
78
79
  preload?: (url: URL) => string[];
80
+ /**
81
+ * Rotas do `<vitral-outlet>` (o mesmo mapa de `routes()` no cliente). O
82
+ * remote da rota entra nos hints e, com `render`, sai renderizado no outlet.
83
+ */
84
+ routes?: Routes;
79
85
  /** `fetch` usado para falar com o host e os CDNs. Padrão: o global. */
80
86
  fetch?: (request: Request) => Promise<Response>;
81
87
  /** Por quanto tempo o gateway guarda manifestos e CSS, em ms. Padrão 60000. */
package/dist/edge.js CHANGED
@@ -1,3 +1,7 @@
1
+ import {
2
+ matchRoute
3
+ } from "./chunk-OVVGVPIV.js";
4
+
1
5
  // src/edge/rewriter.ts
2
6
  var RAW = /* @__PURE__ */ new Set(["script", "style", "textarea", "title"]);
3
7
  var VOID = /* @__PURE__ */ new Set(["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "source", "track", "wbr"]);
@@ -42,7 +46,9 @@ var Tag = class {
42
46
  return tag + this.#after;
43
47
  }
44
48
  };
45
- function rewrite(body, tag, handlers) {
49
+ function rewrite(body, tags, handlers) {
50
+ const wanted = new Set([tags].flat());
51
+ let tag = "";
46
52
  const decoder = new TextDecoder();
47
53
  const encoder = new TextEncoder();
48
54
  let buf = "";
@@ -109,7 +115,8 @@ function rewrite(body, tag, handlers) {
109
115
  }
110
116
  if (RAW.has(name)) raw = name;
111
117
  const selfClosing = source.endsWith("/>") || VOID.has(name);
112
- if (name === tag && depth < 0) {
118
+ if (depth < 0 && wanted.has(name)) {
119
+ tag = name;
113
120
  const el = new Tag(name, source);
114
121
  const r = handlers.element(el);
115
122
  if (r) flush(), await r;
@@ -203,7 +210,8 @@ function gateway(options) {
203
210
  const url = new URL(request.url);
204
211
  if (url.pathname.startsWith(prefix)) return [];
205
212
  const names = new Map(seen.get(url.pathname));
206
- for (const name of options.preload?.(url) ?? []) if (!names.has(name)) names.set(name, remotes.get(name)?.isolate ?? options.isolate ?? "none");
213
+ const route = options.routes && matchRoute(url.pathname, options.routes);
214
+ for (const name of [...route ? [route.name] : [], ...options.preload?.(url) ?? []]) if (!names.has(name)) names.set(name, remotes.get(name)?.isolate ?? options.isolate ?? "none");
207
215
  const links = await Promise.all([...names].map(([name, isolate]) => linksFor(name, isolate)));
208
216
  return links.flat();
209
217
  }
@@ -212,7 +220,8 @@ function gateway(options) {
212
220
  const m = r && await manifest(r).catch(() => null);
213
221
  if (!r || !m) return [];
214
222
  const { abs } = paths(r, m);
215
- const js = m.split ? [m.split.entry, ...m.split.chunks ?? []] : [m.entry];
223
+ const own = (m.dedupe ?? []).flatMap((d) => [...d.chunks ?? [], d.file]);
224
+ const js = m.split ? [.../* @__PURE__ */ new Set([m.split.entry, ...m.split.chunks ?? [], ...own])] : [m.entry];
216
225
  const hashed = !!m.integrity || Object.keys(m.files ?? {}).length > 0;
217
226
  const out = js.map((u) => `<${local(r, abs(u))}>; ${hashed ? "rel=preload; as=fetch; crossorigin=anonymous" : "rel=modulepreload"}`);
218
227
  for (const u of m.css ?? []) out.push(`<${local(r, abs(u))}>; rel=preload; as=${isolate === "shadow" ? "fetch" : "style"}; crossorigin=anonymous`);
@@ -245,9 +254,13 @@ function gateway(options) {
245
254
  let ssr = false;
246
255
  const element = async (el) => {
247
256
  ssr = false;
248
- const src = el.getAttribute("src");
257
+ const outlet = el.tagName === "vitral-outlet";
258
+ const src = outlet ? null : el.getAttribute("src");
249
259
  let r;
250
- if (src) {
260
+ if (outlet) {
261
+ const route = options.routes && matchRoute(url.pathname, options.routes);
262
+ r = route ? remotes.get(route.name) : void 0;
263
+ } else if (src) {
251
264
  const abs = new URL(decodeEntities(src), url).href;
252
265
  for (const x of remotes.values()) if (x.url === abs || abs === new URL(local(x, x.url), url).href) r = x;
253
266
  if (r && abs === r.url) el.setAttribute("src", local(r, r.url));
@@ -283,9 +296,11 @@ function gateway(options) {
283
296
  const name = escapeAttr(label);
284
297
  const scope = m.scope ? ` data-vitral-scope="${escapeAttr(m.scope)}"` : "";
285
298
  const root = `<div data-vitral-root="${name}"${scope} style="display:contents">${html}</div>`;
299
+ const json = JSON.stringify(relocate(m, (u) => /^https?:\/\//.test(u) ? local(r, u) : u)).replace(/</g, "\\u003c");
300
+ const seed = `<script type="application/json" data-vitral-manifest="${escapeAttr(local(r, r.url))}">${json}</script>`;
286
301
  const css = (m.css ?? []).map(abs);
287
302
  const link = (u) => `<link rel="stylesheet" href="${escapeAttr(local(r, u))}" crossorigin="anonymous"${sri[u] ? ` integrity="${escapeAttr(sri[u])}"` : ""}>`;
288
- if (isolate === "none") return `<div data-vitral-ssr data-vitral-slot="${name}">${css.map(link).join("")}${root}</div>`;
303
+ if (isolate === "none") return `<div data-vitral-ssr data-vitral-slot="${name}">${seed}${css.map(link).join("")}${root}</div>`;
289
304
  const s = m.shadow;
290
305
  const files = s && css[0] ? s.css.map((u) => new URL(u, css[0]).href) : css;
291
306
  const global = s && css[0] ? (s.global ?? []).map((u) => new URL(u, css[0]).href) : [];
@@ -296,7 +311,7 @@ function gateway(options) {
296
311
  })
297
312
  );
298
313
  const style = texts.length ? `<style data-vitral-ssr>${texts.join("\n").replace(/<\/style/gi, "<\\/style")}</style>` : "";
299
- return `<div data-vitral-ssr data-vitral-slot="${name}">${global.map(link).join("")}<template shadowrootmode="open">${style}${root}</template></div>`;
314
+ return `<div data-vitral-ssr data-vitral-slot="${name}">${seed}${global.map(link).join("")}<template shadowrootmode="open">${style}${root}</template></div>`;
300
315
  }
301
316
  const handler = (async (request) => {
302
317
  const url = new URL(request.url);
@@ -346,8 +361,8 @@ function clean(from) {
346
361
  var pass = (res) => new Response(res.body, { status: res.status, statusText: res.statusText, headers: clean(res.headers) });
347
362
  function transform(body, element, child) {
348
363
  if (typeof HTMLRewriter !== "undefined")
349
- return new HTMLRewriter().on("vitral-remote", { element }).on('vitral-remote > [slot="fallback"]', { element: child }).transform(new Response(body, { headers: { "content-type": "text/html" } })).body;
350
- return rewrite(body, "vitral-remote", { element, child });
364
+ return new HTMLRewriter().on("vitral-remote", { element }).on("vitral-outlet", { element }).on('vitral-remote > [slot="fallback"]', { element: child }).on('vitral-outlet > [slot="fallback"]', { element: child }).transform(new Response(body, { headers: { "content-type": "text/html" } })).body;
365
+ return rewrite(body, ["vitral-remote", "vitral-outlet"], { element, child });
351
366
  }
352
367
  async function matches(bytes, integrity) {
353
368
  for (const token of integrity.trim().split(/\s+/)) {
package/dist/element.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as Props, S as Shared, a as RemoteModule } from './types-DUtcF3HO.js';
2
- import { S as SlotStatus } from './slot-D49L1rdU.js';
1
+ import { P as Props, S as Shared, a as RemoteModule } from './types-EOz1rOHs.js';
2
+ import { S as SlotStatus } from './slot-Ddzp7AgL.js';
3
3
  import './errors-kjBv6IH_.js';
4
4
 
5
5
  /**
package/dist/element.js CHANGED
@@ -3,10 +3,10 @@ import {
3
3
  VitralRemoteElement,
4
4
  defineVitralElement,
5
5
  elementRemote
6
- } from "./chunk-K6EG7DMO.js";
7
- import "./chunk-4Z77XNBR.js";
8
- import "./chunk-KZBH5MPD.js";
9
- import "./chunk-5JNV45BB.js";
6
+ } from "./chunk-V24ZNHUF.js";
7
+ import "./chunk-TXSHK3SK.js";
8
+ import "./chunk-O7DV3EVB.js";
9
+ import "./chunk-72H4FXMD.js";
10
10
  import "./chunk-KU6HF2EW.js";
11
11
  import "./chunk-TW7KYJQ6.js";
12
12
  import "./chunk-463H6B56.js";
package/dist/embed.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";(()=>{var uo=Object.defineProperty;var h=(t,e)=>()=>(t&&(e=t(t=0)),e);var L=(t,e)=>{for(var o in e)uo(t,o,{get:e[o],enumerable:!0})};var O,W=h(()=>{"use strict";O={}});function Dt(){let t=new Map,e=new Map;return{emit(o,r){e.set(o,r);for(let n of[...t.get(o)??[]])try{n(r)}catch(s){console.error(`[vitral] handler de "${o}" falhou`,s)}},on(o,r){let n=t.get(o);return n||t.set(o,n=new Set),n.add(r),()=>n.delete(r)},last(o){return e.get(o)}}}var Ht=h(()=>{"use strict"});function po(){let t={timeout:15e3,retries:1,isolate:"none",allowedOrigins:null},e=new Map,o=new Map,r=Promise.resolve();return{protocol:Nt,events:Dt(),settings:()=>t,configure(n){Object.assign(t,n)},register(n,s){e.set(n,s),o.delete(n)},entry:n=>e.get(n),origins:()=>[...e.values()].filter(n=>n.url).map(n=>new URL(n.url).origin),pending(n){return n&&(r=Promise.all([r,n])),r.then(()=>{})},load(n,s){let a=o.get(n);if(!a){a=s();let i=a;i.catch(()=>o.get(n)===i&&o.delete(n)),o.set(n,a)}return a}}}function d(){let t=Ut[_t];return t&&typeof t.protocol=="number"&&t.protocol>=Nt?t:Ut[_t]=po()}var Nt,_t,Ut,R=h(()=>{"use strict";Ht();Nt=1,_t=Symbol.for("vitral"),Ut=globalThis});function M(t,e){if(b(t)&&!j.has(t)){j.add(t),t.cause instanceof Object&&j.add(t.cause),t.entry??=e?.entry??d().entry(t.remote)?.url,t.version??=e?.version;try{d().settings().onError?.(t)}catch{}O.watch?.(t.remote,t)}return t}var jt,f,b,$,j,z,w=h(()=>{"use strict";W();R();jt="https://joaogabriel15.github.io/vitral/erros/",f=class extends Error{constructor(o,r,n,s){super(`[vitral] ${r}: ${n} (${jt}${o})`);this.code=o;this.remote=r;this.cause=s;this.name="RemoteError",this.docs=`${jt}${o}`,typeof location<"u"&&(this.route=location.pathname)}},b=t=>t?.name==="RemoteError",$=new Map,j=new WeakSet;z=t=>{throw M(t)}});function B(){return typeof location<"u"?location.origin:null}function S(t,e){return new URL(t,e??(typeof location<"u"?location.href:void 0)).href}async function Bt(t,e){for(let o=0;;o++)try{return await e()}catch(r){if(!(b(r)&&(r.code==="LOAD_FAILED"||r.code==="TIMEOUT"))||o>=t)throw r;await new Promise(s=>setTimeout(s,200*2**o))}}function V(t,e,o){return new Promise((r,n)=>{let s=setTimeout(()=>n(new f("TIMEOUT",e,`n\xE3o respondeu em ${t}ms`)),t);o.then(r,n).finally(()=>clearTimeout(s))})}function q(t,e,o,r){let n=new AbortController,s=fetch(t,{signal:n.signal,credentials:"omit",...r}).then(a=>{if(!a.ok)throw new f("LOAD_FAILED",o,`HTTP ${a.status} em ${t}`);return a.arrayBuffer()},a=>{throw new f("LOAD_FAILED",o,`falha ao baixar ${t}`,a)});return V(e,o,s).catch(a=>{throw n.abort(),a})}async function X(t,e,o,r){let n=new TextDecoder().decode(await q(t,e,o,r));try{return JSON.parse(n)}catch(s){throw new f("INVALID_MODULE",o,`JSON inv\xE1lido em ${t}`,s)}}function C(t,e,o={},r=document.head){return r.appendChild(Object.assign(document.createElement("link"),{rel:t,crossOrigin:"anonymous",href:e},o))}function D(t,e,o){try{let r=`vitral:${t}:${e}`;performance.clearMeasures(r),performance.measure(r,{start:o}),d().settings().onMetric?.({name:t,stage:e,start:o,duration:performance.now()-o})}catch{}}var k=h(()=>{"use strict";w();R()});var Kt={};L(Kt,{capture:()=>mo,owner:()=>Ft});function mo(){Vt||typeof addEventListener>"u"||(Vt=!0,addEventListener("error",t=>qt(t.error,t.filename)),addEventListener("unhandledrejection",t=>qt(t.reason)))}function Ft(t,e){let o=e||String(t?.stack??"").match(/(?:https?|file):\/\/[^\s)'"]+/)?.[0];if(!o)return;let r=[...document.querySelectorAll("script[src],link[rel=modulepreload]")].map(a=>a.src||a.href),n,s=0;for(let[a,{entry:i}]of $){let l=new URL(".",i).href;l.length>s&&o.startsWith(l)&&!r.some(u=>u.startsWith(l))&&(n=a,s=l.length)}return n}function qt(t,e){if(!d().settings().captureGlobalErrors||b(t)||t instanceof Object&&j.has(t))return;let o=Ft(t,e);o&&M(new f("RENDER_FAILED",o,String(t?.message??t),t),$.get(o))}var Vt,Gt=h(()=>{"use strict";w();R();Vt=!1});function ct(t,e){if(e==="*")return!0;let[,o="",r=""]=/^(\^|~|>=|=)?(.*)$/.exec(e.trim());if(!o||o==="="||t.includes("-"))return t===r;let[n,s]=[t,r].map(i=>(i+".0.0").split(".",3).map(Number));for(let i=0;i<3;i++)if(n[i]!==s[i]){if(!(n[i]>s[i]))return!1;break}if(o===">=")return!0;let a=Math.min(r.split(".").length,o==="~"?2:s[0]?1:s[1]?2:3);return n.slice(0,a).join(".")===s.slice(0,a).join(".")}var Jt=h(()=>{"use strict"});var Z={};L(Z,{offer:()=>ho,satisfies:()=>ct,shared:()=>Wt});function Wt(t){if(!t.dedupe){let e=new Map,o=new Map,r=(s,a)=>s.includes(a)&&s.splice(s.indexOf(a),1),n=(s,a,i)=>(i.p||((i.p=i.load()).catch(()=>r(a,i)),i.url&&i.p.then(()=>go(`${s}@${i.version}`,i.url),()=>{})),i.p);t.dedupe=(s,a,i)=>{let l=i,u=e.get(s)??[];e.set(s,u),l?.url&&o.get(s+l.url)?.(l);let p=u.find(c=>ct(c.version,a));if(!p&&l){p=u[u.push(l)-1];let c=l.url&&fo(`${s}@${l.version}`);c&&c!==l.url&&(l.p=new Promise(g=>{o.set(s+c,g),setTimeout(g,300,l)}).then(g=>(o.delete(s+c),g===l&&(l.p=void 0),n(s,u,g))),l.p.catch(()=>r(u,l)))}return p&&n(s,u,p)}}return t.dedupe}function ho(t,e){for(let o in e){let{version:r,modules:n}=e[o];Wt(t)(o,r,{version:r,load:async()=>n}),t.configure({offered:{...t.settings().offered,[o]:r}})}}var Yt,fo,go,Q=h(()=>{"use strict";Jt();Yt="vitral:dedupe:",fo=t=>{try{return localStorage.getItem(Yt+t)}catch{return null}},go=(t,e)=>{try{localStorage.setItem(Yt+t,e)}catch{}}});function ut(t){let e=d(),{remotes:o,dedupe:r,...n}=t;if(e.configure(n),n.captureGlobalErrors&&Promise.resolve().then(()=>(Gt(),Kt)).then(s=>s.capture()),r&&e.pending(Promise.resolve().then(()=>(Q(),Z)).then(s=>s.offer(e,r)).catch(()=>{})),typeof o=="string"){let s=S(o);e.pending(X(s,e.settings().timeout,"remotes",{cache:"no-cache"}).then(a=>zt(a,s))).catch(()=>{})}else o&&zt(o)}function Xt(t,e){let o=typeof e=="string"?{url:e}:e;if(!o.url&&!o.module)throw new f("NOT_REGISTERED",t,"informe url ou module");if(!o.url)return d().register(t,o);let r=S(o.url);d().register(t,{...o,url:r});let{origin:n}=new URL(r);typeof document<"u"&&n!==B()&&n!=="null"&&!document.querySelector(`link[href="${n}"]`)&&C("preconnect",n)}function A(t,e,o=!0){let r=d(),n=S(t),s=e||n;r.entry(s)?.url!==n&&r.register(s,{url:n});let a=new URL(n).origin,i=r.settings().trusted??[];return o&&!i.includes(a)&&r.configure({trusted:[...i,a]}),s}function zt(t,e){for(let[o,r]of Object.entries(t)){let n=typeof r=="string"?{url:r}:r;Xt(o,n.url?{...n,url:S(n.url,e)}:n)}}function tt(t,e){let o=d(),r=new URL(e).origin,{allowedOrigins:n,trusted:s=[]}=o.settings(),a=[...n??[B(),...o.origins()].filter(Boolean),...s];if(!(a.includes("*")||a.includes(r)||e.startsWith("blob:")))throw new f("ORIGIN_BLOCKED",t,`origem ${r} n\xE3o est\xE1 em allowedOrigins`)}var H=h(()=>{"use strict";w();R();k()});var gt={};L(gt,{attachShadowRoot:()=>wo,prefetch:()=>Ro,registryFor:()=>ft});function oe({css:t,shadow:e}){let o=n=>new URL(n,t[0]).href,r=e?e.css.map(o):[];return[e?[...(e.imports??[]).map(o),...r,...t.slice(r.length)]:t,r,(e?.global??[]).map(o)]}function Ro(t,e){let[o,,r]=oe(t);for(let n of o)yt(n,t.sri?.[n],e).catch(yo);F(r,null,t.sri)}async function wo(t,e,o,r={},n={}){let s=e().getAttribute("data-vitral-root"),a=ft(s),i=t.shadowRoot;if(!i&&!Qt(a))try{i=t.attachShadow({mode:"open",customElementRegistry:a})}catch{mt=!0,pt.delete(s),a=ft(s)}i??=t.attachShadow({mode:"open"});let l=i.customElementRegistry??a,u=e();if(!Qt(l))try{u=e({customElementRegistry:l})}catch{}return u.isConnected||i.appendChild(u),[...await So(i,u,o,r,n),i,l,u]}function ft(t){let e=pt.get(t);if(e)return e;let o=customElements;if(!mt&&"initialize"in CustomElementRegistry.prototype)try{o=new CustomElementRegistry}catch{mt=!0}let r=o===customElements,n=e=r?Object.create(o):o;if(r)for(let a of["get","getName","upgrade","whenDefined"])a in o&&(n[a]=o[a].bind(o));let s=o.define;return n.define=(a,i,l)=>{let u=o.get(a),p=te.get(a);if(!u)return r&&te.set(a,t),s.call(o,a,i,l);r&&u!==i&&p!==t&&bo()&&console.warn(`[vitral] ${t}: <${a}> j\xE1 foi definido por ${p??"outro c\xF3digo"}; fica essa defini\xE7\xE3o. Sem Scoped Custom Element Registries, os remotes dividem o registro global.`)},pt.set(t,e),e}function bo(){try{return process.env.NODE_ENV!=="production"}catch{return!1}}async function So(t,e,o,r={},n={}){let s=o.sri??{},[a,i,l]=oe(o),u=e.cloneNode();u.setAttribute("data-vitral-portal",""),e.after(u);let p=[...r.inherit??[],...n.inherit??[]].map(m=>new URL(m,document.baseURI).href).concat(a),c=F(l,null,s);if(typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype){let m=await Promise.all(p.map(y=>re(y,[],s[y],i.includes(y)?!!o.shadow.rebase:void 0)));t.adoptedStyleSheets=[...new Set([...t.adoptedStyleSheets,...m.flat()])]}else await F(p,t,s);await c;let g=(n.mirrorTheme??r.mirrorTheme)===!1?[]:[ee(e),ee(u)];return[()=>(g.forEach(m=>m()),u.remove()),u]}function re(t,e,o,r){let n=dt.get(t);return n||(n=yt(t,o).then(s=>{let a=new CSSStyleSheet;if(r!==!1&&(s=s.replace(vo,(c,g,m)=>`url(${g}${new URL(m,t).href}${g})`)),r!=null)return a.replaceSync(s),[a];let i=[],l=[],u=s.replace(Eo,(c,g,m,y,x)=>{let v=y??x;return v?l.push(new URL(v,t).href):Zt.has(g??c)||(Zt.add(g??c),i.push(c)),""});if(i.length){let c=document.createElement("style");c.setAttribute("data-vitral-properties",""),c.textContent=i.join(`
2
- `),document.head.appendChild(c)}a.replaceSync(u);let p=[...e,t];return Promise.all(l.filter(c=>!p.includes(c)).map(c=>re(c,p))).then(c=>[...c.flat(),a])}).catch(()=>(dt.delete(t),[])),dt.set(t,n)),n}function ee(t){let e=document.documentElement,o=[],r=()=>{t.classList.remove(...o),o=[...e.classList].filter(a=>!t.classList.contains(a)),t.classList.add(...o);let s=e.getAttribute("data-theme");s===null?t.removeAttribute("data-theme"):t.setAttribute("data-theme",s)};r();let n=new MutationObserver(r);return n.observe(e,{attributeFilter:["class","data-theme"]}),()=>n.disconnect()}var dt,yo,Zt,vo,Eo,pt,mt,Qt,te,ht=h(()=>{"use strict";et();dt=new Map,yo=()=>{},Zt=new Set,vo=/url\(\s*(['"]?)(?![a-z]+:|\/\/|#)([^'")]+)\1\s*\)/gi,Eo=/@property\s+(--[\w-]+)\s*\{[^}]*\}|@font-face\s*\{[^}]*\}|@import\s+(?:url\(\s*)?(?:(['"])(.*?)\2|([^'"\s);]+))\s*\)?[^;]*;/gi;pt=new Map,mt=!1,Qt=t=>Object.getPrototypeOf(t)===customElements,te=new Map});function yt(t,e,o){let r=`${t} ${e??""}`,n=vt.get(r);return n||(n=q(t,d().settings().timeout,t,{integrity:e,priority:o}).then(s=>new TextDecoder().decode(s)),n.catch(()=>vt.delete(r)),vt.set(r,n)),n}function ie(t,e,o="auto"){if(e&&Po())Promise.resolve().then(()=>(ht(),gt)).then(r=>r.prefetch(t,o),se);else for(let r of t.css)document.querySelector(`link[href="${r}"]`)||C("preload",r,{as:"style",integrity:t.sri?.[r]??"",fetchPriority:o})}function ae(t,e,o,r){return e?Promise.resolve().then(()=>(ht(),gt)).then(n=>n.attachShadowRoot(e,o,t,d().settings().styles,r)):F(t.css,null,t.sri).then(()=>[se])}function F(t,e,o={}){let r=e??document,n=ne.get(r);n||ne.set(r,n=new Map);let s=e??document.head,a=d().settings().timeout;return Promise.all(t.map(i=>{let l=n.get(i);return l||(l=new Promise(u=>{let p=C("stylesheet",i,{integrity:o[i]??""},s);setTimeout(u,a),p.onload=()=>u(),p.onerror=()=>{p.remove(),n.delete(i),u()}}),n.set(i,l)),l}))}var ne,vt,se,Po,et=h(()=>{"use strict";R();k();ne=new WeakMap,vt=new Map,se=()=>{},Po=()=>typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype});var ue={};L(ue,{resolveModule:()=>Lo,resolveTarget:()=>xo,splitName:()=>le});function le(t){let e=d(),o=t.length;if(!e.entry(t))for(;(o=t.lastIndexOf("/",o-1))>0&&!e.entry(t.slice(0,o)););return o>0&&o<t.length?[t.slice(0,o),"."+t.slice(o)]:[t,null]}function xo(t,e){return ce(t,e).then(o=>Et(t,o))}function ce(t,e){let o=d();return o.entry(t)||!t.includes("/")?e(t):o.pending().then(async()=>{let[r,n]=le(t);if(!n)return e(t);let s=await e(r),a=s.exports?.exposes;if(!a?.[n])throw new f("NOT_EXPOSED",t,`${r} n\xE3o exp\xF5e ${n}. Expostos: ${Object.keys(a??{}).join(", ")}`);try{let i=a[n],l=await(typeof i=="function"?i():i);return{...s,module:l?.default??l,exports:l}}catch(i){throw new f("LOAD_FAILED",t,String(i),i)}})}async function Lo(t,e){let o=await ce(t,e);if(!o.exports)throw new f("INVALID_MODULE",t,"o remote foi carregado por uma c\xF3pia antiga da lib, que n\xE3o guarda os exports");return o.exports}var de=h(()=>{"use strict";w();ot();R()});async function me(t,e,o){let r=o.split(/\s+/).map(i=>/^sha(256|384|512)-([\w+/=-]+)/.exec(i)).filter(i=>!!i);if(!r.length)throw new f("INTEGRITY",t,`formato de integrity inv\xE1lido: ${o}`);let n=Math.max(...r.map(i=>+i[1])),s=btoa(String.fromCharCode(...new Uint8Array(await crypto.subtle.digest("SHA-"+n,e)))),a=r.filter(i=>+i[1]===n).map(i=>i[2]);if(!a.some(i=>pe(i)===pe(s)))throw new f("INTEGRITY",t,`o hash n\xE3o confere: esperado sha${n}-${a.join(" ou ")}, obtido sha${n}-${s}`)}var pe,fe=h(()=>{"use strict";w();pe=t=>t.replace(/-/g,"+").replace(/_/g,"/").replace(/=/g,"")});var Pe={};L(Pe,{importVerified:()=>Oo,verified:()=>be});async function Oo(t,e,o,r){let{entry:n,integrity:s,priority:a}=e;if(!Rt.has(n))try{let p=await V(r,t,(async()=>{let c=await be(e.split??{entry:n,chunks:[],sri:{[n]:s},priority:a},o);return c&&{ns:await o(c)}})());if(p)return p.ns}catch(u){if(Rt.add(n),u instanceof f&&u.code==="TIMEOUT")throw u}let i=await q(n,r,t,Rt.has(n)?{priority:a,cache:"reload"}:{priority:a});await me(t,i,s);let l=URL.createObjectURL(new Blob([i],{type:"text/javascript"}));try{return await o(l)}finally{URL.revokeObjectURL(l)}}async function To(t){if(wt)return await wt&&Re(t,!1);let e=!1;try{e=localStorage[ve]===navigator.userAgent}catch{}let o=await(wt=Re(t,!e));if(o&&!e)try{localStorage[ve]=navigator.userAgent}catch{}return o}async function be(t,e){let{entry:o,chunks:r,sri:n,priority:s="auto",dedupe:a=[]}=t,i=a.flatMap(p=>[...p.chunks??[],p.file]);if(![o,...r,...i].every(p=>Mo.test(n[p]??"")))return;let l=globalThis[Symbol.for("vitral")],u=async p=>{if(!e||!a.length)return;let{shared:c}=await Promise.resolve().then(()=>(Q(),Z));for(let g of a)c(l)(g.name,g.range,{version:g.version,url:g.file,load:async()=>(p&&await Promise.all([...g.chunks??[],g.file].map(m=>bt(m,n[m],s))),(await e(g.file)).default)})};if(he!==!1&&(he=await To(n))){await u();for(let p of r)fetch(p,{priority:s}).catch(()=>{});return o}if(await(ko??=Co()))return l.sri={...l.sri,...n},await u(!0),await Promise.all([...r,o].map(p=>bt(p,n[p],s))),o}async function Re(t,e){if(!HTMLScriptElement.supports?.("importmap"))return!1;let o={};for(let s in t)!/\.css([?#]|$)/.test(s)&&!ye.has(s)&&(ye.add(s),o[s]=t[s]);let r=e?["export{}","export{}//"].map(s=>URL.createObjectURL(new Blob([s],{type:"text/javascript"}))):[];for(let s of r)o[s]=we;let n=!0;try{let s=document.createElement("script");s.type="importmap",s.nonce=document.querySelector("script[nonce]")?.nonce??"",s.onerror=()=>n=!1,s.addEventListener("securitypolicyviolation",()=>n=!1),s.textContent=JSON.stringify({integrity:o}),document.head.append(s),await Ee(),await Ee(),n&&e&&(n=await Se(a=>import(a),r[0],r[1]))}catch{n=!1}for(let s of r)URL.revokeObjectURL(s);return n}function bt(t,e,o="auto"){return new Promise((r,n)=>{let s=C("modulepreload",t,{integrity:e,fetchPriority:o});s.onload=r,s.onerror=n})}function Co(){return document.createElement("link").relList.supports("modulepreload")?Se(t=>bt(t,we),ge,ge+"//"):Promise.resolve(!1)}function Se(t,e,o){return Promise.race([Promise.all([t(e).then(()=>!0,()=>!1),t(o).then(()=>!1,()=>!0)]).then(([r,n])=>r&&n),new Promise(r=>setTimeout(r,3e3,!1))])}var Rt,Mo,ge,we,he,ye,wt,ko,ve,Ee,xe=h(()=>{"use strict";fe();w();k();Rt=new Set;Mo=/^(sha(256|384|512)-[A-Za-z0-9+/]+={0,2}( +|$))+$/,ge="data:text/javascript,export{}",we="sha256-d3bjIZdvLjBurwdLwkSVOnEBPFFly+T1SR9r3VVHBGg=",ye=new Set,ve="vitral:sri-map";Ee=()=>new Promise(t=>{let e=new MessageChannel;e.port1.onmessage=()=>t(),e.port2.postMessage(0)})});var Ce={};L(Ce,{OVERRIDES_KEY:()=>rt,activeOverrides:()=>Te,clearOverrides:()=>Me,dropOverride:()=>$o,isRef:()=>St,manifestUrl:()=>nt,overrideFor:()=>Do,overridesEnabled:()=>Oe,resolveOverride:()=>ke,storeOverride:()=>Ao,storedOverrides:()=>xt});function Oe(){return!!d().settings().devOverrides||typeof location<"u"&&/^(localhost|127\.0\.0\.1|\[::1\])$/.test(location.hostname)}function Ao(t,e){let o=xt();e?o[t]=St(e)?e:nt(e):delete o[t],K(it,o)}function Io(){let t=Pt(st),e=new URLSearchParams(location.search).getAll("vitral").join(",").split(",");if(!e.some(Boolean))return t;for(let o of e){let r=o.indexOf("@");o==="off"?(Me(),Object.keys(t).forEach(n=>delete t[n])):r>0&&o.slice(r+1)==="off"?delete t[o.slice(0,r)]:r>0&&(t[o.slice(0,r)]=o.slice(r+1))}return K(st,t),t}function Me(){K(st,{}),K(it,{})}function $o(t){for(let e of[st,it]){let o=Pt(e);delete o[t],K(e,o)}}function ke(t,e){if(!St(e))return new URL(nt(e),location.href).href;let o=d().settings().devOverrides,r=typeof o=="object"?o.preview:void 0;if(!r)return;let n=r.replace(/\{name\}/g,encodeURIComponent(t)).replace(/\{ref\}/g,encodeURIComponent(e));return new URL(nt(n),location.href).href}function Te(){let t=Io(),e={};for(let[o,r]of[["navegador",xt()],["aba",t]])for(let[n,s]of Object.entries(r))e[n]={name:n,value:s,url:ke(n,s),source:o};return Object.values(e)}function Do(t){if(!Oe())return;let e=Te().find(a=>a.name===t);if(!e)return;let o=!Le.has(t)&&Le.add(t);if(!e.url){o&&console.warn(`[vitral] override ${t}@${e.value} ignorado: falta configure({ devOverrides: { preview } })`);return}let r=d(),n=r.settings().trusted??[],s=new URL(e.url).origin;return n.includes(s)||r.configure({trusted:[...n,s]}),o&&console.warn(`[vitral] override ativo: ${t} \u2192 ${e.url} (${e.source}). Para limpar: ?vitral=off`),{url:e.url}}var rt,nt,St,Pt,K,it,st,xt,Le,Ae=h(()=>{"use strict";R();rt="vitral:overrides";nt=t=>/\.(json|m?js)(\?|$)/.test(t)?t:t.replace(/\/?$/,"/vitral.json"),St=t=>/^[\w.-]+$/.test(t),Pt=t=>{try{return JSON.parse(t().getItem(rt)??"{}")??{}}catch{return{}}},K=(t,e)=>{try{Object.keys(e).length?t().setItem(rt,JSON.stringify(e)):t().removeItem(rt)}catch{}},it=()=>localStorage,st=()=>sessionStorage,xt=()=>Pt(it);Le=new Set});var Ue={};L(Ue,{bucket:()=>He,pick:()=>Ho,resetChannels:()=>jo,versionUrl:()=>De});async function Ho(t,e,o){if(typeof o.stable!="string")throw new f("INVALID_MODULE",t,`canal inv\xE1lido em ${e.url}: falta "stable"`);O.watch=Uo;let r={name:t,bucket:He(t)},{canary:n,stable:s}=o,a=await e.resolve?.(o,r)??(n&&r.bucket<n.percent?n.version:s);return a!==s&&_e()[t]===a&&(a=s),a===s||e.rollback===!1?U.delete(t):U.get(t)?.from!==a&&U.set(t,{from:a,to:s,errors:0,mounts:0,max:{errors:3,mounts:20,...e.rollback}}),{...e,url:De(a,e.url),integrity:void 0,manifest:void 0}}function He(t){let e=d().settings().canaryKey??_o(),o=2166136261;for(let r of`${e}:${t}`)o=Math.imul(o^r.charCodeAt(0),16777619);return(o>>>0)%100}function _o(){try{_??=localStorage.getItem(Ie)??void 0}catch{}if(!_){_=Math.random().toString(36).slice(2);try{localStorage.setItem(Ie,_)}catch{}}return _}function _e(){try{return{...JSON.parse(sessionStorage.getItem($e)||"{}"),...G}}catch{return G}}function Uo(t,e){for(let[o,r]of U)t!==o&&!t.startsWith(o+"/")||(e?++r.errors>=r.max.errors&&No(o,r):++r.mounts>r.max.mounts&&(r.mounts=1,r.errors=0))}function No(t,e){U.delete(t),G={..._e(),[t]:e.from};try{sessionStorage.setItem($e,JSON.stringify(G))}catch{}console.warn(`[vitral] ${t}: ${e.errors} erros em ${e.mounts} montagens da vers\xE3o ${e.from}; voltando para ${e.to}`);try{d().settings().onRollback?.({name:t,from:e.from,to:e.to,errors:e.errors,mounts:e.mounts})}catch{}let o=d();o.register(t,o.entry(t)),o.events.emit("vitral:refresh",t)}function jo(){U.clear(),G={},_=void 0}var $e,Ie,U,G,_,De,Ne=h(()=>{"use strict";w();W();R();k();$e="vitral:rollback",Ie="vitral:id",U=new Map,G={};De=(t,e)=>S(/[/:]|\.(m?js|json)$/.test(t)?t:`${t}/vitral.json`,e)});var je={};L(je,{checkContract:()=>Bo});async function Bo(t,e=d().settings().contract){let{satisfies:o}=await Promise.resolve().then(()=>(Q(),Z));if(t.version&&!o(t.version,e))return`o host aceita contrato ${e}, o remote publica ${t.version}`;let r=d().settings().offered??{};for(let n in t.peers){let s=r[n];if(s&&!o(s,t.peers[n]))return`o remote espera ${n} ${t.peers[n]}, o host oferece ${s}`}}var Be=h(()=>{"use strict";R()});function Ve(t){Ot(t).catch(()=>{})}function Ot(t,e,o){let r=n=>Vo(n,e,o);return(d().entry(t)||!t.includes("/")?r(t).then(n=>Et(t,n)):Promise.resolve().then(()=>(de(),ue)).then(n=>n.resolveTarget(t,r))).catch(z)}function Vo(t,e,o){let r=d();return r.load(t,async()=>{qe??=Promise.resolve().then(()=>(xe(),Pe)).catch(()=>null);let n;try{await r.pending();let s=await Fe(t),a=s?{isolate:r.entry(t)?.isolate,...s}:r.entry(t);if(!a)throw new f("NOT_REGISTERED",t,"remote n\xE3o registrado. Use configure({ remotes }).");if(a.module)return await qo(t,a);let i=performance.now();n=await Lt(t,a,o),D(t,"manifest",i),ie(n,(e??n.isolate??r.settings().isolate)==="shadow",o),i=performance.now();let l=await Bt(r.settings().retries,()=>Fo(t,n));return D(t,"js",i),{...n,module:l?.default??l,exports:l}}catch(s){throw M(b(s)?s:new f("LOAD_FAILED",t,String(s?.message??s),s),n)}})}function Fe(t){try{let e="vitral:overrides";if(location.search.includes("vitral")||localStorage[e]||sessionStorage[e])return Promise.resolve().then(()=>(Ae(),Ce)).then(o=>o.overrideFor(t))}catch{}}async function qo(t,e){let o=e.module;return typeof o=="function"&&(o=await o()),{module:o?.default??o,exports:o,entry:typeof location<"u"?location.href:"http://localhost/",css:e.css??[],isolate:e.isolate}}async function Lt(t,e,o){tt(t,e.url);let r=e.manifest??(new URL(e.url).pathname.endsWith(".json")?await X(e.url,d().settings().timeout,t,{cache:"no-cache",priority:o}):{name:t,entry:e.url});if(r?.stable)return Lt(t,await(await Promise.resolve().then(()=>(Ne(),Ue))).pick(t,e,r),o);if(typeof r?.entry!="string")throw new f("INVALID_MODULE",t,`manifesto inv\xE1lido em ${e.url}`);if(r.contract&&(e.contract||d().settings().contract)){let i=await(await Promise.resolve().then(()=>(Be(),je))).checkContract(r.contract,e.contract);if(i)throw new f("CONTRACT_MISMATCH",t,i)}let n=i=>S(i,e.url),s={};for(let i in r.files??{})s[n(i)]=r.files[i];let a={entry:n(r.entry),css:[...r.css??[],...e.css??[]].map(n),shadow:r.shadow,integrity:e.integrity??r.integrity,isolate:e.isolate,scope:r.scope,version:r.version,sri:s,priority:o,split:r.split&&!e.integrity?{entry:n(r.split.entry),chunks:(r.split.chunks??[]).map(n),sri:s,priority:o,dedupe:r.dedupe?.map(i=>({...i,file:n(i.file),chunks:i.chunks?.map(n)}))}:void 0};tt(t,a.entry);for(let i of[a.split?.entry,...(a.split?.dedupe??[]).map(l=>l.file)])i&&tt(t,i);if(t===e.url&&r.name){let i=await Fe(r.name);if(i)return{...await Lt(t,i),name:r.name};a.name=r.name,d().entry(r.name)||d().register(r.name,e)}return a}async function Fo(t,e){let{timeout:o}=d().settings(),r=s=>V(o,t,import(s)).catch(a=>{throw b(a)?a:new f("LOAD_FAILED",t,`falha ao importar ${e.entry}`,a)});if(!e.integrity)return r(e.entry);let n=await qe;if(!n)throw new f("LOAD_FAILED",t,"n\xE3o foi poss\xEDvel carregar o verificador de integrity");return n.importVerified(t,e,r,o)}function Et(t,e){if(typeof e.module?.mount!="function")throw new f("INVALID_MODULE",t,"o m\xF3dulo n\xE3o exporta mount(). Use defineRemote(), ou loadModule() para m\xF3dulo sem UI.");return e}var qe,ot=h(()=>{"use strict";et();w();H();R();k()});var Mt={};L(Mt,{load:()=>Ze,noFrames:()=>Ko});function Ze(t){throw new f("MOUNT_FAILED",t,"isolate sem suporte no embed.js")}var Ko,kt=h(()=>{"use strict";w();Ko=(t,e)=>Ze(e)});H();et();w();R();var I={emit:(t,e)=>d().events.emit(t,e),on:(t,e)=>d().events.on(t,e),last:t=>d().events.last(t)};function Ke(){let t=new Set,e=o=>{let r=()=>(t.delete(r),o());return t.add(r),r};return{bus:{emit:(o,r)=>I.emit(o,r),last:o=>I.last(o),on:(o,r)=>e(I.on(o,r))},track:e,dispose(){for(let o of[...t])o()}}}W();ot();function Ge(t,e={}){let o=new URL(t,location.href);if(o.origin!==location.origin){location.assign(o.href);return}e.replace?history.replaceState(history.state,"",o.href):history.pushState(history.state,"",o.href),dispatchEvent(new PopStateEvent("popstate",{state:history.state})),I.emit("vitral:navigate",o.pathname+o.search+o.hash)}R();w();var Je=new Map,J=new Map;function ze(t,e){return Je.set(t,e.entry),$.set(t,e),J.set(t,(J.get(t)??0)+1),()=>{let o=J.get(t)-1;o?J.set(t,o):(J.delete(t),Je.delete(t),$.delete(t))}}var Ye=null;function Xe(t,e,o,r){let n=0,s=I.on("vitral:refresh",a=>{if(a!==e&&!e.startsWith(a+"/"))return;let i=++n,l=o,u=r(l).then(p=>{if(t.unmount===We||i!==n)return p.unmount();let c=t;t=p,c.unmount(),o!==l&&p.update?.(o)});Ye?Ye.push(u):u.catch(console.error)});return{update(a){o=a,t.update?.(a)},unmount(){s(),t.unmount(),t={unmount:We}}}}var We=()=>{};k();async function to(t,e,o,r={}){return Xe(await Qe(t,e,o,r),e,o,n=>Qe(t,e,n,r))}var Go;async function Qe(t,e,o,r){let n=d();await n.pending();let s=r.isolate??Jo(e)?.isolate??n.settings().isolate;if(s==="iframe")return(Go??(await Promise.resolve().then(()=>(kt(),Mt))).noFrames)(t,e,o,r).catch(z);let{module:a,...i}=await(s=="reframe"?(await Promise.resolve().then(()=>(kt(),Mt))).load:Ot)(e,s,r.priority),l=ze(e,i);O.watch?.(e);let u=i.name??e,p=E=>{let P=document.createElement("div",E);return P.setAttribute("data-vitral-root",u),i.scope&&P.setAttribute("data-vitral-scope",i.scope),P.style.display="contents",P},c=performance.now(),[g,m=document.body,y=null,x=customElements,v=t.appendChild(p())]=await ae(i,s>"q"&&t,p,r.styles);D(e,"css",c),c=performance.now();let Y=Ke(),It=E=>P=>(v.addEventListener(E,P),()=>v.removeEventListener(E,P)),$t={name:u,baseUrl:new URL(".",i.entry).href,events:Y.bus,shadowRoot:y,portalContainer:m,customElements:x,reportError(E){let P=M(b(E)?E:new f("RENDER_FAILED",u,String(E?.message??E),E),i);r.onError?r.onError(P):console.error(P)},navigate:Ge,protocol:n.protocol,onActivate:It("vitral:activate"),onDeactivate:It("vitral:deactivate")};O.shared&&($t.shared=O.shared(e,Y.track));let at;try{at=await a.mount(v,o,$t),D(e,"mount",c)}catch(E){throw l(),Y.dispose(),g(),v.remove(),M(new f("MOUNT_FAILED",u,"erro ao montar",E),i)}let lt=!0;return{update(E){lt&&at.update?.(E)},unmount(){if(lt){lt=!1;try{at.unmount()}finally{l(),Y.dispose(),g(),v.remove()}}}}}function Jo(t){let e=d(),o=t;for(;o&&!e.entry(o);)o=o.slice(0,Math.max(0,o.lastIndexOf("/")));return o?e.entry(o):void 0}w();H();function eo(t,e){let{isolate:o}=e,r=m=>m.src?A(m.src,m.name):m.name??"",n=r(e),s=e.props??{},a=null,i=null,l=0,u="loading",p=(m,y=null)=>{u=m,i&&(i.style.display=m==="error"?"none":""),e.onStatus?.(m,y)},c=()=>{a?.unmount(),a=null,i?.remove(),i=null},g=()=>{let m=++l;c(),i=document.createElement("div"),i.setAttribute("data-vitral-slot",n),t.appendChild(i),p("loading");let y=v=>{m===l&&p("error",b(v)?v:new f("MOUNT_FAILED",n,String(v),v))},x=s;to(i,n,s,{isolate:o,priority:e.priority,styles:e.styles,onError:y}).then(v=>{if(m!==l)return v.unmount();a=v,s!==x&&v.update?.(s),p("ready")},y)};return g(),{update(m){s=m,a?.update?.(m)},set(m){let y=m.src||m.name!==void 0?r(m):n,x=y!==n||"isolate"in m&&m.isolate!==o;n=y,"isolate"in m&&(o=m.isolate),x&&g()},retry:g,destroy(){l++,c()},get status(){return u}}}ot();H();var Tt=()=>{};function ro(t){let e={};if(typeof performance>"u"||!performance.getEntriesByName)return e;for(let o of["manifest","js","css","mount"]){let r=performance.getEntriesByName(`vitral:${t}:${o}`,"measure").pop();r&&(e[o]=Math.round(r.duration*10)/10)}return e}function oo(t,e,o){if(e==="lazy"||e==="visible"){if(typeof IntersectionObserver>"u")return o(),Tt;let r=new IntersectionObserver(n=>{n.some(s=>s.isIntersecting)&&(r.disconnect(),o())},{rootMargin:"200px"});return r.observe(t),()=>r.disconnect()}if(e==="idle"){if(typeof requestIdleCallback>"u"){let n=setTimeout(o,1);return()=>clearTimeout(n)}let r=requestIdleCallback(o,{timeout:2e3});return()=>cancelIdleCallback(r)}if(e==="hover"){let r=()=>(n(),o()),n=()=>{t.removeEventListener("pointerenter",r),t.removeEventListener("focusin",r)};return t.addEventListener("pointerenter",r),t.addEventListener("focusin",r),n}return o(),Tt}var T=new Map,N=null;function no(t,e){try{t.moveBefore(e,null)}catch{t.appendChild(e)}}function Ct(t,e){for(let o of t.querySelectorAll("*"))o.hasAttribute("data-vitral-root")&&o.dispatchEvent(new Event(e)),o.shadowRoot&&Ct(o.shadowRoot,e)}function Yo(t,e,o){T.get(t)?.slot.destroy(),T.delete(t),N?.isConnected||(N=document.createElement("div"),N.hidden=!0,N.setAttribute("data-vitral-keep-alive",""),document.body.appendChild(N)),no(N,e.box),Ct(e.box,"vitral:deactivate"),T.set(t,e);for(let[r,n]of T){if(T.size<=o)break;T.delete(r),n.slot.destroy(),n.box.remove()}}function so(t,e){let{props:o={},keepAlive:r}=e,n=c=>c.src?A(c.src,c.name):c.name??"",s=n(e),a="loading",i=null,l=(c,g)=>{a=c,e.onStatus?.(c,g)},u=e.prefetch?oo(t,e.prefetch,()=>Ve(s)):Tt,p=oo(t,e.loading,()=>{u();let c=r?T.get(s):void 0;if(c){T.delete(s),i=c,i.on=l,no(t,i.box),i.slot.update(o),Ct(i.box,"vitral:activate"),l(i.slot.status,null);return}let g=t;r&&(g=t.appendChild(document.createElement("div")),g.style.display="contents");let m={box:g,on:l,slot:null};m.slot=eo(g,{...e,name:s,src:void 0,props:o,onStatus:(y,x)=>m.on(y,x)}),i=m});return{update(c){o=c,i?.slot.update(c)},set(c){(c.src||c.name!==void 0)&&(s=n(c)),i?.slot.set({...c,src:void 0,name:s})},retry:()=>i?.slot.retry(),destroy(){p(),u(),i&&(r&&a==="ready"?Yo(s,i,r===!0?5:r):(i.slot.destroy(),i.box!==t&&i.box.remove()),i=null)},get status(){return a}}}H();var Wo=typeof HTMLElement>"u"?class{}:HTMLElement,At=class extends Wo{static{this.observedAttributes=["name","src","props","isolate"]}#t=null;#e={};get props(){return this.#e}set props(e){this.#e=e??{},this.#t?.update(this.#e)}get status(){return this.#t?.status??"loading"}retry(){this.#t?.retry()}connectedCallback(){if(this.#t)return;let e=this.#r();if(!e)return;this.hasAttribute("props")&&!Object.keys(this.#e).length&&(this.#e=io(this.getAttribute("props")));let o=this.getAttribute("keep-alive"),r={name:e,props:this.#e,isolate:this.getAttribute("isolate")||void 0,loading:this.getAttribute("loading"),prefetch:this.getAttribute("prefetch"),priority:this.getAttribute("priority")||void 0,keepAlive:o===null?!1:Number(o)||!0,styles:{inherit:this.getAttribute("inherit-styles")?.split(/\s+/).filter(Boolean)},onStatus:(s,a)=>{this.setAttribute("data-vitral-status",s),s==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy");let i=l=>{let u=this.querySelectorAll(`:scope > [slot="${l}"]`);for(let p of u)p.hidden=s!==(l==="fallback"?"loading":"error");return u.length>0};queueMicrotask(()=>{if(this.#t?.status!==s)return;let l={loading:i("fallback"),error:i("error"),ready:!0};this.#n(l[s]?null:s)}),s==="ready"&&this.dispatchEvent(new CustomEvent("vitral-ready",{bubbles:!0,detail:{timings:ro(e)}})),s==="error"&&this.dispatchEvent(new CustomEvent("vitral-error",{bubbles:!0,detail:{error:a}}))}},n=null;this.#t=so(this,r)}#r(){let e=this.getAttribute("src"),o=this.getAttribute("name");return e?A(e,o??void 0,!1):o}#o=null;#n(e){if(this.#o?.remove(),this.#o=null,!e)return;let o=document.createElement("div");if(o.setAttribute("data-vitral-default",e),e==="loading")o.setAttribute("role","status"),o.textContent="Carregando\u2026";else{o.setAttribute("role","alert");let r=document.createElement("button");r.type="button",r.textContent="Tentar de novo",r.onclick=()=>this.retry(),o.append("N\xE3o foi poss\xEDvel carregar. ",r)}this.prepend(this.#o=o)}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(this.#t?.destroy(),this.#t=null,this.#n(null))})}attributeChangedCallback(e,o,r){if(e==="props")return void(this.props=io(r));if(!this.#t)return void(this.isConnected&&this.connectedCallback());if(e==="name"||e==="src"){let n=this.#r();n&&this.#t.set({name:n})}e==="isolate"&&this.#t.set({isolate:r||void 0})}};function io(t){if(!t)return{};try{return JSON.parse(t)}catch{return console.error("[vitral] atributo props n\xE3o \xE9 JSON v\xE1lido:",t),{}}}function ao(t="vitral-remote"){typeof customElements<"u"&&!customElements.get(t)&&customElements.define(t,class extends At{})}R();k();var lo="data-vitral-embed";function co(t){let e=t.dataset;if(!e.remote||t.hasAttribute(lo))return null;let o=e.target?document.querySelector(e.target):t.closest("body")?t:document.body;if(!o)return document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>co(t),{once:!0}):console.error(`[vitral] data-target n\xE3o encontrado: ${e.target}`),null;t.setAttribute(lo,"");let r=S(e.remote);zo([new URL(r).origin,...e.origins?.split(/\s+/).filter(Boolean)??[]]),ao();let n=document.createElement("vitral-remote");return n.setAttribute("isolate",e.isolate||"shadow"),e.loading&&n.setAttribute("loading",e.loading),e.props&&n.setAttribute("props",e.props),e.name&&n.setAttribute("name",e.name),n.setAttribute("src",r),o===t?t.after(n):o.appendChild(n),n}function zo(t){let e=d(),o=e.settings().allowedOrigins??[B(),...e.origins()].filter(Boolean);ut({allowedOrigins:[...new Set([...o,...t])]})}var Xo=Symbol.for("vitral:embed"),Zo=globalThis[Xo]??=co;typeof document<"u"&&document.currentScript instanceof HTMLScriptElement&&Zo(document.currentScript);})();
1
+ "use strict";(()=>{var po=Object.defineProperty;var h=(t,e)=>()=>(t&&(e=t(t=0)),e);var x=(t,e)=>{for(var o in e)po(t,o,{get:e[o],enumerable:!0})};var O,X=h(()=>{"use strict";O={}});function Ht(){let t=new Map,e=new Map;return{emit(o,r){e.set(o,r);for(let n of[...t.get(o)??[]])try{n(r)}catch(s){console.error(`[vitral] handler de "${o}" falhou`,s)}},on(o,r){let n=t.get(o);return n||t.set(o,n=new Set),n.add(r),()=>n.delete(r)},last(o){return e.get(o)}}}var _t=h(()=>{"use strict"});function fo(){let t={timeout:15e3,retries:1,isolate:"none",allowedOrigins:null},e=new Map,o=new Map,r=Promise.resolve();return{protocol:jt,events:Ht(),settings:()=>t,configure(n){Object.assign(t,n)},register(n,s){e.set(n,s),o.delete(n)},entry:n=>e.get(n),origins:()=>[...e.values()].filter(n=>n.url).map(n=>new URL(n.url).origin),pending(n){return n&&(r=Promise.all([r,n])),r.then(()=>{})},load(n,s){let a=o.get(n);if(!a){a=s();let i=a;i.catch(()=>o.get(n)===i&&o.delete(n)),o.set(n,a)}return a}}}function d(){let t=Nt[Ut];return t&&typeof t.protocol=="number"&&t.protocol>=jt?t:Nt[Ut]=fo()}var jt,Ut,Nt,R=h(()=>{"use strict";_t();jt=1,Ut=Symbol.for("vitral"),Nt=globalThis});function M(t,e){if(S(t)&&!j.has(t)){j.add(t),t.cause instanceof Object&&j.add(t.cause),t.entry??=e?.entry??d().entry(t.remote)?.url,t.version??=e?.version;try{d().settings().onError?.(t)}catch{}O.watch?.(t.remote,t)}return t}var Bt,f,S,$,j,Z,w=h(()=>{"use strict";X();R();Bt="https://joaogabriel15.github.io/vitral/erros/",f=class extends Error{constructor(o,r,n,s){super(`[vitral] ${r}: ${n} (${Bt}${o})`);this.code=o;this.remote=r;this.cause=s;this.name="RemoteError",this.docs=`${Bt}${o}`,typeof location<"u"&&(this.route=location.pathname)}},S=t=>t?.name==="RemoteError",$=new Map,j=new WeakSet;Z=t=>{throw M(t)}});function B(){return typeof location<"u"?location.origin:null}function b(t,e){return new URL(t,e??(typeof location<"u"?location.href:void 0)).href}async function Vt(t,e){for(let o=0;;o++)try{return await e()}catch(r){if(!(S(r)&&(r.code==="LOAD_FAILED"||r.code==="TIMEOUT"))||o>=t)throw r;await new Promise(s=>setTimeout(s,200*2**o))}}function V(t,e,o){return new Promise((r,n)=>{let s=setTimeout(()=>n(new f("TIMEOUT",e,`n\xE3o respondeu em ${t}ms`)),t);o.then(r,n).finally(()=>clearTimeout(s))})}function q(t,e,o,r){let n=new AbortController,s=fetch(t,{signal:n.signal,credentials:"omit",...r}).then(a=>{if(!a.ok)throw new f("LOAD_FAILED",o,`HTTP ${a.status} em ${t}`);return a.arrayBuffer()},a=>{throw new f("LOAD_FAILED",o,`falha ao baixar ${t}`,a)});return V(e,o,s).catch(a=>{throw n.abort(),a})}async function Q(t,e,o,r){let n=new TextDecoder().decode(await q(t,e,o,r));try{return JSON.parse(n)}catch(s){throw new f("INVALID_MODULE",o,`JSON inv\xE1lido em ${t}`,s)}}function C(t,e,o={},r=document.head){return r.appendChild(Object.assign(document.createElement("link"),{rel:t,crossOrigin:"anonymous",href:e},o))}function D(t,e,o){try{let r=`vitral:${t}:${e}`;performance.clearMeasures(r),performance.measure(r,{start:o}),d().settings().onMetric?.({name:t,stage:e,start:o,duration:performance.now()-o})}catch{}}var k=h(()=>{"use strict";w();R()});var Jt={};x(Jt,{capture:()=>go,owner:()=>Kt});function go(){qt||typeof addEventListener>"u"||(qt=!0,addEventListener("error",t=>Ft(t.error,t.filename)),addEventListener("unhandledrejection",t=>Ft(t.reason)))}function Kt(t,e){let o=e||String(t?.stack??"").match(/(?:https?|file):\/\/[^\s)'"]+/)?.[0];if(!o)return;let r=[...document.querySelectorAll("script[src],link[rel=modulepreload]")].map(a=>a.src||a.href),n,s=0;for(let[a,{entry:i}]of $){let l=new URL(".",i).href;l.length>s&&o.startsWith(l)&&!r.some(u=>u.startsWith(l))&&(n=a,s=l.length)}return n}function Ft(t,e){if(!d().settings().captureGlobalErrors||S(t)||t instanceof Object&&j.has(t))return;let o=Kt(t,e);o&&M(new f("RENDER_FAILED",o,String(t?.message??t),t),$.get(o))}var qt,Gt=h(()=>{"use strict";w();R();qt=!1});function ct(t,e){if(e==="*")return!0;let[,o="",r=""]=/^(\^|~|>=|=)?(.*)$/.exec(e.trim());if(!o||o==="="||t.includes("-"))return t===r;let[n,s]=[t,r].map(i=>(i+".0.0").split(".",3).map(Number));for(let i=0;i<3;i++)if(n[i]!==s[i]){if(!(n[i]>s[i]))return!1;break}if(o===">=")return!0;let a=Math.min(r.split(".").length,o==="~"?2:s[0]?1:s[1]?2:3);return n.slice(0,a).join(".")===s.slice(0,a).join(".")}var Yt=h(()=>{"use strict"});var F={};x(F,{offer:()=>vo,satisfies:()=>ct,shared:()=>zt});function zt(t){if(!t.dedupe){let e=new Map,o=new Map,r=(s,a)=>s.includes(a)&&s.splice(s.indexOf(a),1),n=(s,a,i)=>(i.p||((i.p=i.load()).catch(()=>r(a,i)),i.url&&i.p.then(()=>yo(`${s}@${i.version}`,i.url),()=>{})),i.p);t.dedupe=(s,a,i)=>{let l=i,u=e.get(s)??[];e.set(s,u),l?.url&&o.get(s+l.url)?.(l);let m=u.find(c=>ct(c.version,a));if(!m&&l){m=u[u.push(l)-1];let c=l.url&&ho(`${s}@${l.version}`);c&&c!==l.url&&(l.p=new Promise(g=>{o.set(s+c,g),setTimeout(g,300,l)}).then(g=>(o.delete(s+c),g===l&&(l.p=void 0),n(s,u,g))),l.p.catch(()=>r(u,l)))}return m&&n(s,u,m)}}return t.dedupe}function vo(t,e){for(let o in e){let{version:r,modules:n}=e[o];zt(t)(o,r,{version:r,load:async()=>n}),t.configure({offered:{...t.settings().offered,[o]:r}})}}var Wt,ho,yo,K=h(()=>{"use strict";Yt();Wt="vitral:dedupe:",ho=t=>{try{return localStorage.getItem(Wt+t)}catch{return null}},yo=(t,e)=>{try{localStorage.setItem(Wt+t,e)}catch{}}});function ut(t){let e=d(),{remotes:o,dedupe:r,...n}=t;if(e.configure(n),n.captureGlobalErrors&&Promise.resolve().then(()=>(Gt(),Jt)).then(s=>s.capture()),r&&e.pending(Promise.resolve().then(()=>(K(),F)).then(s=>s.offer(e,r)).catch(()=>{})),typeof o=="string"){let s=b(o);e.pending(Q(s,e.settings().timeout,"remotes",{cache:"no-cache"}).then(a=>Xt(a,s))).catch(()=>{})}else o&&Xt(o)}function Zt(t,e){let o=typeof e=="string"?{url:e}:e;if(!o.url&&!o.module)throw new f("NOT_REGISTERED",t,"informe url ou module");if(!o.url)return d().register(t,o);let r=b(o.url);d().register(t,{...o,url:r});let{origin:n}=new URL(r);typeof document<"u"&&n!==B()&&n!=="null"&&!document.querySelector(`link[href="${n}"]`)&&C("preconnect",n)}function A(t,e,o=!0){let r=d(),n=b(t),s=e||n;r.entry(s)?.url!==n&&r.register(s,{url:n});let a=new URL(n).origin,i=r.settings().trusted??[];return o&&!i.includes(a)&&r.configure({trusted:[...i,a]}),s}function Xt(t,e){for(let[o,r]of Object.entries(t)){let n=typeof r=="string"?{url:r}:r;Zt(o,n.url?{...n,url:b(n.url,e)}:n)}}function tt(t,e){let o=d(),r=new URL(e).origin,{allowedOrigins:n,trusted:s=[]}=o.settings(),a=[...n??[B(),...o.origins()].filter(Boolean),...s];if(!(a.includes("*")||a.includes(r)||e.startsWith("blob:")))throw new f("ORIGIN_BLOCKED",t,`origem ${r} n\xE3o est\xE1 em allowedOrigins`)}var H=h(()=>{"use strict";w();R();k()});var gt={};x(gt,{attachShadowRoot:()=>bo,prefetch:()=>So,registryFor:()=>ft});function re({css:t,shadow:e}){let o=n=>new URL(n,t[0]).href,r=e?e.css.map(o):[];return[e?[...(e.imports??[]).map(o),...r,...t.slice(r.length)]:t,r,(e?.global??[]).map(o)]}function So(t,e){let[o,,r]=re(t);for(let n of o)yt(n,t.sri?.[n],e).catch(Eo);J(r,null,t.sri)}async function bo(t,e,o,r={},n={}){let s=e().getAttribute("data-vitral-root"),a=ft(s),i=t.shadowRoot;if(!i&&!te(a))try{i=t.attachShadow({mode:"open",customElementRegistry:a})}catch{pt=!0,mt.delete(s),a=ft(s)}i??=t.attachShadow({mode:"open"});let l=i.customElementRegistry??a,u=e();if(!te(l))try{u=e({customElementRegistry:l})}catch{}return u.isConnected||i.appendChild(u),[...await xo(i,u,o,r,n),i,l,u]}function ft(t){let e=mt.get(t);if(e)return e;let o=customElements;if(!pt&&"initialize"in CustomElementRegistry.prototype)try{o=new CustomElementRegistry}catch{pt=!0}let r=o===customElements,n=e=r?Object.create(o):o;if(r)for(let a of["get","getName","upgrade","whenDefined"])a in o&&(n[a]=o[a].bind(o));let s=o.define;return n.define=(a,i,l)=>{let u=o.get(a),m=ee.get(a);if(!u)return r&&ee.set(a,t),s.call(o,a,i,l);r&&u!==i&&m!==t&&Po()&&console.warn(`[vitral] ${t}: <${a}> j\xE1 foi definido por ${m??"outro c\xF3digo"}; fica essa defini\xE7\xE3o. Sem Scoped Custom Element Registries, os remotes dividem o registro global.`)},mt.set(t,e),e}function Po(){try{return process.env.NODE_ENV!=="production"}catch{return!1}}async function xo(t,e,o,r={},n={}){let s=o.sri??{},[a,i,l]=re(o),u=e.cloneNode();u.setAttribute("data-vitral-portal",""),e.after(u);let m=[...r.inherit??[],...n.inherit??[]].map(p=>new URL(p,document.baseURI).href).concat(a),c=J(l,null,s);if(typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype){let p=await Promise.all(m.map(y=>ne(y,[],s[y],i.includes(y)?!!o.shadow.rebase:void 0)));t.adoptedStyleSheets=[...new Set([...t.adoptedStyleSheets,...p.flat()])]}else await J(m,t,s);await c;let g=(n.mirrorTheme??r.mirrorTheme)===!1?[]:[oe(e),oe(u)];return[()=>(g.forEach(p=>p()),u.remove()),u]}function ne(t,e,o,r){let n=dt.get(t);return n||(n=yt(t,o).then(s=>{let a=new CSSStyleSheet;if(r!==!1&&(s=s.replace(Ro,(c,g,p)=>`url(${g}${new URL(p,t).href}${g})`)),r!=null)return a.replaceSync(s),[a];let i=[],l=[],u=s.replace(wo,(c,g,p,y,L)=>{let v=y??L;return v?l.push(new URL(v,t).href):Qt.has(g??c)||(Qt.add(g??c),i.push(c)),""});if(i.length){let c=document.createElement("style");c.setAttribute("data-vitral-properties",""),c.textContent=i.join(`
2
+ `),document.head.appendChild(c)}a.replaceSync(u);let m=[...e,t];return Promise.all(l.filter(c=>!m.includes(c)).map(c=>ne(c,m))).then(c=>[...c.flat(),a])}).catch(()=>(dt.delete(t),[])),dt.set(t,n)),n}function oe(t){let e=document.documentElement,o=[],r=()=>{t.classList.remove(...o),o=[...e.classList].filter(a=>!t.classList.contains(a)),t.classList.add(...o);let s=e.getAttribute("data-theme");s===null?t.removeAttribute("data-theme"):t.setAttribute("data-theme",s)};r();let n=new MutationObserver(r);return n.observe(e,{attributeFilter:["class","data-theme"]}),()=>n.disconnect()}var dt,Eo,Qt,Ro,wo,mt,pt,te,ee,ht=h(()=>{"use strict";et();dt=new Map,Eo=()=>{},Qt=new Set,Ro=/url\(\s*(['"]?)(?![a-z]+:|\/\/|#)([^'")]+)\1\s*\)/gi,wo=/@property\s+(--[\w-]+)\s*\{[^}]*\}|@font-face\s*\{[^}]*\}|@import\s+(?:url\(\s*)?(?:(['"])(.*?)\2|([^'"\s);]+))\s*\)?[^;]*;/gi;mt=new Map,pt=!1,te=t=>Object.getPrototypeOf(t)===customElements,ee=new Map});function yt(t,e,o){let r=`${t} ${e??""}`,n=vt.get(r);return n||(n=q(t,d().settings().timeout,t,{integrity:e,priority:o}).then(s=>new TextDecoder().decode(s)),n.catch(()=>vt.delete(r)),vt.set(r,n)),n}function ae(t,e,o="auto"){if(e&&Lo())Promise.resolve().then(()=>(ht(),gt)).then(r=>r.prefetch(t,o),ie);else for(let r of t.css)document.querySelector(`link[href="${r}"]`)||C("preload",r,{as:"style",integrity:t.sri?.[r]??"",fetchPriority:o})}function le(t,e,o,r){return e?Promise.resolve().then(()=>(ht(),gt)).then(n=>n.attachShadowRoot(e,o,t,d().settings().styles,r)):J(t.css,null,t.sri).then(()=>[ie])}function J(t,e,o={}){let r=e??document,n=se.get(r);n||se.set(r,n=new Map);let s=e??document.head,a=d().settings().timeout;return Promise.all(t.map(i=>{let l=n.get(i);return l||(l=new Promise(u=>{let m=C("stylesheet",i,{integrity:o[i]??""},s);setTimeout(u,a),m.onload=()=>u(),m.onerror=()=>{m.remove(),n.delete(i),u()}}),n.set(i,l)),l}))}var se,vt,ie,Lo,et=h(()=>{"use strict";R();k();se=new WeakMap,vt=new Map,ie=()=>{},Lo=()=>typeof CSSStyleSheet<"u"&&"replaceSync"in CSSStyleSheet.prototype});async function ue(t,e,o){let r=o.split(/\s+/).map(i=>/^sha(256|384|512)-([\w+/=-]+)/.exec(i)).filter(i=>!!i);if(!r.length)throw new f("INTEGRITY",t,`formato de integrity inv\xE1lido: ${o}`);let n=Math.max(...r.map(i=>+i[1])),s=btoa(String.fromCharCode(...new Uint8Array(await crypto.subtle.digest("SHA-"+n,e)))),a=r.filter(i=>+i[1]===n).map(i=>i[2]);if(!a.some(i=>ce(i)===ce(s)))throw new f("INTEGRITY",t,`o hash n\xE3o confere: esperado sha${n}-${a.join(" ou ")}, obtido sha${n}-${s}`)}var ce,de=h(()=>{"use strict";w();ce=t=>t.replace(/-/g,"+").replace(/_/g,"/").replace(/=/g,"")});var we={};x(we,{importVerified:()=>Oo,verified:()=>Ee});async function Oo(t,e,o,r){let{entry:n,integrity:s,priority:a}=e;if(!Et.has(n))try{let m=await V(r,t,(async()=>{let c=await Ee(e.split??{entry:n,chunks:[],sri:{[n]:s},priority:a},o);return c&&{ns:await o(c)}})());if(m)return m.ns}catch(u){if(Et.add(n),u instanceof f&&u.code==="TIMEOUT")throw u}let i=await q(n,r,t,Et.has(n)?{priority:a,cache:"reload"}:{priority:a});await ue(t,i,s);let l=URL.createObjectURL(new Blob([i],{type:"text/javascript"}));try{return await o(l)}finally{URL.revokeObjectURL(l)}}async function To(t){if(Rt)return await Rt&&ye(t,!1);let e=!1;try{e=localStorage[ge]===navigator.userAgent}catch{}let o=await(Rt=ye(t,!e));if(o&&!e)try{localStorage[ge]=navigator.userAgent}catch{}return o}async function Ee(t,e){let{entry:o,chunks:r,sri:n,priority:s="auto",dedupe:a=[]}=t,i=a.flatMap(m=>[...m.chunks??[],m.file]);if(![o,...r,...i].every(m=>Mo.test(n[m]??"")))return;let l=globalThis[Symbol.for("vitral")],u=async m=>{if(!e||!a.length)return;let{shared:c}=await Promise.resolve().then(()=>(K(),F));for(let g of a)c(l)(g.name,g.range,{version:g.version,url:g.file,load:async()=>(m&&await Promise.all([...g.chunks??[],g.file].map(p=>wt(p,n[p],s))),(await e(g.file)).default)})};if(pe!==!1&&(pe=await To(n))){await u();for(let m of r)fetch(m,{priority:s}).catch(()=>{});return o}if(await(ko??=Co()))return l.sri={...l.sri,...n},await u(!0),await Promise.all([...r,o].map(m=>wt(m,n[m],s))),o}async function ye(t,e){if(!HTMLScriptElement.supports?.("importmap"))return!1;let o={};for(let s in t)!/\.css([?#]|$)/.test(s)&&!fe.has(s)&&(fe.add(s),o[s]=t[s]);let r=e?["export{}","export{}//"].map(s=>URL.createObjectURL(new Blob([s],{type:"text/javascript"}))):[];for(let s of r)o[s]=ve;let n=!0;try{let s=document.createElement("script");s.type="importmap",s.nonce=document.querySelector("script[nonce]")?.nonce??"",s.onerror=()=>n=!1,s.addEventListener("securitypolicyviolation",()=>n=!1),s.textContent=JSON.stringify({integrity:o}),document.head.append(s),await he(),await he(),n&&e&&(n=await Re(a=>import(a),r[0],r[1]))}catch{n=!1}for(let s of r)URL.revokeObjectURL(s);return n}function wt(t,e,o="auto"){return new Promise((r,n)=>{let s=C("modulepreload",t,{integrity:e,fetchPriority:o});s.onload=r,s.onerror=n})}function Co(){return document.createElement("link").relList.supports("modulepreload")?Re(t=>wt(t,ve),me,me+"//"):Promise.resolve(!1)}function Re(t,e,o){return Promise.race([Promise.all([t(e).then(()=>!0,()=>!1),t(o).then(()=>!1,()=>!0)]).then(([r,n])=>r&&n),new Promise(r=>setTimeout(r,3e3,!1))])}var Et,Mo,me,ve,pe,fe,Rt,ko,ge,he,Se=h(()=>{"use strict";de();w();k();Et=new Set;Mo=/^(sha(256|384|512)-[A-Za-z0-9+/]+={0,2}( +|$))+$/,me="data:text/javascript,export{}",ve="sha256-d3bjIZdvLjBurwdLwkSVOnEBPFFly+T1SR9r3VVHBGg=",fe=new Set,ge="vitral:sri-map";he=()=>new Promise(t=>{let e=new MessageChannel;e.port1.onmessage=()=>t(),e.port2.postMessage(0)})});var xe={};x(xe,{resolveModule:()=>Io,resolveTarget:()=>Ao,splitName:()=>be});function be(t){let e=d(),o=t.length;if(!e.entry(t))for(;(o=t.lastIndexOf("/",o-1))>0&&!e.entry(t.slice(0,o)););return o>0&&o<t.length?[t.slice(0,o),"."+t.slice(o)]:[t,null]}function Ao(t,e){return Pe(t,e).then(o=>St(t,o))}function Pe(t,e){let o=d();return o.entry(t)||!t.includes("/")?e(t):o.pending().then(async()=>{let[r,n]=be(t);if(!n)return e(t);let s=await e(r),a=s.exports?.exposes;if(!a?.[n])throw new f("NOT_EXPOSED",t,`${r} n\xE3o exp\xF5e ${n}. Expostos: ${Object.keys(a??{}).join(", ")}`);try{let i=a[n],l=await(typeof i=="function"?i():i);return{...s,module:l?.default??l,exports:l}}catch(i){throw new f("LOAD_FAILED",t,String(i),i)}})}async function Io(t,e){let o=await Pe(t,e);if(!o.exports)throw new f("INVALID_MODULE",t,"o remote foi carregado por uma c\xF3pia antiga da lib, que n\xE3o guarda os exports");return o.exports}var Le=h(()=>{"use strict";w();ot();R()});var Ae={};x(Ae,{OVERRIDES_KEY:()=>rt,activeOverrides:()=>Ce,clearOverrides:()=>ke,dropOverride:()=>Ho,isRef:()=>bt,manifestUrl:()=>nt,overrideFor:()=>_o,overridesEnabled:()=>Me,resolveOverride:()=>Te,storeOverride:()=>$o,storedOverrides:()=>xt});function Me(){return!!d().settings().devOverrides||typeof location<"u"&&/^(localhost|127\.0\.0\.1|\[::1\])$/.test(location.hostname)}function $o(t,e){let o=xt();e?o[t]=bt(e)?e:nt(e):delete o[t],G(it,o)}function Do(){let t=Pt(st),e=new URLSearchParams(location.search).getAll("vitral").join(",").split(",");if(!e.some(Boolean))return t;for(let o of e){let r=o.indexOf("@");o==="off"?(ke(),Object.keys(t).forEach(n=>delete t[n])):r>0&&o.slice(r+1)==="off"?delete t[o.slice(0,r)]:r>0&&(t[o.slice(0,r)]=o.slice(r+1))}return G(st,t),t}function ke(){G(st,{}),G(it,{})}function Ho(t){for(let e of[st,it]){let o=Pt(e);delete o[t],G(e,o)}}function Te(t,e){if(!bt(e))return new URL(nt(e),location.href).href;let o=d().settings().devOverrides,r=typeof o=="object"?o.preview:void 0;if(!r)return;let n=r.replace(/\{name\}/g,encodeURIComponent(t)).replace(/\{ref\}/g,encodeURIComponent(e));return new URL(nt(n),location.href).href}function Ce(){let t=Do(),e={};for(let[o,r]of[["navegador",xt()],["aba",t]])for(let[n,s]of Object.entries(r))e[n]={name:n,value:s,url:Te(n,s),source:o};return Object.values(e)}function _o(t){if(!Me())return;let e=Ce().find(a=>a.name===t);if(!e)return;let o=!Oe.has(t)&&Oe.add(t);if(!e.url){o&&console.warn(`[vitral] override ${t}@${e.value} ignorado: falta configure({ devOverrides: { preview } })`);return}let r=d(),n=r.settings().trusted??[],s=new URL(e.url).origin;return n.includes(s)||r.configure({trusted:[...n,s]}),o&&console.warn(`[vitral] override ativo: ${t} \u2192 ${e.url} (${e.source}). Para limpar: ?vitral=off`),{url:e.url}}var rt,nt,bt,Pt,G,it,st,xt,Oe,Ie=h(()=>{"use strict";R();rt="vitral:overrides";nt=t=>/\.(json|m?js)(\?|$)/.test(t)?t:t.replace(/\/?$/,"/vitral.json"),bt=t=>/^[\w.-]+$/.test(t),Pt=t=>{try{return JSON.parse(t().getItem(rt)??"{}")??{}}catch{return{}}},G=(t,e)=>{try{Object.keys(e).length?t().setItem(rt,JSON.stringify(e)):t().removeItem(rt)}catch{}},it=()=>localStorage,st=()=>sessionStorage,xt=()=>Pt(it);Oe=new Set});var Ne={};x(Ne,{bucket:()=>_e,pick:()=>Uo,resetChannels:()=>Vo,versionUrl:()=>He});async function Uo(t,e,o){if(typeof o.stable!="string")throw new f("INVALID_MODULE",t,`canal inv\xE1lido em ${e.url}: falta "stable"`);O.watch=jo;let r={name:t,bucket:_e(t)},{canary:n,stable:s}=o,a=await e.resolve?.(o,r)??(n&&r.bucket<n.percent?n.version:s);return a!==s&&Ue()[t]===a&&(a=s),a===s||e.rollback===!1?U.delete(t):U.get(t)?.from!==a&&U.set(t,{from:a,to:s,errors:0,mounts:0,max:{errors:3,mounts:20,...e.rollback}}),{...e,url:He(a,e.url),integrity:void 0,manifest:void 0}}function _e(t){let e=d().settings().canaryKey??No(),o=2166136261;for(let r of`${e}:${t}`)o=Math.imul(o^r.charCodeAt(0),16777619);return(o>>>0)%100}function No(){try{_??=localStorage.getItem($e)??void 0}catch{}if(!_){_=Math.random().toString(36).slice(2);try{localStorage.setItem($e,_)}catch{}}return _}function Ue(){try{return{...JSON.parse(sessionStorage.getItem(De)||"{}"),...Y}}catch{return Y}}function jo(t,e){for(let[o,r]of U)t!==o&&!t.startsWith(o+"/")||(e?++r.errors>=r.max.errors&&Bo(o,r):++r.mounts>r.max.mounts&&(r.mounts=1,r.errors=0))}function Bo(t,e){U.delete(t),Y={...Ue(),[t]:e.from};try{sessionStorage.setItem(De,JSON.stringify(Y))}catch{}console.warn(`[vitral] ${t}: ${e.errors} erros em ${e.mounts} montagens da vers\xE3o ${e.from}; voltando para ${e.to}`);try{d().settings().onRollback?.({name:t,from:e.from,to:e.to,errors:e.errors,mounts:e.mounts})}catch{}let o=d();o.register(t,o.entry(t)),o.events.emit("vitral:refresh",t)}function Vo(){U.clear(),Y={},_=void 0}var De,$e,U,Y,_,He,je=h(()=>{"use strict";w();X();R();k();De="vitral:rollback",$e="vitral:id",U=new Map,Y={};He=(t,e)=>b(/[/:]|\.(m?js|json)$/.test(t)?t:`${t}/vitral.json`,e)});var Be={};x(Be,{checkContract:()=>qo});async function qo(t,e=d().settings().contract){let{satisfies:o}=await Promise.resolve().then(()=>(K(),F));if(t.version&&!o(t.version,e))return`o host aceita contrato ${e}, o remote publica ${t.version}`;let r=d().settings().offered??{};for(let n in t.peers){let s=r[n];if(s&&!o(s,t.peers[n]))return`o remote espera ${n} ${t.peers[n]}, o host oferece ${s}`}}var Ve=h(()=>{"use strict";R()});var qe={};x(qe,{stale:()=>Fo});function Fo(t,e,o){let r="vitral:manifest:"+t;e.then(n=>localStorage[r]=JSON.stringify({t:Date.now(),m:n})).catch(()=>{});try{let n=JSON.parse(localStorage[r]);if(Date.now()-n.t<o*1e3)return n.m}catch{}return e}var Fe=h(()=>{"use strict"});function Ke(t){Mt(t).catch(()=>{})}function Ko(){Lt||(Lt=Promise.resolve().then(()=>(Se(),we)).catch(()=>null),Promise.resolve().then(()=>(K(),F)).catch(()=>{}))}function Mt(t,e,o){let r=n=>Jo(n,e,o);return(d().entry(t)||!t.includes("/")?r(t).then(n=>St(t,n)):Promise.resolve().then(()=>(Le(),xe)).then(n=>n.resolveTarget(t,r))).catch(Z)}function Jo(t,e,o){let r=d();return r.load(t,async()=>{Ko();let n;try{await r.pending();let s=await Je(t),a=s?{isolate:r.entry(t)?.isolate,...s}:r.entry(t);if(!a)throw new f("NOT_REGISTERED",t,"remote n\xE3o registrado. Use configure({ remotes }).");if(a.module)return await Go(t,a);let i=performance.now();n=await Ot(t,a,o),D(t,"manifest",i),ae(n,(e??n.isolate??r.settings().isolate)==="shadow",o),i=performance.now();let l=await Vt(r.settings().retries,()=>Wo(t,n));return D(t,"js",i),{...n,module:l?.default??l,exports:l}}catch(s){throw M(S(s)?s:new f("LOAD_FAILED",t,String(s?.message??s),s),n)}})}function Je(t){try{let e="vitral:overrides";if(/[?&]vitral=/.test(location.search)||localStorage[e]||sessionStorage[e])return Promise.resolve().then(()=>(Ie(),Ae)).then(o=>o.overrideFor(t))}catch{}}async function Go(t,e){let o=e.module;return typeof o=="function"&&(o=await o()),{module:o?.default??o,exports:o,entry:typeof location<"u"?location.href:"http://localhost/",css:e.css??[],isolate:e.isolate}}async function Ot(t,e,o){tt(t,e.url);let r=e.manifest??(new URL(e.url).pathname.endsWith(".json")?await Yo(e.url,t,o):{name:t,entry:e.url});if(r?.stable)return Ot(t,await(await Promise.resolve().then(()=>(je(),Ne))).pick(t,e,r),o);if(typeof r?.entry!="string")throw new f("INVALID_MODULE",t,`manifesto inv\xE1lido em ${e.url}`);if(r.contract&&(e.contract||d().settings().contract)){let i=await(await Promise.resolve().then(()=>(Ve(),Be))).checkContract(r.contract,e.contract);if(i)throw new f("CONTRACT_MISMATCH",t,i)}let n=i=>b(i,e.url),s={};for(let i in r.files??{})s[n(i)]=r.files[i];let a={entry:n(r.entry),css:[...r.css??[],...e.css??[]].map(n),shadow:r.shadow,integrity:e.integrity??r.integrity,isolate:e.isolate,scope:r.scope,version:r.version,sri:s,priority:o,split:r.split&&!e.integrity?{entry:n(r.split.entry),chunks:(r.split.chunks??[]).map(n),sri:s,priority:o,dedupe:r.dedupe?.map(i=>({...i,file:n(i.file),chunks:i.chunks?.map(n)}))}:void 0};tt(t,a.entry);for(let i of[a.split?.entry,...(a.split?.dedupe??[]).map(l=>l.file)])i&&tt(t,i);if(t===e.url&&r.name){let i=await Je(r.name);if(i)return{...await Ot(t,i),name:r.name};a.name=r.name,d().entry(r.name)||d().register(r.name,e)}return a}function Yo(t,e,o){let{timeout:r,maxStale:n}=d().settings(),s=Q(t,r,e,{cache:"no-cache",priority:o});return n?Promise.resolve().then(()=>(Fe(),qe)).then(a=>a.stale(t,s,n),()=>s):s}async function Wo(t,e){let{timeout:o}=d().settings(),r=s=>V(o,t,import(s)).catch(a=>{throw S(a)?a:new f("LOAD_FAILED",t,`falha ao importar ${e.entry}`,a)});if(!e.integrity)return r(e.entry);let n=await Lt;if(!n)throw new f("LOAD_FAILED",t,"n\xE3o foi poss\xEDvel carregar o verificador de integrity");return n.importVerified(t,e,r,o)}function St(t,e){if(typeof e.module?.mount!="function")throw new f("INVALID_MODULE",t,"o m\xF3dulo n\xE3o exporta mount(). Use defineRemote(), ou loadModule() para m\xF3dulo sem UI.");return e}var Lt,ot=h(()=>{"use strict";et();w();H();R();k()});var kt={};x(kt,{load:()=>to,noFrames:()=>zo});function to(t){throw new f("MOUNT_FAILED",t,"isolate sem suporte no embed.js")}var zo,Tt=h(()=>{"use strict";w();zo=(t,e)=>to(e)});H();et();w();R();var I={emit:(t,e)=>d().events.emit(t,e),on:(t,e)=>d().events.on(t,e),last:t=>d().events.last(t)};function Ge(){let t=new Set,e=o=>{let r=()=>(t.delete(r),o());return t.add(r),r};return{bus:{emit:(o,r)=>I.emit(o,r),last:o=>I.last(o),on:(o,r)=>e(I.on(o,r))},track:e,dispose(){for(let o of[...t])o()}}}X();ot();function Ye(t,e={}){let o=new URL(t,location.href);if(o.origin!==location.origin){location.assign(o.href);return}e.replace?history.replaceState(history.state,"",o.href):history.pushState(history.state,"",o.href),dispatchEvent(new PopStateEvent("popstate",{state:history.state})),I.emit("vitral:navigate",o.pathname+o.search+o.hash)}R();w();var We=new Map,W=new Map;function Ze(t,e){return We.set(t,e.entry),$.set(t,e),W.set(t,(W.get(t)??0)+1),()=>{let o=W.get(t)-1;o?W.set(t,o):(W.delete(t),We.delete(t),$.delete(t))}}var ze=null;function Qe(t,e,o,r){let n=0,s=I.on("vitral:refresh",a=>{if(a!==e&&!e.startsWith(a+"/"))return;let i=++n,l=o,u=r(l).then(m=>{if(t.unmount===Xe||i!==n)return m.unmount();let c=t;t=m,c.unmount(),o!==l&&m.update?.(o)});ze?ze.push(u):u.catch(console.error)});return{update(a){o=a,t.update?.(a)},unmount(){s(),t.unmount(),t={unmount:Xe}}}}var Xe=()=>{};k();async function oo(t,e,o,r={}){return Qe(await eo(t,e,o,r),e,o,n=>eo(t,e,n,r))}var Xo;async function eo(t,e,o,r){let n=d();await n.pending();let s=r.isolate??Zo(e)?.isolate??n.settings().isolate;if(s==="iframe")return(Xo??(await Promise.resolve().then(()=>(Tt(),kt))).noFrames)(t,e,o,r).catch(Z);let{module:a,...i}=await(s=="reframe"?(await Promise.resolve().then(()=>(Tt(),kt))).load:Mt)(e,s,r.priority),l=Ze(e,i);O.watch?.(e);let u=i.name??e,m=E=>{let P=document.createElement("div",E);return P.setAttribute("data-vitral-root",u),i.scope&&P.setAttribute("data-vitral-scope",i.scope),P.style.display="contents",P},c=performance.now(),[g,p=document.body,y=null,L=customElements,v=t.appendChild(m())]=await le(i,s>"q"&&t,m,r.styles);D(e,"css",c),c=performance.now();let z=Ge(),$t=E=>P=>(v.addEventListener(E,P),()=>v.removeEventListener(E,P)),Dt={name:u,baseUrl:new URL(".",i.entry).href,events:z.bus,shadowRoot:y,portalContainer:p,customElements:L,reportError(E){let P=M(S(E)?E:new f("RENDER_FAILED",u,String(E?.message??E),E),i);r.onError?r.onError(P):console.error(P)},navigate:Ye,protocol:n.protocol,onActivate:$t("vitral:activate"),onDeactivate:$t("vitral:deactivate")};O.shared&&(Dt.shared=O.shared(e,z.track));let at;try{at=await a.mount(v,o,Dt),D(e,"mount",c)}catch(E){throw l(),z.dispose(),g(),v.remove(),M(new f("MOUNT_FAILED",u,"erro ao montar",E),i)}let lt=!0;return{update(E){lt&&at.update?.(E)},unmount(){if(lt){lt=!1;try{at.unmount()}finally{l(),z.dispose(),g(),v.remove()}}}}}function Zo(t){let e=d(),o=t;for(;o&&!e.entry(o);)o=o.slice(0,Math.max(0,o.lastIndexOf("/")));return o?e.entry(o):void 0}w();H();function ro(t,e){let{isolate:o}=e,r=p=>p.src?A(p.src,p.name):p.name??"",n=r(e),s=e.props??{},a=null,i=null,l=0,u="loading",m=(p,y=null)=>{u=p,i&&(i.style.display=p==="error"?"none":""),e.onStatus?.(p,y)},c=()=>{a?.unmount(),a=null,i?.remove(),i=null},g=()=>{let p=++l;c(),i=document.createElement("div"),i.setAttribute("data-vitral-slot",n),t.appendChild(i),m("loading");let y=v=>{p===l&&m("error",S(v)?v:new f("MOUNT_FAILED",n,String(v),v))},L=s;oo(i,n,s,{isolate:o,priority:e.priority,styles:e.styles,onError:y}).then(v=>{if(p!==l)return v.unmount();a=v,s!==L&&v.update?.(s),m("ready")},y)};return g(),{update(p){s=p,a?.update?.(p)},set(p){let y=p.src||p.name!==void 0?r(p):n,L=y!==n||"isolate"in p&&p.isolate!==o;n=y,"isolate"in p&&(o=p.isolate),L&&g()},retry:g,destroy(){l++,c()},get status(){return u}}}ot();H();var Ct=()=>{};function so(t){let e={};if(typeof performance>"u"||!performance.getEntriesByName)return e;for(let o of["manifest","js","css","mount"]){let r=performance.getEntriesByName(`vitral:${t}:${o}`,"measure").pop();r&&(e[o]=Math.round(r.duration*10)/10)}return e}function no(t,e,o){if(e==="lazy"||e==="visible"){if(typeof IntersectionObserver>"u")return o(),Ct;let r=new IntersectionObserver(n=>{n.some(s=>s.isIntersecting)&&(r.disconnect(),o())},{rootMargin:"200px"});return r.observe(t),()=>r.disconnect()}if(e==="idle"){if(typeof requestIdleCallback>"u"){let n=setTimeout(o,1);return()=>clearTimeout(n)}let r=requestIdleCallback(o,{timeout:2e3});return()=>cancelIdleCallback(r)}if(e==="hover"){let r=()=>(n(),o()),n=()=>{t.removeEventListener("pointerenter",r),t.removeEventListener("focusin",r)};return t.addEventListener("pointerenter",r),t.addEventListener("focusin",r),n}return o(),Ct}var T=new Map,N=null;function io(t,e){try{t.moveBefore(e,null)}catch{t.appendChild(e)}}function At(t,e){for(let o of t.querySelectorAll("*"))o.hasAttribute("data-vitral-root")&&o.dispatchEvent(new Event(e)),o.shadowRoot&&At(o.shadowRoot,e)}function Qo(t,e,o){T.get(t)?.slot.destroy(),T.delete(t),N?.isConnected||(N=document.createElement("div"),N.hidden=!0,N.setAttribute("data-vitral-keep-alive",""),document.body.appendChild(N)),io(N,e.box),At(e.box,"vitral:deactivate"),T.set(t,e);for(let[r,n]of T){if(T.size<=o)break;T.delete(r),n.slot.destroy(),n.box.remove()}}function ao(t,e){let{props:o={},keepAlive:r}=e,n=c=>c.src?A(c.src,c.name):c.name??"",s=n(e),a="loading",i=null,l=(c,g)=>{a=c,e.onStatus?.(c,g)},u=e.prefetch?no(t,e.prefetch,()=>Ke(s)):Ct,m=no(t,e.loading,()=>{u();let c=r?T.get(s):void 0;if(c){T.delete(s),i=c,i.on=l,io(t,i.box),i.slot.update(o),At(i.box,"vitral:activate"),l(i.slot.status,null);return}let g=t;r&&(g=t.appendChild(document.createElement("div")),g.style.display="contents");let p={box:g,on:l,slot:null};p.slot=ro(g,{...e,name:s,src:void 0,props:o,onStatus:(y,L)=>p.on(y,L)}),i=p});return{update(c){o=c,i?.slot.update(c)},set(c){(c.src||c.name!==void 0)&&(s=n(c)),i?.slot.set({...c,src:void 0,name:s})},retry:()=>i?.slot.retry(),destroy(){m(),u(),i&&(r&&a==="ready"?Qo(s,i,r===!0?5:r):(i.slot.destroy(),i.box!==t&&i.box.remove()),i=null)},get status(){return a}}}H();var tr=typeof HTMLElement>"u"?class{}:HTMLElement,It=class extends tr{static{this.observedAttributes=["name","src","props","isolate"]}#t=null;#e={};get props(){return this.#e}set props(e){this.#e=e??{},this.#t?.update(this.#e)}get status(){return this.#t?.status??"loading"}retry(){this.#t?.retry()}connectedCallback(){if(this.#t)return;let e=this.#r();if(!e)return;this.hasAttribute("props")&&!Object.keys(this.#e).length&&(this.#e=lo(this.getAttribute("props")));let o=this.getAttribute("keep-alive"),r={name:e,props:this.#e,isolate:this.getAttribute("isolate")||void 0,loading:this.getAttribute("loading"),prefetch:this.getAttribute("prefetch"),priority:this.getAttribute("priority")||void 0,keepAlive:o===null?!1:Number(o)||!0,styles:{inherit:this.getAttribute("inherit-styles")?.split(/\s+/).filter(Boolean)},onStatus:(s,a)=>{this.setAttribute("data-vitral-status",s),s==="loading"?this.setAttribute("aria-busy","true"):this.removeAttribute("aria-busy");let i=l=>{let u=this.querySelectorAll(`:scope > [slot="${l}"]`);for(let m of u)m.hidden=s!==(l==="fallback"?"loading":"error");return u.length>0};queueMicrotask(()=>{if(this.#t?.status!==s)return;let l={loading:i("fallback"),error:i("error"),ready:!0};this.#n(l[s]?null:s)}),s==="ready"&&this.dispatchEvent(new CustomEvent("vitral-ready",{bubbles:!0,detail:{timings:so(e)}})),s==="error"&&this.dispatchEvent(new CustomEvent("vitral-error",{bubbles:!0,detail:{error:a}}))}},n=null;this.#t=ao(this,r)}#r(){let e=this.getAttribute("src"),o=this.getAttribute("name");return e?A(e,o??void 0,!1):o}#o=null;#n(e){if(this.#o?.remove(),this.#o=null,!e)return;let o=document.createElement("div");if(o.setAttribute("data-vitral-default",e),e==="loading")o.setAttribute("role","status"),o.textContent="Carregando\u2026";else{o.setAttribute("role","alert");let r=document.createElement("button");r.type="button",r.textContent="Tentar de novo",r.onclick=()=>this.retry(),o.append("N\xE3o foi poss\xEDvel carregar. ",r)}this.prepend(this.#o=o)}disconnectedCallback(){queueMicrotask(()=>{this.isConnected||(this.#t?.destroy(),this.#t=null,this.#n(null))})}attributeChangedCallback(e,o,r){if(e==="props")return void(this.props=lo(r));if(!this.#t)return void(this.isConnected&&this.connectedCallback());if(e==="name"||e==="src"){let n=this.#r();n&&this.#t.set({name:n})}e==="isolate"&&this.#t.set({isolate:r||void 0})}};function lo(t){if(!t)return{};try{return JSON.parse(t)}catch{return console.error("[vitral] atributo props n\xE3o \xE9 JSON v\xE1lido:",t),{}}}function co(t="vitral-remote"){typeof customElements<"u"&&!customElements.get(t)&&customElements.define(t,class extends It{})}R();k();var uo="data-vitral-embed";function mo(t){let e=t.dataset;if(!e.remote||t.hasAttribute(uo))return null;let o=e.target?document.querySelector(e.target):t.closest("body")?t:document.body;if(!o)return document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>mo(t),{once:!0}):console.error(`[vitral] data-target n\xE3o encontrado: ${e.target}`),null;t.setAttribute(uo,"");let r=b(e.remote);er([new URL(r).origin,...e.origins?.split(/\s+/).filter(Boolean)??[]]),co();let n=document.createElement("vitral-remote");return n.setAttribute("isolate",e.isolate||"shadow"),e.loading&&n.setAttribute("loading",e.loading),e.props&&n.setAttribute("props",e.props),e.name&&n.setAttribute("name",e.name),n.setAttribute("src",r),o===t?t.after(n):o.appendChild(n),n}function er(t){let e=d(),o=e.settings().allowedOrigins??[B(),...e.origins()].filter(Boolean);ut({allowedOrigins:[...new Set([...o,...t])]})}var or=Symbol.for("vitral:embed"),rr=globalThis[or]??=mo;typeof document<"u"&&document.currentScript instanceof HTMLScriptElement&&rr(document.currentScript);})();
@@ -1,4 +1,4 @@
1
- import { E as EventBus } from './types-DUtcF3HO.js';
1
+ import { E as EventBus } from './types-EOz1rOHs.js';
2
2
 
3
3
  /** Barramento global. É o mesmo objeto que os remotes recebem em `ctx.events`. */
4
4
  declare const events: EventBus;
@@ -2,8 +2,8 @@ import {
2
2
  resolveModule,
3
3
  resolveTarget,
4
4
  splitName
5
- } from "./chunk-C3QOBAUE.js";
6
- import "./chunk-5JNV45BB.js";
5
+ } from "./chunk-4NSPG6NK.js";
6
+ import "./chunk-72H4FXMD.js";
7
7
  import "./chunk-KU6HF2EW.js";
8
8
  import "./chunk-TW7KYJQ6.js";
9
9
  import "./chunk-463H6B56.js";
@@ -1,4 +1,4 @@
1
- import { a as RemoteModule, b as SharedModules, c as RemoteEntry } from './types-DUtcF3HO.js';
1
+ import { a as RemoteModule, b as SharedModules, c as RemoteEntry } from './types-EOz1rOHs.js';
2
2
  import './errors-kjBv6IH_.js';
3
3
 
4
4
  /**