victory-create-container 36.9.2 → 37.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/victory-create-container.js +5167 -6947
- package/dist/victory-create-container.min.js +1 -1
- package/es/create-container.js +58 -145
- package/lib/create-container.js +59 -155
- package/lib/index.js +0 -2
- package/package.json +7 -7
package/es/create-container.js
CHANGED
|
@@ -3,200 +3,113 @@ import _flow from "lodash/flow";
|
|
|
3
3
|
import _forOwn from "lodash/forOwn";
|
|
4
4
|
import _groupBy from "lodash/groupBy";
|
|
5
5
|
import _toPairs from "lodash/toPairs";
|
|
6
|
-
|
|
7
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
|
-
|
|
9
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
|
-
|
|
11
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
12
|
-
|
|
13
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
14
|
-
|
|
15
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
-
|
|
17
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
|
-
|
|
19
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
|
-
|
|
21
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
22
|
-
|
|
23
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
24
|
-
|
|
25
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
26
|
-
|
|
27
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
28
|
-
|
|
29
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
30
|
-
|
|
31
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
32
|
-
|
|
33
|
-
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
34
|
-
|
|
35
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
36
|
-
|
|
37
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
38
|
-
|
|
39
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
40
|
-
|
|
41
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
42
|
-
|
|
43
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
44
|
-
|
|
45
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
46
|
-
|
|
47
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
48
|
-
|
|
49
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
50
|
-
|
|
51
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
52
|
-
|
|
53
6
|
import { Helpers, VictoryContainer, Log } from "victory-core";
|
|
54
7
|
import { voronoiContainerMixin } from "victory-voronoi-container";
|
|
55
8
|
import { zoomContainerMixin } from "victory-zoom-container";
|
|
56
9
|
import { selectionContainerMixin } from "victory-selection-container";
|
|
57
10
|
import { brushContainerMixin } from "victory-brush-container";
|
|
58
11
|
import { cursorContainerMixin } from "victory-cursor-container";
|
|
59
|
-
|
|
60
12
|
function ensureArray(thing) {
|
|
61
13
|
if (!thing) {
|
|
62
14
|
return [];
|
|
63
15
|
} else if (!Array.isArray(thing)) {
|
|
64
16
|
return [thing];
|
|
65
17
|
}
|
|
66
|
-
|
|
67
18
|
return thing;
|
|
68
19
|
}
|
|
69
|
-
|
|
70
|
-
var combineEventHandlers = function (eventHandlersArray) {
|
|
20
|
+
const combineEventHandlers = eventHandlersArray => {
|
|
71
21
|
// takes an array of event handler objects and produces one eventHandlers object
|
|
72
22
|
// creates a custom combinedHandler() for events with multiple conflicting handlers
|
|
73
|
-
return eventHandlersArray.reduce(
|
|
74
|
-
_forOwn(localHandlers,
|
|
75
|
-
|
|
76
|
-
|
|
23
|
+
return eventHandlersArray.reduce((localHandlers, finalHandlers) => {
|
|
24
|
+
_forOwn(localHandlers, (localHandler, eventName) => {
|
|
25
|
+
const existingHandler = finalHandlers[eventName];
|
|
77
26
|
if (existingHandler) {
|
|
78
27
|
// create new handler for event that concats the existing handler's mutations with new ones
|
|
79
28
|
finalHandlers[eventName] = function combinedHandler() {
|
|
80
29
|
// named for debug clarity
|
|
81
30
|
// sometimes handlers return undefined; use empty array instead, for concat()
|
|
82
|
-
|
|
83
|
-
|
|
31
|
+
const existingMutations = ensureArray(existingHandler(...arguments));
|
|
32
|
+
const localMutations = ensureArray(localHandler(...arguments));
|
|
84
33
|
return existingMutations.concat(localMutations);
|
|
85
34
|
};
|
|
86
35
|
} else {
|
|
87
36
|
finalHandlers[eventName] = localHandler;
|
|
88
37
|
}
|
|
89
38
|
});
|
|
90
|
-
|
|
91
39
|
return finalHandlers;
|
|
92
40
|
});
|
|
93
41
|
};
|
|
94
|
-
|
|
95
|
-
var combineDefaultEvents = function (defaultEvents) {
|
|
42
|
+
const combineDefaultEvents = defaultEvents => {
|
|
96
43
|
// takes a defaultEvents array and returns one equal or lesser length,
|
|
97
44
|
// by combining any events that have the same target
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
target = _ref2[0],
|
|
103
|
-
eventsArray = _ref2[1];
|
|
104
|
-
|
|
105
|
-
var newEventsArray = eventsArray.filter(Boolean);
|
|
45
|
+
const eventsByTarget = _groupBy(defaultEvents, "target");
|
|
46
|
+
const events = _toPairs(eventsByTarget).map(_ref => {
|
|
47
|
+
let [target, eventsArray] = _ref;
|
|
48
|
+
const newEventsArray = eventsArray.filter(Boolean);
|
|
106
49
|
return _isEmpty(newEventsArray) ? null : {
|
|
107
|
-
target
|
|
108
|
-
eventHandlers: combineEventHandlers(eventsArray.map(
|
|
109
|
-
|
|
110
|
-
})) // note: does not currently handle eventKey or childName
|
|
111
|
-
|
|
50
|
+
target,
|
|
51
|
+
eventHandlers: combineEventHandlers(eventsArray.map(event => event.eventHandlers))
|
|
52
|
+
// note: does not currently handle eventKey or childName
|
|
112
53
|
};
|
|
113
54
|
});
|
|
114
|
-
|
|
115
55
|
return events.filter(Boolean);
|
|
116
56
|
};
|
|
117
|
-
|
|
118
|
-
export var combineContainerMixins = function (mixins, Container) {
|
|
119
|
-
var _class;
|
|
120
|
-
|
|
57
|
+
export const combineContainerMixins = (mixins, Container) => {
|
|
121
58
|
// similar to Object.assign(A, B), this function will decide conflicts in favor mixinB.
|
|
122
59
|
// this applies to propTypes and defaultProps.
|
|
123
60
|
// getChildren will call A's getChildren() and pass the resulting children to B's.
|
|
124
61
|
// defaultEvents attempts to resolve any conflicts between A and B's defaultEvents.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
var NaiveCombinedContainer = _flow(mixins)(Container);
|
|
133
|
-
|
|
134
|
-
var displayType = Classes.map(function (Class) {
|
|
135
|
-
var match = Class.displayName.match(/Victory(.*)Container/);
|
|
62
|
+
const Classes = mixins.map(mixin => mixin(Container));
|
|
63
|
+
const instances = Classes.map(Class => new Class());
|
|
64
|
+
const NaiveCombinedContainer = _flow(mixins)(Container);
|
|
65
|
+
const displayType = Classes.map(Class => {
|
|
66
|
+
const match = Class.displayName.match(/Victory(.*)Container/);
|
|
136
67
|
return match[1] || "";
|
|
137
68
|
}).join("");
|
|
138
|
-
return
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
69
|
+
return class VictoryCombinedContainer extends NaiveCombinedContainer {
|
|
70
|
+
static displayName = `Victory${displayType}Container`;
|
|
71
|
+
static propTypes = Classes.reduce((propTypes, Class) => ({
|
|
72
|
+
...propTypes,
|
|
73
|
+
...Class.propTypes
|
|
74
|
+
}), {});
|
|
75
|
+
static defaultProps = Classes.reduce((defaultProps, Class) => ({
|
|
76
|
+
...defaultProps,
|
|
77
|
+
...Class.defaultProps
|
|
78
|
+
}), {});
|
|
79
|
+
static defaultEvents = props => {
|
|
80
|
+
return combineDefaultEvents(Classes.reduce((defaultEvents, Class) => {
|
|
81
|
+
const events = Helpers.isFunction(Class.defaultEvents) ? Class.defaultEvents(props) : Class.defaultEvents;
|
|
82
|
+
return [...defaultEvents, ...events];
|
|
83
|
+
}, []));
|
|
84
|
+
};
|
|
85
|
+
getChildren(props) {
|
|
86
|
+
return instances.reduce((children, instance) => instance.getChildren({
|
|
87
|
+
...props,
|
|
88
|
+
children
|
|
89
|
+
}), props.children);
|
|
147
90
|
}
|
|
148
|
-
|
|
149
|
-
_createClass(VictoryCombinedContainer, [{
|
|
150
|
-
key: "getChildren",
|
|
151
|
-
value: function getChildren(props) {
|
|
152
|
-
return instances.reduce(function (children, instance) {
|
|
153
|
-
return instance.getChildren(_objectSpread(_objectSpread({}, props), {}, {
|
|
154
|
-
children: children
|
|
155
|
-
}));
|
|
156
|
-
}, props.children);
|
|
157
|
-
}
|
|
158
|
-
}]);
|
|
159
|
-
|
|
160
|
-
return VictoryCombinedContainer;
|
|
161
|
-
}(NaiveCombinedContainer), _class.displayName = "Victory".concat(displayType, "Container"), _class.propTypes = Classes.reduce(function (propTypes, Class) {
|
|
162
|
-
return _objectSpread(_objectSpread({}, propTypes), Class.propTypes);
|
|
163
|
-
}, {}), _class.defaultProps = Classes.reduce(function (defaultProps, Class) {
|
|
164
|
-
return _objectSpread(_objectSpread({}, defaultProps), Class.defaultProps);
|
|
165
|
-
}, {}), _class.defaultEvents = function (props) {
|
|
166
|
-
return combineDefaultEvents(Classes.reduce(function (defaultEvents, Class) {
|
|
167
|
-
var events = Helpers.isFunction(Class.defaultEvents) ? Class.defaultEvents(props) : Class.defaultEvents;
|
|
168
|
-
return [].concat(_toConsumableArray(defaultEvents), _toConsumableArray(events));
|
|
169
|
-
}, []));
|
|
170
|
-
}, _class;
|
|
91
|
+
};
|
|
171
92
|
};
|
|
172
|
-
|
|
173
|
-
var checkBehaviorName = function (behavior, behaviors) {
|
|
93
|
+
const checkBehaviorName = (behavior, behaviors) => {
|
|
174
94
|
if (behavior && !behaviors.includes(behavior)) {
|
|
175
|
-
Log.warn("
|
|
95
|
+
Log.warn(`"${behavior}" is not a valid behavior. Choose from [${behaviors.join(", ")}].`);
|
|
176
96
|
}
|
|
177
97
|
};
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
if (!firstMixins) {
|
|
193
|
-
return Container;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
return combineContainerMixins([].concat(_toConsumableArray(firstMixins), _toConsumableArray(secondMixins)), Container);
|
|
197
|
-
};
|
|
98
|
+
export const makeCreateContainerFunction = (mixinMap, Container) => function (behaviorA, behaviorB) {
|
|
99
|
+
const behaviors = Object.keys(mixinMap);
|
|
100
|
+
checkBehaviorName(behaviorA, behaviors);
|
|
101
|
+
checkBehaviorName(behaviorB, behaviors);
|
|
102
|
+
if (arguments.length <= 2 ? 0 : arguments.length - 2) {
|
|
103
|
+
Log.warn("too many arguments given to createContainer (maximum accepted: 2).");
|
|
104
|
+
}
|
|
105
|
+
const firstMixins = mixinMap[behaviorA];
|
|
106
|
+
const secondMixins = mixinMap[behaviorB] || [];
|
|
107
|
+
if (!firstMixins) {
|
|
108
|
+
return Container;
|
|
109
|
+
}
|
|
110
|
+
return combineContainerMixins([...firstMixins, ...secondMixins], Container);
|
|
198
111
|
};
|
|
199
|
-
export
|
|
112
|
+
export const createContainer = makeCreateContainerFunction({
|
|
200
113
|
zoom: [zoomContainerMixin],
|
|
201
114
|
voronoi: [voronoiContainerMixin],
|
|
202
115
|
selection: [selectionContainerMixin],
|
package/lib/create-container.js
CHANGED
|
@@ -4,101 +4,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.makeCreateContainerFunction = exports.createContainer = exports.combineContainerMixins = void 0;
|
|
7
|
-
|
|
8
7
|
var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
|
|
9
|
-
|
|
10
8
|
var _flow2 = _interopRequireDefault(require("lodash/flow"));
|
|
11
|
-
|
|
12
9
|
var _forOwn2 = _interopRequireDefault(require("lodash/forOwn"));
|
|
13
|
-
|
|
14
10
|
var _groupBy2 = _interopRequireDefault(require("lodash/groupBy"));
|
|
15
|
-
|
|
16
11
|
var _toPairs2 = _interopRequireDefault(require("lodash/toPairs"));
|
|
17
|
-
|
|
18
12
|
var _victoryCore = require("victory-core");
|
|
19
|
-
|
|
20
13
|
var _victoryVoronoiContainer = require("victory-voronoi-container");
|
|
21
|
-
|
|
22
14
|
var _victoryZoomContainer = require("victory-zoom-container");
|
|
23
|
-
|
|
24
15
|
var _victorySelectionContainer = require("victory-selection-container");
|
|
25
|
-
|
|
26
16
|
var _victoryBrushContainer = require("victory-brush-container");
|
|
27
|
-
|
|
28
17
|
var _victoryCursorContainer = require("victory-cursor-container");
|
|
29
|
-
|
|
30
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
-
|
|
32
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
33
|
-
|
|
34
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
35
|
-
|
|
36
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
37
|
-
|
|
38
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
39
|
-
|
|
40
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
41
|
-
|
|
42
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
43
|
-
|
|
44
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
45
|
-
|
|
46
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
47
|
-
|
|
48
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
49
|
-
|
|
50
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
51
|
-
|
|
52
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
53
|
-
|
|
54
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
55
|
-
|
|
56
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
57
|
-
|
|
58
|
-
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
59
|
-
|
|
60
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
61
|
-
|
|
62
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
63
|
-
|
|
64
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
65
|
-
|
|
66
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
67
|
-
|
|
68
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
69
|
-
|
|
70
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
71
|
-
|
|
72
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
73
|
-
|
|
74
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
75
|
-
|
|
76
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
77
|
-
|
|
78
19
|
function ensureArray(thing) {
|
|
79
20
|
if (!thing) {
|
|
80
21
|
return [];
|
|
81
22
|
} else if (!Array.isArray(thing)) {
|
|
82
23
|
return [thing];
|
|
83
24
|
}
|
|
84
|
-
|
|
85
25
|
return thing;
|
|
86
26
|
}
|
|
87
|
-
|
|
88
|
-
var combineEventHandlers = function (eventHandlersArray) {
|
|
27
|
+
const combineEventHandlers = eventHandlersArray => {
|
|
89
28
|
// takes an array of event handler objects and produces one eventHandlers object
|
|
90
29
|
// creates a custom combinedHandler() for events with multiple conflicting handlers
|
|
91
|
-
return eventHandlersArray.reduce(
|
|
92
|
-
(0, _forOwn2.default)(localHandlers,
|
|
93
|
-
|
|
94
|
-
|
|
30
|
+
return eventHandlersArray.reduce((localHandlers, finalHandlers) => {
|
|
31
|
+
(0, _forOwn2.default)(localHandlers, (localHandler, eventName) => {
|
|
32
|
+
const existingHandler = finalHandlers[eventName];
|
|
95
33
|
if (existingHandler) {
|
|
96
34
|
// create new handler for event that concats the existing handler's mutations with new ones
|
|
97
35
|
finalHandlers[eventName] = function combinedHandler() {
|
|
98
36
|
// named for debug clarity
|
|
99
37
|
// sometimes handlers return undefined; use empty array instead, for concat()
|
|
100
|
-
|
|
101
|
-
|
|
38
|
+
const existingMutations = ensureArray(existingHandler(...arguments));
|
|
39
|
+
const localMutations = ensureArray(localHandler(...arguments));
|
|
102
40
|
return existingMutations.concat(localMutations);
|
|
103
41
|
};
|
|
104
42
|
} else {
|
|
@@ -108,116 +46,82 @@ var combineEventHandlers = function (eventHandlersArray) {
|
|
|
108
46
|
return finalHandlers;
|
|
109
47
|
});
|
|
110
48
|
};
|
|
111
|
-
|
|
112
|
-
var combineDefaultEvents = function (defaultEvents) {
|
|
49
|
+
const combineDefaultEvents = defaultEvents => {
|
|
113
50
|
// takes a defaultEvents array and returns one equal or lesser length,
|
|
114
51
|
// by combining any events that have the same target
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
eventsArray = _ref2[1];
|
|
120
|
-
|
|
121
|
-
var newEventsArray = eventsArray.filter(Boolean);
|
|
52
|
+
const eventsByTarget = (0, _groupBy2.default)(defaultEvents, "target");
|
|
53
|
+
const events = (0, _toPairs2.default)(eventsByTarget).map(_ref => {
|
|
54
|
+
let [target, eventsArray] = _ref;
|
|
55
|
+
const newEventsArray = eventsArray.filter(Boolean);
|
|
122
56
|
return (0, _isEmpty2.default)(newEventsArray) ? null : {
|
|
123
|
-
target
|
|
124
|
-
eventHandlers: combineEventHandlers(eventsArray.map(
|
|
125
|
-
|
|
126
|
-
})) // note: does not currently handle eventKey or childName
|
|
127
|
-
|
|
57
|
+
target,
|
|
58
|
+
eventHandlers: combineEventHandlers(eventsArray.map(event => event.eventHandlers))
|
|
59
|
+
// note: does not currently handle eventKey or childName
|
|
128
60
|
};
|
|
129
61
|
});
|
|
130
62
|
return events.filter(Boolean);
|
|
131
63
|
};
|
|
132
|
-
|
|
133
|
-
var combineContainerMixins = function (mixins, Container) {
|
|
134
|
-
var _class;
|
|
135
|
-
|
|
64
|
+
const combineContainerMixins = (mixins, Container) => {
|
|
136
65
|
// similar to Object.assign(A, B), this function will decide conflicts in favor mixinB.
|
|
137
66
|
// this applies to propTypes and defaultProps.
|
|
138
67
|
// getChildren will call A's getChildren() and pass the resulting children to B's.
|
|
139
68
|
// defaultEvents attempts to resolve any conflicts between A and B's defaultEvents.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
});
|
|
146
|
-
var NaiveCombinedContainer = (0, _flow2.default)(mixins)(Container);
|
|
147
|
-
var displayType = Classes.map(function (Class) {
|
|
148
|
-
var match = Class.displayName.match(/Victory(.*)Container/);
|
|
69
|
+
const Classes = mixins.map(mixin => mixin(Container));
|
|
70
|
+
const instances = Classes.map(Class => new Class());
|
|
71
|
+
const NaiveCombinedContainer = (0, _flow2.default)(mixins)(Container);
|
|
72
|
+
const displayType = Classes.map(Class => {
|
|
73
|
+
const match = Class.displayName.match(/Victory(.*)Container/);
|
|
149
74
|
return match[1] || "";
|
|
150
75
|
}).join("");
|
|
151
|
-
return
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
76
|
+
return class VictoryCombinedContainer extends NaiveCombinedContainer {
|
|
77
|
+
static displayName = `Victory${displayType}Container`;
|
|
78
|
+
static propTypes = Classes.reduce((propTypes, Class) => ({
|
|
79
|
+
...propTypes,
|
|
80
|
+
...Class.propTypes
|
|
81
|
+
}), {});
|
|
82
|
+
static defaultProps = Classes.reduce((defaultProps, Class) => ({
|
|
83
|
+
...defaultProps,
|
|
84
|
+
...Class.defaultProps
|
|
85
|
+
}), {});
|
|
86
|
+
static defaultEvents = props => {
|
|
87
|
+
return combineDefaultEvents(Classes.reduce((defaultEvents, Class) => {
|
|
88
|
+
const events = _victoryCore.Helpers.isFunction(Class.defaultEvents) ? Class.defaultEvents(props) : Class.defaultEvents;
|
|
89
|
+
return [...defaultEvents, ...events];
|
|
90
|
+
}, []));
|
|
91
|
+
};
|
|
92
|
+
getChildren(props) {
|
|
93
|
+
return instances.reduce((children, instance) => instance.getChildren({
|
|
94
|
+
...props,
|
|
95
|
+
children
|
|
96
|
+
}), props.children);
|
|
160
97
|
}
|
|
161
|
-
|
|
162
|
-
_createClass(VictoryCombinedContainer, [{
|
|
163
|
-
key: "getChildren",
|
|
164
|
-
value: function getChildren(props) {
|
|
165
|
-
return instances.reduce(function (children, instance) {
|
|
166
|
-
return instance.getChildren(_objectSpread(_objectSpread({}, props), {}, {
|
|
167
|
-
children: children
|
|
168
|
-
}));
|
|
169
|
-
}, props.children);
|
|
170
|
-
}
|
|
171
|
-
}]);
|
|
172
|
-
|
|
173
|
-
return VictoryCombinedContainer;
|
|
174
|
-
}(NaiveCombinedContainer), _class.displayName = "Victory".concat(displayType, "Container"), _class.propTypes = Classes.reduce(function (propTypes, Class) {
|
|
175
|
-
return _objectSpread(_objectSpread({}, propTypes), Class.propTypes);
|
|
176
|
-
}, {}), _class.defaultProps = Classes.reduce(function (defaultProps, Class) {
|
|
177
|
-
return _objectSpread(_objectSpread({}, defaultProps), Class.defaultProps);
|
|
178
|
-
}, {}), _class.defaultEvents = function (props) {
|
|
179
|
-
return combineDefaultEvents(Classes.reduce(function (defaultEvents, Class) {
|
|
180
|
-
var events = _victoryCore.Helpers.isFunction(Class.defaultEvents) ? Class.defaultEvents(props) : Class.defaultEvents;
|
|
181
|
-
return [].concat(_toConsumableArray(defaultEvents), _toConsumableArray(events));
|
|
182
|
-
}, []));
|
|
183
|
-
}, _class;
|
|
98
|
+
};
|
|
184
99
|
};
|
|
185
|
-
|
|
186
100
|
exports.combineContainerMixins = combineContainerMixins;
|
|
187
|
-
|
|
188
|
-
var checkBehaviorName = function (behavior, behaviors) {
|
|
101
|
+
const checkBehaviorName = (behavior, behaviors) => {
|
|
189
102
|
if (behavior && !behaviors.includes(behavior)) {
|
|
190
|
-
_victoryCore.Log.warn("
|
|
103
|
+
_victoryCore.Log.warn(`"${behavior}" is not a valid behavior. Choose from [${behaviors.join(", ")}].`);
|
|
191
104
|
}
|
|
192
105
|
};
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (!firstMixins) {
|
|
208
|
-
return Container;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return combineContainerMixins([].concat(_toConsumableArray(firstMixins), _toConsumableArray(secondMixins)), Container);
|
|
212
|
-
};
|
|
106
|
+
const makeCreateContainerFunction = (mixinMap, Container) => function (behaviorA, behaviorB) {
|
|
107
|
+
const behaviors = Object.keys(mixinMap);
|
|
108
|
+
checkBehaviorName(behaviorA, behaviors);
|
|
109
|
+
checkBehaviorName(behaviorB, behaviors);
|
|
110
|
+
if (arguments.length <= 2 ? 0 : arguments.length - 2) {
|
|
111
|
+
_victoryCore.Log.warn("too many arguments given to createContainer (maximum accepted: 2).");
|
|
112
|
+
}
|
|
113
|
+
const firstMixins = mixinMap[behaviorA];
|
|
114
|
+
const secondMixins = mixinMap[behaviorB] || [];
|
|
115
|
+
if (!firstMixins) {
|
|
116
|
+
return Container;
|
|
117
|
+
}
|
|
118
|
+
return combineContainerMixins([...firstMixins, ...secondMixins], Container);
|
|
213
119
|
};
|
|
214
|
-
|
|
215
120
|
exports.makeCreateContainerFunction = makeCreateContainerFunction;
|
|
216
|
-
|
|
121
|
+
const createContainer = exports.createContainer = makeCreateContainerFunction({
|
|
217
122
|
zoom: [_victoryZoomContainer.zoomContainerMixin],
|
|
218
123
|
voronoi: [_victoryVoronoiContainer.voronoiContainerMixin],
|
|
219
124
|
selection: [_victorySelectionContainer.selectionContainerMixin],
|
|
220
125
|
cursor: [_victoryCursorContainer.cursorContainerMixin],
|
|
221
126
|
brush: [_victoryBrushContainer.brushContainerMixin]
|
|
222
|
-
}, _victoryCore.VictoryContainer);
|
|
223
|
-
exports.createContainer = createContainer;
|
|
127
|
+
}, _victoryCore.VictoryContainer);
|
package/lib/index.js
CHANGED
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
|
|
7
6
|
var _createContainer = require("./create-container");
|
|
8
|
-
|
|
9
7
|
Object.keys(_createContainer).forEach(function (key) {
|
|
10
8
|
if (key === "default" || key === "__esModule") return;
|
|
11
9
|
if (key in exports && exports[key] === _createContainer[key]) return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "victory-create-container",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "37.0.0",
|
|
4
4
|
"description": "Container Helper for Victory",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data visualization",
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"lodash": "^4.17.19",
|
|
24
|
-
"victory-brush-container": "^
|
|
25
|
-
"victory-core": "^
|
|
26
|
-
"victory-cursor-container": "^
|
|
27
|
-
"victory-selection-container": "^
|
|
28
|
-
"victory-voronoi-container": "^
|
|
29
|
-
"victory-zoom-container": "^
|
|
24
|
+
"victory-brush-container": "^37.0.0",
|
|
25
|
+
"victory-core": "^37.0.0",
|
|
26
|
+
"victory-cursor-container": "^37.0.0",
|
|
27
|
+
"victory-selection-container": "^37.0.0",
|
|
28
|
+
"victory-voronoi-container": "^37.0.0",
|
|
29
|
+
"victory-zoom-container": "^37.0.0"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": ">=16.6.0"
|