@trap_stevo/legendarybuilderproreact-ui
Version:
The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton
231 lines (228 loc) • 10.1 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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; }
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; }
import _regeneratorRuntime from "@babel/runtime/regenerator";
/*
Created by Hassan Steven Compton.
March 7, 2024.
*/
import React from 'react';
import { useState, useEffect } from 'react';
import ReactQuill, { Quill } from "react-quill";
import { HUDUniversalHUDUtilityManager } from "../HUDManagers/HUDUniversalHUDUtilityManager.js";
import "../HUDStyles/emailerFontSizes.css";
import "react-quill/dist/quill.snow.css";
import HUDTyper from "./HUDTyper.js";
function Emailer(emailerConfigurationSettings) {
useEffect(function () {
var Size = Quill["import"]('attributors/style/size');
Size.whitelist = ['8pt', '9pt', '10pt', '11pt', '12pt', '14pt', '16pt', '18pt', '20pt', '22pt', '24pt', '26pt', '28pt', '36pt', '48pt', '72pt', '96pt'];
Quill.register(Size, true);
}, []);
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
sendButtonHover = _useState2[0],
setSendButtonHover = _useState2[1];
var _useState3 = useState(""),
_useState4 = _slicedToArray(_useState3, 2),
editorHtml = _useState4[0],
setEditorHtml = _useState4[1];
var _useState5 = useState(""),
_useState6 = _slicedToArray(_useState5, 2),
subject = _useState6[0],
setSubject = _useState6[1];
var emailerModules = {
toolbar: [[{
'header': '1'
}, {
'header': '2'
}, {
'font': []
}], [{
size: ['8pt', '9pt', '10pt', '11pt', '12pt', '14pt', '16pt', '18pt', '20pt', '22pt', '24pt', '26pt', '28pt', '36pt', '48pt', '72pt', '96pt']
}], ['bold', 'italic', 'underline', 'strike', 'blockquote'], [{
'list': 'ordered'
}, {
'list': 'bullet'
}, {
'indent': '-1'
}, {
'indent': '+1'
}], ['link', 'image', 'video'], ['clean']],
clipboard: {
matchVisual: false
}
};
var _emailerConfiguration = emailerConfigurationSettings.modules,
modules = _emailerConfiguration === void 0 ? emailerModules : _emailerConfiguration,
formats = emailerConfigurationSettings.formats,
placeholder = emailerConfigurationSettings.placeholder,
emailerSubjectContainerSettings = emailerConfigurationSettings.emailerSubjectContainerSettings,
emailerContainerSettings = emailerConfigurationSettings.emailerContainerSettings,
emailSendButtonConfigurationSettings = emailerConfigurationSettings.emailSendButtonConfigurationSettings,
emailSendButtonTitleConfigurationSettings = emailerConfigurationSettings.emailSendButtonTitleConfigurationSettings,
setCurrentTabTitleProcessIndicator = emailerConfigurationSettings.setCurrentTabTitleProcessIndicator,
currentTabTitleProcessIndicator = emailerConfigurationSettings.currentTabTitleProcessIndicator,
_emailerConfiguration2 = emailerConfigurationSettings.sendButtonVisible,
sendButtonVisible = _emailerConfiguration2 === void 0 ? true : _emailerConfiguration2,
_emailerConfiguration3 = emailerConfigurationSettings.sendButtonTitleProcessIndicator,
sendButtonTitleProcessIndicator = _emailerConfiguration3 === void 0 ? "Send" : _emailerConfiguration3,
_emailerConfiguration4 = emailerConfigurationSettings.tabTitle,
tabTitle = _emailerConfiguration4 === void 0 ? "Investors" : _emailerConfiguration4,
recipientsData = emailerConfigurationSettings.recipientsData,
recipients = emailerConfigurationSettings.recipients,
signedUser = emailerConfigurationSettings.signedUser;
var handleEditorUpdate = function handleEditorUpdate(html) {
setEditorHtml(html);
return;
};
var handleSubjectUpdate = function handleSubjectUpdate(html, delta, source, editor) {
setSubject(editor.getContents());
return;
};
var handleSendEmail = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
var emails, timer, emailCleaner;
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
emails = [];
setCurrentTabTitleProcessIndicator("Sending Emails...");
recipients.forEach(function (recipient, index) {
emails[index] = recipientsData[recipient].user.email;
});
_context2.next = 5;
return HUDUniversalHUDUtilityManager.SendUsersEmail(signedUser, emails, subject.ops[0].insert, editorHtml);
case 5:
_context2.t0 = _context2.sent;
if (!(_context2.t0 === true)) {
_context2.next = 9;
break;
}
timer = setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
var emailCleaner;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
setCurrentTabTitleProcessIndicator("Emails Sent!");
emailCleaner = setTimeout(function () {
setCurrentTabTitleProcessIndicator(tabTitle);
setEditorHtml("");
setSubject("");
}, 1000);
return _context.abrupt("return", function () {
clearInterval(emailCleaner);
});
case 3:
case "end":
return _context.stop();
}
}, _callee);
})), 869);
return _context2.abrupt("return", function () {
clearInterval(timer);
});
case 9:
setCurrentTabTitleProcessIndicator("Did Not Send Emails...Try Again.");
emailCleaner = setTimeout(function () {
setCurrentTabTitleProcessIndicator(tabTitle);
}, 1000);
return _context2.abrupt("return", function () {
clearInterval(emailCleaner);
});
case 12:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function handleSendEmail() {
return _ref.apply(this, arguments);
};
}();
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(ReactQuill, {
style: _objectSpread(_objectSpread({}, emailerSubjectContainerSettings), {}, {
marginBottom: "1rem"
}),
value: subject,
onChange: handleSubjectUpdate,
modules: {
toolbar: [['bold', 'italic', 'underline']]
},
placeholder: "Enter subject..."
}), /*#__PURE__*/React.createElement(ReactQuill, {
style: emailerContainerSettings,
value: editorHtml,
onChange: handleEditorUpdate,
modules: modules,
formats: formats,
placeholder: placeholder || "Write something..."
}), sendButtonVisible && editorHtml.trim() !== "" ? /*#__PURE__*/React.createElement("div", {
style: {
position: "relative",
display: "flex",
height: "auto",
width: "calc(100%)",
borderRadius: "1rem",
marginBottom: "0.69rem",
marginLeft: "1rem",
marginTop: "3rem"
}
}, /*#__PURE__*/React.createElement("div", {
style: _objectSpread({
position: "relative",
display: "flex",
background: sendButtonHover ? "#cc0e00" : "rgba(0, 0, 0, 1)",
transition: "background 1.69s ease-in, scale 0.269s ease-in",
scale: sendButtonHover ? "1.4969" : "1",
height: "auto",
width: "auto",
borderRadius: "1rem",
marginBottom: "0.69rem",
marginLeft: "1rem",
marginTop: "0.69rem"
}, emailSendButtonConfigurationSettings),
onMouseLeave: function onMouseLeave() {
setSendButtonHover(false);
return;
},
onMouseEnter: function onMouseEnter() {
setSendButtonHover(true);
return;
},
onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
setSendButtonHover(false);
handleSendEmail();
return _context3.abrupt("return");
case 3:
case "end":
return _context3.stop();
}
}, _callee3);
}))
}, /*#__PURE__*/React.createElement("label", {
style: _objectSpread({
position: "relative",
display: "flex",
fontWeight: sendButtonHover ? "1169" : "869",
transition: "font-size 0.869s ease-in-out",
fontFamily: "ModeNine",
fontSize: sendButtonHover ? "1.069rem" : "0.969rem",
userSelect: "none",
color: sendButtonHover ? "rgba(255, 255, 255, 1)" : "rgba(247, 247, 247, 1)",
marginBottom: "0.569rem",
marginRight: "2.569rem",
marginLeft: "2.569rem",
marginTop: "0.569rem"
}, emailSendButtonTitleConfigurationSettings)
}, /*#__PURE__*/React.createElement(HUDTyper, {
speed: 7
}, sendButtonTitleProcessIndicator ? sendButtonTitleProcessIndicator : "Send")))) : /*#__PURE__*/React.createElement(React.Fragment, null));
}
;
export default Emailer;