@emkodev/emroute 1.8.0 → 1.8.2-beta.1

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.
@@ -88,14 +88,17 @@ export class Emroute {
88
88
 
89
89
  // ── Widgets ───────────────────────────────────────────────────────
90
90
 
91
- let widgets: WidgetRegistry | undefined = config.widgets;
91
+ let widgets: WidgetRegistry | undefined;
92
92
 
93
93
  const widgetsResponse = await runtime.query(WIDGETS_MANIFEST_PATH);
94
94
  if (widgetsResponse.status !== 404) {
95
95
  const entries: WidgetManifestEntry[] = await widgetsResponse.json();
96
- if (!config.widgets) {
97
- widgets = await Emroute.importWidgets(entries, runtime);
98
- }
96
+ widgets = await Emroute.importWidgets(entries, runtime);
97
+ }
98
+
99
+ if (config.widgets) {
100
+ if (!widgets) widgets = new WidgetRegistry();
101
+ for (const w of config.widgets) widgets.add(w);
99
102
  }
100
103
 
101
104
  // ── Renderers ─────────────────────────────────────────────────────
@@ -118,11 +121,7 @@ export class Emroute {
118
121
 
119
122
  const title = config.title ?? 'emroute';
120
123
  const shellBase = (spa === 'root' || spa === 'only') ? appBase : htmlBase;
121
- let shell = await Emroute.resolveShell(runtime, title, shellBase);
122
-
123
- if ((await runtime.query('/main.css')).status !== 404) {
124
- shell = shell.replace('</head>', ' <link rel="stylesheet" href="/main.css">\n</head>');
125
- }
124
+ const shell = await Emroute.resolveShell(runtime, title, shellBase, spa);
126
125
 
127
126
  return new Emroute(
128
127
  ssrHtmlRenderer,
@@ -211,15 +210,18 @@ export class Emroute {
211
210
  });
212
211
  }
213
212
 
214
- // Unhandled SSR paths in 'only' mode — serve shell
213
+ // Unhandled SSR paths in 'only' mode — redirect to /app/
215
214
  if (
216
215
  pathname.startsWith(htmlPrefix) || pathname === this.htmlBase ||
217
216
  pathname.startsWith(mdPrefix) || pathname === this.mdBase
218
217
  ) {
219
- return new Response(this.shell, {
220
- status: 200,
221
- headers: { 'Content-Type': 'text/html; charset=utf-8' },
222
- });
218
+ const routePath = pathname.startsWith(htmlPrefix) ? pathname.slice(this.htmlBase.length)
219
+ : pathname.startsWith(mdPrefix) ? pathname.slice(this.mdBase.length)
220
+ : '/';
221
+ return Response.redirect(
222
+ new URL(this.appBase + routePath + (url.search || ''), url.origin),
223
+ 302,
224
+ );
223
225
  }
224
226
 
225
227
  // Static files
@@ -277,18 +279,45 @@ export class Emroute {
277
279
  return registry;
278
280
  }
279
281
 
280
- private static buildHtmlShell(title: string, htmlBase: string): string {
281
- const baseTag = htmlBase ? `\n <base href="${escapeHtml(htmlBase)}/">` : '';
282
+ private static async buildHtmlShell(
283
+ runtime: Runtime,
284
+ title: string,
285
+ basePath: string,
286
+ spa: SpaMode,
287
+ ): Promise<string> {
288
+ const baseTag = basePath ? `\n <base href="${escapeHtml(basePath)}/">` : '';
289
+
290
+ let cssTag = '';
291
+ if ((await runtime.query('/main.css')).status !== 404) {
292
+ cssTag = '\n <link rel="stylesheet" href="/main.css">';
293
+ }
294
+
295
+ const needsJs = spa !== 'none';
296
+
297
+ let importMapHtml = '';
298
+ if (needsJs) {
299
+ const mapResponse = await runtime.query('/importmap.json');
300
+ if (mapResponse.status !== 404) {
301
+ const importMap = await mapResponse.text();
302
+ importMapHtml = `\n <script type="importmap">\n${importMap}\n </script>`;
303
+ }
304
+ }
305
+
306
+ let scriptHtml = '';
307
+ if (needsJs && (await runtime.query('/app.js')).status !== 404) {
308
+ scriptHtml = '\n <script type="module" src="/app.js"></script>';
309
+ }
310
+
282
311
  return `<!DOCTYPE html>
283
312
  <html>
284
313
  <head>${baseTag}
285
314
  <meta charset="utf-8">
286
315
  <meta name="viewport" content="width=device-width, initial-scale=1">
287
316
  <title>${escapeHtml(title)}</title>
288
- <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>
317
+ <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>${cssTag}
289
318
  </head>
290
319
  <body>
291
- <router-slot></router-slot>
320
+ <router-slot></router-slot>${importMapHtml}${scriptHtml}
292
321
  </body>
293
322
  </html>`;
294
323
  }
@@ -315,10 +344,11 @@ export class Emroute {
315
344
  private static async resolveShell(
316
345
  runtime: Runtime,
317
346
  title: string,
318
- htmlBase: string,
347
+ basePath: string,
348
+ spa: SpaMode,
319
349
  ): Promise<string> {
320
350
  const response = await runtime.query('/index.html');
321
351
  if (response.status !== 404) return await response.text();
322
- return Emroute.buildHtmlShell(title, htmlBase);
352
+ return Emroute.buildHtmlShell(runtime, title, basePath, spa);
323
353
  }
324
354
  }
@@ -54,13 +54,17 @@ export class Emroute {
54
54
  ...(config.moduleLoaders ? { moduleLoaders: config.moduleLoaders } : {}),
55
55
  });
56
56
  // ── Widgets ───────────────────────────────────────────────────────
57
- let widgets = config.widgets;
57
+ let widgets;
58
58
  const widgetsResponse = await runtime.query(WIDGETS_MANIFEST_PATH);
59
59
  if (widgetsResponse.status !== 404) {
60
60
  const entries = await widgetsResponse.json();
61
- if (!config.widgets) {
62
- widgets = await Emroute.importWidgets(entries, runtime);
63
- }
61
+ widgets = await Emroute.importWidgets(entries, runtime);
62
+ }
63
+ if (config.widgets) {
64
+ if (!widgets)
65
+ widgets = new WidgetRegistry();
66
+ for (const w of config.widgets)
67
+ widgets.add(w);
64
68
  }
65
69
  // ── Renderers ─────────────────────────────────────────────────────
66
70
  let ssrHtmlRenderer = null;
@@ -77,10 +81,7 @@ export class Emroute {
77
81
  // ── HTML shell ────────────────────────────────────────────────────
78
82
  const title = config.title ?? 'emroute';
79
83
  const shellBase = (spa === 'root' || spa === 'only') ? appBase : htmlBase;
80
- let shell = await Emroute.resolveShell(runtime, title, shellBase);
81
- if ((await runtime.query('/main.css')).status !== 404) {
82
- shell = shell.replace('</head>', ' <link rel="stylesheet" href="/main.css">\n</head>');
83
- }
84
+ const shell = await Emroute.resolveShell(runtime, title, shellBase, spa);
84
85
  return new Emroute(ssrHtmlRenderer, ssrMdRenderer, shell, runtime, htmlBase, mdBase, appBase, spa, title);
85
86
  }
86
87
  // ── handleRequest ─────────────────────────────────────────────────
@@ -149,13 +150,13 @@ export class Emroute {
149
150
  headers: { 'Content-Type': 'text/html; charset=utf-8' },
150
151
  });
