UNPKG

@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
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;