{"ScriptPreparationCode":null,"TestCases":[{"Name":"classlist","Code":"let node = document.getElementById(\u0027s\u0027),\r\n\twhitelist = [\u0027add\u0027, \u0027remove\u0027, \u0027toggle\u0027];\r\n\r\nfunction classlist(element, actions) {\r\n for (let i = 0, n = whitelist.length; i \u003C n; i\u002B\u002B) {\r\n let action = whitelist[i],\r\n classnames = actions[action],\r\n list = [];\r\n\r\n if (!classnames) {\r\n continue;\r\n }\r\n else if (!Array.isArray(classnames)) {\r\n classnames = [classnames];\r\n }\r\n\r\n for (let j = 0, o = classnames.length; j \u003C o; j\u002B\u002B) {\r\n let classname = classnames[j],\r\n type = typeof classname;\r\n\r\n if (classname \u0026\u0026 (type === \u0022string\u0022 || type === \u0022number\u0022)) {\r\n list.push(classname);\r\n }\r\n }\r\n\r\n if (list) {\r\n element.classList[action](...list);\r\n }\r\n }\r\n}\r\n\r\nclasslist(node, {\r\n add: [\u0027foo\u0027, \u0027bar\u0027, \u0027baz\u0027, \u0027bam\u0027],\r\n remove: [\u0027bam\u0027]\r\n});","IsDeferred":false},{"Name":"classname","Code":"let node = document.getElementById(\u0027s2\u0027);\r\n\r\nfunction classlist(classes, names) {\r\n let type = typeof names;\r\n\r\n if ((type === \u0022string\u0022 || type === \u0022number\u0022) \u0026\u0026 !classes.includes(names)) {\r\n classes.push(names);\r\n }\r\n else if (Array.isArray(names)) {\r\n for (let i = 0, n = names.length; i \u003C n; i\u002B\u002B) {\r\n classes = classlist(classes, names[i]);\r\n }\r\n }\r\n else if (type === \u0027object\u0027) {\r\n for (let key in names) {\r\n let value = names[key];\r\n\r\n if (value) {\r\n if (value === \u0027toggle\u0027) {\r\n key = classes.includes(key) ? { [key]: false } : [key];\r\n }\r\n\r\n classes = classlist(classes, key);\r\n }\r\n else {\r\n let index = classes.indexOf(key);\r\n\r\n if (index \u003E -1) {\r\n classes.splice(index, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return classes;\r\n }\r\n\r\nnode.className = classlist(node.className.split(\u0027 \u0027), [\u0022foo\u0022, [\u0022bar\u0022, { baz: true, bam: false }]]).join(\u0027 \u0027);","IsDeferred":false}]}