UNPKG

@scrolia/vanilla

Version:

A headless scrollbar component

1 lines 2.16 kB
{"version":3,"file":"set.mjs","names":["element: HTMLElement | HTMLElementTagNameMap[T]","props: ComponentProps<T>"],"sources":["../../../src/functions/props/set.ts"],"sourcesContent":["import type { ComponentProps } from \"#/@types/component\";\n\n/** Set component props. */\nfunction setComponentProps(\n element: HTMLElement,\n props: ComponentProps<\"div\">,\n): HTMLElement;\n\n/** Set component props. */\nfunction setComponentProps<T extends keyof HTMLElementTagNameMap>(\n element: HTMLElementTagNameMap[T],\n props: ComponentProps<T>,\n): HTMLElementTagNameMap[T];\n\nfunction setComponentProps<T extends keyof HTMLElementTagNameMap>(\n element: HTMLElement | HTMLElementTagNameMap[T],\n props: ComponentProps<T>,\n): HTMLElement | HTMLElementTagNameMap[T] {\n // set attributes\n for (const [key, value] of Object.entries(props)) {\n // null / undefined\n if (value == null) continue;\n\n // style object\n if (key === \"style\" && typeof value === \"object\") {\n for (const [k, v] of Object.entries(value))\n element.style.setProperty(k, String(v));\n continue;\n }\n\n // boolean\n if (typeof value === \"boolean\") {\n if (value) element.setAttribute(key, \"\");\n else element.removeAttribute(key);\n continue;\n }\n\n // known properties\n if (key in element) {\n (element as unknown as Record<string, unknown>)[key] = value;\n continue;\n }\n\n // fallback\n element.setAttribute(key as string, String(value));\n }\n\n return element;\n}\n\nexport { setComponentProps };\n"],"mappings":"AAcA,SAAS,kBACLA,SACAC,OACsC;AAEtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,MAAM,EAAE;AAE9C,MAAI,SAAS,KAAM;AAGnB,MAAI,QAAQ,kBAAkB,UAAU,UAAU;AAC9C,QAAK,MAAM,CAAC,GAAG,EAAE,IAAI,OAAO,QAAQ,MAAM,CACtC,SAAQ,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC;AAC3C;EACH;AAGD,aAAW,UAAU,WAAW;AAC5B,OAAI,MAAO,SAAQ,aAAa,KAAK,GAAG;OACnC,SAAQ,gBAAgB,IAAI;AACjC;EACH;AAGD,MAAI,OAAO,SAAS;AAChB,GAAC,QAA+C,OAAO;AACvD;EACH;AAGD,UAAQ,aAAa,KAAe,OAAO,MAAM,CAAC;CACrD;AAED,QAAO;AACV"}