From e87ac1f36705814fb3cd7a03bee12f61010ce14e Mon Sep 17 00:00:00 2001 From: Emil Tholin Date: Wed, 3 Jan 2018 18:39:51 +0100 Subject: [PATCH] Export prefetch --- src/runtime/index.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/runtime/index.ts b/src/runtime/index.ts index f0e9600..02f15ae 100644 --- a/src/runtime/index.ts +++ b/src/runtime/index.ts @@ -164,20 +164,24 @@ let prefetching: { promise: Promise<{ Component: ComponentConstructor, data: any }>; } = null; -function prefetch(event: MouseEvent | TouchEvent) { - const a: HTMLAnchorElement = findAnchor(event.target); - if (!a || a.rel !== 'prefetch') return; - - const selected = select_route(new URL(a.href)); +export function prefetch(href: string) { + const selected = select_route(new URL(href)); if (selected) { prefetching = { - href: a.href, + href, promise: selected.route.load().then(mod => prepare_route(mod.default, selected.data)) }; } } +function handle_touchstart_mouseover(event: MouseEvent | TouchEvent) { + const a: HTMLAnchorElement = findAnchor(event.target); + if (!a || a.rel !== 'prefetch') return; + + prefetch(a.href); +} + let inited: boolean; export function init(_target: Node, _routes: Route[]) { @@ -189,8 +193,8 @@ export function init(_target: Node, _routes: Route[]) { window.addEventListener('popstate', handle_popstate); // prefetch - window.addEventListener('touchstart', prefetch); - window.addEventListener('mouseover', prefetch); + window.addEventListener('touchstart', handle_touchstart_mouseover); + window.addEventListener('mouseover', handle_touchstart_mouseover); inited = true; }