{"ScriptPreparationCode":"var str = \u0027style\u0027;\r\nvar obj = {\r\n \t \u0027style-2\u0027: true,\r\n \t \u0027style-3\u0027: false,\r\n \t \u0027style-4\u0027: true,\r\n}\r\nvar arr = [\u0027style-5\u0027, \u0027style-6\u0027]","TestCases":[{"Name":"classnames","Code":"let result = window.classNames(str, obj, arr, \u0027test classname\u0027)","IsDeferred":false},{"Name":"clsx","Code":"let result = window.clsx(str, obj, arr, \u0027test classname\u0027)","IsDeferred":false},{"Name":"Custom implementation using reduce","Code":"function maybeJoim(a,b) {\r\n return b ? a \u002B \u0022 \u0022 \u002B b : a;\r\n}\r\n \r\nfunction customCn(...args) {\r\n return args.reduce((acc, curr) =\u003E {\r\n if (!curr) return acc;\r\n \r\n if (typeof curr === \u0022string\u0022) {\r\n return maybeJoin(acc,curr);\r\n }\r\n \r\n if (Array.isArray(curr)) {\r\n return maybeJoin(acc, curr.filter(Boolean).join(\u0022 \u0022));\r\n }\r\n\r\n if (typeof curr === \u0022object\u0022) {\r\n return maybeJoin(acc, Object.keys(curr).filter((key) =\u003E key \u0026\u0026 curr[key]).join(\u0022 \u0022));\r\n }\r\n \r\n return acc;\r\n }, \u0027\u0027);\r\n}","IsDeferred":false}]}