151
152
  }
152
- // Unhandled SSR paths in 'only' mode — serve shell
153
+ // Unhandled SSR paths in 'only' mode — redirect to /app/
153
154
  if (pathname.startsWith(htmlPrefix) || pathname === this.htmlBase ||
154
155
  pathname.startsWith(mdPrefix) || pathname === this.mdBase) {
155
- return new Response(this.shell, {
156
- status: 200,
157
- headers: { 'Content-Type': 'text/html; charset=utf-8' },
158
- });
156
+ const routePath = pathname.startsWith(htmlPrefix) ? pathname.slice(this.htmlBase.length)
157
+ : pathname.startsWith(mdPrefix) ? pathname.slice(this.mdBase.length)
158
+ : '/';
159
+ return Response.redirect(new URL(this.appBase + routePath + (url.search || ''), url.origin), 302);
159
160
  }
160
161
  // Static files
161
162
  const lastSegment = pathname.split('/').pop() ?? '';
@@ -203,18 +204,35 @@ export class Emroute {
203
204
  }
204
205
  return registry;
205
206
  }
206
- static buildHtmlShell(title, htmlBase) {
207
- const baseTag = htmlBase ? `\n <base href="${escapeHtml(htmlBase)}/">` : '';
207
+ static async buildHtmlShell(runtime, title, basePath, spa) {
208
+ const baseTag = basePath ? `\n <base href="${escapeHtml(basePath)}/">` : '';
209
+ let cssTag = '';
210
+ if ((await runtime.query('/main.css')).status !== 404) {
211
+ cssTag = '\n <link rel="stylesheet" href="/main.css">';
212
+ }
213
+ const needsJs = spa !== 'none';
214
+ let importMapHtml = '';
215
+ if (needsJs) {
216
+ const mapResponse = await runtime.query('/importmap.json');
217
+ if (mapResponse.status !== 404) {
218
+ const importMap = await mapResponse.text();
219
+ importMapHtml = `\n <script type="importmap">\n${importMap}\n </script>`;
220
+ }
221
+ }
222
+ let scriptHtml = '';
223
+ if (needsJs && (await runtime.query('/app.js')).status !== 404) {
224
+ scriptHtml = '\n <script type="module" src="/app.js"></script>';
225
+ }
208
226
  return `<!DOCTYPE html>
209
227
  <html>
210
228
  <head>${baseTag}
211
229
  <meta charset="utf-8">
212
230
  <meta name="viewport" content="width=device-width, initial-scale=1">
213
231
  <title>${escapeHtml(title)}</title>
214
- <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>
232
+ <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>${cssTag}
215
233
  </head>
216
234
  <body>
217
- <router-slot></router-slot>
235
+ <router-slot></router-slot>${importMapHtml}${scriptHtml}
218
236
  </body>
219
237
  </html>`;
220
238
  }
@@ -229,11 +247,11 @@ export class Emroute {
229
247
  }
230
248
  return html;
231
249
  }
