LCOV - code coverage report
Current view: top level - dashql-app/src/utils - classnames.ts Coverage Total Hit
Test: DashQL 915828b Lines: 100.0 % 29 29
Test Date: 2026-11-06 19:30:32

            Line data    Source code
       1              : interface ClassArray extends Array<ClassValue> { }
       2              : interface ClassDictionary {
       3              :     [id: string]: boolean | undefined;
       4              : }
       5              : declare type ClassValue = undefined | null | string | ClassDictionary | ClassArray;
       6              : 
       7            1 : function parseValue(arg: ClassValue) {
       8            1 :     if (arg == null) {
       9            1 :         return null;
      10              :     }
      11            1 :     if (typeof arg === 'string') {
      12            1 :         return arg;
      13              :     }
      14            1 :     if (typeof arg !== 'object') {
      15            1 :         return null;
      16              :     }
      17            1 :     if (Array.isArray(arg)) {
      18            1 :         return classNames(...arg);
      19              :     }
      20            1 :     if (arg.toString !== Object.prototype.toString) {
      21            1 :         return arg.toString();
      22              :     }
      23            1 :     let out = '';
      24            1 :     for (const key in arg) {
      25            1 :         if (Object.prototype.hasOwnProperty.call(arg, key) && arg[key]) {
      26            1 :             out = appendClass(out, key);
      27              :         }
      28              :     }
      29            1 :     return out;
      30            1 : }
      31              : 
      32            1 : function appendClass(value: string, newClass: string | null) {
      33            1 :     if (!newClass) {
      34            1 :         return value;
      35              :     }
      36            1 :     return value ? (value + ' ' + newClass) : newClass;
      37            1 : }
      38              : 
      39            1 : export function classNames(...args: ClassValue[]) {
      40            1 :     let out = "";
      41            1 :     for (const arg of args) {
      42            1 :         if (arg) {
      43            1 :             out = appendClass(out, parseValue(arg));
      44              :         }
      45              :     }
      46            1 :     return out;
      47            1 : }
        

Generated by: LCOV version 2.0-1