react-tracking
Version:
Declarative tracking for React apps.
2 lines • 5.79 kB
JavaScript
;function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=withTrackingComponentDecorator;var _react=_interopRequireWildcard(require("react"));var _hoistNonReactStatics=_interopRequireDefault(require("hoist-non-react-statics"));var _propTypes=_interopRequireDefault(require("prop-types"));var _ReactTrackingContext=_interopRequireDefault(require("./ReactTrackingContext"));var _useTrackingImpl=_interopRequireDefault(require("./useTrackingImpl"));var _excluded=["forwardRef"],_excluded2=["rtFwdRef"];function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||_typeof(obj)!=="object"&&typeof obj!=="function"){return{"default":obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj["default"]=obj;if(cache){cache.set(obj,newObj)}return newObj}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}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}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 _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key]}return target}function withTrackingComponentDecorator(){var trackingData=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var _ref$forwardRef=_ref.forwardRef,forwardRef=_ref$forwardRef===void 0?false:_ref$forwardRef,options=_objectWithoutProperties(_ref,_excluded);return function(DecoratedComponent){var decoratedComponentName=DecoratedComponent.displayName||DecoratedComponent.name||"Component";function WithTracking(_ref2){var rtFwdRef=_ref2.rtFwdRef,props=_objectWithoutProperties(_ref2,_excluded2);var latestProps=(0,_react.useRef)(props);(0,_react.useEffect)(function(){latestProps.current=props});var trackingDataFn=(0,_react.useCallback)(function(){return typeof trackingData==="function"?trackingData(latestProps.current):trackingData},[]);var contextValue=(0,_useTrackingImpl["default"])(trackingDataFn,options);var trackingProp=(0,_react.useMemo)(function(){return{trackEvent:contextValue.tracking.dispatch,getTrackingData:contextValue.tracking.getTrackingData}},[contextValue]);var propsToBePassed=(0,_react.useMemo)(function(){return forwardRef?_objectSpread(_objectSpread({},props),{},{ref:rtFwdRef}):props},[props,rtFwdRef]);return _react["default"].createElement(_ReactTrackingContext["default"].Provider,{value:contextValue},_react["default"].createElement(DecoratedComponent,_objectSpread(_objectSpread({},propsToBePassed),{},{tracking:trackingProp})))}if(forwardRef){var forwarded=_react["default"].forwardRef(function(props,ref){return _react["default"].createElement(WithTracking,_objectSpread(_objectSpread({},props),{},{rtFwdRef:ref}))});forwarded.displayName="WithTracking(".concat(decoratedComponentName,")");(0,_hoistNonReactStatics["default"])(forwarded,DecoratedComponent);return forwarded}WithTracking.displayName="WithTracking(".concat(decoratedComponentName,")");WithTracking.propTypes={rtFwdRef:_propTypes["default"].oneOfType([_propTypes["default"].func,_propTypes["default"].shape({current:_propTypes["default"].any})])};WithTracking.defaultProps={rtFwdRef:undefined};(0,_hoistNonReactStatics["default"])(WithTracking,DecoratedComponent);return WithTracking}}
//# sourceMappingURL=withTrackingComponentDecorator.js.map