xray918's picture
Upload folder using huggingface_hub
0ad74ed verified
import { onDestroy } from "svelte";
import { writable } from "svelte/store";
const sizes = {
sm: "(min-width: 640px)",
md: "(min-width: 768px)",
lg: "(min-width: 1024px)",
xl: "(min-width: 1280px)",
"2xl": "(min-width: 1536px)"
} as const;
const _default = {
sm: false,
md: false,
lg: false,
xl: false,
"2xl": false
};
export const media_query = () => {
const { subscribe, update } = writable(_default);
const listeners: {
[key: string]: [MediaQueryList, (ev: MediaQueryListEvent) => any];
} = {};
const onChange = (key: string) => () =>
update((s) => ({ ...s, [key]: !!listeners[key][0].matches }));
if (typeof window !== "undefined") {
for (const key in sizes) {
const mql = window.matchMedia(sizes[key as keyof typeof sizes]);
const listener = onChange(key);
mql.addEventListener("change", listener);
listeners[key] = [mql, listener];
}
onDestroy(() => {
for (const key in listeners) {
const [_mql, _listener] = listeners[key];
_mql.removeEventListener("change", _listener);
}
});
}
return { subscribe };
};
import slugify from "@sindresorhus/slugify";
export function make_slug_processor() {
const seen_slugs = new Map();
return function (name: string) {
const slug = slugify(name, { separator: "-", lowercase: true });
let count = seen_slugs.get(slug);
if (count) {
seen_slugs.set(slug, count + 1);
return `${slug}-${count + 1}`;
} else {
seen_slugs.set(slug, 1);
return slug;
}
};
}