@tanstack/solid-router 1.111.11 → 1.111.14

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.
@@ -33,20 +33,16 @@ function useAwaited({
33
33
  return [promise[routerCore.TSR_DEFERRED_PROMISE].data, promise];
34
34
  }
35
35
  function Await(props) {
36
- const inner = web.createComponent(AwaitInner, props);
37
- if (props.fallback) {
38
- return web.createComponent(Solid__namespace.Suspense, {
39
- get fallback() {
40
- return props.fallback;
41
- },
42
- children: inner
43
- });
44
- }
45
- return inner;
46
- }
47
- function AwaitInner(props) {
48
- const [data] = useAwaited(props);
49
- return props.children(data);
36
+ const [resource] = Solid__namespace.createResource(() => props.promise);
37
+ return web.createComponent(Solid__namespace.Show, {
38
+ get fallback() {
39
+ return props.fallback;
40
+ },
41
+ get when() {
42
+ return resource();
43
+ },
44
+ children: (data) => props.children(data())
45
+ });
50
46
  }
51
47
  exports.Await = Await;
52
48
  exports.useAwaited = useAwaited;
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.cjs","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const inner = <AwaitInner {...props} />\n if (props.fallback) {\n return <Solid.Suspense fallback={props.fallback}>{inner}</Solid.Suspense>\n }\n return inner\n}\n\nfunction AwaitInner<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n): Solid.JSX.Element {\n const [data] = useAwaited(props)\n\n return props.children(data)\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","inner","_$createComponent","AwaitInner","fallback","Solid","Suspense","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AACrCD,QAAAA,UAAUE,iBAAMD,QAAQ;AAE9B,MAAID,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,WAAW;AAChDJ,UAAAA;AAAAA,EAAAA;AAGR,MAAIA,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,SAAS;AAC9CJ,UAAAA,QAAQG,WAAoB,oBAAA,EAAEE;AAAAA,EAAAA;AAGtC,SAAO,CAACL,QAAQG,WAAAA,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACMC,QAAAA,QAAKC,IAAAA,gBAAIC,YAAeH,KAAK;AACnC,MAAIA,MAAMI,UAAU;AAClBF,WAAAA,IAAAA,gBAAQG,iBAAMC,UAAQ;AAAA,MAAA,IAACF,WAAQ;AAAA,eAAEJ,MAAMI;AAAAA,MAAQ;AAAA,MAAAG,UAAGN;AAAAA,IAAAA,CAAK;AAAA,EAAA;AAElDA,SAAAA;AACT;AAEA,SAASE,WACPH,OAImB;AACnB,QAAM,CAACF,IAAI,IAAIP,WAAWS,KAAK;AAExBA,SAAAA,MAAMO,SAAST,IAAI;AAC5B;;;"}
1
+ {"version":3,"file":"awaited.cjs","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(() => props.promise)\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","resource","Solid","createResource","_$createComponent","Show","fallback","when","children"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AACrCD,QAAAA,UAAUE,iBAAMD,QAAQ;AAE9B,MAAID,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,WAAW;AAChDJ,UAAAA;AAAAA,EAAAA;AAGR,MAAIA,QAAQG,WAAAA,oBAAoB,EAAEC,WAAW,SAAS;AAC9CJ,UAAAA,QAAQG,WAAoB,oBAAA,EAAEE;AAAAA,EAAAA;AAGtC,SAAO,CAACL,QAAQG,WAAAA,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACA,QAAM,CAACC,QAAQ,IAAIC,iBAAMC,eAAe,MAAMH,MAAMR,OAAO;AAE3DY,SAAAA,IAAAA,gBACGF,iBAAMG,MAAI;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAEN,MAAMM;AAAAA,IAAQ;AAAA,IAAA,IAAEC,OAAI;AAAA,aAAEN,SAAS;AAAA,IAAC;AAAA,IAAAO,UAClDV,CAAAA,SAASE,MAAMQ,SAASV,KAAM,CAAA;AAAA,EAAA,CAAC;AAGvC;;;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const web = require("solid-js/web");
4
+ const Solid = require("solid-js");
4
5
  const Match = require("./Match.cjs");
5
6
  function isModuleNotFoundError(error) {
6
7
  return typeof (error == null ? void 0 : error.message) === "string" && /Failed to fetch dynamically imported module/.test(error.message);
@@ -18,12 +19,13 @@ function lazyRouteComponent(importer, exportName, ssr) {
18
19
  const load = () => {
19
20
  if (typeof document === "undefined" && (ssr == null ? void 0 : ssr()) === false) {
20
21
  comp = () => null;
21
- return Promise.resolve();
22
+ return Promise.resolve(comp);
22
23
  }
23
24
  if (!loadPromise) {
24
25
  loadPromise = importer().then((res) => {
25
26
  loadPromise = void 0;
26
27
  comp = res[exportName ?? "default"];
28
+ return comp;
27
29
  }).catch((err) => {
28
30
  error = err;
29
31
  });
@@ -46,9 +48,10 @@ function lazyRouteComponent(importer, exportName, ssr) {
46
48
  }
47
49
  throw error;
48
50
  }
49
- if (!comp) {
50
- throw load();
51
- }
51
+ const [compResource] = Solid.createResource(load, {
52
+ initialValue: comp,
53
+ ssrLoadFrom: "initial"
54
+ });
52
55
  if ((ssr == null ? void 0 : ssr()) === false) {
53
56
  return web.createComponent(ClientOnly, {
54
57
  get fallback() {
@@ -56,13 +59,17 @@ function lazyRouteComponent(importer, exportName, ssr) {
56
59
  },
57
60
  get children() {
58
61
  return web.createComponent(web.Dynamic, web.mergeProps({
59
- component: comp
62
+ get component() {
63
+ return compResource();
64
+ }
60
65
  }, props));
61
66
  }
62
67
  });
63
68
  }
64
69
  return web.createComponent(web.Dynamic, web.mergeProps({
65
- component: comp
70
+ get component() {
71
+ return compResource();
72
+ }
66
73
  }, props));
67
74
  };
68
75
  lazyComp.preload = load;
@@ -1 +1 @@
1
- {"version":3,"file":"lazyRouteComponent.cjs","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import { Dynamic, isServer } from 'solid-js/web'\nimport { Outlet } from './Match'\nimport type * as Solid from 'solid-js'\nimport type { AsyncRouteComponent } from './route'\n\n// If the load fails due to module not found, it may mean a new version of\n// the build was deployed and the user's browser is still using an old version.\n// If this happens, the old version in the user's browser would have an outdated\n// URL to the lazy module.\n// In that case, we want to attempt one window refresh to get the latest.\nfunction isModuleNotFoundError(error: any): boolean {\n return (\n typeof error?.message === 'string' &&\n /Failed to fetch dynamically imported module/.test(error.message)\n )\n}\n\nexport function ClientOnly(\n props: Solid.ParentProps<{ fallback?: Solid.JSX.Element }>,\n) {\n return useHydrated() ? <>{props.children}</> : <>{props.fallback}</>\n}\n\nexport function useHydrated() {\n return isServer\n}\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n ssr?: () => boolean,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default']\n let error: any\n\n const load = () => {\n if (typeof document === 'undefined' && ssr?.() === false) {\n comp = (() => null) as any\n return Promise.resolve()\n }\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n })\n .catch((err) => {\n error = err\n })\n }\n\n return loadPromise\n }\n\n const lazyComp = function Lazy(props: any) {\n // Now that we're out of preload and into actual render path,\n // throw the error if it was a module not found error during preload\n if (error) {\n if (isModuleNotFoundError(error)) {\n // We don't want an error thrown from preload in this case, because\n // there's nothing we want to do about module not found during preload.\n // Record the error, recover the promise with a null return,\n // and we will attempt module not found resolution during the render path.\n\n if (\n error instanceof Error &&\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Again, we want to reload one time on module not found error and not enter\n // a reload loop if there is some other issue besides an old deploy.\n // That's why we store our reload attempt in sessionStorage.\n // Use error.message as key because it contains the module path that failed.\n const storageKey = `tanstack_router_reload:${error.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n window.location.reload()\n\n // Return empty component while we wait for window to reload\n return {\n default: () => null,\n }\n }\n }\n }\n\n // Otherwise, just throw the error\n throw error\n }\n\n if (!comp) {\n throw load()\n }\n\n if (ssr?.() === false) {\n return (\n <ClientOnly fallback={<Outlet />}>\n <Dynamic component={comp} {...props} />\n </ClientOnly>\n )\n }\n return <Dynamic component={comp} {...props} />\n }\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"names":["isModuleNotFoundError","error","message","test","ClientOnly","props","useHydrated","_$memo","children","fallback","isServer","lazyRouteComponent","importer","exportName","ssr","loadPromise","comp","load","document","Promise","resolve","then","res","undefined","catch","err","lazyComp","Lazy","Error","window","sessionStorage","storageKey","getItem","setItem","location","reload","default","_$createComponent","Outlet","Dynamic","_$mergeProps","component","preload"],"mappings":";;;;AAUA,SAASA,sBAAsBC,OAAqB;AAClD,SACE,QAAOA,+BAAOC,aAAY,YAC1B,8CAA8CC,KAAKF,MAAMC,OAAO;AAEpE;AAEO,SAASE,WACdC,OACA;AACOC,SAAAA,YAAAA,IAAaC,IAAAA,KAAMF,MAAAA,MAAMG,QAAQ,IAAAD,IAAAA,KAAA,MAAUF,MAAMI,QAAQ;AAClE;AAEO,SAASH,cAAc;AACrBI,SAAAA,IAAAA;AACT;AAEgBC,SAAAA,mBAIdC,UACAC,YACAC,KAGQ;AACJC,MAAAA;AACAC,MAAAA;AACAf,MAAAA;AAEJ,QAAMgB,OAAOA,MAAM;AACjB,QAAI,OAAOC,aAAa,gBAAeJ,kCAAY,OAAO;AACxDE,aAAQ,MAAM;AACd,aAAOG,QAAQC,QAAQ;AAAA,IAAA;AAEzB,QAAI,CAACL,aAAa;AACFH,oBAAAA,SAAAA,EACXS,KAAMC,CAAQ,QAAA;AACCC,sBAAAA;AACPD,eAAAA,IAAIT,cAAc,SAAS;AAAA,MAAA,CACnC,EACAW,MAAOC,CAAQ,QAAA;AACNA,gBAAAA;AAAAA,MAAAA,CACT;AAAA,IAAA;AAGEV,WAAAA;AAAAA,EACT;AAEMW,QAAAA,WAAW,SAASC,KAAKtB,OAAY;AAGzC,QAAIJ,OAAO;AACLD,UAAAA,sBAAsBC,KAAK,GAAG;AAMhC,YACEA,iBAAiB2B,SACjB,OAAOC,WAAW,eAClB,OAAOC,mBAAmB,aAC1B;AAKMC,gBAAAA,aAAa,0BAA0B9B,MAAMC,OAAO;AAC1D,cAAI,CAAC4B,eAAeE,QAAQD,UAAU,GAAG;AACxBE,2BAAAA,QAAQF,YAAY,GAAG;AACtCF,mBAAOK,SAASC,OAAO;AAGhB,mBAAA;AAAA,cACLC,SAASA,MAAM;AAAA,YACjB;AAAA,UAAA;AAAA,QACF;AAAA,MACF;AAIInC,YAAAA;AAAAA,IAAAA;AAGR,QAAI,CAACe,MAAM;AACT,YAAMC,KAAK;AAAA,IAAA;AAGTH,SAAAA,kCAAY,OAAO;AACrB,aAAAuB,IAAAA,gBACGjC,YAAU;AAAA,QAAA,IAACK,WAAQ;AAAA4B,iBAAAA,IAAAA,gBAAGC,MAAM,QAAA,EAAA;AAAA,QAAA;AAAA,QAAA,IAAA9B,WAAA;AAAA6B,iBAAAA,IAAAA,gBAC1BE,aAAOC,eAAA;AAAA,YAACC,WAAWzB;AAAAA,UAAI,GAAMX,KAAK,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAIzCgC,WAAAA,IAAAA,gBAAQE,aAAOC,eAAA;AAAA,MAACC,WAAWzB;AAAAA,IAAI,GAAMX,KAAK,CAAA;AAAA,EAC5C;AAEEqB,WAAiBgB,UAAUzB;AAEtBS,SAAAA;AACT;;;;"}
1
+ {"version":3,"file":"lazyRouteComponent.cjs","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import { Dynamic, isServer } from 'solid-js/web'\nimport { createResource } from 'solid-js'\nimport { Outlet } from './Match'\nimport type * as Solid from 'solid-js'\nimport type { AsyncRouteComponent } from './route'\n\n// If the load fails due to module not found, it may mean a new version of\n// the build was deployed and the user's browser is still using an old version.\n// If this happens, the old version in the user's browser would have an outdated\n// URL to the lazy module.\n// In that case, we want to attempt one window refresh to get the latest.\nfunction isModuleNotFoundError(error: any): boolean {\n return (\n typeof error?.message === 'string' &&\n /Failed to fetch dynamically imported module/.test(error.message)\n )\n}\n\nexport function ClientOnly(\n props: Solid.ParentProps<{ fallback?: Solid.JSX.Element }>,\n) {\n return useHydrated() ? <>{props.children}</> : <>{props.fallback}</>\n}\n\nexport function useHydrated() {\n return isServer\n}\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n ssr?: () => boolean,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default']\n let error: any\n\n const load = () => {\n if (typeof document === 'undefined' && ssr?.() === false) {\n comp = (() => null) as any\n return Promise.resolve(comp)\n }\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n return comp\n })\n .catch((err) => {\n error = err\n })\n }\n\n return loadPromise\n }\n\n const lazyComp = function Lazy(props: any) {\n // Now that we're out of preload and into actual render path,\n // throw the error if it was a module not found error during preload\n if (error) {\n if (isModuleNotFoundError(error)) {\n // We don't want an error thrown from preload in this case, because\n // there's nothing we want to do about module not found during preload.\n // Record the error, recover the promise with a null return,\n // and we will attempt module not found resolution during the render path.\n\n if (\n error instanceof Error &&\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Again, we want to reload one time on module not found error and not enter\n // a reload loop if there is some other issue besides an old deploy.\n // That's why we store our reload attempt in sessionStorage.\n // Use error.message as key because it contains the module path that failed.\n const storageKey = `tanstack_router_reload:${error.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n window.location.reload()\n\n // Return empty component while we wait for window to reload\n return {\n default: () => null,\n }\n }\n }\n }\n\n // Otherwise, just throw the error\n throw error\n }\n\n const [compResource] = createResource(load, {\n initialValue: comp,\n ssrLoadFrom: 'initial',\n })\n\n if (ssr?.() === false) {\n return (\n <ClientOnly fallback={<Outlet />}>\n <Dynamic component={compResource()} {...props} />\n </ClientOnly>\n )\n }\n return <Dynamic component={compResource()} {...props} />\n }\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"names":["isModuleNotFoundError","error","message","test","ClientOnly","props","useHydrated","_$memo","children","fallback","isServer","lazyRouteComponent","importer","exportName","ssr","loadPromise","comp","load","document","Promise","resolve","then","res","undefined","catch","err","lazyComp","Lazy","Error","window","sessionStorage","storageKey","getItem","setItem","location","reload","default","compResource","createResource","initialValue","ssrLoadFrom","_$createComponent","Outlet","Dynamic","_$mergeProps","component","preload"],"mappings":";;;;;AAWA,SAASA,sBAAsBC,OAAqB;AAClD,SACE,QAAOA,+BAAOC,aAAY,YAC1B,8CAA8CC,KAAKF,MAAMC,OAAO;AAEpE;AAEO,SAASE,WACdC,OACA;AACOC,SAAAA,YAAAA,IAAaC,IAAAA,KAAMF,MAAAA,MAAMG,QAAQ,IAAAD,IAAAA,KAAA,MAAUF,MAAMI,QAAQ;AAClE;AAEO,SAASH,cAAc;AACrBI,SAAAA,IAAAA;AACT;AAEgBC,SAAAA,mBAIdC,UACAC,YACAC,KAGQ;AACJC,MAAAA;AACAC,MAAAA;AACAf,MAAAA;AAEJ,QAAMgB,OAAOA,MAAM;AACjB,QAAI,OAAOC,aAAa,gBAAeJ,kCAAY,OAAO;AACxDE,aAAQ,MAAM;AACPG,aAAAA,QAAQC,QAAQJ,IAAI;AAAA,IAAA;AAE7B,QAAI,CAACD,aAAa;AACFH,oBAAAA,SAAAA,EACXS,KAAMC,CAAQ,QAAA;AACCC,sBAAAA;AACPD,eAAAA,IAAIT,cAAc,SAAS;AAC3BG,eAAAA;AAAAA,MAAAA,CACR,EACAQ,MAAOC,CAAQ,QAAA;AACNA,gBAAAA;AAAAA,MAAAA,CACT;AAAA,IAAA;AAGEV,WAAAA;AAAAA,EACT;AAEMW,QAAAA,WAAW,SAASC,KAAKtB,OAAY;AAGzC,QAAIJ,OAAO;AACLD,UAAAA,sBAAsBC,KAAK,GAAG;AAMhC,YACEA,iBAAiB2B,SACjB,OAAOC,WAAW,eAClB,OAAOC,mBAAmB,aAC1B;AAKMC,gBAAAA,aAAa,0BAA0B9B,MAAMC,OAAO;AAC1D,cAAI,CAAC4B,eAAeE,QAAQD,UAAU,GAAG;AACxBE,2BAAAA,QAAQF,YAAY,GAAG;AACtCF,mBAAOK,SAASC,OAAO;AAGhB,mBAAA;AAAA,cACLC,SAASA,MAAM;AAAA,YACjB;AAAA,UAAA;AAAA,QACF;AAAA,MACF;AAIInC,YAAAA;AAAAA,IAAAA;AAGR,UAAM,CAACoC,YAAY,IAAIC,MAAAA,eAAerB,MAAM;AAAA,MAC1CsB,cAAcvB;AAAAA,MACdwB,aAAa;AAAA,IAAA,CACd;AAEG1B,SAAAA,kCAAY,OAAO;AACrB,aAAA2B,IAAAA,gBACGrC,YAAU;AAAA,QAAA,IAACK,WAAQ;AAAAgC,iBAAAA,IAAAA,gBAAGC,MAAM,QAAA,EAAA;AAAA,QAAA;AAAA,QAAA,IAAAlC,WAAA;AAAAiC,iBAAAA,IAAAA,gBAC1BE,aAAOC,eAAA;AAAA,YAAA,IAACC,YAAS;AAAA,qBAAER,aAAa;AAAA,YAAA;AAAA,UAAC,GAAMhC,KAAK,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAInDoC,WAAAA,IAAAA,gBAAQE,aAAOC,eAAA;AAAA,MAAA,IAACC,YAAS;AAAA,eAAER,aAAa;AAAA,MAAA;AAAA,IAAC,GAAMhC,KAAK,CAAA;AAAA,EACtD;AAEEqB,WAAiBoB,UAAU7B;AAEtBS,SAAAA;AACT;;;;"}
package/dist/cjs/link.cjs CHANGED
@@ -255,9 +255,6 @@ const Link = (props) => {
255
255
  return linkProps["data-status"] === "active";
256
256
  }
257
257
  }) : rest.children;
258
- if (typeof local._asChild === "undefined") {
259
- delete linkProps.disabled;
260
- }
261
258
  return web.createComponent(web.Dynamic, web.mergeProps({
262
259
  get component() {
263
260
  return local._asChild ? local._asChild : "a";
@@ -1 +1 @@
1
- {"version":3,"file":"link.cjs","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport { useMatch } from './useMatch'\nimport type {\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type { AnyRouter, RegisteredRouter } from './router'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\nexport function useLinkProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(\n options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n ])\n\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\n }\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n // In the rare event that the user bypasses type-safety and doesn't supply a `from`\n // we'll use the current route as the `from` location so relative routing works as expected\n const parentRouteId = useMatch({ strict: false, select: (s) => s.pathname })\n\n // Use it as the default `from` location\n options = {\n from: parentRouteId(),\n ...options,\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(options as any)\n })\n\n const preload = Solid.createMemo(() => {\n if (options.reloadDocument) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath,\n ).split('/')\n const nextPathSplit = removeTrailingSlash(\n next()?.pathname,\n router.basepath,\n )?.split('/')\n\n const pathIsFuzzyEqual = nextPathSplit?.every(\n (d, i) => d === currentPathSplit[i],\n )\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(options as any).catch((err: any) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n\n const preloadViewportIoCallback = (\n entry: IntersectionObserverEntry | undefined,\n ) => {\n if (entry?.isIntersecting) {\n doPreload()\n }\n }\n\n const [ref, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\n },\n Solid.splitProps(local, [\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n return router.navigate({\n ...options,\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n } as any)\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return options.disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: href(),\n ref: mergeRefs(setRef, options.ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),\n ...(resolvedClassName() && { class: resolvedClassName() }),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\nexport type UseLinkPropsOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\n\nexport type ActiveLinkOptions<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n ActiveLinkOptionProps<TComp>\n\ntype ActiveLinkProps<TComp> = Partial<\n LinkComponentSolidProps<TComp> & {\n [key: `data-${string}`]: unknown\n }\n>\n\nexport interface ActiveLinkOptionProps<TComp = 'a'> {\n /**\n * A function that returns additional props for the `active` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n activeProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n /**\n * A function that returns additional props for the `inactive` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n inactiveProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n}\n\nexport type LinkProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n LinkPropsChildren\n\nexport interface LinkPropsChildren {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\n\nexport type LinkComponentProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkComponentSolidProps<TComp> &\n LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type CreateLinkProps = LinkProps<\n any,\n any,\n string,\n string,\n string,\n string\n>\n\nexport type LinkComponent<TComp> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Solid.JSX.Element\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...(props as any)} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props: any) => {\n const [local, rest] = Solid.splitProps(props, ['_asChild'])\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type', 'children'],\n )\n\n const children = () =>\n typeof rest.children === 'function'\n ? rest.children({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n })\n : rest.children\n\n if (typeof local._asChild === 'undefined') {\n // the Retlocal.urnType of useLinkProps returns the correct type for a <a> element, not a general component that has a disabled prop\n // @ts-expect-error\n delete linkProps.disabled\n }\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","parentRouteId","useMatch","strict","pathname","from","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","nextLocation","maskedLocation","undefined","history","createHref","mergeRefs","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
1
+ {"version":3,"file":"link.cjs","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport { useMatch } from './useMatch'\nimport type {\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type { AnyRouter, RegisteredRouter } from './router'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\nexport function useLinkProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(\n options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n ])\n\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\n }\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n // In the rare event that the user bypasses type-safety and doesn't supply a `from`\n // we'll use the current route as the `from` location so relative routing works as expected\n const parentRouteId = useMatch({ strict: false, select: (s) => s.pathname })\n\n // Use it as the default `from` location\n options = {\n from: parentRouteId(),\n ...options,\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(options as any)\n })\n\n const preload = Solid.createMemo(() => {\n if (options.reloadDocument) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath,\n ).split('/')\n const nextPathSplit = removeTrailingSlash(\n next()?.pathname,\n router.basepath,\n )?.split('/')\n\n const pathIsFuzzyEqual = nextPathSplit?.every(\n (d, i) => d === currentPathSplit[i],\n )\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(options as any).catch((err: any) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n\n const preloadViewportIoCallback = (\n entry: IntersectionObserverEntry | undefined,\n ) => {\n if (entry?.isIntersecting) {\n doPreload()\n }\n }\n\n const [ref, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\n },\n Solid.splitProps(local, [\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n return router.navigate({\n ...options,\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n } as any)\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return options.disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: href(),\n ref: mergeRefs(setRef, options.ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),\n ...(resolvedClassName() && { class: resolvedClassName() }),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\nexport type UseLinkPropsOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\n\nexport type ActiveLinkOptions<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n ActiveLinkOptionProps<TComp>\n\ntype ActiveLinkProps<TComp> = Partial<\n LinkComponentSolidProps<TComp> & {\n [key: `data-${string}`]: unknown\n }\n>\n\nexport interface ActiveLinkOptionProps<TComp = 'a'> {\n /**\n * A function that returns additional props for the `active` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n activeProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n /**\n * A function that returns additional props for the `inactive` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n inactiveProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n}\n\nexport type LinkProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n LinkPropsChildren\n\nexport interface LinkPropsChildren {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\n\nexport type LinkComponentProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkComponentSolidProps<TComp> &\n LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type CreateLinkProps = LinkProps<\n any,\n any,\n string,\n string,\n string,\n string\n>\n\nexport type LinkComponent<TComp> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Solid.JSX.Element\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...(props as any)} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props: any) => {\n const [local, rest] = Solid.splitProps(props, ['_asChild'])\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type', 'children'],\n )\n\n const children = () =>\n typeof rest.children === 'function'\n ? rest.children({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n })\n : rest.children\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","parentRouteId","useMatch","strict","pathname","from","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","nextLocation","maskedLocation","undefined","history","createHref","mergeRefs","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
@@ -14,20 +14,16 @@ function useAwaited({
14
14
  return [promise[TSR_DEFERRED_PROMISE].data, promise];
15
15
  }
16
16
  function Await(props) {
17
- const inner = createComponent(AwaitInner, props);
18
- if (props.fallback) {
19
- return createComponent(Solid.Suspense, {
20
- get fallback() {
21
- return props.fallback;
22
- },
23
- children: inner
24
- });
25
- }
26
- return inner;
27
- }
28
- function AwaitInner(props) {
29
- const [data] = useAwaited(props);
30
- return props.children(data);
17
+ const [resource] = Solid.createResource(() => props.promise);
18
+ return createComponent(Solid.Show, {
19
+ get fallback() {
20
+ return props.fallback;
21
+ },
22
+ get when() {
23
+ return resource();
24
+ },
25
+ children: (data) => props.children(data())
26
+ });
31
27
  }
32
28
  export {
33
29
  Await,
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const inner = <AwaitInner {...props} />\n if (props.fallback) {\n return <Solid.Suspense fallback={props.fallback}>{inner}</Solid.Suspense>\n }\n return inner\n}\n\nfunction AwaitInner<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n): Solid.JSX.Element {\n const [data] = useAwaited(props)\n\n return props.children(data)\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","inner","_$createComponent","AwaitInner","fallback","Solid","Suspense","children"],"mappings":";;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AACrCD,QAAAA,UAAUE,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,oBAAoB,EAAEC,WAAW,WAAW;AAChDJ,UAAAA;AAAAA,EAAAA;AAGR,MAAIA,QAAQG,oBAAoB,EAAEC,WAAW,SAAS;AAC9CJ,UAAAA,QAAQG,oBAAoB,EAAEE;AAAAA,EAAAA;AAGtC,SAAO,CAACL,QAAQG,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACMC,QAAAA,QAAKC,gBAAIC,YAAeH,KAAK;AACnC,MAAIA,MAAMI,UAAU;AAClBF,WAAAA,gBAAQG,MAAMC,UAAQ;AAAA,MAAA,IAACF,WAAQ;AAAA,eAAEJ,MAAMI;AAAAA,MAAQ;AAAA,MAAAG,UAAGN;AAAAA,IAAAA,CAAK;AAAA,EAAA;AAElDA,SAAAA;AACT;AAEA,SAASE,WACPH,OAImB;AACnB,QAAM,CAACF,IAAI,IAAIP,WAAWS,KAAK;AAExBA,SAAAA,MAAMO,SAAST,IAAI;AAC5B;"}
1
+ {"version":3,"file":"awaited.js","sources":["../../src/awaited.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { TSR_DEFERRED_PROMISE, defer } from '@tanstack/router-core'\nimport type { DeferredPromise } from '@tanstack/router-core'\nimport type { SolidNode } from './route'\n\nexport type AwaitOptions<T> = {\n promise: Promise<T>\n}\n\nexport function useAwaited<T>({\n promise: _promise,\n}: AwaitOptions<T>): [T, DeferredPromise<T>] {\n const promise = defer(_promise)\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'pending') {\n throw promise\n }\n\n if (promise[TSR_DEFERRED_PROMISE].status === 'error') {\n throw promise[TSR_DEFERRED_PROMISE].error\n }\n\n return [promise[TSR_DEFERRED_PROMISE].data, promise]\n}\n\nexport function Await<T>(\n props: AwaitOptions<T> & {\n fallback?: SolidNode\n children: (result: T) => SolidNode\n },\n) {\n const [resource] = Solid.createResource(() => props.promise)\n\n return (\n <Solid.Show fallback={props.fallback} when={resource()}>\n {(data) => props.children(data())}\n </Solid.Show>\n )\n}\n"],"names":["useAwaited","promise","_promise","defer","TSR_DEFERRED_PROMISE","status","error","data","Await","props","resource","Solid","createResource","_$createComponent","Show","fallback","when","children"],"mappings":";;;AAUO,SAASA,WAAc;AAAA,EAC5BC,SAASC;AACM,GAA4B;AACrCD,QAAAA,UAAUE,MAAMD,QAAQ;AAE9B,MAAID,QAAQG,oBAAoB,EAAEC,WAAW,WAAW;AAChDJ,UAAAA;AAAAA,EAAAA;AAGR,MAAIA,QAAQG,oBAAoB,EAAEC,WAAW,SAAS;AAC9CJ,UAAAA,QAAQG,oBAAoB,EAAEE;AAAAA,EAAAA;AAGtC,SAAO,CAACL,QAAQG,oBAAoB,EAAEG,MAAMN,OAAO;AACrD;AAEO,SAASO,MACdC,OAIA;AACA,QAAM,CAACC,QAAQ,IAAIC,MAAMC,eAAe,MAAMH,MAAMR,OAAO;AAE3DY,SAAAA,gBACGF,MAAMG,MAAI;AAAA,IAAA,IAACC,WAAQ;AAAA,aAAEN,MAAMM;AAAAA,IAAQ;AAAA,IAAA,IAAEC,OAAI;AAAA,aAAEN,SAAS;AAAA,IAAC;AAAA,IAAAO,UAClDV,CAAAA,SAASE,MAAMQ,SAASV,KAAM,CAAA;AAAA,EAAA,CAAC;AAGvC;"}
@@ -1,4 +1,5 @@
1
1
  import { createComponent, Dynamic, mergeProps, memo, isServer } from "solid-js/web";
2
+ import { createResource } from "solid-js";
2
3
  import { Outlet } from "./Match.js";
3
4
  function isModuleNotFoundError(error) {
4
5
  return typeof (error == null ? void 0 : error.message) === "string" && /Failed to fetch dynamically imported module/.test(error.message);
@@ -16,12 +17,13 @@ function lazyRouteComponent(importer, exportName, ssr) {
16
17
  const load = () => {
17
18
  if (typeof document === "undefined" && (ssr == null ? void 0 : ssr()) === false) {
18
19
  comp = () => null;
19
- return Promise.resolve();
20
+ return Promise.resolve(comp);
20
21
  }
21
22
  if (!loadPromise) {
22
23
  loadPromise = importer().then((res) => {
23
24
  loadPromise = void 0;
24
25
  comp = res[exportName ?? "default"];
26
+ return comp;
25
27
  }).catch((err) => {
26
28
  error = err;
27
29
  });
@@ -44,9 +46,10 @@ function lazyRouteComponent(importer, exportName, ssr) {
44
46
  }
45
47
  throw error;
46
48
  }
47
- if (!comp) {
48
- throw load();
49
- }
49
+ const [compResource] = createResource(load, {
50
+ initialValue: comp,
51
+ ssrLoadFrom: "initial"
52
+ });
50
53
  if ((ssr == null ? void 0 : ssr()) === false) {
51
54
  return createComponent(ClientOnly, {
52
55
  get fallback() {
@@ -54,13 +57,17 @@ function lazyRouteComponent(importer, exportName, ssr) {
54
57
  },
55
58
  get children() {
56
59
  return createComponent(Dynamic, mergeProps({
57
- component: comp
60
+ get component() {
61
+ return compResource();
62
+ }
58
63
  }, props));
59
64
  }
60
65
  });
61
66
  }
62
67
  return createComponent(Dynamic, mergeProps({
63
- component: comp
68
+ get component() {
69
+ return compResource();
70
+ }
64
71
  }, props));
65
72
  };
66
73
  lazyComp.preload = load;
@@ -1 +1 @@
1
- {"version":3,"file":"lazyRouteComponent.js","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import { Dynamic, isServer } from 'solid-js/web'\nimport { Outlet } from './Match'\nimport type * as Solid from 'solid-js'\nimport type { AsyncRouteComponent } from './route'\n\n// If the load fails due to module not found, it may mean a new version of\n// the build was deployed and the user's browser is still using an old version.\n// If this happens, the old version in the user's browser would have an outdated\n// URL to the lazy module.\n// In that case, we want to attempt one window refresh to get the latest.\nfunction isModuleNotFoundError(error: any): boolean {\n return (\n typeof error?.message === 'string' &&\n /Failed to fetch dynamically imported module/.test(error.message)\n )\n}\n\nexport function ClientOnly(\n props: Solid.ParentProps<{ fallback?: Solid.JSX.Element }>,\n) {\n return useHydrated() ? <>{props.children}</> : <>{props.fallback}</>\n}\n\nexport function useHydrated() {\n return isServer\n}\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n ssr?: () => boolean,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default']\n let error: any\n\n const load = () => {\n if (typeof document === 'undefined' && ssr?.() === false) {\n comp = (() => null) as any\n return Promise.resolve()\n }\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n })\n .catch((err) => {\n error = err\n })\n }\n\n return loadPromise\n }\n\n const lazyComp = function Lazy(props: any) {\n // Now that we're out of preload and into actual render path,\n // throw the error if it was a module not found error during preload\n if (error) {\n if (isModuleNotFoundError(error)) {\n // We don't want an error thrown from preload in this case, because\n // there's nothing we want to do about module not found during preload.\n // Record the error, recover the promise with a null return,\n // and we will attempt module not found resolution during the render path.\n\n if (\n error instanceof Error &&\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Again, we want to reload one time on module not found error and not enter\n // a reload loop if there is some other issue besides an old deploy.\n // That's why we store our reload attempt in sessionStorage.\n // Use error.message as key because it contains the module path that failed.\n const storageKey = `tanstack_router_reload:${error.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n window.location.reload()\n\n // Return empty component while we wait for window to reload\n return {\n default: () => null,\n }\n }\n }\n }\n\n // Otherwise, just throw the error\n throw error\n }\n\n if (!comp) {\n throw load()\n }\n\n if (ssr?.() === false) {\n return (\n <ClientOnly fallback={<Outlet />}>\n <Dynamic component={comp} {...props} />\n </ClientOnly>\n )\n }\n return <Dynamic component={comp} {...props} />\n }\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"names":["isModuleNotFoundError","error","message","test","ClientOnly","props","useHydrated","_$memo","children","fallback","isServer","lazyRouteComponent","importer","exportName","ssr","loadPromise","comp","load","document","Promise","resolve","then","res","undefined","catch","err","lazyComp","Lazy","Error","window","sessionStorage","storageKey","getItem","setItem","location","reload","default","_$createComponent","Outlet","Dynamic","_$mergeProps","component","preload"],"mappings":";;AAUA,SAASA,sBAAsBC,OAAqB;AAClD,SACE,QAAOA,+BAAOC,aAAY,YAC1B,8CAA8CC,KAAKF,MAAMC,OAAO;AAEpE;AAEO,SAASE,WACdC,OACA;AACOC,SAAAA,YAAAA,IAAaC,KAAMF,MAAAA,MAAMG,QAAQ,IAAAD,KAAA,MAAUF,MAAMI,QAAQ;AAClE;AAEO,SAASH,cAAc;AACrBI,SAAAA;AACT;AAEgBC,SAAAA,mBAIdC,UACAC,YACAC,KAGQ;AACJC,MAAAA;AACAC,MAAAA;AACAf,MAAAA;AAEJ,QAAMgB,OAAOA,MAAM;AACjB,QAAI,OAAOC,aAAa,gBAAeJ,kCAAY,OAAO;AACxDE,aAAQ,MAAM;AACd,aAAOG,QAAQC,QAAQ;AAAA,IAAA;AAEzB,QAAI,CAACL,aAAa;AACFH,oBAAAA,SAAAA,EACXS,KAAMC,CAAQ,QAAA;AACCC,sBAAAA;AACPD,eAAAA,IAAIT,cAAc,SAAS;AAAA,MAAA,CACnC,EACAW,MAAOC,CAAQ,QAAA;AACNA,gBAAAA;AAAAA,MAAAA,CACT;AAAA,IAAA;AAGEV,WAAAA;AAAAA,EACT;AAEMW,QAAAA,WAAW,SAASC,KAAKtB,OAAY;AAGzC,QAAIJ,OAAO;AACLD,UAAAA,sBAAsBC,KAAK,GAAG;AAMhC,YACEA,iBAAiB2B,SACjB,OAAOC,WAAW,eAClB,OAAOC,mBAAmB,aAC1B;AAKMC,gBAAAA,aAAa,0BAA0B9B,MAAMC,OAAO;AAC1D,cAAI,CAAC4B,eAAeE,QAAQD,UAAU,GAAG;AACxBE,2BAAAA,QAAQF,YAAY,GAAG;AACtCF,mBAAOK,SAASC,OAAO;AAGhB,mBAAA;AAAA,cACLC,SAASA,MAAM;AAAA,YACjB;AAAA,UAAA;AAAA,QACF;AAAA,MACF;AAIInC,YAAAA;AAAAA,IAAAA;AAGR,QAAI,CAACe,MAAM;AACT,YAAMC,KAAK;AAAA,IAAA;AAGTH,SAAAA,kCAAY,OAAO;AACrB,aAAAuB,gBACGjC,YAAU;AAAA,QAAA,IAACK,WAAQ;AAAA4B,iBAAAA,gBAAGC,QAAM,EAAA;AAAA,QAAA;AAAA,QAAA,IAAA9B,WAAA;AAAA6B,iBAAAA,gBAC1BE,SAAOC,WAAA;AAAA,YAACC,WAAWzB;AAAAA,UAAI,GAAMX,KAAK,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAIzCgC,WAAAA,gBAAQE,SAAOC,WAAA;AAAA,MAACC,WAAWzB;AAAAA,IAAI,GAAMX,KAAK,CAAA;AAAA,EAC5C;AAEEqB,WAAiBgB,UAAUzB;AAEtBS,SAAAA;AACT;"}
1
+ {"version":3,"file":"lazyRouteComponent.js","sources":["../../src/lazyRouteComponent.tsx"],"sourcesContent":["import { Dynamic, isServer } from 'solid-js/web'\nimport { createResource } from 'solid-js'\nimport { Outlet } from './Match'\nimport type * as Solid from 'solid-js'\nimport type { AsyncRouteComponent } from './route'\n\n// If the load fails due to module not found, it may mean a new version of\n// the build was deployed and the user's browser is still using an old version.\n// If this happens, the old version in the user's browser would have an outdated\n// URL to the lazy module.\n// In that case, we want to attempt one window refresh to get the latest.\nfunction isModuleNotFoundError(error: any): boolean {\n return (\n typeof error?.message === 'string' &&\n /Failed to fetch dynamically imported module/.test(error.message)\n )\n}\n\nexport function ClientOnly(\n props: Solid.ParentProps<{ fallback?: Solid.JSX.Element }>,\n) {\n return useHydrated() ? <>{props.children}</> : <>{props.fallback}</>\n}\n\nexport function useHydrated() {\n return isServer\n}\n\nexport function lazyRouteComponent<\n T extends Record<string, any>,\n TKey extends keyof T = 'default',\n>(\n importer: () => Promise<T>,\n exportName?: TKey,\n ssr?: () => boolean,\n): T[TKey] extends (props: infer TProps) => any\n ? AsyncRouteComponent<TProps>\n : never {\n let loadPromise: Promise<any> | undefined\n let comp: T[TKey] | T['default']\n let error: any\n\n const load = () => {\n if (typeof document === 'undefined' && ssr?.() === false) {\n comp = (() => null) as any\n return Promise.resolve(comp)\n }\n if (!loadPromise) {\n loadPromise = importer()\n .then((res) => {\n loadPromise = undefined\n comp = res[exportName ?? 'default']\n return comp\n })\n .catch((err) => {\n error = err\n })\n }\n\n return loadPromise\n }\n\n const lazyComp = function Lazy(props: any) {\n // Now that we're out of preload and into actual render path,\n // throw the error if it was a module not found error during preload\n if (error) {\n if (isModuleNotFoundError(error)) {\n // We don't want an error thrown from preload in this case, because\n // there's nothing we want to do about module not found during preload.\n // Record the error, recover the promise with a null return,\n // and we will attempt module not found resolution during the render path.\n\n if (\n error instanceof Error &&\n typeof window !== 'undefined' &&\n typeof sessionStorage !== 'undefined'\n ) {\n // Again, we want to reload one time on module not found error and not enter\n // a reload loop if there is some other issue besides an old deploy.\n // That's why we store our reload attempt in sessionStorage.\n // Use error.message as key because it contains the module path that failed.\n const storageKey = `tanstack_router_reload:${error.message}`\n if (!sessionStorage.getItem(storageKey)) {\n sessionStorage.setItem(storageKey, '1')\n window.location.reload()\n\n // Return empty component while we wait for window to reload\n return {\n default: () => null,\n }\n }\n }\n }\n\n // Otherwise, just throw the error\n throw error\n }\n\n const [compResource] = createResource(load, {\n initialValue: comp,\n ssrLoadFrom: 'initial',\n })\n\n if (ssr?.() === false) {\n return (\n <ClientOnly fallback={<Outlet />}>\n <Dynamic component={compResource()} {...props} />\n </ClientOnly>\n )\n }\n return <Dynamic component={compResource()} {...props} />\n }\n\n ;(lazyComp as any).preload = load\n\n return lazyComp as any\n}\n"],"names":["isModuleNotFoundError","error","message","test","ClientOnly","props","useHydrated","_$memo","children","fallback","isServer","lazyRouteComponent","importer","exportName","ssr","loadPromise","comp","load","document","Promise","resolve","then","res","undefined","catch","err","lazyComp","Lazy","Error","window","sessionStorage","storageKey","getItem","setItem","location","reload","default","compResource","createResource","initialValue","ssrLoadFrom","_$createComponent","Outlet","Dynamic","_$mergeProps","component","preload"],"mappings":";;;AAWA,SAASA,sBAAsBC,OAAqB;AAClD,SACE,QAAOA,+BAAOC,aAAY,YAC1B,8CAA8CC,KAAKF,MAAMC,OAAO;AAEpE;AAEO,SAASE,WACdC,OACA;AACOC,SAAAA,YAAAA,IAAaC,KAAMF,MAAAA,MAAMG,QAAQ,IAAAD,KAAA,MAAUF,MAAMI,QAAQ;AAClE;AAEO,SAASH,cAAc;AACrBI,SAAAA;AACT;AAEgBC,SAAAA,mBAIdC,UACAC,YACAC,KAGQ;AACJC,MAAAA;AACAC,MAAAA;AACAf,MAAAA;AAEJ,QAAMgB,OAAOA,MAAM;AACjB,QAAI,OAAOC,aAAa,gBAAeJ,kCAAY,OAAO;AACxDE,aAAQ,MAAM;AACPG,aAAAA,QAAQC,QAAQJ,IAAI;AAAA,IAAA;AAE7B,QAAI,CAACD,aAAa;AACFH,oBAAAA,SAAAA,EACXS,KAAMC,CAAQ,QAAA;AACCC,sBAAAA;AACPD,eAAAA,IAAIT,cAAc,SAAS;AAC3BG,eAAAA;AAAAA,MAAAA,CACR,EACAQ,MAAOC,CAAQ,QAAA;AACNA,gBAAAA;AAAAA,MAAAA,CACT;AAAA,IAAA;AAGEV,WAAAA;AAAAA,EACT;AAEMW,QAAAA,WAAW,SAASC,KAAKtB,OAAY;AAGzC,QAAIJ,OAAO;AACLD,UAAAA,sBAAsBC,KAAK,GAAG;AAMhC,YACEA,iBAAiB2B,SACjB,OAAOC,WAAW,eAClB,OAAOC,mBAAmB,aAC1B;AAKMC,gBAAAA,aAAa,0BAA0B9B,MAAMC,OAAO;AAC1D,cAAI,CAAC4B,eAAeE,QAAQD,UAAU,GAAG;AACxBE,2BAAAA,QAAQF,YAAY,GAAG;AACtCF,mBAAOK,SAASC,OAAO;AAGhB,mBAAA;AAAA,cACLC,SAASA,MAAM;AAAA,YACjB;AAAA,UAAA;AAAA,QACF;AAAA,MACF;AAIInC,YAAAA;AAAAA,IAAAA;AAGR,UAAM,CAACoC,YAAY,IAAIC,eAAerB,MAAM;AAAA,MAC1CsB,cAAcvB;AAAAA,MACdwB,aAAa;AAAA,IAAA,CACd;AAEG1B,SAAAA,kCAAY,OAAO;AACrB,aAAA2B,gBACGrC,YAAU;AAAA,QAAA,IAACK,WAAQ;AAAAgC,iBAAAA,gBAAGC,QAAM,EAAA;AAAA,QAAA;AAAA,QAAA,IAAAlC,WAAA;AAAAiC,iBAAAA,gBAC1BE,SAAOC,WAAA;AAAA,YAAA,IAACC,YAAS;AAAA,qBAAER,aAAa;AAAA,YAAA;AAAA,UAAC,GAAMhC,KAAK,CAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAInDoC,WAAAA,gBAAQE,SAAOC,WAAA;AAAA,MAAA,IAACC,YAAS;AAAA,eAAER,aAAa;AAAA,MAAA;AAAA,IAAC,GAAMhC,KAAK,CAAA;AAAA,EACtD;AAEEqB,WAAiBoB,UAAU7B;AAEtBS,SAAAA;AACT;"}
package/dist/esm/link.js CHANGED
@@ -236,9 +236,6 @@ const Link = (props) => {
236
236
  return linkProps["data-status"] === "active";
237
237
  }
238
238
  }) : rest.children;
239
- if (typeof local._asChild === "undefined") {
240
- delete linkProps.disabled;
241
- }
242
239
  return createComponent(Dynamic, mergeProps({
243
240
  get component() {
244
241
  return local._asChild ? local._asChild : "a";
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport { useMatch } from './useMatch'\nimport type {\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type { AnyRouter, RegisteredRouter } from './router'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\nexport function useLinkProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(\n options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n ])\n\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\n }\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n // In the rare event that the user bypasses type-safety and doesn't supply a `from`\n // we'll use the current route as the `from` location so relative routing works as expected\n const parentRouteId = useMatch({ strict: false, select: (s) => s.pathname })\n\n // Use it as the default `from` location\n options = {\n from: parentRouteId(),\n ...options,\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(options as any)\n })\n\n const preload = Solid.createMemo(() => {\n if (options.reloadDocument) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath,\n ).split('/')\n const nextPathSplit = removeTrailingSlash(\n next()?.pathname,\n router.basepath,\n )?.split('/')\n\n const pathIsFuzzyEqual = nextPathSplit?.every(\n (d, i) => d === currentPathSplit[i],\n )\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(options as any).catch((err: any) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n\n const preloadViewportIoCallback = (\n entry: IntersectionObserverEntry | undefined,\n ) => {\n if (entry?.isIntersecting) {\n doPreload()\n }\n }\n\n const [ref, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\n },\n Solid.splitProps(local, [\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n return router.navigate({\n ...options,\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n } as any)\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return options.disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: href(),\n ref: mergeRefs(setRef, options.ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),\n ...(resolvedClassName() && { class: resolvedClassName() }),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\nexport type UseLinkPropsOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\n\nexport type ActiveLinkOptions<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n ActiveLinkOptionProps<TComp>\n\ntype ActiveLinkProps<TComp> = Partial<\n LinkComponentSolidProps<TComp> & {\n [key: `data-${string}`]: unknown\n }\n>\n\nexport interface ActiveLinkOptionProps<TComp = 'a'> {\n /**\n * A function that returns additional props for the `active` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n activeProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n /**\n * A function that returns additional props for the `inactive` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n inactiveProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n}\n\nexport type LinkProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n LinkPropsChildren\n\nexport interface LinkPropsChildren {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\n\nexport type LinkComponentProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkComponentSolidProps<TComp> &\n LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type CreateLinkProps = LinkProps<\n any,\n any,\n string,\n string,\n string,\n string\n>\n\nexport type LinkComponent<TComp> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Solid.JSX.Element\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...(props as any)} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props: any) => {\n const [local, rest] = Solid.splitProps(props, ['_asChild'])\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type', 'children'],\n )\n\n const children = () =>\n typeof rest.children === 'function'\n ? rest.children({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n })\n : rest.children\n\n if (typeof local._asChild === 'undefined') {\n // the Retlocal.urnType of useLinkProps returns the correct type for a <a> element, not a general component that has a disabled prop\n // @ts-expect-error\n delete linkProps.disabled\n }\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","parentRouteId","useMatch","strict","pathname","from","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","nextLocation","maskedLocation","undefined","history","createHref","mergeRefs","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
1
+ {"version":3,"file":"link.js","sources":["../../src/link.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nimport { mergeRefs } from '@solid-primitives/refs'\n\nimport {\n deepEqual,\n exactPathTest,\n functionalUpdate,\n preloadWarning,\n removeTrailingSlash,\n} from '@tanstack/router-core'\nimport { Dynamic } from 'solid-js/web'\nimport { useRouterState } from './useRouterState'\nimport { useRouter } from './useRouter'\n\nimport { useIntersectionObserver } from './utils'\n\nimport { useMatch } from './useMatch'\nimport type {\n Constrain,\n LinkCurrentTargetElement,\n LinkOptions,\n RoutePaths,\n} from '@tanstack/router-core'\nimport type { AnyRouter, RegisteredRouter } from './router'\nimport type {\n ValidateLinkOptions,\n ValidateLinkOptionsArray,\n} from './typePrimitives'\n\nexport function useLinkProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string = '',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '',\n>(\n options: UseLinkPropsOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n): Solid.ComponentProps<'a'> {\n const router = useRouter()\n const [isTransitioning, setIsTransitioning] = Solid.createSignal(false)\n let hasRenderFetched = false\n\n const [local, rest] = Solid.splitProps(\n Solid.mergeProps(\n {\n activeProps: () => ({ class: 'active' }),\n inactiveProps: () => ({}),\n },\n options,\n ),\n [\n 'activeProps',\n 'inactiveProps',\n 'activeOptions',\n 'to',\n 'preload',\n 'preloadDelay',\n 'hashScrollIntoView',\n 'replace',\n 'startTransition',\n 'resetScroll',\n 'viewTransition',\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onTouchStart',\n 'ignoreBlocker',\n ],\n )\n\n // const {\n // // custom props\n // activeProps = () => ({ class: 'active' }),\n // inactiveProps = () => ({}),\n // activeOptions,\n // to,\n // preload: userPreload,\n // preloadDelay: userPreloadDelay,\n // hashScrollIntoView,\n // replace,\n // startTransition,\n // resetScroll,\n // viewTransition,\n // // element props\n // children,\n // target,\n // disabled,\n // style,\n // class,\n // onClick,\n // onFocus,\n // onMouseEnter,\n // onMouseLeave,\n // onTouchStart,\n // ignoreBlocker,\n // ...rest\n // } = options\n\n const [_, propsSafeToSpread] = Solid.splitProps(rest, [\n 'params',\n 'search',\n 'hash',\n 'state',\n 'mask',\n 'reloadDocument',\n ])\n\n // If this link simply reloads the current route,\n // make sure it has a new key so it will trigger a data refresh\n\n // If this `to` is a valid external URL, return\n // null for LinkUtils\n\n const type: Solid.Accessor<'internal' | 'external'> = () => {\n try {\n new URL(`${local.to}`)\n return 'external'\n } catch {}\n return 'internal'\n }\n\n const currentSearch = useRouterState({\n select: (s) => s.location.searchStr,\n })\n\n // In the rare event that the user bypasses type-safety and doesn't supply a `from`\n // we'll use the current route as the `from` location so relative routing works as expected\n const parentRouteId = useMatch({ strict: false, select: (s) => s.pathname })\n\n // Use it as the default `from` location\n options = {\n from: parentRouteId(),\n ...options,\n }\n\n const next = Solid.createMemo(() => {\n currentSearch()\n return router.buildLocation(options as any)\n })\n\n const preload = Solid.createMemo(() => {\n if (options.reloadDocument) {\n return false\n }\n return local.preload ?? router.options.defaultPreload\n })\n const preloadDelay = () =>\n local.preloadDelay ?? router.options.defaultPreloadDelay ?? 0\n\n const isActive = useRouterState({\n select: (s) => {\n if (local.activeOptions?.exact) {\n const testExact = exactPathTest(\n s.location.pathname,\n next().pathname,\n router.basepath,\n )\n if (!testExact) {\n return false\n }\n } else {\n const currentPathSplit = removeTrailingSlash(\n s.location.pathname,\n router.basepath,\n ).split('/')\n const nextPathSplit = removeTrailingSlash(\n next()?.pathname,\n router.basepath,\n )?.split('/')\n\n const pathIsFuzzyEqual = nextPathSplit?.every(\n (d, i) => d === currentPathSplit[i],\n )\n if (!pathIsFuzzyEqual) {\n return false\n }\n }\n\n if (local.activeOptions?.includeSearch ?? true) {\n const searchTest = deepEqual(s.location.search, next().search, {\n partial: !local.activeOptions?.exact,\n ignoreUndefined: !local.activeOptions?.explicitUndefined,\n })\n if (!searchTest) {\n return false\n }\n }\n\n if (local.activeOptions?.includeHash) {\n return s.location.hash === next().hash\n }\n return true\n },\n })\n\n const doPreload = () =>\n router.preloadRoute(options as any).catch((err: any) => {\n console.warn(err)\n console.warn(preloadWarning)\n })\n\n const preloadViewportIoCallback = (\n entry: IntersectionObserverEntry | undefined,\n ) => {\n if (entry?.isIntersecting) {\n doPreload()\n }\n }\n\n const [ref, setRef] = Solid.createSignal<Element | null>(null)\n\n useIntersectionObserver(\n ref,\n preloadViewportIoCallback,\n { rootMargin: '100px' },\n { disabled: !!local.disabled || !(preload() === 'viewport') },\n )\n\n Solid.createEffect(() => {\n if (hasRenderFetched) {\n return\n }\n if (!local.disabled && preload() === 'render') {\n doPreload()\n hasRenderFetched = true\n }\n })\n\n if (type() === 'external') {\n return Solid.mergeProps(\n propsSafeToSpread,\n {\n ref,\n get type() {\n return type()\n },\n get href() {\n return local.to\n },\n },\n Solid.splitProps(local, [\n 'children',\n 'target',\n 'disabled',\n 'style',\n 'class',\n 'onClick',\n 'onFocus',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOut',\n 'onMouseOver',\n 'onTouchStart',\n ])[0],\n ) as any\n }\n\n // The click handler\n const handleClick = (e: MouseEvent) => {\n if (\n !local.disabled &&\n !isCtrlEvent(e) &&\n !e.defaultPrevented &&\n (!local.target || local.target === '_self') &&\n e.button === 0\n ) {\n e.preventDefault()\n\n setIsTransitioning(true)\n\n const unsub = router.subscribe('onResolved', () => {\n unsub()\n setIsTransitioning(false)\n })\n\n // All is well? Navigate!\n // N.B. we don't call `router.commitLocation(next) here because we want to run `validateSearch` before committing\n return router.navigate({\n ...options,\n replace: local.replace,\n resetScroll: local.resetScroll,\n hashScrollIntoView: local.hashScrollIntoView,\n startTransition: local.startTransition,\n viewTransition: local.viewTransition,\n ignoreBlocker: local.ignoreBlocker,\n } as any)\n }\n }\n\n // The click handler\n const handleFocus = (_: MouseEvent) => {\n if (local.disabled) return\n if (preload()) {\n doPreload()\n }\n }\n\n const handleTouchStart = handleFocus\n\n const handleEnter = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (preload()) {\n if (eventTarget.preloadTimeout) {\n return\n }\n\n eventTarget.preloadTimeout = setTimeout(() => {\n eventTarget.preloadTimeout = null\n doPreload()\n }, preloadDelay())\n }\n }\n\n const handleLeave = (e: MouseEvent) => {\n if (local.disabled) return\n const eventTarget = (e.target || {}) as LinkCurrentTargetElement\n\n if (eventTarget.preloadTimeout) {\n clearTimeout(eventTarget.preloadTimeout)\n eventTarget.preloadTimeout = null\n }\n }\n\n /** Call a JSX.EventHandlerUnion with the event. */\n function callHandler<T, TEvent extends Event>(\n event: TEvent & { currentTarget: T; target: Element },\n handler: Solid.JSX.EventHandlerUnion<T, TEvent> | undefined,\n ) {\n if (handler) {\n if (typeof handler === 'function') {\n handler(event)\n } else {\n handler[0](handler[1], event)\n }\n }\n\n return event.defaultPrevented\n }\n\n function composeEventHandlers<T>(\n handlers: Array<Solid.JSX.EventHandlerUnion<T, any> | undefined>,\n ) {\n return (event: any) => {\n for (const handler of handlers) {\n callHandler(event, handler)\n }\n }\n }\n\n // Get the active props\n const resolvedActiveProps: () => Omit<Solid.ComponentProps<'a'>, 'style'> & {\n style?: Solid.JSX.CSSProperties\n } = () =>\n isActive() ? (functionalUpdate(local.activeProps as any, {}) ?? {}) : {}\n\n // Get the inactive props\n const resolvedInactiveProps: () => Omit<\n Solid.ComponentProps<'a'>,\n 'style'\n > & { style?: Solid.JSX.CSSProperties } = () =>\n isActive() ? {} : functionalUpdate(local.inactiveProps, {})\n\n const resolvedClassName = () =>\n [local.class, resolvedActiveProps().class, resolvedInactiveProps().class]\n .filter(Boolean)\n .join(' ')\n\n const resolvedStyle = () => ({\n ...local.style,\n ...resolvedActiveProps().style,\n ...resolvedInactiveProps().style,\n })\n\n const href = Solid.createMemo(() => {\n const nextLocation = next()\n const maskedLocation = nextLocation?.maskedLocation\n\n return options.disabled\n ? undefined\n : maskedLocation\n ? router.history.createHref(maskedLocation.href)\n : router.history.createHref(nextLocation?.href)\n })\n\n return Solid.mergeProps(\n propsSafeToSpread,\n resolvedActiveProps,\n resolvedInactiveProps,\n () => {\n return {\n href: href(),\n ref: mergeRefs(setRef, options.ref),\n onClick: composeEventHandlers([local.onClick, handleClick]),\n onFocus: composeEventHandlers([local.onFocus, handleFocus]),\n onMouseEnter: composeEventHandlers([local.onMouseEnter, handleEnter]),\n onMouseOver: composeEventHandlers([local.onMouseOver, handleEnter]),\n onMouseLeave: composeEventHandlers([local.onMouseLeave, handleLeave]),\n onMouseOut: composeEventHandlers([local.onMouseOut, handleLeave]),\n onTouchStart: composeEventHandlers([\n local.onTouchStart,\n handleTouchStart,\n ]),\n disabled: !!local.disabled,\n target: local.target,\n ...(Object.keys(resolvedStyle).length && { style: resolvedStyle }),\n ...(resolvedClassName() && { class: resolvedClassName() }),\n ...(local.disabled && {\n role: 'link',\n 'aria-disabled': true,\n }),\n ...(isActive() && { 'data-status': 'active', 'aria-current': 'page' }),\n ...(isTransitioning() && { 'data-transitioning': 'transitioning' }),\n }\n },\n ) as any\n}\n\nexport type UseLinkPropsOptions<\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends RoutePaths<TRouter['routeTree']> | string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends RoutePaths<TRouter['routeTree']> | string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<'a', TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n Omit<Solid.ComponentProps<'a'>, 'style'> & { style?: Solid.JSX.CSSProperties }\n\nexport type ActiveLinkOptions<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkOptions<TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n ActiveLinkOptionProps<TComp>\n\ntype ActiveLinkProps<TComp> = Partial<\n LinkComponentSolidProps<TComp> & {\n [key: `data-${string}`]: unknown\n }\n>\n\nexport interface ActiveLinkOptionProps<TComp = 'a'> {\n /**\n * A function that returns additional props for the `active` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n activeProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n /**\n * A function that returns additional props for the `inactive` state of this link.\n * These props override other props passed to the link (`style`'s are merged, `class`'s are concatenated)\n */\n inactiveProps?: ActiveLinkProps<TComp> | (() => ActiveLinkProps<TComp>)\n}\n\nexport type LinkProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = ActiveLinkOptions<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo> &\n LinkPropsChildren\n\nexport interface LinkPropsChildren {\n // If a function is passed as a child, it will be given the `isActive` boolean to aid in further styling on the element it returns\n children?:\n | Solid.JSX.Element\n | ((state: {\n isActive: boolean\n isTransitioning: boolean\n }) => Solid.JSX.Element)\n}\n\ntype LinkComponentSolidProps<TComp> = TComp extends Solid.ValidComponent\n ? Omit<Solid.ComponentProps<TComp>, keyof CreateLinkProps>\n : never\n\nexport type LinkComponentProps<\n TComp = 'a',\n TRouter extends AnyRouter = RegisteredRouter,\n TFrom extends string = string,\n TTo extends string | undefined = '.',\n TMaskFrom extends string = TFrom,\n TMaskTo extends string = '.',\n> = LinkComponentSolidProps<TComp> &\n LinkProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>\n\nexport type CreateLinkProps = LinkProps<\n any,\n any,\n string,\n string,\n string,\n string\n>\n\nexport type LinkComponent<TComp> = <\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string = string,\n const TTo extends string | undefined = undefined,\n const TMaskFrom extends string = TFrom,\n const TMaskTo extends string = '',\n>(\n props: LinkComponentProps<TComp, TRouter, TFrom, TTo, TMaskFrom, TMaskTo>,\n) => Solid.JSX.Element\n\nexport function createLink<const TComp>(\n Comp: Constrain<TComp, any, (props: CreateLinkProps) => Solid.JSX.Element>,\n): LinkComponent<TComp> {\n return (props) => <Link {...(props as any)} _asChild={Comp} />\n}\n\nexport const Link: LinkComponent<'a'> = (props: any) => {\n const [local, rest] = Solid.splitProps(props, ['_asChild'])\n\n const [_, linkProps] = Solid.splitProps(\n useLinkProps(rest as unknown as any),\n ['type', 'children'],\n )\n\n const children = () =>\n typeof rest.children === 'function'\n ? rest.children({\n get isActive() {\n return (linkProps as any)['data-status'] === 'active'\n },\n })\n : rest.children\n\n return (\n <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>\n {children}\n </Dynamic>\n )\n}\n\nfunction isCtrlEvent(e: MouseEvent) {\n return !!(e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\n}\n\nexport type LinkOptionsFnOptions<\n TOptions,\n TComp,\n TRouter extends AnyRouter = RegisteredRouter,\n> =\n TOptions extends ReadonlyArray<any>\n ? ValidateLinkOptionsArray<TRouter, TOptions, string, TComp>\n : ValidateLinkOptions<TRouter, TOptions, string, TComp>\n\nexport type LinkOptionsFn<TComp> = <\n const TOptions,\n TRouter extends AnyRouter = RegisteredRouter,\n>(\n options: LinkOptionsFnOptions<TOptions, TComp, TRouter>,\n) => TOptions\n\nexport const linkOptions: LinkOptionsFn<'a'> = (options) => {\n return options as any\n}\n"],"names":["useLinkProps","options","router","useRouter","isTransitioning","setIsTransitioning","Solid","createSignal","hasRenderFetched","local","rest","splitProps","mergeProps","activeProps","class","inactiveProps","_","propsSafeToSpread","type","URL","to","currentSearch","useRouterState","select","s","location","searchStr","parentRouteId","useMatch","strict","pathname","from","next","createMemo","buildLocation","preload","reloadDocument","defaultPreload","preloadDelay","defaultPreloadDelay","isActive","activeOptions","exact","testExact","exactPathTest","basepath","currentPathSplit","removeTrailingSlash","split","nextPathSplit","pathIsFuzzyEqual","every","d","i","includeSearch","searchTest","deepEqual","search","partial","ignoreUndefined","explicitUndefined","includeHash","hash","doPreload","preloadRoute","catch","err","console","warn","preloadWarning","preloadViewportIoCallback","entry","isIntersecting","ref","setRef","useIntersectionObserver","rootMargin","disabled","createEffect","href","handleClick","e","isCtrlEvent","defaultPrevented","target","button","preventDefault","unsub","subscribe","navigate","replace","resetScroll","hashScrollIntoView","startTransition","viewTransition","ignoreBlocker","handleFocus","handleTouchStart","handleEnter","eventTarget","preloadTimeout","setTimeout","handleLeave","clearTimeout","callHandler","event","handler","composeEventHandlers","handlers","resolvedActiveProps","functionalUpdate","resolvedInactiveProps","resolvedClassName","filter","Boolean","join","resolvedStyle","style","nextLocation","maskedLocation","undefined","history","createHref","mergeRefs","onClick","onFocus","onMouseEnter","onMouseOver","onMouseLeave","onMouseOut","onTouchStart","Object","keys","length","role","createLink","Comp","props","_$createComponent","Link","_$mergeProps","_asChild","linkProps","children","Dynamic","component","metaKey","altKey","ctrlKey","shiftKey","linkOptions"],"mappings":"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"}
@@ -11,14 +11,9 @@ export function useAwaited({ promise: _promise, }) {
11
11
  return [promise[TSR_DEFERRED_PROMISE].data, promise];
12
12
  }
13
13
  export function Await(props) {
14
- const inner = <AwaitInner {...props}/>;
15
- if (props.fallback) {
16
- return <Solid.Suspense fallback={props.fallback}>{inner}</Solid.Suspense>;
17
- }
18
- return inner;
19
- }
20
- function AwaitInner(props) {
21
- const [data] = useAwaited(props);
22
- return props.children(data);
14
+ const [resource] = Solid.createResource(() => props.promise);
15
+ return (<Solid.Show fallback={props.fallback} when={resource()}>
16
+ {(data) => props.children(data())}
17
+ </Solid.Show>);
23
18
  }
24
19
  //# sourceMappingURL=awaited.jsx.map
@@ -1 +1 @@
1
- {"version":3,"file":"awaited.jsx","sourceRoot":"","sources":["../../src/awaited.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQnE,MAAM,UAAU,UAAU,CAAI,EAC5B,OAAO,EAAE,QAAQ,GACD;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE/B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,OAAO,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAGC;IAED,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;IACvC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CACjB,KAGC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"awaited.jsx","sourceRoot":"","sources":["../../src/awaited.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAQnE,MAAM,UAAU,UAAU,CAAI,EAC5B,OAAO,EAAE,QAAQ,GACD;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE/B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,OAAO,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,KAGC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE5D,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CACrD;MAAA,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CACnC;IAAA,EAAE,KAAK,CAAC,IAAI,CAAC,CACd,CAAA;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Dynamic, isServer } from 'solid-js/web';
2
+ import { createResource } from 'solid-js';
2
3
  import { Outlet } from './Match';
3
4
  // If the load fails due to module not found, it may mean a new version of
4
5
  // the build was deployed and the user's browser is still using an old version.
@@ -22,13 +23,14 @@ export function lazyRouteComponent(importer, exportName, ssr) {
22
23
  const load = () => {
23
24
  if (typeof document === 'undefined' && ssr?.() === false) {
24
25
  comp = (() => null);
25
- return Promise.resolve();
26
+ return Promise.resolve(comp);
26
27
  }
27
28
  if (!loadPromise) {
28
29
  loadPromise = importer()
29
30
  .then((res) => {
30
31
  loadPromise = undefined;
31
32
  comp = res[exportName ?? 'default'];
33
+ return comp;
32
34
  })
33
35
  .catch((err) => {
34
36
  error = err;
@@ -66,15 +68,16 @@ export function lazyRouteComponent(importer, exportName, ssr) {
66
68
  // Otherwise, just throw the error
67
69
  throw error;
68
70
  }
69
- if (!comp) {
70
- throw load();
71
- }
71
+ const [compResource] = createResource(load, {
72
+ initialValue: comp,
73
+ ssrLoadFrom: 'initial',
74
+ });
72
75
  if (ssr?.() === false) {
73
76
  return (<ClientOnly fallback={<Outlet />}>
74
- <Dynamic component={comp} {...props}/>
77
+ <Dynamic component={compResource()} {...props}/>
75
78
  </ClientOnly>);
76
79
  }
77
- return <Dynamic component={comp} {...props}/>;
80
+ return <Dynamic component={compResource()} {...props}/>;
78
81
  };
79
82
  lazyComp.preload = load;
80
83
  return lazyComp;
@@ -1 +1 @@
1
- {"version":3,"file":"lazyRouteComponent.jsx","sourceRoot":"","sources":["../../src/lazyRouteComponent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazyRouteComponent.jsx","sourceRoot":"","sources":["../../src/lazyRouteComponent.tsx"],"names":[],"mappings":"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"}
@@ -321,11 +321,6 @@ export const Link = (props) => {
321
321
  },
322
322
  })
323
323
  : rest.children;
324
- if (typeof local._asChild === 'undefined') {
325
- // the Retlocal.urnType of useLinkProps returns the correct type for a <a> element, not a general component that has a disabled prop
326
- // @ts-expect-error
327
- delete linkProps.disabled;
328
- }
329
324
  return (<Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>
330
325
  {children}
331
326
  </Dynamic>);
@@ -1 +1 @@
1
- {"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link.jsx","sourceRoot":"","sources":["../../src/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EACL,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAarC,MAAM,UAAU,YAAY,CAO1B,OAAqE;IAErE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IACvE,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CACpC,KAAK,CAAC,UAAU,CACd;QACE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACxC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1B,EACD,OAAO,CACR,EACD;QACE,aAAa;QACb,eAAe;QACf,eAAe;QACf,IAAI;QACJ,SAAS;QACT,cAAc;QACd,oBAAoB;QACpB,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,gBAAgB;QAChB,UAAU;QACV,QAAQ;QACR,UAAU;QACV,OAAO;QACP,OAAO;QACP,SAAS;QACT,SAAS;QACT,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,cAAc;QACd,eAAe;KAChB,CACF,CAAA;IAED,UAAU;IACV,oBAAoB;IACpB,+CAA+C;IAC/C,gCAAgC;IAChC,mBAAmB;IACnB,QAAQ;IACR,0BAA0B;IAC1B,oCAAoC;IACpC,wBAAwB;IACxB,aAAa;IACb,qBAAqB;IACrB,iBAAiB;IACjB,oBAAoB;IACpB,qBAAqB;IACrB,cAAc;IACd,YAAY;IACZ,cAAc;IACd,WAAW;IACX,WAAW;IACX,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,YAAY;IACZ,cAAc;IAEd,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;QACpD,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,MAAM;QACN,gBAAgB;KACjB,CAAC,CAAA;IAEF,iDAAiD;IACjD,+DAA+D;IAE/D,+CAA+C;IAC/C,qBAAqB;IAErB,MAAM,IAAI,GAA4C,GAAG,EAAE;QACzD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;YACtB,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,cAAc,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS;KACpC,CAAC,CAAA;IAEF,mFAAmF;IACnF,2FAA2F;IAC3F,MAAM,aAAa,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE5E,wCAAwC;IACxC,OAAO,GAAG;QACR,IAAI,EAAE,aAAa,EAAE;QACrB,GAAG,OAAO;KACX,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,aAAa,EAAE,CAAA;QACf,OAAO,MAAM,CAAC,aAAa,CAAC,OAAc,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACpC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAA;IACvD,CAAC,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAA;IAE/D,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,aAAa,CAC7B,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,CAChB,CAAA;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,gBAAgB,GAAG,mBAAmB,CAC1C,CAAC,CAAC,QAAQ,CAAC,QAAQ,EACnB,MAAM,CAAC,QAAQ,CAChB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACZ,MAAM,aAAa,GAAG,mBAAmB,CACvC,IAAI,EAAE,EAAE,QAAQ,EAChB,MAAM,CAAC,QAAQ,CAChB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAEb,MAAM,gBAAgB,GAAG,aAAa,EAAE,KAAK,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CACpC,CAAA;gBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE;oBAC7D,OAAO,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK;oBACpC,eAAe,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB;iBACzD,CAAC,CAAA;gBACF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACxC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,MAAM,CAAC,YAAY,CAAC,OAAc,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QACrD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEJ,MAAM,yBAAyB,GAAG,CAChC,KAA4C,EAC5C,EAAE;QACF,IAAI,KAAK,EAAE,cAAc,EAAE,CAAC;YAC1B,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAiB,IAAI,CAAC,CAAA;IAE9D,uBAAuB,CACrB,GAAG,EACH,yBAAyB,EACzB,EAAE,UAAU,EAAE,OAAO,EAAE,EACvB,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,UAAU,CAAC,EAAE,CAC9D,CAAA;IAED,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;QACtB,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC9C,SAAS,EAAE,CAAA;YACX,gBAAgB,GAAG,IAAI,CAAA;QACzB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB;YACE,GAAG;YACH,IAAI,IAAI;gBACN,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;YACD,IAAI,IAAI;gBACN,OAAO,KAAK,CAAC,EAAE,CAAA;YACjB,CAAC;SACF,EACD,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;YACtB,UAAU;YACV,QAAQ;YACR,UAAU;YACV,OAAO;YACP,OAAO;YACP,SAAS;YACT,SAAS;YACT,cAAc;YACd,cAAc;YACd,YAAY;YACZ,aAAa;YACb,cAAc;SACf,CAAC,CAAC,CAAC,CAAC,CACC,CAAA;IACV,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IACE,CAAC,KAAK,CAAC,QAAQ;YACf,CAAC,WAAW,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,CAAC,gBAAgB;YACnB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;YAC3C,CAAC,CAAC,MAAM,KAAK,CAAC,EACd,CAAC;YACD,CAAC,CAAC,cAAc,EAAE,CAAA;YAElB,kBAAkB,CAAC,IAAI,CAAC,CAAA;YAExB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;gBAChD,KAAK,EAAE,CAAA;gBACP,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,yBAAyB;YACzB,iHAAiH;YACjH,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACrB,GAAG,OAAO;gBACV,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,aAAa,EAAE,KAAK,CAAC,aAAa;aAC5B,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,oBAAoB;IACpB,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,IAAI,OAAO,EAAE,EAAE,CAAC;YACd,SAAS,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAA;IAEpC,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAA6B,CAAA;QAEhE,IAAI,OAAO,EAAE,EAAE,CAAC;YACd,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,OAAM;YACR,CAAC;YAED,WAAW,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC3C,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;gBACjC,SAAS,EAAE,CAAA;YACb,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,QAAQ;YAAE,OAAM;QAC1B,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAA6B,CAAA;QAEhE,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;YACxC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAA;QACnC,CAAC;IACH,CAAC,CAAA;IAED,mDAAmD;IACnD,SAAS,WAAW,CAClB,KAAqD,EACrD,OAA2D;QAE3D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,gBAAgB,CAAA;IAC/B,CAAC;IAED,SAAS,oBAAoB,CAC3B,QAAgE;QAEhE,OAAO,CAAC,KAAU,EAAE,EAAE;YACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,mBAAmB,GAErB,GAAG,EAAE,CACP,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAE1E,yBAAyB;IACzB,MAAM,qBAAqB,GAGe,GAAG,EAAE,CAC7C,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAE7D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAC7B,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,KAAK,CAAC;SACtE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;IAEd,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC;QAC3B,GAAG,KAAK,CAAC,KAAK;QACd,GAAG,mBAAmB,EAAE,CAAC,KAAK;QAC9B,GAAG,qBAAqB,EAAE,CAAC,KAAK;KACjC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE;QACjC,MAAM,YAAY,GAAG,IAAI,EAAE,CAAA;QAC3B,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,CAAA;QAEnD,OAAO,OAAO,CAAC,QAAQ;YACrB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc;gBACd,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;gBAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,UAAU,CACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,GAAG,EAAE;QACH,OAAO;YACL,IAAI,EAAE,IAAI,EAAE;YACZ,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;YACnC,OAAO,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,OAAO,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3D,YAAY,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACrE,WAAW,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACnE,YAAY,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACrE,UAAU,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACjE,YAAY,EAAE,oBAAoB,CAAC;gBACjC,KAAK,CAAC,YAAY;gBAClB,gBAAgB;aACjB,CAAC;YACF,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YAClE,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI;gBACpB,IAAI,EAAE,MAAM;gBACZ,eAAe,EAAE,IAAI;aACtB,CAAC;YACF,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YACtE,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC;SACpE,CAAA;IACH,CAAC,CACK,CAAA;AACV,CAAC;AA6FD,MAAM,UAAU,UAAU,CACxB,IAA0E;IAE1E,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAK,KAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAG,CAAA;AAChE,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAuB,CAAC,KAAU,EAAE,EAAE;IACrD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAE3D,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CACrC,YAAY,CAAC,IAAsB,CAAC,EACpC,CAAC,MAAM,EAAE,UAAU,CAAC,CACrB,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU;QACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,QAAQ;gBACV,OAAQ,SAAiB,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAA;YACvD,CAAC;SACF,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;IAEnB,OAAO,CACL,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CACvE;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,OAAO,CAAC,CACX,CAAA;AACH,CAAC,CAAA;AAED,SAAS,WAAW,CAAC,CAAa;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAkBD,MAAM,CAAC,MAAM,WAAW,GAAuB,CAAC,OAAO,EAAE,EAAE;IACzD,OAAO,OAAc,CAAA;AACvB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-router",
3
- "version": "1.111.11",
3
+ "version": "1.111.14",
4
4
  "description": "Modern and scalable routing for Solid applications",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
package/src/awaited.tsx CHANGED
@@ -30,20 +30,11 @@ export function Await<T>(
30
30
  children: (result: T) => SolidNode
31
31
  },
32
32
  ) {
33
- const inner = <AwaitInner {...props} />
34
- if (props.fallback) {
35
- return <Solid.Suspense fallback={props.fallback}>{inner}</Solid.Suspense>
36
- }
37
- return inner
38
- }
39
-
40
- function AwaitInner<T>(
41
- props: AwaitOptions<T> & {
42
- fallback?: SolidNode
43
- children: (result: T) => SolidNode
44
- },
45
- ): Solid.JSX.Element {
46
- const [data] = useAwaited(props)
33
+ const [resource] = Solid.createResource(() => props.promise)
47
34
 
48
- return props.children(data)
35
+ return (
36
+ <Solid.Show fallback={props.fallback} when={resource()}>
37
+ {(data) => props.children(data())}
38
+ </Solid.Show>
39
+ )
49
40
  }
@@ -1,4 +1,5 @@
1
1
  import { Dynamic, isServer } from 'solid-js/web'
2
+ import { createResource } from 'solid-js'
2
3
  import { Outlet } from './Match'
3
4
  import type * as Solid from 'solid-js'
4
5
  import type { AsyncRouteComponent } from './route'
@@ -42,13 +43,14 @@ export function lazyRouteComponent<
42
43
  const load = () => {
43
44
  if (typeof document === 'undefined' && ssr?.() === false) {
44
45
  comp = (() => null) as any
45
- return Promise.resolve()
46
+ return Promise.resolve(comp)
46
47
  }
47
48
  if (!loadPromise) {
48
49
  loadPromise = importer()
49
50
  .then((res) => {
50
51
  loadPromise = undefined
51
52
  comp = res[exportName ?? 'default']
53
+ return comp
52
54
  })
53
55
  .catch((err) => {
54
56
  error = err
@@ -94,18 +96,19 @@ export function lazyRouteComponent<
94
96
  throw error
95
97
  }
96
98
 
97
- if (!comp) {
98
- throw load()
99
- }
99
+ const [compResource] = createResource(load, {
100
+ initialValue: comp,
101
+ ssrLoadFrom: 'initial',
102
+ })
100
103
 
101
104
  if (ssr?.() === false) {
102
105
  return (
103
106
  <ClientOnly fallback={<Outlet />}>
104
- <Dynamic component={comp} {...props} />
107
+ <Dynamic component={compResource()} {...props} />
105
108
  </ClientOnly>
106
109
  )
107
110
  }
108
- return <Dynamic component={comp} {...props} />
111
+ return <Dynamic component={compResource()} {...props} />
109
112
  }
110
113
 
111
114
  ;(lazyComp as any).preload = load
package/src/link.tsx CHANGED
@@ -540,12 +540,6 @@ export const Link: LinkComponent<'a'> = (props: any) => {
540
540
  })
541
541
  : rest.children
542
542
 
543
- if (typeof local._asChild === 'undefined') {
544
- // the Retlocal.urnType of useLinkProps returns the correct type for a <a> element, not a general component that has a disabled prop
545
- // @ts-expect-error
546
- delete linkProps.disabled
547
- }
548
-
549
543
  return (
550
544
  <Dynamic component={local._asChild ? local._asChild : 'a'} {...linkProps}>
551
545
  {children}