source: node_modules/d3-selection/src/selection/classed.js@ e4c61dd

Last change on this file since e4c61dd was e4c61dd, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Prototype 1.1

  • Property mode set to 100644
File size: 1.7 KB
Line 
1function classArray(string) {
2 return string.trim().split(/^|\s+/);
3}
4
5function classList(node) {
6 return node.classList || new ClassList(node);
7}
8
9function ClassList(node) {
10 this._node = node;
11 this._names = classArray(node.getAttribute("class") || "");
12}
13
14ClassList.prototype = {
15 add: function(name) {
16 var i = this._names.indexOf(name);
17 if (i < 0) {
18 this._names.push(name);
19 this._node.setAttribute("class", this._names.join(" "));
20 }
21 },
22 remove: function(name) {
23 var i = this._names.indexOf(name);
24 if (i >= 0) {
25 this._names.splice(i, 1);
26 this._node.setAttribute("class", this._names.join(" "));
27 }
28 },
29 contains: function(name) {
30 return this._names.indexOf(name) >= 0;
31 }
32};
33
34function classedAdd(node, names) {
35 var list = classList(node), i = -1, n = names.length;
36 while (++i < n) list.add(names[i]);
37}
38
39function classedRemove(node, names) {
40 var list = classList(node), i = -1, n = names.length;
41 while (++i < n) list.remove(names[i]);
42}
43
44function classedTrue(names) {
45 return function() {
46 classedAdd(this, names);
47 };
48}
49
50function classedFalse(names) {
51 return function() {
52 classedRemove(this, names);
53 };
54}
55
56function classedFunction(names, value) {
57 return function() {
58 (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
59 };
60}
61
62export default function(name, value) {
63 var names = classArray(name + "");
64
65 if (arguments.length < 2) {
66 var list = classList(this.node()), i = -1, n = names.length;
67 while (++i < n) if (!list.contains(names[i])) return false;
68 return true;
69 }
70
71 return this.each((typeof value === "function"
72 ? classedFunction : value
73 ? classedTrue
74 : classedFalse)(names, value));
75}
Note: See TracBrowser for help on using the repository browser.