victory-core
Advanced tools
Comparing version
VictoryCore Changelog | ||
===================== | ||
## 13.0.0 (2017-01-30) | ||
- [189](https://github.com/FormidableLabs/victory-core/pull/189) and [191](https://github.com/FormidableLabs/victory-core/pull/190) | ||
- Adds `VictoryLegend` component | ||
- [190](https://github.com/FormidableLabs/victory-core/pull/189) | ||
- Allows `VictoryContainer` to render either `<g>` or `<svg>` depending on the value of the standalone prop | ||
- Passes a timer down in context for `VictorySharedEvents` | ||
- Event handlers have access to the context they are being called from via an argument | ||
- _i.e._ `onClick: (event, targetProps, eventKey, context) => {...}` | ||
- Enhances `addEvents` so that evented components can pick up "parentControllerProps" from parent state | ||
- useful for `VictoryZoomContainer` | ||
- Adds the ability to define callbacks in the events prop that will be called after `setState` | ||
- useful for allowing `VictoryZoomContainer` to call methods like `resumeAnimation` | ||
## 12.0.2 (2017-01-14) | ||
@@ -5,0 +19,0 @@ |
@@ -7,2 +7,3 @@ Object.defineProperty(exports,"__esModule",{value:true});var _victoryAnimation=require("./victory-animation/victory-animation");Object.defineProperty(exports,"VictoryAnimation",{enumerable:true,get:function get(){return _interopRequireDefault(_victoryAnimation).default;}});var _victoryContainer=require("./victory-container/victory-container");Object.defineProperty(exports,"VictoryContainer",{enumerable:true,get:function get(){return _interopRequireDefault(_victoryContainer). | ||
default;}});var _victoryTheme=require("./victory-theme/victory-theme");Object.defineProperty(exports,"VictoryTheme",{enumerable:true,get:function get(){return _interopRequireDefault(_victoryTheme). | ||
default;}});var _victoryLegend=require("./victory-legend/victory-legend");Object.defineProperty(exports,"VictoryLegend",{enumerable:true,get:function get(){return _interopRequireDefault(_victoryLegend). | ||
default;}});var _victoryTooltip=require("./victory-tooltip/victory-tooltip");Object.defineProperty(exports,"VictoryTooltip",{enumerable:true,get:function get(){return _interopRequireDefault(_victoryTooltip). | ||
@@ -9,0 +10,0 @@ default;}});var _victoryPortal=require("./victory-portal/victory-portal");Object.defineProperty(exports,"VictoryPortal",{enumerable:true,get:function get(){return _interopRequireDefault(_victoryPortal). |
@@ -43,2 +43,4 @@ Object.defineProperty(exports,"__esModule",{value:true});var _omit2=require("lodash/omit");var _omit3=_interopRequireDefault(_omit2);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);var _extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};var _createClass=function(){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);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _react=require("react");var _react2=_interopRequireDefault(_react); | ||
function VictoryContainer(props){_classCallCheck(this,VictoryContainer);var _this=_possibleConstructorReturn(this,(VictoryContainer.__proto__||Object.getPrototypeOf(VictoryContainer)).call(this, | ||
@@ -51,3 +53,2 @@ props)); | ||
this.savePortalRef=function(portal){return _this2.portalRef=portal;}; | ||
this.saveSvgRef=function(svg){return _this2.svgRef=svg;}; | ||
this.portalUpdate=function(key,el){return _this2.portalRef.portalUpdate(key,el);}; | ||
@@ -81,2 +82,7 @@ this.portalRegister=function(){return _this2.portalRef.portalRegister();}; | ||
return this.timer; | ||
}},{key:"getChildren",value:function getChildren( | ||
props){ | ||
return props.children; | ||
}},{key:"renderContainer",value:function renderContainer( | ||
@@ -86,15 +92,24 @@ | ||
props,svgProps,style){var | ||
title=props.title,desc=props.desc,children=props.children,portalComponent=props.portalComponent,className=props.className; | ||
return( | ||
title=props.title,desc=props.desc,portalComponent=props.portalComponent,className=props.className,standalone=props.standalone; | ||
return standalone? | ||
_react2.default.createElement("svg",_extends({},svgProps,{style:style,className:className}), | ||
_react2.default.createElement("title",{id:"title"},title), | ||
_react2.default.createElement("desc",{id:"desc"},desc), | ||
children, | ||
_react2.default.cloneElement(portalComponent,{ref:this.savePortalRef}))); | ||
this.getChildren(props), | ||
_react2.default.cloneElement(portalComponent,{ref:this.savePortalRef})): | ||
_react2.default.createElement("g",_extends({},svgProps,{style:style,className:className}), | ||
_react2.default.createElement("title",{id:"title"},title), | ||
_react2.default.createElement("desc",{id:"desc"},desc), | ||
this.getChildren(props), | ||
_react2.default.cloneElement(portalComponent,{ref:this.savePortalRef})); | ||
}},{key:"render",value:function render() | ||
{var _props= | ||
this.props,width=_props.width,height=_props.height,responsive=_props.responsive,events=_props.events; | ||
this.props,width=_props.width,height=_props.height,responsive=_props.responsive,events=_props.events,standalone=_props.standalone; | ||
var style=responsive?this.props.style:(0,_omit3.default)(this.props.style,["height","width"]); | ||
@@ -104,4 +119,3 @@ var svgProps=(0,_assign3.default)( | ||
"aria-labelledby":"title desc",role:"img",width:width,height:height, | ||
viewBox:responsive?"0 0 "+width+" "+height:undefined, | ||
ref:this.saveSvgRef}, | ||
viewBox:responsive&&standalone?"0 0 "+width+" "+height:undefined}, | ||
@@ -111,2 +125,2 @@ events); | ||
return this.renderContainer(this.props,svgProps,style); | ||
}}]);return VictoryContainer;}(_react2.default.Component);VictoryContainer.displayName="VictoryContainer";VictoryContainer.propTypes={className:_react.PropTypes.string,style:_react.PropTypes.object,height:_react.PropTypes.number,width:_react.PropTypes.number,events:_react.PropTypes.object,children:_react2.default.PropTypes.oneOfType([_react2.default.PropTypes.arrayOf(_react2.default.PropTypes.node),_react2.default.PropTypes.node]),title:_react.PropTypes.string,desc:_react.PropTypes.string,portalComponent:_react.PropTypes.element,responsive:_react.PropTypes.bool};VictoryContainer.defaultProps={title:"Victory Chart",desc:"",portalComponent:_react2.default.createElement(_portal2.default,null),responsive:true};VictoryContainer.contextTypes={getTimer:_react2.default.PropTypes.func};VictoryContainer.childContextTypes={portalUpdate:_react2.default.PropTypes.func,portalRegister:_react2.default.PropTypes.func,portalDeregister:_react2.default.PropTypes.func,getTimer:_react2.default.PropTypes.func};exports.default=VictoryContainer; | ||
}}]);return VictoryContainer;}(_react2.default.Component);VictoryContainer.displayName="VictoryContainer";VictoryContainer.propTypes={className:_react.PropTypes.string,style:_react.PropTypes.object,height:_react.PropTypes.number,width:_react.PropTypes.number,events:_react.PropTypes.object,children:_react2.default.PropTypes.oneOfType([_react2.default.PropTypes.arrayOf(_react2.default.PropTypes.node),_react2.default.PropTypes.node]),title:_react.PropTypes.string,desc:_react.PropTypes.string,portalComponent:_react.PropTypes.element,responsive:_react.PropTypes.bool,standalone:_react.PropTypes.bool};VictoryContainer.defaultProps={title:"Victory Chart",desc:"",portalComponent:_react2.default.createElement(_portal2.default,null),responsive:true,standalone:true};VictoryContainer.contextTypes={getTimer:_react2.default.PropTypes.func};VictoryContainer.childContextTypes={portalUpdate:_react2.default.PropTypes.func,portalRegister:_react2.default.PropTypes.func,portalDeregister:_react2.default.PropTypes.func,getTimer:_react2.default.PropTypes.func};exports.default=VictoryContainer; |
@@ -43,2 +43,10 @@ Object.defineProperty(exports,"__esModule",{value:true});var _defaults2=require("lodash/defaults");var _defaults3=_interopRequireDefault(_defaults2);var _partialRight2=require("lodash/partialRight");var _partialRight3=_interopRequireDefault(_partialRight2);var _isFunction2=require("lodash/isFunction");var _isFunction3=_interopRequireDefault(_isFunction2);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);var _createClass=function(){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);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}(); | ||
function VictorySharedEvents(){_classCallCheck(this,VictorySharedEvents);var _this=_possibleConstructorReturn(this,(VictorySharedEvents.__proto__||Object.getPrototypeOf(VictorySharedEvents)).call(this)); | ||
@@ -48,6 +56,23 @@ | ||
_this.getScopedEvents=_index.Events.getScopedEvents.bind(_this); | ||
_this.getEventState=_index.Events.getEventState.bind(_this);return _this; | ||
}_createClass(VictorySharedEvents,[{key:"componentWillMount",value:function componentWillMount() | ||
_this.getEventState=_index.Events.getEventState.bind(_this); | ||
_this.getTimer=_this.getTimer.bind(_this);return _this; | ||
}_createClass(VictorySharedEvents,[{key:"getChildContext",value:function getChildContext() | ||
{ | ||
return{ | ||
getTimer:this.getTimer}; | ||
}},{key:"getTimer",value:function getTimer() | ||
{ | ||
if(this.context.getTimer){ | ||
return this.context.getTimer(); | ||
} | ||
if(!this.timer){ | ||
this.timer=new _index.Timer(); | ||
} | ||
return this.timer; | ||
}},{key:"componentWillMount",value:function componentWillMount() | ||
{ | ||
this.setUpChildren(this.props); | ||
@@ -174,2 +199,2 @@ }},{key:"componentWillReceiveProps",value:function componentWillReceiveProps( | ||
return _react2.default.cloneElement(this.props.container,{children:this.props.children}); | ||
}}]);return VictorySharedEvents;}(_react2.default.Component);VictorySharedEvents.displayName="VictorySharedEvents";VictorySharedEvents.role="shared-event-wrapper";VictorySharedEvents.propTypes={children:_react2.default.PropTypes.oneOfType([_react2.default.PropTypes.arrayOf(_react2.default.PropTypes.node),_react2.default.PropTypes.node]),container:_react2.default.PropTypes.node,groupComponent:_react2.default.PropTypes.node,events:_react.PropTypes.arrayOf(_react.PropTypes.shape({childName:_react.PropTypes.oneOfType([_react.PropTypes.string,_react.PropTypes.array]),target:_react.PropTypes.string,eventKey:_react.PropTypes.oneOfType([_react.PropTypes.array,_react.PropTypes.func,_index.PropTypes.allOfType([_index.PropTypes.integer,_index.PropTypes.nonNegative]),_react.PropTypes.string]),eventHandlers:_react.PropTypes.object})),eventKey:_react.PropTypes.oneOfType([_react.PropTypes.array,_react.PropTypes.func,_index.PropTypes.allOfType([_index.PropTypes.integer,_index.PropTypes.nonNegative]),_react.PropTypes.string])};VictorySharedEvents.defaultProps={groupComponent:_react2.default.createElement("g",null)};exports.default=VictorySharedEvents; | ||
}}]);return VictorySharedEvents;}(_react2.default.Component);VictorySharedEvents.displayName="VictorySharedEvents";VictorySharedEvents.role="shared-event-wrapper";VictorySharedEvents.propTypes={children:_react2.default.PropTypes.oneOfType([_react2.default.PropTypes.arrayOf(_react2.default.PropTypes.node),_react2.default.PropTypes.node]),container:_react2.default.PropTypes.node,groupComponent:_react2.default.PropTypes.node,events:_react.PropTypes.arrayOf(_react.PropTypes.shape({childName:_react.PropTypes.oneOfType([_react.PropTypes.string,_react.PropTypes.array]),target:_react.PropTypes.string,eventKey:_react.PropTypes.oneOfType([_react.PropTypes.array,_react.PropTypes.func,_index.PropTypes.allOfType([_index.PropTypes.integer,_index.PropTypes.nonNegative]),_react.PropTypes.string]),eventHandlers:_react.PropTypes.object})),eventKey:_react.PropTypes.oneOfType([_react.PropTypes.array,_react.PropTypes.func,_index.PropTypes.allOfType([_index.PropTypes.integer,_index.PropTypes.nonNegative]),_react.PropTypes.string])};VictorySharedEvents.defaultProps={groupComponent:_react2.default.createElement("g",null)};VictorySharedEvents.contextTypes={getTimer:_react2.default.PropTypes.func};VictorySharedEvents.childContextTypes={getTimer:_react2.default.PropTypes.func};exports.default=VictorySharedEvents; |
@@ -196,2 +196,9 @@ Object.defineProperty(exports,"__esModule",{value:true});var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} | ||
baseProps)}; | ||
baseProps), | ||
legend:{ | ||
colorScale:colors, | ||
style:{ | ||
data:{ | ||
type:"circle"}, | ||
labels:baseLabelStyles}}}; |
@@ -221,2 +221,9 @@ Object.defineProperty(exports,"__esModule",{value:true});var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} | ||
baseProps)}; | ||
baseProps), | ||
legend:{ | ||
colorScale:colors, | ||
style:{ | ||
data:{ | ||
type:"circle"}, | ||
labels:baseLabelStyles}}}; |
@@ -1,2 +0,2 @@ | ||
Object.defineProperty(exports,"__esModule",{value:true});var _partialRight2=require("lodash/partialRight");var _partialRight3=_interopRequireDefault(_partialRight2);var _isFunction2=require("lodash/isFunction");var _isFunction3=_interopRequireDefault(_isFunction2);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);var _defaults2=require("lodash/defaults");var _defaults3=_interopRequireDefault(_defaults2);var _createClass=function(){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);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _get=function get(object,property,receiver){if(object===null)object=Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined;}else{return get(parent,property,receiver);}}else if("value"in desc){return desc.value;}else{var getter=desc.get;if(getter===undefined){return undefined;}return getter.call(receiver);}}; | ||
Object.defineProperty(exports,"__esModule",{value:true});var _pick2=require("lodash/pick");var _pick3=_interopRequireDefault(_pick2);var _partialRight2=require("lodash/partialRight");var _partialRight3=_interopRequireDefault(_partialRight2);var _isFunction2=require("lodash/isFunction");var _isFunction3=_interopRequireDefault(_isFunction2);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);var _defaults2=require("lodash/defaults");var _defaults3=_interopRequireDefault(_defaults2);var _createClass=function(){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);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();var _get=function get(object,property,receiver){if(object===null)object=Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined;}else{return get(parent,property,receiver);}}else if("value"in desc){return desc.value;}else{var getter=desc.get;if(getter===undefined){return undefined;}return getter.call(receiver);}}; | ||
var _events=require("./events");var _events2=_interopRequireDefault(_events);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++){arr2[i]=arr[i];}return arr2;}else{return Array.from(arr);}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return call&&(typeof call==="object"||typeof call==="function")?call:self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass;}exports.default= | ||
@@ -16,3 +16,3 @@ | ||
this.setupEvents(this.props); | ||
}},{key:"componentWillReceiveProps",value:function componentWillReceiveProps( | ||
}},{key:"componentWillUpdate",value:function componentWillUpdate( | ||
@@ -30,9 +30,19 @@ newProps){ | ||
this.componentEvents=_events2.default.getComponentEvents(props,components); | ||
this.baseProps=(0,_isFunction3.default)(WrappedComponent.getBaseProps)? | ||
WrappedComponent.getBaseProps(props):{}; | ||
this.dataKeys=Object.keys(this.baseProps).filter(function(key){return key!=="parent";}); | ||
this.getSharedEventState=sharedEvents&&(0,_isFunction3.default)(sharedEvents.getEventState)? | ||
sharedEvents.getEventState:function(){return undefined;}; | ||
this.baseProps=this.getBaseProps(props); | ||
this.dataKeys=Object.keys(this.baseProps).filter(function(key){return key!=="parent";}); | ||
this.hasEvents=props.events||props.sharedEvents||this.componentEvents; | ||
this.events=this.getAllEvents(props); | ||
}},{key:"getBaseProps",value:function getBaseProps( | ||
props){ | ||
var sharedParentState=this.getSharedEventState("parent","parent"); | ||
var parentState=this.getEventState("parent","parent"); | ||
var baseParentProps=(0,_defaults3.default)({},parentState,sharedParentState); | ||
var parentPropsList=baseParentProps.parentControlledProps; | ||
var parentProps=parentPropsList?(0,_pick3.default)(baseParentProps,parentPropsList):{}; | ||
var modifiedProps=(0,_defaults3.default)({},parentProps,props); | ||
return(0,_isFunction3.default)(WrappedComponent.getBaseProps)? | ||
WrappedComponent.getBaseProps(modifiedProps):{}; | ||
}},{key:"getAllEvents",value:function getAllEvents( | ||
@@ -39,0 +49,0 @@ |
@@ -151,8 +151,18 @@ Object.defineProperty(exports,"__esModule",{value:true});var _without2=require("lodash/without");var _without3=_interopRequireDefault(_without2);var _isFunction2=require("lodash/isFunction");var _isFunction3=_interopRequireDefault(_isFunction2);var _isEmpty2=require("lodash/isEmpty");var _isEmpty3=_interopRequireDefault(_isEmpty2);var _partial2=require("lodash/partial");var _partial3=_interopRequireDefault(_partial2);var _merge2=require("lodash/merge");var _merge3=_interopRequireDefault(_merge2);var _extend6=require("lodash/extend");var _extend7=_interopRequireDefault(_extend6);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}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;}function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++){arr2[i]=arr[i];}return arr2;}else{return Array.from(arr);}}exports.default= | ||
var compileCallbacks=function compileCallbacks(eventReturn){ | ||
var getCallback=function getCallback(obj){return(0,_isFunction3.default)(obj.callback)&&obj.callback;}; | ||
var callbacks=Array.isArray(eventReturn)? | ||
eventReturn.map(function(evtObj){return getCallback(evtObj);}):[getCallback(eventReturn)]; | ||
var callbackArray=callbacks.filter(function(callback){return callback!==false;}); | ||
return callbackArray.length? | ||
function(){return callbackArray.forEach(function(callback){return callback();});}:undefined; | ||
}; | ||
var onEvent=function onEvent(evt,childProps,eventKey,eventName){ | ||
var eventReturn=events[eventName](evt,childProps,eventKey); | ||
var eventReturn=events[eventName](evt,childProps,eventKey,_this2); | ||
if(eventReturn){ | ||
_this2.setState(parseEventReturn(eventReturn,eventKey)); | ||
var callbacks=compileCallbacks(eventReturn); | ||
_this2.setState(parseEventReturn(eventReturn,eventKey),callbacks); | ||
} | ||
@@ -159,0 +169,0 @@ }; |
@@ -15,9 +15,26 @@ Object.defineProperty(exports,"__esModule",{value:true});var _isFunction2=require("lodash/isFunction");var _isFunction3=_interopRequireDefault(_isFunction2);var _react=require("react");var _react2=_interopRequireDefault(_react); | ||
getTransformationMatrix:function getTransformationMatrix(svg){ | ||
return svg.getScreenCTM().inverse(); | ||
}, | ||
getSVGEventCoordinates:function getSVGEventCoordinates(evt){ | ||
var svg=this.getParentSVG(evt.target); | ||
var matrix=svg.getScreenCTM().inverse();var | ||
var matrix=this.getTransformationMatrix(svg); | ||
return{ | ||
x:this.transformTarget(evt.clientX,matrix,"x"), | ||
y:this.transformTarget(evt.clientY,matrix,"y")}; | ||
}, | ||
transformTarget:function transformTarget(target,matrix,dimension){var | ||
a=matrix.a,d=matrix.d,e=matrix.e,f=matrix.f; | ||
return dimension==="y"? | ||
d*target+f:a*target+e; | ||
}, | ||
getDomainCoordinates:function getDomainCoordinates(scale,domain){ | ||
domain=domain||{x:scale.x.domain(),y:scale.y.domain()}; | ||
return{ | ||
x:a*evt.clientX+e, | ||
y:d*evt.clientY+f}; | ||
x:[scale.x(domain.x[0]),scale.x(domain.x[1])], | ||
y:[scale.y(domain.y[0]),scale.y(domain.y[1])]}; | ||
@@ -24,0 +41,0 @@ }, |
@@ -75,3 +75,3 @@ Object.defineProperty(exports,"__esModule",{value:true});var _defaults2=require("lodash/defaults");var _defaults3=_interopRequireDefault(_defaults2);var _merge2=require("lodash/merge");var _merge3=_interopRequireDefault(_merge2);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} | ||
var aproximateTextWidthInternal=function aproximateTextWidthInternal(text,style){ | ||
var approximateTextWidthInternal=function approximateTextWidthInternal(text,style){ | ||
var strLength=getWidestString(splitToLines(text.toString())).length; | ||
@@ -82,3 +82,3 @@ return strLength*style.fontSize/style.characterConstant+ | ||
var aproximateTextHeightInternal=function aproximateTextHeightInternal(text,style){ | ||
var approximateTextHeightInternal=function approximateTextHeightInternal(text,style){ | ||
var splittedTextArray=splitToLines(text); | ||
@@ -137,4 +137,4 @@ var lineCount=splittedTextArray.length; | ||
var params=prepareParams(style); | ||
var height=aproximateTextHeightInternal(text,params); | ||
var width=aproximateTextWidthInternal(text,params); | ||
var height=approximateTextHeightInternal(text,params); | ||
var width=approximateTextWidthInternal(text,params); | ||
var widthWithRotate=getSizeWithRotate(width,height,params.angle); | ||
@@ -141,0 +141,0 @@ var heightWithRotate=getSizeWithRotate(height,width,params.angle); |
{ | ||
"name": "victory-core", | ||
"version": "12.0.2", | ||
"version": "13.0.0", | ||
"description": "Victory Core", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -8,2 +8,3 @@ export { default as VictoryAnimation } from "./victory-animation/victory-animation"; | ||
export { default as VictoryTheme } from "./victory-theme/victory-theme"; | ||
export { default as VictoryLegend } from "./victory-legend/victory-legend"; | ||
export { default as VictoryTooltip } from "./victory-tooltip/victory-tooltip"; | ||
@@ -10,0 +11,0 @@ export { default as VictoryPortal } from "./victory-portal/victory-portal"; |
@@ -22,3 +22,4 @@ import React, { PropTypes } from "react"; | ||
portalComponent: PropTypes.element, | ||
responsive: PropTypes.bool | ||
responsive: PropTypes.bool, | ||
standalone: PropTypes.bool | ||
} | ||
@@ -30,3 +31,4 @@ | ||
portalComponent: <Portal/>, | ||
responsive: true | ||
responsive: true, | ||
standalone: true | ||
} | ||
@@ -52,3 +54,2 @@ | ||
this.savePortalRef = (portal) => this.portalRef = portal; | ||
this.saveSvgRef = (svg) => this.svgRef = svg; | ||
this.portalUpdate = (key, el) => this.portalRef.portalUpdate(key, el); | ||
@@ -84,17 +85,31 @@ this.portalRegister = () => this.portalRef.portalRegister(); | ||
// overridden in custom containers | ||
getChildren(props) { | ||
return props.children; | ||
} | ||
// Overridden in victory-core-native | ||
renderContainer(props, svgProps, style) { | ||
const { title, desc, children, portalComponent, className } = props; | ||
return ( | ||
<svg {...svgProps} style={style} className={className}> | ||
<title id="title">{title}</title> | ||
<desc id="desc">{desc}</desc> | ||
{children} | ||
{React.cloneElement(portalComponent, {ref: this.savePortalRef})} | ||
</svg> | ||
); | ||
const { title, desc, portalComponent, className, standalone } = props; | ||
return standalone ? | ||
( | ||
<svg {...svgProps} style={style} className={className}> | ||
<title id="title">{title}</title> | ||
<desc id="desc">{desc}</desc> | ||
{this.getChildren(props)} | ||
{React.cloneElement(portalComponent, {ref: this.savePortalRef})} | ||
</svg> | ||
) : | ||
( | ||
<g {...svgProps} style={style} className={className}> | ||
<title id="title">{title}</title> | ||
<desc id="desc">{desc}</desc> | ||
{this.getChildren(props)} | ||
{React.cloneElement(portalComponent, {ref: this.savePortalRef})} | ||
</g> | ||
); | ||
} | ||
render() { | ||
const { width, height, responsive, events } = this.props; | ||
const { width, height, responsive, events, standalone } = this.props; | ||
const style = responsive ? this.props.style : omit(this.props.style, ["height", "width"]); | ||
@@ -104,4 +119,3 @@ const svgProps = assign( | ||
"aria-labelledby": "title desc", role: "img", width, height, | ||
viewBox: responsive ? `0 0 ${width} ${height}` : undefined, | ||
ref: this.saveSvgRef | ||
viewBox: responsive && standalone ? `0 0 ${width} ${height}` : undefined | ||
}, | ||
@@ -108,0 +122,0 @@ events |
import { assign, isFunction, partialRight, defaults } from "lodash"; | ||
import React, { PropTypes } from "react"; | ||
import { PropTypes as CustomPropTypes, Events } from "../victory-util/index"; | ||
import { PropTypes as CustomPropTypes, Events, Timer } from "../victory-util/index"; | ||
@@ -43,2 +43,10 @@ export default class VictorySharedEvents extends React.Component { | ||
static contextTypes = { | ||
getTimer: React.PropTypes.func | ||
}; | ||
static childContextTypes = { | ||
getTimer: React.PropTypes.func | ||
}; | ||
constructor() { | ||
@@ -49,4 +57,21 @@ super(); | ||
this.getEventState = Events.getEventState.bind(this); | ||
this.getTimer = this.getTimer.bind(this); | ||
} | ||
getChildContext() { | ||
return { | ||
getTimer: this.getTimer | ||
}; | ||
} | ||
getTimer() { | ||
if (this.context.getTimer) { | ||
return this.context.getTimer(); | ||
} | ||
if (!this.timer) { | ||
this.timer = new Timer(); | ||
} | ||
return this.timer; | ||
} | ||
componentWillMount() { | ||
@@ -53,0 +78,0 @@ this.setUpChildren(this.props); |
@@ -196,3 +196,12 @@ import { assign } from "lodash"; | ||
} | ||
}, baseProps) | ||
}, baseProps), | ||
legend: { | ||
colorScale: colors, | ||
style: { | ||
data: { | ||
type: "circle" | ||
}, | ||
labels: baseLabelStyles | ||
} | ||
} | ||
}; |
@@ -221,3 +221,12 @@ import { assign } from "lodash"; | ||
} | ||
}, baseProps) | ||
}, baseProps), | ||
legend: { | ||
colorScale: colors, | ||
style: { | ||
data: { | ||
type: "circle" | ||
}, | ||
labels: baseLabelStyles | ||
} | ||
} | ||
}; |
@@ -1,2 +0,2 @@ | ||
import { defaults, assign, isFunction, partialRight } from "lodash"; | ||
import { defaults, assign, isFunction, partialRight, pick } from "lodash"; | ||
import Events from "./events"; | ||
@@ -18,3 +18,3 @@ | ||
componentWillReceiveProps(newProps) { | ||
componentWillUpdate(newProps) { | ||
if (isFunction(super.componentWillReceiveProps)) { | ||
@@ -30,7 +30,6 @@ super.componentWillReceiveProps(); | ||
this.componentEvents = Events.getComponentEvents(props, components); | ||
this.baseProps = isFunction(WrappedComponent.getBaseProps) ? | ||
WrappedComponent.getBaseProps(props) : {}; | ||
this.dataKeys = Object.keys(this.baseProps).filter((key) => key !== "parent"); | ||
this.getSharedEventState = sharedEvents && isFunction(sharedEvents.getEventState) ? | ||
sharedEvents.getEventState : () => undefined; | ||
this.baseProps = this.getBaseProps(props); | ||
this.dataKeys = Object.keys(this.baseProps).filter((key) => key !== "parent"); | ||
this.hasEvents = props.events || props.sharedEvents || this.componentEvents; | ||
@@ -40,2 +39,13 @@ this.events = this.getAllEvents(props); | ||
getBaseProps(props) { | ||
const sharedParentState = this.getSharedEventState("parent", "parent"); | ||
const parentState = this.getEventState("parent", "parent"); | ||
const baseParentProps = defaults({}, parentState, sharedParentState); | ||
const parentPropsList = baseParentProps.parentControlledProps; | ||
const parentProps = parentPropsList ? pick(baseParentProps, parentPropsList) : {}; | ||
const modifiedProps = defaults({}, parentProps, props); | ||
return isFunction(WrappedComponent.getBaseProps) ? | ||
WrappedComponent.getBaseProps(modifiedProps) : {}; | ||
} | ||
getAllEvents(props) { | ||
@@ -42,0 +52,0 @@ if (Array.isArray(this.componentEvents)) { |
@@ -151,8 +151,18 @@ import { assign, extend, merge, partial, isEmpty, isFunction, without } from "lodash"; | ||
const compileCallbacks = (eventReturn) => { | ||
const getCallback = (obj) => isFunction(obj.callback) && obj.callback; | ||
const callbacks = Array.isArray(eventReturn) ? | ||
eventReturn.map((evtObj) => getCallback(evtObj)) : [getCallback(eventReturn)]; | ||
const callbackArray = callbacks.filter((callback) => callback !== false); | ||
return callbackArray.length ? | ||
() => callbackArray.forEach((callback) => callback()) : undefined; | ||
}; | ||
// A function that calls a particular event handler, parses its return | ||
// into a state mutation, and calls setState | ||
const onEvent = (evt, childProps, eventKey, eventName) => { | ||
const eventReturn = events[eventName](evt, childProps, eventKey); | ||
const eventReturn = events[eventName](evt, childProps, eventKey, this); | ||
if (eventReturn) { | ||
this.setState(parseEventReturn(eventReturn, eventKey)); | ||
const callbacks = compileCallbacks(eventReturn); | ||
this.setState(parseEventReturn(eventReturn, eventKey), callbacks); | ||
} | ||
@@ -159,0 +169,0 @@ }; |
@@ -15,9 +15,26 @@ import React from "react"; | ||
getTransformationMatrix(svg) { | ||
return svg.getScreenCTM().inverse(); | ||
}, | ||
getSVGEventCoordinates(evt) { | ||
const svg = this.getParentSVG(evt.target); | ||
const matrix = svg.getScreenCTM().inverse(); | ||
const matrix = this.getTransformationMatrix(svg); | ||
return { | ||
x: this.transformTarget(evt.clientX, matrix, "x"), | ||
y: this.transformTarget(evt.clientY, matrix, "y") | ||
}; | ||
}, | ||
transformTarget(target, matrix, dimension) { | ||
const {a, d, e, f} = matrix; | ||
return dimension === "y" ? | ||
d * target + f : a * target + e; | ||
}, | ||
getDomainCoordinates(scale, domain) { | ||
domain = domain || { x: scale.x.domain(), y: scale.y.domain()}; | ||
return { | ||
x: a * evt.clientX + e, | ||
y: d * evt.clientY + f | ||
x: [scale.x(domain.x[0]), scale.x(domain.x[1])], | ||
y: [scale.y(domain.y[0]), scale.y(domain.y[1])] | ||
}; | ||
@@ -24,0 +41,0 @@ }, |
@@ -66,4 +66,4 @@ //http://www.pearsonified.com/2012/01/characters-per-line.php | ||
const getWidestString = (strings) => strings.reduce((max, elem) => | ||
max.length >= elem.length ? max : elem | ||
); | ||
max.length >= elem.length ? max : elem | ||
); | ||
@@ -73,12 +73,12 @@ const getSizeWithRotate = (axisSize, dependentSize, angle) => { | ||
return Math.abs(Math.cos(angleInRadian) * axisSize) | ||
+ Math.abs(Math.sin(angleInRadian) * dependentSize); | ||
+ Math.abs(Math.sin(angleInRadian) * dependentSize); | ||
}; | ||
const aproximateTextWidthInternal = (text, style) => { | ||
const approximateTextWidthInternal = (text, style) => { | ||
const strLength = getWidestString(splitToLines(text.toString())).length; | ||
return (strLength * style.fontSize / style.characterConstant) | ||
+ style.letterSpacing * (Math.max(strLength - 1, 0)); | ||
+ style.letterSpacing * (Math.max(strLength - 1, 0)); | ||
}; | ||
const aproximateTextHeightInternal = (text, style) => { | ||
const approximateTextHeightInternal = (text, style) => { | ||
const splittedTextArray = splitToLines(text); | ||
@@ -137,4 +137,4 @@ const lineCount = splittedTextArray.length; | ||
const params = prepareParams(style); | ||
const height = aproximateTextHeightInternal(text, params); | ||
const width = aproximateTextWidthInternal(text, params); | ||
const height = approximateTextHeightInternal(text, params); | ||
const width = approximateTextWidthInternal(text, params); | ||
const widthWithRotate = getSizeWithRotate(width, height, params.angle); | ||
@@ -141,0 +141,0 @@ const heightWithRotate = getSizeWithRotate(height, width, params.angle); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
1254880
5.27%94
2.17%24948
5.05%