Skip to content

Instantly share code, notes, and snippets.

View PatrickJS's full-sized avatar

PatrickJS PatrickJS

View GitHub Profile
@PatrickJS
PatrickJS / server-config-argument.js
Last active May 17, 2024 03:40
whats better server$ api?
const getData = server$((myArg) => {
console.log(myArg)
});
getData(new ServerConfig({
method: 'get'
}), myArg)
getData(serverConfig({
method: 'get'
import { isBrowser } from '@builder.io/qwik/build';
serverOnly();
export function serverOnly() {
if (isBrowser) {
console.log('SERVER ONLY');
throw new Error(
'This module cannot be imported from the Client.' +
'It should only be used from the Server.',
{
"tailwindCSS.experimental.classRegex": [
["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
["cx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
]
}
Qwik
Deprecated functions and their replacements
Deprecated Replacements
useWatch$ useTask$
useMount$ useTask$
useServerMount useTask$ + isServer
useClientMount useTask$ + isBrowser
useClientEffect useVisibleTask$
useClientEffectQrl useVisibleTask$
useBrowserVisibleTask useVisibleTask$
@PatrickJS
PatrickJS / method-missing-proxy.js
Created March 11, 2024 01:59 — forked from torgeir/method-missing-proxy.js
es6 proxies method missing example
/*
What happens?
- `new Type().what` is looked up with a call to `get` on the proxy
- a function is returned that will look up `METHOD_NAME` when called
- `METHOD_NAME` is called because of the `()` behind `new Type().what`
- if `METHOD_NAME` exists on you object, your own function is called
- if not, because of prototypal inheritance, `get` is called again
- `name` is now `METHOD_NAME` and we can throw as we know `METHOD_NAME` is not implemented on the type
credits http://soft.vub.ac.be/~tvcutsem/proxies/
<div
class={`flex aspect-square w-full grow flex-col items-center justify-center rounded-3xl ${
props.useBorder ? 'border-4 border-gray-200' : ''
} p-5 max-md:mt-10 max-md:max-w-full`}
>
<Lottie
path={props.lottie}
loop={props.loop}
speed={props.speed}
/>
import { component$, sync$, Slot } from "@builder.io/qwik";
import { twMerge } from "tailwind-merge";
// save it's Tailwind
export const LoadingSpinner = () => (
<div class="absolute bottom-[2px] left-[2px] right-[2px] top-[2px] flex items-center justify-center rounded-3xl backdrop-blur-[1px]">
<svg
aria-hidden="true"
class="h-8 w-8 animate-spin fill-blue-600 text-gray-200 dark:text-gray-600"
viewBox="0 0 100 101"
@PatrickJS
PatrickJS / gource.sh
Created January 31, 2024 00:41 — forked from peterjmag/gource.sh
Generate a MP4 Video for your Git project commits using Gource!
# 1.install gource using HomeBrew
$ brew install gource
# 2.install avconv
git clone git://git.libav.org/libav.git
cd libav
# it will take 3-5 minutes to complie, be patient.
./configure --disable-yasm
make && make install
import { component$, sync$ } from "@builder.io/qwik";
export const RefreshButton = component$(({loading, onClick$, ...props}: any) => {
const loading$ = sync$((_e: Event, target: HTMLButtonElement) => {
const span = target.querySelector("span");
target.disabled = span!.hidden;
span!.hidden = !span!.hidden;
});
let clickListener = {};
if (onClick$) {