232
- static async resolveShell(runtime, title, htmlBase) {
250
+ static async resolveShell(runtime, title, basePath, spa) {
233
251
  const response = await runtime.query('/index.html');
234
252
  if (response.status !== 404)
235
253
  return await response.text();
236
- return Emroute.buildHtmlShell(title, htmlBase);
254
+ return Emroute.buildHtmlShell(runtime, title, basePath, spa);
237
255
  }
238
256
  }
239
257
  //# sourceMappingURL=emroute.server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emroute.server.js","sourceRoot":"","sources":["../../../core/server/emroute.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emroute.server.js","sourceRoot":"","sources":["../../../core/server/emroute.server.ts"],"names":[],"mappings":"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"}
package/dist/emroute.js CHANGED
@@ -1430,13 +1430,17 @@ class Emroute {
1430
1430
  ...config.extendContext ? { contextProvider: config.extendContext } : {},
1431
1431
  ...config.moduleLoaders ? { moduleLoaders: config.moduleLoaders } : {}
1432
1432
  });
1433
- let widgets = config.widgets;
1433
+ let widgets;
1434
1434
  const widgetsResponse = await runtime.query(WIDGETS_MANIFEST_PATH);
1435
1435
  if (widgetsResponse.status !== 404) {
1436
1436
  const entries = await widgetsResponse.json();
1437
- if (!config.widgets) {
1438
- widgets = await Emroute.importWidgets(entries, runtime);
1439
- }
1437
+ widgets = await Emroute.importWidgets(entries, runtime);
1438
+ }
1439
+ if (config.widgets) {
1440
+ if (!widgets)
1441
+ widgets = new WidgetRegistry;
1442
+ for (const w of config.widgets)
1443
+ widgets.add(w);
1440
1444
  }
1441
1445
  let ssrHtmlRenderer = null;
1442
1446
  let ssrMdRenderer = null;
@@ -1451,11 +1455,7 @@ class Emroute {
1451
1455
  }
1452
1456
  const title = config.title ?? "emroute";
1453
1457
  const shellBase = spa === "root" || spa === "only" ? appBase : htmlBase;
1454
- let shell = await Emroute.resolveShell(runtime, title, shellBase);
1455
- if ((await runtime.query("/main.css")).status !== 404) {
1456
- shell = shell.replace("</head>", ` <link rel="stylesheet" href="/main.css">
1457
- </head>`);
1458
- }
1458
+ const shell = await Emroute.resolveShell(runtime, title, shellBase, spa);
1459
1459
  return new Emroute(ssrHtmlRenderer, ssrMdRenderer, shell, runtime, htmlBase, mdBase, appBase, spa, title);
1460
1460
  }
1461
1461
  async handleRequest(req) {
@@ -1517,10 +1517,8 @@ class Emroute {
1517
1517
  });
