UNPKG

react-plaid

Version:
168 lines (139 loc) 6.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TRANSACTIONS_PRODUCT = exports.IDENTITY_PRODUCT = exports.AUTH_PRODUCT = exports.PROD_ENV = exports.SANDBOX_ENV = exports.DEV_ENV = undefined; 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); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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; } var DEV_ENV = "development"; var SANDBOX_ENV = "sandbox"; var PROD_ENV = "production"; var AUTH_PRODUCT = "auth"; var TRANSACTIONS_PRODUCT = "transactions"; var IDENTITY_PRODUCT = "identity"; // We use this to handle open/loaded to prevent unnecessary re-rendering var ReactPlaid = function (_Component) { _inherits(ReactPlaid, _Component); function ReactPlaid() { var _ref; var _temp, _this, _ret; _classCallCheck(this, ReactPlaid); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ReactPlaid.__proto__ || Object.getPrototypeOf(ReactPlaid)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), _possibleConstructorReturn(_this, _ret); } _createClass(ReactPlaid, [{ key: "componentDidMount", value: function componentDidMount() { this.linkHandler = Plaid.create({ apiVersion: this.props.apiVersion, clientName: this.props.clientName, product: this.props.product, key: this.props.apiKey, env: this.props.env, token: this.props.token, user: this.props.user, selectAccount: this.props.selectAccount, accountSubtypes: this.props.accountSubtypes, webhook: this.props.webhook, linkCustomizationName: this.props.linkCustomizationName, onLoad: this.handleLoad, onSuccess: this.handleSuccess, onExit: this.handleExit, onEvent: this.props.onEvent }); this.props.onLoading(); if (this.props.open) this.handleOpen(); } }, { key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { if (this.props.open && !prevProps.open) { this.handleOpen(); } else if (prevProps.open && !this.props.open) { // Close? // Plaid provides no method to close :( } } }, { key: "render", value: function render() { return this.props.children || null; } }]); return ReactPlaid; }(_react.Component); ReactPlaid.propTypes = { open: _propTypes2.default.bool, clientName: _propTypes2.default.string.isRequired, env: _propTypes2.default.oneOf([DEV_ENV, SANDBOX_ENV, PROD_ENV]).isRequired, institution: _propTypes2.default.string, apiKey: _propTypes2.default.string.isRequired, product: _propTypes2.default.array.isRequired, token: _propTypes2.default.string, user: _propTypes2.default.shape({ legalName: _propTypes2.default.string, emailAddress: _propTypes2.default.string }), accountSubtypes: _propTypes2.default.shape({ depository: _propTypes2.default.arrayOf(_propTypes2.default.string) }), selectAccount: _propTypes2.default.bool, webhook: _propTypes2.default.string, linkCustomizationName: _propTypes2.default.string, onSuccess: _propTypes2.default.func.isRequired, onExit: _propTypes2.default.func, onLoad: _propTypes2.default.func, onLoading: _propTypes2.default.func, onOpen: _propTypes2.default.func, onEvent: _propTypes2.default.func }; ReactPlaid.defaultProps = { apiVersion: "v2", onExit: function onExit() {}, onSuccess: function onSuccess() {}, onLoad: function onLoad() {}, onLoading: function onLoading() {}, onOpen: function onOpen() {}, onEvent: function onEvent() {} }; var _initialiseProps = function _initialiseProps() { var _this2 = this; this.loaded = false; this.open = false; this.handleOpen = function () { _this2.open = true; if (_this2.loaded) { _this2.linkHandler.open(_this2.props.institution); _this2.props.onOpen(); } }; this.handleLoad = function () { _this2.loaded = true; _this2.props.onLoad(); if (_this2.open) _this2.handleOpen(); }; this.handleSuccess = function (publicToken, metaData) { _this2.props.onSuccess(publicToken, metaData); }; this.handleExit = function () { var _props; _this2.open = false; (_props = _this2.props).onExit.apply(_props, arguments); }; }; exports.default = ReactPlaid; exports.DEV_ENV = DEV_ENV; exports.SANDBOX_ENV = SANDBOX_ENV; exports.PROD_ENV = PROD_ENV; exports.AUTH_PRODUCT = AUTH_PRODUCT; exports.IDENTITY_PRODUCT = IDENTITY_PRODUCT; exports.TRANSACTIONS_PRODUCT = TRANSACTIONS_PRODUCT;