restructure project, add claudemd
This commit is contained in:
41
web/runtime/@solidjs/router/dist/routers/createRouter.js
vendored
Normal file
41
web/runtime/@solidjs/router/dist/routers/createRouter.js
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
import { createSignal, onCleanup, sharedConfig } from "solid-js";
|
||||
import { createRouterComponent } from "./components.js";
|
||||
function intercept([value, setValue], get, set) {
|
||||
return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];
|
||||
}
|
||||
export function createRouter(config) {
|
||||
let ignore = false;
|
||||
const wrap = (value) => (typeof value === "string" ? { value } : value);
|
||||
const signal = intercept(createSignal(wrap(config.get()), {
|
||||
equals: (a, b) => a.value === b.value && a.state === b.state
|
||||
}), undefined, next => {
|
||||
!ignore && config.set(next);
|
||||
if (sharedConfig.registry && !sharedConfig.done)
|
||||
sharedConfig.done = true;
|
||||
return next;
|
||||
});
|
||||
config.init &&
|
||||
onCleanup(config.init((value = config.get()) => {
|
||||
ignore = true;
|
||||
signal[1](wrap(value));
|
||||
ignore = false;
|
||||
}));
|
||||
return createRouterComponent({
|
||||
signal,
|
||||
create: config.create,
|
||||
utils: config.utils
|
||||
});
|
||||
}
|
||||
export function bindEvent(target, type, handler) {
|
||||
target.addEventListener(type, handler);
|
||||
return () => target.removeEventListener(type, handler);
|
||||
}
|
||||
export function scrollToHash(hash, fallbackTop) {
|
||||
const el = hash && document.getElementById(hash);
|
||||
if (el) {
|
||||
el.scrollIntoView();
|
||||
}
|
||||
else if (fallbackTop) {
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user