1518
1518
  }
1519
1519
  if (pathname.startsWith(htmlPrefix) || pathname === this.htmlBase || pathname.startsWith(mdPrefix) || pathname === this.mdBase) {
1520
- return new Response(this.shell, {
1521
- status: 200,
1522
- headers: { "Content-Type": "text/html; charset=utf-8" }
1523
- });
1520
+ const routePath = pathname.startsWith(htmlPrefix) ? pathname.slice(this.htmlBase.length) : pathname.startsWith(mdPrefix) ? pathname.slice(this.mdBase.length) : "/";
1521
+ return Response.redirect(new URL(this.appBase + routePath + (url.search || ""), url.origin), 302);
1524
1522
  }
1525
1523
  const lastSegment = pathname.split("/").pop() ?? "";
1526
1524
  if (lastSegment.includes(".")) {
@@ -1562,19 +1560,41 @@ class Emroute {
1562
1560
  }
1563
1561
  return registry;
1564
1562
  }
1565
- static buildHtmlShell(title, htmlBase) {
1566
- const baseTag = htmlBase ? `
1567
- <base href="${escapeHtml(htmlBase)}/">` : "";
1563
+ static async buildHtmlShell(runtime, title, basePath, spa) {
1564
+ const baseTag = basePath ? `
1565
+ <base href="${escapeHtml(basePath)}/">` : "";
1566
+ let cssTag = "";
1567
+ if ((await runtime.query("/main.css")).status !== 404) {
1568
+ cssTag = `
1569
+ <link rel="stylesheet" href="/main.css">`;
1570
+ }
1571
+ const needsJs = spa !== "none";
1572
+ let importMapHtml = "";
1573
+ if (needsJs) {
1574
+ const mapResponse = await runtime.query("/importmap.json");
1575
+ if (mapResponse.status !== 404) {
1576
+ const importMap = await mapResponse.text();
1577
+ importMapHtml = `
1578
+ <script type="importmap">
1579
+ ${importMap}
1580
+ </script>`;
1581
+ }
1582
+ }
1583
+ let scriptHtml = "";
1584
+ if (needsJs && (await runtime.query("/app.js")).status !== 404) {
1585
+ scriptHtml = `
1586
+ <script type="module" src="/app.js"></script>`;
1587
+ }
1568
1588
  return `<!DOCTYPE html>
1569
1589
  <html>
1570
1590
  <head>${baseTag}
1571
1591
  <meta charset="utf-8">
1572
1592
  <meta name="viewport" content="width=device-width, initial-scale=1">
1573
1593
  <title>${escapeHtml(title)}</title>
1574
- <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>
1594
+ <style>@view-transition { navigation: auto; } router-slot { display: contents; }</style>${cssTag}
1575
1595
  </head>
1576
1596
  <body>
1577
- <router-slot></router-slot>
1597
+ <router-slot></router-slot>${importMapHtml}${scriptHtml}
1578
1598
  </body>
1579
1599
  </html>`;
1580
1600
  }
@@ -1589,11 +1609,11 @@ class Emroute {
1589
1609
  }
1590
1610
  return html;
1591
1611
  }
1592
- static async resolveShell(runtime, title, htmlBase) {
1612
+ static async resolveShell(runtime, title, basePath, spa) {
1593
1613
  const response = await runtime.query("/index.html");
1594
1614
  if (response.status !== 404)
1595
1615
  return await response.text();
1596
- return Emroute.buildHtmlShell(title, htmlBase);
1616
+ return Emroute.buildHtmlShell(runtime, title, basePath, spa);
1597
1617
  }
1598
1618
  }
1599
1619
 
@@ -2153,11 +2173,15 @@ export const __files = { ${entries} };
2153
2173
  };
2154
2174
  const files = {};
2155
2175
  let hasFiles = false;
