@aclymatepackages/modules 1.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.
Files changed (45) hide show
  1. package/README.md +43 -0
  2. package/babel.config.json +18 -0
  3. package/dist/components/CompaniesAutocomplete.js +126 -0
  4. package/dist/components/CompanyOnboardingInput.js +116 -0
  5. package/dist/components/ComparisonChart.js +200 -0
  6. package/dist/components/CustomTooltipDisplayRow.js +59 -0
  7. package/dist/components/EmissionsChart.js +467 -0
  8. package/dist/components/EmissionsCustomTooltip.js +181 -0
  9. package/dist/components/EmissionsPieChart.js +130 -0
  10. package/dist/components/EmissionsReductionGraph.js +118 -0
  11. package/dist/components/FootprintEquivalencies.js +181 -0
  12. package/dist/components/FootprintVideo.js +262 -0
  13. package/dist/components/FuelTypesSelect.js +36 -0
  14. package/dist/components/IndustryAutocomplete.js +58 -0
  15. package/dist/components/PlacesAutocomplete.js +173 -0
  16. package/dist/components/StripeElements.js +95 -0
  17. package/dist/components/YesNoQuestion.js +88 -0
  18. package/dist/components/stripeInput.js +293 -0
  19. package/dist/components/useChartWarningLabels.js +143 -0
  20. package/dist/index.js +118 -0
  21. package/package.json +74 -0
  22. package/public/favicon.ico +0 -0
  23. package/public/index.html +43 -0
  24. package/public/logo192.png +0 -0
  25. package/public/logo512.png +0 -0
  26. package/public/manifest.json +25 -0
  27. package/public/robots.txt +3 -0
  28. package/src/components/CompaniesAutocomplete.js +125 -0
  29. package/src/components/CompanyOnboardingInput.js +113 -0
  30. package/src/components/ComparisonChart.js +236 -0
  31. package/src/components/CustomTooltipDisplayRow.js +41 -0
  32. package/src/components/EmissionsChart.js +579 -0
  33. package/src/components/EmissionsCustomTooltip.js +146 -0
  34. package/src/components/EmissionsPieChart.js +120 -0
  35. package/src/components/EmissionsReductionGraph.js +107 -0
  36. package/src/components/FootprintEquivalencies.js +203 -0
  37. package/src/components/FootprintVideo.js +328 -0
  38. package/src/components/FuelTypesSelect.js +29 -0
  39. package/src/components/IndustryAutocomplete.js +56 -0
  40. package/src/components/PlacesAutocomplete.js +174 -0
  41. package/src/components/StripeElements.js +95 -0
  42. package/src/components/YesNoQuestion.js +68 -0
  43. package/src/components/stripeInput.js +288 -0
  44. package/src/components/useChartWarningLabels.js +139 -0
  45. package/src/index.js +35 -0
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.assign.js");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ require("core-js/modules/es.symbol.description.js");
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _styles = require("@mui/styles");
11
+ var _material = require("@mui/material");
12
+ var _styles2 = require("@mui/material/styles");
13
+ var _atoms = require("@aclymatepackages/atoms");
14
+ var _themes = require("@aclymatepackages/themes");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }
17
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
21
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
22
+ const YesNoQuestionButtons = _ref => {
23
+ let {
24
+ value,
25
+ setValue
26
+ } = _ref;
27
+ const {
28
+ palette
29
+ } = (0, _styles.useTheme)();
30
+ const noButtonStyleObj = value === false ? {
31
+ style: {
32
+ backgroundColor: palette.error.main
33
+ }
34
+ } : {};
35
+ const yesButtonStyleObj = value ? {
36
+ style: {
37
+ backgroundColor: palette.secondary.main
38
+ }
39
+ } : {};
40
+ const buttons = [_objectSpread({
41
+ value: false,
42
+ name: "No"
43
+ }, noButtonStyleObj), _objectSpread({
44
+ value: true,
45
+ name: "Yes"
46
+ }, yesButtonStyleObj)];
47
+ return /*#__PURE__*/_react.default.createElement(_atoms.ToggleButtons, {
48
+ value: value,
49
+ onChange: setValue,
50
+ buttons: buttons
51
+ });
52
+ };
53
+ const YesNoQuestion = _ref2 => {
54
+ let {
55
+ question,
56
+ value,
57
+ setValue,
58
+ typographyProps,
59
+ lightBackground
60
+ } = _ref2;
61
+ const findTheme = () => {
62
+ if (lightBackground || value !== undefined) {
63
+ return _themes.mainTheme;
64
+ }
65
+ return _themes.mergeDarkTheme;
66
+ };
67
+ return /*#__PURE__*/_react.default.createElement(_material.Grid, {
68
+ container: true,
69
+ spacing: 2,
70
+ justifyContent: "space-between",
71
+ alignItems: "center",
72
+ wrap: "nowrap"
73
+ }, /*#__PURE__*/_react.default.createElement(_material.Grid, {
74
+ item: true
75
+ }, /*#__PURE__*/_react.default.createElement(_material.Typography, _extends({
76
+ variant: "body1",
77
+ color: lightBackground ? "textPrimary" : "inherit"
78
+ }, typographyProps), question)), /*#__PURE__*/_react.default.createElement(_material.Grid, {
79
+ item: true
80
+ }, /*#__PURE__*/_react.default.createElement(_styles2.ThemeProvider, {
81
+ theme: findTheme()
82
+ }, /*#__PURE__*/_react.default.createElement(YesNoQuestionButtons, {
83
+ value: value,
84
+ setValue: setValue
85
+ }))));
86
+ };
87
+ var _default = YesNoQuestion;
88
+ exports.default = _default;
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.weak-map.js");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ require("core-js/modules/web.dom-collections.iterator.js");
10
+ require("core-js/modules/es.promise.js");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _dayjs = _interopRequireDefault(require("dayjs"));
13
+ var _reactStripeJs = require("@stripe/react-stripe-js");
14
+ var _material = require("@mui/material");
15
+ var _atoms = require("@aclymatepackages/atoms");
16
+ var _otherHelpers = require("@aclymatepackages/other-helpers");
17
+ var _fetchAclymateApi = _interopRequireDefault(require("@aclymatepackages/fetch-aclymate-api"));
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ 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); }
20
+ 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; }
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
25
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
26
+ const StripeSubmitButton = _ref => {
27
+ let {
28
+ stripeSubmit,
29
+ stripeError,
30
+ isStripeComplete,
31
+ buttonText
32
+ } = _ref;
33
+ const [saveLoading, setSaveLoading] = (0, _react.useState)(false);
34
+ const handleSave = async () => {
35
+ setSaveLoading(true);
36
+ await stripeSubmit();
37
+ return setSaveLoading(false);
38
+ };
39
+ return /*#__PURE__*/_react.default.createElement(_atoms.LoadingButton, {
40
+ isLoading: saveLoading,
41
+ label: buttonText || "Save Payment Info",
42
+ color: "secondary",
43
+ disabled: !isStripeComplete || !(0, _otherHelpers.isObjectEmpty)(stripeError),
44
+ onClick: () => handleSave()
45
+ });
46
+ };
47
+ const CardInput = _ref2 => {
48
+ let {
49
+ options,
50
+ setCardData
51
+ } = _ref2;
52
+ const defaultOptions = {
53
+ fields: {
54
+ billingDetails: {
55
+ name: "never",
56
+ email: "never"
57
+ }
58
+ },
59
+ wallets: {
60
+ applePay: "never",
61
+ googlePay: "never"
62
+ },
63
+ business: {
64
+ name: "Aclymate"
65
+ }
66
+ };
67
+ return /*#__PURE__*/_react.default.createElement(_reactStripeJs.PaymentElement, {
68
+ options: options || defaultOptions,
69
+ onChange: e => setCardData(e)
70
+ });
71
+ };
72
+ const StripeInputForm = _ref3 => {
73
+ let {
74
+ style,
75
+ options,
76
+ error = {},
77
+ setCardData
78
+ } = _ref3;
79
+ const {
80
+ message
81
+ } = error;
82
+ const CardError = () => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, message && /*#__PURE__*/_react.default.createElement(_material.Typography, {
83
+ variant: "caption",
84
+ color: "error"
85
+ }, message));
86
+ if (style) {
87
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_material.Box, {
88
+ p: 2,
89
+ style: style
90
+ }, /*#__PURE__*/_react.default.createElement(CardInput, {
91
+ options: options,
92
+ setCardData: setCardData
93
+ })), /*#__PURE__*/_react.default.createElement(CardError, null));
94
+ }
95
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(CardInput, {
96
+ options: options,
97
+ setCardData: setCardData
98
+ }), /*#__PURE__*/_react.default.createElement(CardError, null));
99
+ };
100
+ const useStripeInput = _ref4 => {
101
+ let {
102
+ onButtonClick,
103
+ accountData,
104
+ authUser,
105
+ updateAccountData,
106
+ confirmSetupReturnUrl = "",
107
+ baseFetchHost,
108
+ buttonText
109
+ } = _ref4;
110
+ const stripe = (0, _reactStripeJs.useStripe)();
111
+ const elements = (0, _reactStripeJs.useElements)();
112
+ const {
113
+ stripeCustomerId: accountObjStripeCustomerId,
114
+ billing = {},
115
+ name: accountName
116
+ } = accountData || {};
117
+ const {
118
+ stripeCustomerId: billingObjStripeCustomerId
119
+ } = billing;
120
+ const [paymentData, setPaymentData] = (0, _react.useState)({});
121
+ const {
122
+ error: stripeError,
123
+ complete: isStripeComplete
124
+ } = paymentData;
125
+ const createBillingDetailsFullName = () => {
126
+ const {
127
+ displayName
128
+ } = authUser;
129
+ const [firstCompanyWord] = accountName.split(" ");
130
+ const [firstName, lastName] = displayName.split(" ");
131
+ if (!lastName) {
132
+ return "".concat(firstName, " ").concat(firstCompanyWord);
133
+ }
134
+ return "".concat(firstName, " ").concat(lastName);
135
+ };
136
+ const updateAccountBilling = async updateObj => {
137
+ await updateAccountData(updateObj);
138
+ if (onButtonClick) {
139
+ return await onButtonClick(updateObj);
140
+ }
141
+ return updateObj;
142
+ };
143
+ const createStripePaymentMethod = async () => {
144
+ const {
145
+ email
146
+ } = authUser;
147
+ const billingDetailsFullName = createBillingDetailsFullName();
148
+ const {
149
+ setupIntent,
150
+ error
151
+ } = await stripe.confirmSetup({
152
+ elements,
153
+ confirmParams: {
154
+ return_url: confirmSetupReturnUrl,
155
+ payment_method_data: {
156
+ billing_details: {
157
+ name: billingDetailsFullName,
158
+ email
159
+ }
160
+ }
161
+ },
162
+ redirect: "if_required"
163
+ });
164
+ if (error) {
165
+ setPaymentData(data => _objectSpread(_objectSpread({}, data), {}, {
166
+ error
167
+ }));
168
+ return false;
169
+ }
170
+ const {
171
+ payment_method,
172
+ status
173
+ } = setupIntent;
174
+ const paymentMethod = await (0, _fetchAclymateApi.default)({
175
+ path: "/stripe/get-payment-method-data",
176
+ method: "POST",
177
+ data: {
178
+ paymentMethodId: payment_method
179
+ },
180
+ baseFetchHost,
181
+ callback: res => res
182
+ });
183
+ return _objectSpread(_objectSpread({}, paymentMethod), {}, {
184
+ status
185
+ });
186
+ };
187
+ const savePaymentMethod = async paymentMethod => {
188
+ const {
189
+ paymentMethodId: existingPaymentMethodId,
190
+ subscriptions
191
+ } = billing;
192
+ const existingSubscriptionsObj = subscriptions ? {
193
+ subscriptions
194
+ } : {};
195
+ const {
196
+ type
197
+ } = paymentMethod;
198
+ if (existingPaymentMethodId && authUser) {
199
+ await (0, _fetchAclymateApi.default)({
200
+ path: "/stripe/detach-payment-method",
201
+ method: "POST",
202
+ data: {
203
+ paymentMethodId: existingPaymentMethodId
204
+ },
205
+ baseFetchHost
206
+ });
207
+ }
208
+ const generateCardBillingAccountObj = () => {
209
+ const {
210
+ card,
211
+ id: newPaymentMethodId
212
+ } = paymentMethod;
213
+ const {
214
+ brand,
215
+ exp_month,
216
+ exp_year,
217
+ last4
218
+ } = card;
219
+ const daysInMonth = (0, _dayjs.default)("".concat(exp_year, "-").concat(exp_month, "-01")).daysInMonth();
220
+ const expirationDate = (0, _dayjs.default)("".concat(exp_year, "-").concat(exp_month, "-").concat(daysInMonth)).toDate();
221
+ return {
222
+ billing: _objectSpread({
223
+ card: {
224
+ brand,
225
+ expiration: "".concat(exp_month, "/").concat(exp_year),
226
+ expirationDate,
227
+ last4
228
+ },
229
+ paymentMethodId: newPaymentMethodId
230
+ }, existingSubscriptionsObj),
231
+ stripeCustomerId: billingObjStripeCustomerId || accountObjStripeCustomerId
232
+ };
233
+ };
234
+ const generateBankBillingAccountObj = () => {
235
+ const {
236
+ us_bank_account,
237
+ id: newPaymentMethodId,
238
+ billing_details,
239
+ status
240
+ } = paymentMethod;
241
+ const {
242
+ name,
243
+ email
244
+ } = billing_details;
245
+ const {
246
+ account_type,
247
+ account_holder_type,
248
+ bank_name,
249
+ last4,
250
+ routing_number
251
+ } = us_bank_account;
252
+ return {
253
+ billing: _objectSpread({
254
+ us_bank_account: {
255
+ account_type,
256
+ account_holder_type,
257
+ bank_name,
258
+ last4,
259
+ routing_number,
260
+ status,
261
+ name,
262
+ email
263
+ },
264
+ paymentMethodId: newPaymentMethodId
265
+ }, existingSubscriptionsObj),
266
+ stripeCustomerId: billingObjStripeCustomerId || accountObjStripeCustomerId
267
+ };
268
+ };
269
+ const accountUpdateObj = type === "card" ? generateCardBillingAccountObj() : generateBankBillingAccountObj();
270
+ return await updateAccountBilling(accountUpdateObj);
271
+ };
272
+ const stripeSubmit = async () => {
273
+ if (!stripe || !elements) {
274
+ return;
275
+ }
276
+ const paymentMethod = await createStripePaymentMethod();
277
+ return await savePaymentMethod(paymentMethod);
278
+ };
279
+ return {
280
+ input: /*#__PURE__*/_react.default.createElement(StripeInputForm, {
281
+ setCardData: setPaymentData,
282
+ error: stripeError
283
+ }),
284
+ button: /*#__PURE__*/_react.default.createElement(StripeSubmitButton, {
285
+ stripeSubmit: stripeSubmit,
286
+ stripeError: stripeError,
287
+ isStripeComplete: isStripeComplete,
288
+ buttonText: buttonText
289
+ })
290
+ };
291
+ };
292
+ var _default = useStripeInput;
293
+ exports.default = _default;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol.description.js");
4
+ require("core-js/modules/es.object.assign.js");
5
+ require("core-js/modules/es.weak-map.js");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ require("core-js/modules/web.dom-collections.iterator.js");
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _recharts = require("recharts");
13
+ var _reactFontawesome = require("@fortawesome/react-fontawesome");
14
+ var _material = require("@mui/material");
15
+ 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); }
16
+ 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; }
17
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
22
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
23
+ //WL 10-20-23: This empty label with a useEffect is a super weird hack, but it's the only way I could figure out how to draw status labels
24
+ const WarningLabelSetter = _ref => {
25
+ let {
26
+ value,
27
+ y,
28
+ x,
29
+ setWarningLabels,
30
+ id,
31
+ width
32
+ } = _ref;
33
+ (0, _react.useEffect)(() => {
34
+ const setWarningLabelValues = () => {
35
+ if (value) {
36
+ const {
37
+ color,
38
+ icon
39
+ } = value;
40
+ return setWarningLabels(existingLabels => {
41
+ const otherLabels = existingLabels.filter(label => (label === null || label === void 0 ? void 0 : label.id) !== id);
42
+ return [...otherLabels, {
43
+ id,
44
+ x,
45
+ y,
46
+ color,
47
+ icon,
48
+ width
49
+ }];
50
+ });
51
+ }
52
+ return setWarningLabels(existingLabels => existingLabels.filter(label => (label === null || label === void 0 ? void 0 : label.id) !== id));
53
+ };
54
+ setWarningLabelValues();
55
+ }, [value, x, y, id, setWarningLabels, width]);
56
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
57
+ };
58
+ const WarningLabel = _ref2 => {
59
+ let {
60
+ x,
61
+ y,
62
+ icon,
63
+ color,
64
+ width,
65
+ value,
66
+ maxChartValue
67
+ } = _ref2;
68
+ const AVATAR_WIDTH = 40;
69
+ const buildCommonProps = topOffset => ({
70
+ backgroundColor: color,
71
+ position: "absolute",
72
+ top: maxChartValue * 0.9 > value ? y - topOffset * 1.25 : y - AVATAR_WIDTH / 2
73
+ });
74
+ const buildCenteringProps = warningWidth => ({
75
+ left: x + width / 2,
76
+ transform: "translateX(-".concat(warningWidth / 2, "px)")
77
+ });
78
+ if (width >= AVATAR_WIDTH) {
79
+ return /*#__PURE__*/_react.default.createElement(_material.Avatar, {
80
+ style: _objectSpread(_objectSpread({}, buildCommonProps(AVATAR_WIDTH)), buildCenteringProps(AVATAR_WIDTH))
81
+ }, /*#__PURE__*/_react.default.createElement(_reactFontawesome.FontAwesomeIcon, {
82
+ icon: icon,
83
+ style: {
84
+ color: "white"
85
+ }
86
+ }));
87
+ }
88
+ const BADGE_WIDTH = 10;
89
+ const buildBadgeProps = badgeWidth => ({
90
+ width: badgeWidth,
91
+ height: badgeWidth,
92
+ borderRadius: "50%"
93
+ });
94
+ if (width >= BADGE_WIDTH) {
95
+ return /*#__PURE__*/_react.default.createElement("div", {
96
+ style: _objectSpread(_objectSpread(_objectSpread({}, buildCommonProps(BADGE_WIDTH)), buildCenteringProps(BADGE_WIDTH)), buildBadgeProps(BADGE_WIDTH))
97
+ });
98
+ }
99
+ return /*#__PURE__*/_react.default.createElement("div", {
100
+ style: _objectSpread(_objectSpread({}, buildCommonProps(width)), {}, {
101
+ left: x
102
+ }, buildBadgeProps(width))
103
+ });
104
+ };
105
+ const useChartWarningLabels = _ref3 => {
106
+ let {
107
+ data,
108
+ warningField,
109
+ barSumField
110
+ } = _ref3;
111
+ const [warningLabels, setWarningLabels] = (0, _react.useState)([]);
112
+ (0, _react.useEffect)(() => {
113
+ if (!data.some(dataObj => dataObj[warningField])) {
114
+ setWarningLabels([]);
115
+ }
116
+ setWarningLabels(currentLabels => currentLabels.filter(_ref4 => {
117
+ let {
118
+ id
119
+ } = _ref4;
120
+ return data.find(dataObj => dataObj.id === id);
121
+ }));
122
+ }, [data, warningField]);
123
+ const maxChartValue = Math.max(...data.map(dataObj => dataObj[barSumField]));
124
+ return {
125
+ labelSetter: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_recharts.LabelList, {
126
+ position: "insideTopLeft",
127
+ dataKey: warningField,
128
+ content: /*#__PURE__*/_react.default.createElement(WarningLabelSetter, {
129
+ setWarningLabels: setWarningLabels
130
+ })
131
+ })),
132
+ warningLabels: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !!warningLabels.length && warningLabels.map((warning, idx) => {
133
+ var _data$find;
134
+ return /*#__PURE__*/_react.default.createElement(WarningLabel, _extends({
135
+ key: "chart-warning-label-".concat(idx),
136
+ maxChartValue: maxChartValue,
137
+ value: (_data$find = data.find(dataObj => dataObj.id === warning.id)) === null || _data$find === void 0 ? void 0 : _data$find[barSumField]
138
+ }, warning));
139
+ }))
140
+ };
141
+ };
142
+ var _default = useChartWarningLabels;
143
+ exports.default = _default;
package/dist/index.js ADDED
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CompaniesAutocomplete", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _CompaniesAutocomplete.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "CompanyOnboardingInput", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _CompanyOnboardingInput.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "ComparisonChart", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _ComparisonChart.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "CustomTooltipDisplayRow", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _CustomTooltipDisplayRow.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "EmissionsChart", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _EmissionsChart.default;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "EmissionsCustomTooltip", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _EmissionsCustomTooltip.default;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "EmissionsPieChart", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _EmissionsPieChart.default;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "EmissionsReductionGraph", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _EmissionsReductionGraph.default;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "FootprintEquivalencies", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _FootprintEquivalencies.default;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "FootprintVideo", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _FootprintVideo.default;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "IndustryAutocomplete", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _IndustryAutocomplete.default;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "PlacesAutocomplete", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _PlacesAutocomplete.default;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "StripeElements", {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _StripeElements.default;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "YesNoQuestion", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _YesNoQuestion.default;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "useChartWarningLabels", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _useChartWarningLabels.default;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "useStripeInput", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _stripeInput.default;
100
+ }
101
+ });
102
+ var _FootprintVideo = _interopRequireDefault(require("./components/FootprintVideo"));
103
+ var _IndustryAutocomplete = _interopRequireDefault(require("./components/IndustryAutocomplete"));
104
+ var _PlacesAutocomplete = _interopRequireDefault(require("./components/PlacesAutocomplete"));
105
+ var _YesNoQuestion = _interopRequireDefault(require("./components/YesNoQuestion"));
106
+ var _FootprintEquivalencies = _interopRequireDefault(require("./components/FootprintEquivalencies"));
107
+ var _ComparisonChart = _interopRequireDefault(require("./components/ComparisonChart"));
108
+ var _CompaniesAutocomplete = _interopRequireDefault(require("./components/CompaniesAutocomplete"));
109
+ var _stripeInput = _interopRequireDefault(require("./components/stripeInput"));
110
+ var _StripeElements = _interopRequireDefault(require("./components/StripeElements"));
111
+ var _EmissionsReductionGraph = _interopRequireDefault(require("./components/EmissionsReductionGraph"));
112
+ var _CompanyOnboardingInput = _interopRequireDefault(require("./components/CompanyOnboardingInput"));
113
+ var _CustomTooltipDisplayRow = _interopRequireDefault(require("./components/CustomTooltipDisplayRow"));
114
+ var _EmissionsChart = _interopRequireDefault(require("./components/EmissionsChart"));
115
+ var _EmissionsCustomTooltip = _interopRequireDefault(require("./components/EmissionsCustomTooltip"));
116
+ var _EmissionsPieChart = _interopRequireDefault(require("./components/EmissionsPieChart"));
117
+ var _useChartWarningLabels = _interopRequireDefault(require("./components/useChartWarningLabels"));
118
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }