UNPKG

solid-use

Version:
8 lines (7 loc) 2.77 kB
{ "version": 3, "sources": ["../../../src/client-only.ts"], "sourcesContent": ["import type { Component, JSX } from 'solid-js';\nimport {\n Show,\n createComponent,\n createMemo,\n createSignal,\n lazy,\n onMount,\n sharedConfig,\n} from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\nexport const createClientSignal = isServer\n ? (): (() => boolean) => () => false\n : (): (() => boolean) => {\n const [flag, setFlag] = createSignal(false);\n\n onMount(() => {\n setFlag(true);\n });\n\n return flag;\n };\n\nexport interface ClientOnlyProps {\n fallback?: JSX.Element;\n children?: JSX.Element;\n}\n\nexport const ClientOnly = (props: ClientOnlyProps): JSX.Element => {\n const isClient = createClientSignal();\n\n return Show({\n keyed: false,\n get when() {\n return isClient();\n },\n get fallback() {\n return props.fallback;\n },\n get children() {\n return props.children;\n },\n });\n};\n\nexport function clientOnly<T extends Component<any>>(\n fn: () => Promise<{ default: T }>,\n): T {\n const Lazy = lazy(fn);\n return ((props: any) => {\n if (sharedConfig.context) {\n const isClient = createClientSignal();\n\n return createMemo(() => {\n if (isClient()) {\n return createComponent(Lazy, props);\n }\n return undefined;\n });\n }\n return createComponent(Lazy, props);\n }) as unknown as T;\n}\n\nexport function clientComponent<T extends Component<any>>(Comp: T): T {\n return ((props: any) => {\n const isClient = createClientSignal();\n\n return createMemo(() => {\n if (isClient()) {\n return createComponent(Comp, props);\n }\n return undefined;\n });\n }) as unknown as T;\n}\n"], "mappings": ";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;AAElB,IAAM,qBAAqB,WAC9B,MAAuB,MAAM,QAC7B,MAAuB;AACrB,QAAM,CAAC,MAAM,OAAO,IAAI,aAAa,KAAK;AAE1C,UAAQ,MAAM;AACZ,YAAQ,IAAI;AAAA,EACd,CAAC;AAED,SAAO;AACT;AAOG,IAAM,aAAa,CAAC,UAAwC;AACjE,QAAM,WAAW,mBAAmB;AAEpC,SAAO,KAAK;AAAA,IACV,OAAO;AAAA,IACP,IAAI,OAAO;AACT,aAAO,SAAS;AAAA,IAClB;AAAA,IACA,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,EACF,CAAC;AACH;AAEO,SAAS,WACd,IACG;AACH,QAAM,OAAO,KAAK,EAAE;AACpB,SAAQ,CAAC,UAAe;AACtB,QAAI,aAAa,SAAS;AACxB,YAAM,WAAW,mBAAmB;AAEpC,aAAO,WAAW,MAAM;AACtB,YAAI,SAAS,GAAG;AACd,iBAAO,gBAAgB,MAAM,KAAK;AAAA,QACpC;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,WAAO,gBAAgB,MAAM,KAAK;AAAA,EACpC;AACF;AAEO,SAAS,gBAA0C,MAAY;AACpE,SAAQ,CAAC,UAAe;AACtB,UAAM,WAAW,mBAAmB;AAEpC,WAAO,WAAW,MAAM;AACtB,UAAI,SAAS,GAAG;AACd,eAAO,gBAAgB,MAAM,KAAK;AAAA,MACpC;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;", "names": [] }