2156
- for (const ext of COMPANION_EXTENSIONS) {
2176
+ const companionResults = await Promise.all(COMPANION_EXTENSIONS.map(async (ext) => {
2157
2177
  const companionFile = `${name}.widget.${ext}`;
2158
2178
  const companionPath = `${trailingDir}${name}/${companionFile}`;
2159
- if ((await this.query(companionPath)).status !== 404) {
2160
- files[ext] = `${prefix}${name}/${companionFile}`;
2179
+ const exists = (await this.query(companionPath)).status !== 404;
2180
+ return { ext, exists, path: `${prefix}${name}/${companionFile}` };
2181
+ }));
2182
+ for (const { ext, exists, path } of companionResults) {
2183
+ if (exists) {
2184
+ files[ext] = path;
2161
2185
  hasFiles = true;
2162
2186
  }
2163
2187
  }
@@ -2232,7 +2256,12 @@ class FetchRuntime extends Runtime {
2232
2256
  const response = await fetch(url);
2233
2257
  const js = await response.text();
2234
2258
  const blob = new Blob([js], { type: "application/javascript" });
2235
- return import(__rewriteRelativeImportExtension(URL.createObjectURL(blob)));
2259
+ const objectUrl = URL.createObjectURL(blob);
2260
+ try {
2261
+ return await import(__rewriteRelativeImportExtension(objectUrl));
2262
+ } finally {
2263
+ URL.revokeObjectURL(objectUrl);
2264
+ }
2236
2265
  }
2237
2266
  toUrl(resource) {
2238
2267
  if (typeof resource === "string")
@@ -2250,9 +2279,15 @@ class EmrouteApp {
2250
2279
  slot = null;
2251
2280
  abortController = null;
2252
2281
  constructor(server, options) {
2253
- const bp = options?.basePath ?? DEFAULT_BASE_PATH;
2254
2282
  this.server = server;
2255
- this.appBase = bp.app;
2283
+ if (options?.basePath) {
2284
+ this.appBase = options.basePath.app;
2285
+ } else if (typeof document !== "undefined") {
2286
+ const base = document.querySelector("base")?.getAttribute("href");
2287
+ this.appBase = base ? base.replace(/\/$/, "") : DEFAULT_BASE_PATH.app;
2288
+ } else {
2289
+ this.appBase = DEFAULT_BASE_PATH.app;
2290
+ }
2256
2291
  }
2257
2292
  async initialize(slotSelector = "router-slot") {
2258
2293
  this.slot = document.querySelector(slotSelector);
@@ -2640,6 +2675,62 @@ function animateDismiss(el, onDone) {
2640
2675
  el.addEventListener("transitionend", finish, { once: true });
2641
2676
  setTimeout(finish, ANIMATION_SAFETY_TIMEOUT);
2642
2677
  }
2678
+ function fillTemplate(el, options, onConfirm, onReject) {
2679
+ const msgEl = el.querySelector("[data-toast-message]");
2680
+ if (msgEl && options.message) {
2681
+ msgEl.textContent = options.message;
2682
+ }
2683
+ if (options.type) {
2684
+ el.setAttribute("data-toast-type", options.type);
2685
+ }
2686
+ const confirmBtn = el.querySelector("[data-toast-confirm]");
2687
+ if (confirmBtn) {
2688
+ if (options.confirm) {
2689
+ confirmBtn.textContent = options.confirm;
2690
+ confirmBtn.hidden = false;
2691
+ if (onConfirm)
2692
+ confirmBtn.addEventListener("click", onConfirm, { once: true });
2693
+ } else {
2694
+ confirmBtn.hidden = true;
2695
+ }
2696
+ }
2697
+ const rejectBtn = el.querySelector("[data-toast-reject]");
2698
+ if (rejectBtn) {
2699
+ if (options.reject) {
2700
+ rejectBtn.textContent = options.reject;
2701
+ rejectBtn.hidden = false;
2702
+ if (onReject)
2703
+ rejectBtn.addEventListener("click", onReject, { once: true });
2704
+ } else {
2705
+ rejectBtn.hidden = true;
2706
+ }
2707
+ }
2708
+ }
2709
+ function buildFallback(el, options, onConfirm, onReject) {
2710
+ if (options.type) {
2711
+ el.setAttribute("data-toast-type", options.type);
2712
+ }
2713
+ const span = document.createElement("span");
2714
+ span.setAttribute("data-toast-message", "");
2715
+ span.textContent = options.message ?? "";
2716
+ el.appendChild(span);
2717
+ if (options.confirm) {
2718
+ const btn = document.createElement("button");
2719
+ btn.setAttribute("data-toast-confirm", "");
2720
+ btn.textContent = options.confirm;
2721
+ if (onConfirm)
2722
+ btn.addEventListener("click", onConfirm, { once: true });
2723
+ el.appendChild(btn);
2724
+ }
2725
+ if (options.reject) {
2726
+ const btn = document.createElement("button");
2727
+ btn.setAttribute("data-toast-reject", "");
2728
+ btn.textContent = options.reject;
2729
+ if (onReject)
2730
+ btn.addEventListener("click", onReject, { once: true });
2731
+ el.appendChild(btn);
2732
+ }
2733
+ }
2643
2734
  function createOverlayService() {
2644
2735
  let styleInjected = false;
2645
2736
  let dialog = null;
@@ -2744,23 +2835,77 @@ function createOverlayService() {
2744
2835
  clearDeadToasts(container);
2745
2836
  const el = document.createElement("div");
2746
2837
  el.setAttribute("data-overlay-toast", "");
2747
- const timeout = options.timeout ?? 0;
2838
+ const isConfirmation = !!(options.confirm || options.reject);
2839
+ const timeout = isConfirmation ? 0 : options.timeout ?? 0;
2748
2840
  if (timeout === 0) {
2749
2841
  el.setAttribute("data-toast-manual", "");
2750
2842
  } else {
2751
2843
  el.style.setProperty("--overlay-toast-duration", `${timeout}ms`);
2752
2844
  }
2753
- options.render(el);
2845
+ let confirmResolve;
2846
+ let confirmPromise;
2847
+ if (isConfirmation) {
2848
+ const resolvers = Promise.withResolvers();
2849
+ confirmResolve = resolvers.resolve;
2850
+ confirmPromise = resolvers.promise;
2851
+ }
2852
+ const onConfirm = confirmResolve ? () => {
2853
+ confirmResolve(true);
2854
+ dismiss();
2855
+ } : undefined;
2856
+ const onReject = confirmResolve ? () => {
2857
+ confirmResolve(false);
2858
+ dismiss();
2859
+ } : undefined;
2860
+ if (options.render) {
2861
+ options.render(el);
2862
+ } else {
2863
+ const template = document.querySelector("#overlay-toast");
2864
+ if (template) {
2865
+ const clone = template.content.cloneNode(true);
2866
+ el.appendChild(clone);
2867
+ fillTemplate(el, options, onConfirm, onReject);
2868
+ } else {
2869
+ buildFallback(el, options, onConfirm, onReject);
2870
+ }
2871
+ }
2754
2872
  container.appendChild(el);
2873
+ const id = performance.now();
2755
2874
  let dismissed = false;
2756
- const dismiss = () => {
2875
+ function dismiss() {
2757
2876
  if (dismissed)
2758
2877
  return;
2759
2878
  dismissed = true;
2760
2879
  el.setAttribute("data-dismissing", "");
2761
- };
2762
- return { dismiss };
2880
+ }
2881
+ function update(opts) {
2882
+ if (opts.message !== undefined) {
2883
+ const msgEl = el.querySelector("[data-toast-message]");
2884
+ if (msgEl)
2885
+ msgEl.textContent = opts.message;
2886
+ }
2887
+ if (opts.type !== undefined) {
2888
+ el.setAttribute("data-toast-type", opts.type);
2889
+ }
2890
+ if (opts.timeout !== undefined) {
2891
+ el.style.setProperty("--overlay-toast-duration", `${opts.timeout}ms`);
2892
+ if (opts.timeout === 0) {
2893
+ el.setAttribute("data-toast-manual", "");
2894
+ } else {
2895
+ el.removeAttribute("data-toast-manual");
2896
+ }
2897
+ }
2898
+ }
2899
+ const handle = { id, dismiss, update };
2900
+ if (confirmPromise) {
2901
+ handle.then = confirmPromise.then.bind(confirmPromise);
2902
+ }
2903
+ return handle;
2763
2904
  }
2905
+ toast.success = (message, timeout) => toast({ message, type: "success", timeout: timeout ?? 5000 });
2906
+ toast.error = (message, timeout) => toast({ message, type: "error", timeout: timeout ?? 5000 });
2907
+ toast.warning = (message, timeout) => toast({ message, type: "warning", timeout: timeout ?? 5000 });
2908
+ toast.info = (message, timeout) => toast({ message, type: "info", timeout: timeout ?? 5000 });
2764
2909
  function popover(options) {
2765
2910
  const el = ensurePopover();
2766
2911
  cleanupPopoverAnchorObserver();
@@ -2966,5 +3111,5 @@ export {
2966
3111
  BreadcrumbWidget
2967
3112
  };
2968
3113
 
2969
- //# debugId=17326B11EDF4A5C864756E2164756E21
3114
+ //# debugId=AF103AF6F8C1794764756E2164756E21
2970
3115
  //# sourceMappingURL=emroute.js.map