1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | export default function configPrep(config, type, nest) {
|
9 | if ( config === void 0 ) config = this._shapeConfig;
|
10 | if ( type === void 0 ) type = "shape";
|
11 | if ( nest === void 0 ) nest = false;
|
12 |
|
13 |
|
14 | var newConfig = {duration: this._duration, on: {}};
|
15 |
|
16 | var wrapFunction = function (func) { return function (d, i, s) {
|
17 | while (d.__d3plus__) {
|
18 | i = d.i;
|
19 | d = d.data || d.feature;
|
20 | }
|
21 | return func(d, i, s);
|
22 | }; };
|
23 |
|
24 | var parseEvents = function (newObj, on) {
|
25 |
|
26 | for (var event in on) {
|
27 |
|
28 | if ({}.hasOwnProperty.call(on, event) && !event.includes(".") || event.includes(("." + type))) {
|
29 | var eventName = event.replace("click", "click touchstart");
|
30 | newObj.on[eventName] = wrapFunction(on[event]);
|
31 | }
|
32 |
|
33 | }
|
34 |
|
35 | };
|
36 |
|
37 | var keyEval = function (newObj, obj) {
|
38 |
|
39 | for (var key in obj) {
|
40 |
|
41 | if ({}.hasOwnProperty.call(obj, key)) {
|
42 |
|
43 | if (key === "on") { parseEvents(newObj, obj[key]); }
|
44 | else if (typeof obj[key] === "function") {
|
45 | newObj[key] = wrapFunction(obj[key]);
|
46 | }
|
47 | else if (typeof obj[key] === "object" && !(obj instanceof Array)) {
|
48 | newObj[key] = {on: {}};
|
49 | keyEval(newObj[key], obj[key]);
|
50 | }
|
51 | else { newObj[key] = obj[key]; }
|
52 |
|
53 | }
|
54 |
|
55 | }
|
56 |
|
57 | };
|
58 |
|
59 | keyEval(newConfig, config);
|
60 | if (this._on) { parseEvents(newConfig, this._on); }
|
61 | if (nest && config[nest]) {
|
62 | keyEval(newConfig, config[nest]);
|
63 | if (config[nest].on) { parseEvents(newConfig, config[nest].on); }
|
64 | }
|
65 |
|
66 | return newConfig;
|
67 |
|
68 | }
|
69 |
|
70 |
|
\ | No newline at end of file |