dce-reactkit 2.0.11 → 3.0.0-beta.2

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 (130) hide show
  1. package/dist/cjs/index.js +36424 -0
  2. package/dist/cjs/index.js.map +1 -0
  3. package/{lib → dist/cjs/types}/components/AppWrapper.d.ts +8 -3
  4. package/{lib → dist/cjs/types}/components/ErrorBox.d.ts +0 -0
  5. package/{lib → dist/cjs/types}/components/LoadingSpinner.d.ts +1 -0
  6. package/{lib → dist/cjs/types}/components/Modal.d.ts +5 -36
  7. package/{lib → dist/cjs/types}/components/TabBox.d.ts +0 -0
  8. package/{lib → dist/cjs/types}/errors/ErrorWithCode.d.ts +0 -0
  9. package/{lib → dist/cjs/types}/helpers/abbreviate.d.ts +1 -0
  10. package/{lib → dist/cjs/types}/helpers/avg.d.ts +0 -0
  11. package/{lib → dist/cjs/types}/helpers/ceilToNumDecimals.d.ts +0 -0
  12. package/{lib → dist/cjs/types}/helpers/floorToNumDecimals.d.ts +0 -0
  13. package/{lib → dist/cjs/types}/helpers/forceNumIntoBounds.d.ts +0 -0
  14. package/{lib → dist/cjs/types}/helpers/padDecimalZeros.d.ts +0 -0
  15. package/{lib → dist/cjs/types}/helpers/padZerosLeft.d.ts +0 -0
  16. package/{lib → dist/cjs/types}/helpers/roundToNumDecimals.d.ts +0 -0
  17. package/{lib → dist/cjs/types}/helpers/sum.d.ts +0 -0
  18. package/{lib → dist/cjs/types}/helpers/waitMs.d.ts +0 -0
  19. package/dist/cjs/types/index.d.ts +22 -0
  20. package/dist/cjs/types/types/ModalButtonType.d.ts +17 -0
  21. package/dist/cjs/types/types/ModalSize.d.ts +11 -0
  22. package/dist/cjs/types/types/ModalType.d.ts +16 -0
  23. package/{lib → dist/cjs/types}/types/ReactKitErrorCode.d.ts +0 -0
  24. package/{lib → dist/cjs/types}/types/Variant.d.ts +0 -0
  25. package/dist/esm/index.js +36375 -0
  26. package/dist/esm/index.js.map +1 -0
  27. package/dist/esm/types/components/AppWrapper.d.ts +40 -0
  28. package/dist/esm/types/components/ErrorBox.d.ts +12 -0
  29. package/dist/esm/types/components/LoadingSpinner.d.ts +7 -0
  30. package/dist/esm/types/components/Modal.d.ts +40 -0
  31. package/dist/esm/types/components/TabBox.d.ts +11 -0
  32. package/dist/esm/types/errors/ErrorWithCode.d.ts +9 -0
  33. package/dist/esm/types/helpers/abbreviate.d.ts +10 -0
  34. package/dist/esm/types/helpers/avg.d.ts +8 -0
  35. package/dist/esm/types/helpers/ceilToNumDecimals.d.ts +9 -0
  36. package/dist/esm/types/helpers/floorToNumDecimals.d.ts +9 -0
  37. package/dist/esm/types/helpers/forceNumIntoBounds.d.ts +10 -0
  38. package/dist/esm/types/helpers/padDecimalZeros.d.ts +10 -0
  39. package/dist/esm/types/helpers/padZerosLeft.d.ts +9 -0
  40. package/dist/esm/types/helpers/roundToNumDecimals.d.ts +9 -0
  41. package/dist/esm/types/helpers/sum.d.ts +8 -0
  42. package/dist/esm/types/helpers/waitMs.d.ts +7 -0
  43. package/dist/esm/types/index.d.ts +22 -0
  44. package/dist/esm/types/types/ModalButtonType.d.ts +17 -0
  45. package/dist/esm/types/types/ModalSize.d.ts +11 -0
  46. package/dist/esm/types/types/ModalType.d.ts +16 -0
  47. package/dist/esm/types/types/ReactKitErrorCode.d.ts +13 -0
  48. package/dist/esm/types/types/Variant.d.ts +15 -0
  49. package/dist/index.d.ts +274 -0
  50. package/package.json +20 -22
  51. package/rollup.config.js +42 -0
  52. package/src/components/AppWrapper.tsx +37 -36
  53. package/src/components/LoadingSpinner.tsx +3 -0
  54. package/src/components/Modal.tsx +50 -94
  55. package/src/helpers/abbreviate.tsx +2 -0
  56. package/src/helpers/padDecimalZeros.tsx +1 -1
  57. package/src/index.ts +61 -0
  58. package/src/types/ModalButtonType.tsx +18 -0
  59. package/src/types/ModalSize.tsx +12 -0
  60. package/src/types/ModalType.tsx +17 -0
  61. package/tsconfig.json +16 -17
  62. package/.eslintrc.js +0 -95
  63. package/lib/components/AppWrapper.js +0 -277
  64. package/lib/components/AppWrapper.js.map +0 -1
  65. package/lib/components/ErrorBox.js +0 -65
  66. package/lib/components/ErrorBox.js.map +0 -1
  67. package/lib/components/LoadingSpinner.js +0 -41
  68. package/lib/components/LoadingSpinner.js.map +0 -1
  69. package/lib/components/Modal.js +0 -321
  70. package/lib/components/Modal.js.map +0 -1
  71. package/lib/components/TabBox.js +0 -42
  72. package/lib/components/TabBox.js.map +0 -1
  73. package/lib/errors/ErrorWithCode.js +0 -33
  74. package/lib/errors/ErrorWithCode.js.map +0 -1
  75. package/lib/helpers/abbreviate.js +0 -21
  76. package/lib/helpers/abbreviate.js.map +0 -1
  77. package/lib/helpers/alert.d.ts +0 -2
  78. package/lib/helpers/alert.js +0 -5
  79. package/lib/helpers/alert.js.map +0 -1
  80. package/lib/helpers/avg.js +0 -24
  81. package/lib/helpers/avg.js.map +0 -1
  82. package/lib/helpers/ceilToNumDecimals.js +0 -15
  83. package/lib/helpers/ceilToNumDecimals.js.map +0 -1
  84. package/lib/helpers/confirm.d.ts +0 -2
  85. package/lib/helpers/confirm.js +0 -5
  86. package/lib/helpers/confirm.js.map +0 -1
  87. package/lib/helpers/floorToNumDecimals.js +0 -15
  88. package/lib/helpers/floorToNumDecimals.js.map +0 -1
  89. package/lib/helpers/forceNumIntoBounds.js +0 -15
  90. package/lib/helpers/forceNumIntoBounds.js.map +0 -1
  91. package/lib/helpers/handleError.d.ts +0 -14
  92. package/lib/helpers/handleError.js +0 -54
  93. package/lib/helpers/handleError.js.map +0 -1
  94. package/lib/helpers/handleSuccess.d.ts +0 -8
  95. package/lib/helpers/handleSuccess.js +0 -20
  96. package/lib/helpers/handleSuccess.js.map +0 -1
  97. package/lib/helpers/padDecimalZeros.js +0 -30
  98. package/lib/helpers/padDecimalZeros.js.map +0 -1
  99. package/lib/helpers/padZerosLeft.js +0 -21
  100. package/lib/helpers/padZerosLeft.js.map +0 -1
  101. package/lib/helpers/parseRequest.d.ts +0 -21
  102. package/lib/helpers/parseRequest.js +0 -240
  103. package/lib/helpers/parseRequest.js.map +0 -1
  104. package/lib/helpers/roundToNumDecimals.js +0 -15
  105. package/lib/helpers/roundToNumDecimals.js.map +0 -1
  106. package/lib/helpers/showFatalError.d.ts +0 -2
  107. package/lib/helpers/showFatalError.js +0 -5
  108. package/lib/helpers/showFatalError.js.map +0 -1
  109. package/lib/helpers/sum.js +0 -15
  110. package/lib/helpers/sum.js.map +0 -1
  111. package/lib/helpers/visitServerEndpoint.d.ts +0 -23
  112. package/lib/helpers/visitServerEndpoint.js +0 -135
  113. package/lib/helpers/visitServerEndpoint.js.map +0 -1
  114. package/lib/helpers/waitMs.js +0 -55
  115. package/lib/helpers/waitMs.js.map +0 -1
  116. package/lib/types/ParamType.d.ts +0 -17
  117. package/lib/types/ParamType.js +0 -21
  118. package/lib/types/ParamType.js.map +0 -1
  119. package/lib/types/ReactKitErrorCode.js +0 -18
  120. package/lib/types/ReactKitErrorCode.js.map +0 -1
  121. package/lib/types/Variant.js +0 -19
  122. package/lib/types/Variant.js.map +0 -1
  123. package/src/helpers/alert.tsx +0 -3
  124. package/src/helpers/confirm.tsx +0 -3
  125. package/src/helpers/handleError.ts +0 -65
  126. package/src/helpers/handleSuccess.ts +0 -18
  127. package/src/helpers/parseRequest.ts +0 -299
  128. package/src/helpers/showFatalError.tsx +0 -3
  129. package/src/helpers/visitServerEndpoint.tsx +0 -110
  130. package/src/types/ParamType.ts +0 -18
package/.eslintrc.js DELETED
@@ -1,95 +0,0 @@
1
- const config = {
2
- extends: [
3
- 'airbnb',
4
- 'airbnb/hooks',
5
- 'react-app',
6
- 'react-app/jest',
7
- ],
8
- overrides: [
9
- {
10
- files: [
11
- '*.ts',
12
- '*.tsx',
13
- ],
14
- extends: [
15
- 'airbnb-typescript',
16
- ],
17
- parserOptions: {
18
- project: './tsconfig.json',
19
- tsconfigRootDir: __dirname,
20
- sourceType: 'module',
21
- },
22
- rules: {
23
- '@typescript-eslint/lines-between-class-members': 'off',
24
- '@typescript-eslint/no-unused-expressions': 'off',
25
- },
26
- },
27
- ],
28
- rules: {
29
- 'arrow-body-style': [
30
- 'warn',
31
- 'always',
32
- ],
33
- 'react/prop-types': 'off',
34
- 'react/function-component-definition': [
35
- 2,
36
- {
37
- namedComponents: 'arrow-function',
38
- },
39
- ],
40
- 'no-spaced-func': 'off',
41
- 'react-hooks/exhaustive-deps': 'off',
42
- 'lines-between-class-members': 'off',
43
- 'no-case-declarations': 'off',
44
- 'react/require-default-props': 'off',
45
- 'react/react-in-jsx-scope': 'off',
46
- 'arrow-parens': [
47
- 'warn',
48
- 'always',
49
- ],
50
- 'comma-dangle': [
51
- 'error',
52
- {
53
- arrays: 'always-multiline',
54
- objects: 'always-multiline',
55
- imports: 'always-multiline',
56
- exports: 'always-multiline',
57
- functions: 'always-multiline',
58
- },
59
- ],
60
- 'consistent-return': 'off',
61
- 'id-length': 'off',
62
- 'max-len': [
63
- 'error',
64
- {
65
- code: 125,
66
- ignoreStrings: true,
67
- ignoreTemplateLiterals: true,
68
- ignoreUrls: true,
69
- },
70
- ],
71
- 'newline-per-chained-call': [
72
- 'error',
73
- {
74
- ignoreChainWithDepth: 2,
75
- },
76
- ],
77
- 'no-plusplus': [
78
- 'warn',
79
- {
80
- allowForLoopAfterthoughts: true,
81
- },
82
- ],
83
- 'prefer-template': 1,
84
- radix: 'error',
85
- 'no-await-in-loop': 'off',
86
- 'max-params': [
87
- 'warn',
88
- {
89
- max: 3,
90
- },
91
- ],
92
- },
93
- };
94
-
95
- module.exports = config;
@@ -1,277 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
- Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.showFatalError = exports.confirm = exports.alert = void 0;
54
- var jsx_runtime_1 = require("react/jsx-runtime");
55
- /**
56
- * A wrapper for the entire React app that adds global functionality like
57
- * handling for fatal error messages
58
- * @author Gabe Abrams
59
- */
60
- // Import React
61
- var react_1 = require("react");
62
- // Import shared components
63
- var ErrorBox_1 = __importDefault(require("./ErrorBox"));
64
- // Import helpers
65
- var visitServerEndpoint_1 = require("../helpers/visitServerEndpoint");
66
- // Import shared types
67
- var ReactKitErrorCode_1 = __importDefault(require("../types/ReactKitErrorCode"));
68
- // Import shared components
69
- var Modal_1 = __importDefault(require("./Modal"));
70
- // Import custom errors
71
- var ErrorWithCode_1 = __importDefault(require("../errors/ErrorWithCode"));
72
- /*------------------------------------------------------------------------*/
73
- /* Static Helpers */
74
- /*------------------------------------------------------------------------*/
75
- /*----------------------------------------*/
76
- /* Alert */
77
- /*----------------------------------------*/
78
- // Stored copies of setters
79
- var setAlertInfo;
80
- var onAlertClosed;
81
- /**
82
- * Show an alert modal with an "Okay" button
83
- * @author Gabe Abrams
84
- * @param title the title text to display at the top of the alert
85
- * @param text the text to display in the alert
86
- */
87
- var alert = function (title, text) { return __awaiter(void 0, void 0, void 0, function () {
88
- return __generator(this, function (_a) {
89
- // Fallback if alert not available
90
- if (!setAlertInfo) {
91
- return [2 /*return*/, window.alert("".concat(title, "\n\n").concat(text))];
92
- }
93
- // Return promise that resolves when alert is closed
94
- return [2 /*return*/, new Promise(function (resolve) {
95
- // Setup handler
96
- onAlertClosed = function () {
97
- resolve(null);
98
- };
99
- // Show the alert
100
- setAlertInfo({
101
- title: title,
102
- text: text,
103
- });
104
- })];
105
- });
106
- }); };
107
- exports.alert = alert;
108
- /*----------------------------------------*/
109
- /* Confirm */
110
- /*----------------------------------------*/
111
- // Stored copies of setters
112
- var setConfirmInfo;
113
- var onConfirmClosed;
114
- /**
115
- * Show a confirmation modal with an "Okay" and a "Cancel" button
116
- * @author Gabe Abrams
117
- * @param title the title text to display at the top of the alert
118
- * @param text the text to display in the alert
119
- * @returns true if the user confirmed
120
- */
121
- var confirm = function (title, text) { return __awaiter(void 0, void 0, void 0, function () {
122
- return __generator(this, function (_a) {
123
- // Fallback if confirm is not available
124
- if (!setConfirmInfo) {
125
- return [2 /*return*/, window.confirm("".concat(title, "\n\n").concat(text))];
126
- }
127
- // Return promise that resolves with result of confirmation
128
- return [2 /*return*/, new Promise(function (resolve) {
129
- // Setup handler
130
- onConfirmClosed = function (confirmed) {
131
- resolve(confirmed);
132
- };
133
- // Show the confirm
134
- setConfirmInfo({
135
- title: title,
136
- text: text,
137
- });
138
- })];
139
- });
140
- }); };
141
- exports.confirm = confirm;
142
- /*----------------------------------------*/
143
- /* Fatal Error */
144
- /*----------------------------------------*/
145
- // Stored copies of setters
146
- var setFatalErrorMessage;
147
- var setFatalErrorCode;
148
- var setFatalErrorTitle;
149
- /**
150
- * Show a fatal error message
151
- * @author Gabe Abrams
152
- * @param error the error to show
153
- * @param [errorTitle] title of the error box
154
- */
155
- var showFatalError = function (error, errorTitle) {
156
- var _a, _b;
157
- if (errorTitle === void 0) { errorTitle = 'An Error Occurred'; }
158
- // Determine message and code
159
- var message = (typeof error === 'string'
160
- ? error.trim()
161
- : String((_a = error.message) !== null && _a !== void 0 ? _a : 'An unknown error occurred.'));
162
- var code = (typeof error === 'string'
163
- ? ReactKitErrorCode_1.default.NoCode
164
- : String((_b = error.code) !== null && _b !== void 0 ? _b : ReactKitErrorCode_1.default.NoCode));
165
- // Handle case where app hasn't loaded
166
- if (!setFatalErrorMessage || !setFatalErrorCode) {
167
- return (0, exports.alert)(errorTitle, "".concat(message, " (code: ").concat(code, "). Please contact support."));
168
- }
169
- // Use setters
170
- setFatalErrorMessage(message);
171
- setFatalErrorCode(code);
172
- setFatalErrorTitle(errorTitle);
173
- };
174
- exports.showFatalError = showFatalError;
175
- /*------------------------------------------------------------------------*/
176
- /* Component */
177
- /*------------------------------------------------------------------------*/
178
- var AppWrapper = function (props) {
179
- /*------------------------------------------------------------------------*/
180
- /* Setup */
181
- /*------------------------------------------------------------------------*/
182
- /* -------------- Props ------------- */
183
- var children = props.children, dark = props.dark, _a = props.sessionExpiredMessage, sessionExpiredMessage = _a === void 0 ? 'Your session has expired. Please go back to Canvas and start over.' : _a;
184
- /* -------------- State ------------- */
185
- // Fatal error
186
- var _b = (0, react_1.useState)(), fatalErrorMessage = _b[0], setFatalErrorMessageInner = _b[1];
187
- setFatalErrorMessage = setFatalErrorMessageInner;
188
- var _c = (0, react_1.useState)(), fatalErrorCode = _c[0], setFatalErrorCodeInner = _c[1];
189
- setFatalErrorCode = setFatalErrorCodeInner;
190
- var _d = (0, react_1.useState)(), fatalErrorTitle = _d[0], setFatalErrorTitleInner = _d[1];
191
- setFatalErrorTitle = setFatalErrorTitleInner;
192
- // Alert
193
- var _e = (0, react_1.useState)(), alertInfo = _e[0], setAlertInfoInner = _e[1];
194
- setAlertInfo = setAlertInfoInner;
195
- // Confirm
196
- var _f = (0, react_1.useState)(), confirmInfo = _f[0], setConfirmInfoInner = _f[1];
197
- setConfirmInfo = setConfirmInfoInner;
198
- // Session expired
199
- var _g = (0, react_1.useState)(false), sessionHasExpired = _g[0], setSessionHasExpired = _g[1];
200
- /*------------------------------------------------------------------------*/
201
- /* Lifecycle Functions */
202
- /*------------------------------------------------------------------------*/
203
- /**
204
- * Mount
205
- * @author Gabe Abrams
206
- */
207
- (0, react_1.useEffect)(function () {
208
- // Add session expired handler
209
- (0, visitServerEndpoint_1.setSessionExpiryHandler)(function () {
210
- // Session expired!
211
- setSessionHasExpired(true);
212
- });
213
- }, []);
214
- /*------------------------------------------------------------------------*/
215
- /* Render */
216
- /*------------------------------------------------------------------------*/
217
- /*----------------------------------------*/
218
- /* Modal */
219
- /*----------------------------------------*/
220
- // Modal that may be defined
221
- var modal;
222
- /* -------------- Alert ------------- */
223
- if (alertInfo) {
224
- modal = ((0, jsx_runtime_1.jsx)(Modal_1.default, __assign({ title: alertInfo.title, type: Modal_1.default.ModalType.Okay, onClose: function () {
225
- // Alert closed
226
- if (onAlertClosed) {
227
- onAlertClosed();
228
- }
229
- }, onTopOfOtherModals: true }, { children: alertInfo.text })));
230
- }
231
- /* ------------- Confirm ------------ */
232
- if (confirmInfo) {
233
- modal = ((0, jsx_runtime_1.jsx)(Modal_1.default, { title: confirmInfo.title, type: Modal_1.default.ModalType.OkayCancel, onClose: function (buttonType) {
234
- if (onConfirmClosed) {
235
- onConfirmClosed(buttonType === Modal_1.default.ButtonType.Okay);
236
- }
237
- }, dontAllowBackdropExit: true }));
238
- }
239
- /*----------------------------------------*/
240
- /* Views */
241
- /*----------------------------------------*/
242
- // Body that will be filled with the current view
243
- var body;
244
- /* ----------- Fatal Error ---------- */
245
- if (fatalErrorMessage || fatalErrorCode || sessionHasExpired) {
246
- // Re-encapsulate in an error
247
- var error = (sessionHasExpired
248
- ? new ErrorWithCode_1.default(fatalErrorMessage, fatalErrorCode)
249
- : new ErrorWithCode_1.default(sessionExpiredMessage, ReactKitErrorCode_1.default.SessionExpired));
250
- // Build error screen
251
- body = ((0, jsx_runtime_1.jsx)("div", __assign({ style: {
252
- display: 'block',
253
- width: '100vw',
254
- minHeight: '100vh',
255
- paddingTop: '10rem',
256
- backgroundColor: (dark
257
- ? '#222'
258
- : '#fff'),
259
- } }, { children: (0, jsx_runtime_1.jsx)(ErrorBox_1.default, { title: (sessionHasExpired
260
- ? 'Session Expired'
261
- : fatalErrorTitle), error: error }) })));
262
- }
263
- /* --------------- App -------------- */
264
- if (!body) {
265
- body = ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children }));
266
- }
267
- /*----------------------------------------*/
268
- /* Main UI */
269
- /*----------------------------------------*/
270
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [modal, body] }));
271
- };
272
- /*------------------------------------------------------------------------*/
273
- /* Wrap Up */
274
- /*------------------------------------------------------------------------*/
275
- // Export component
276
- exports.default = AppWrapper;
277
- //# sourceMappingURL=AppWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppWrapper.js","sourceRoot":"","sources":["../../src/components/AppWrapper.tsx"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- var jsx_runtime_1 = require("react/jsx-runtime");
18
- // Import FontAwesome Icons
19
- var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
20
- var free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
21
- // Import shared types
22
- var ReactKitErrorCode_1 = __importDefault(require("../types/ReactKitErrorCode"));
23
- /*------------------------------------------------------------------------*/
24
- /* Component */
25
- /*------------------------------------------------------------------------*/
26
- var ErrorBox = function (props) {
27
- /*------------------------------------------------------------------------*/
28
- /* Setup */
29
- /*------------------------------------------------------------------------*/
30
- var _a;
31
- /* -------------- Props ------------- */
32
- var error = props.error, _b = props.title, title = _b === void 0 ? 'An Error Occurred' : _b, onClose = props.onClose;
33
- /*------------------------------------------------------------------------*/
34
- /* Render */
35
- /*------------------------------------------------------------------------*/
36
- // Determine error text
37
- var errorText = (typeof error === 'string'
38
- ? error.trim()
39
- : String(error.message || 'An unknown error occurred. Please contact support.'));
40
- // Error code box
41
- var errorCodeBox;
42
- if (error && error.code) {
43
- errorCodeBox = ((0, jsx_runtime_1.jsxs)("span", { children: [' ', (0, jsx_runtime_1.jsxs)("span", __assign({ style: {
44
- backgroundColor: 'white',
45
- borderRadius: '5px',
46
- paddingLeft: '3px',
47
- paddingRight: '3px',
48
- color: '#DC4150',
49
- fontVariant: 'small-caps',
50
- fontSize: '80%',
51
- whiteSpace: 'nowrap',
52
- } }, { children: ["code:", ' ', String((_a = error.code) !== null && _a !== void 0 ? _a : ReactKitErrorCode_1.default.NoCode).toUpperCase()] }))] }));
53
- }
54
- // Main UI
55
- return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: "alert alert-danger text-center", style: {
56
- maxWidth: '650px',
57
- margin: 'auto',
58
- } }, { children: [(0, jsx_runtime_1.jsxs)("h4", __assign({ className: "mb-1" }, { children: [(0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faExclamationTriangle, className: "me-2" }), title] })), (0, jsx_runtime_1.jsxs)("div", { children: [errorText, errorCodeBox] }), onClose && ((0, jsx_runtime_1.jsx)("div", __assign({ className: "mt-2" }, { children: (0, jsx_runtime_1.jsx)("button", __assign({ type: "button", className: "btn btn-light", "aria-label": "dismiss error and close this activity or view", onClick: onClose }, { children: "Close" })) })))] })));
59
- };
60
- /*------------------------------------------------------------------------*/
61
- /* Wrap Up */
62
- /*------------------------------------------------------------------------*/
63
- // Export component
64
- exports.default = ErrorBox;
65
- //# sourceMappingURL=ErrorBox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorBox.js","sourceRoot":"","sources":["../../src/components/ErrorBox.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,2BAA2B;AAC3B,oEAAiE;AACjE,0EAA0E;AAE1E,sBAAsB;AACtB,iFAA2D;AAe3D,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,IAAM,QAAQ,GAAoB,UAAC,KAAK;IACtC,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;;IAE5E,wCAAwC;IAGtC,IAAA,KAAK,GAGH,KAAK,MAHF,EACL,KAEE,KAAK,MAFoB,EAA3B,KAAK,mBAAG,mBAAmB,KAAA,EAC3B,OAAO,GACL,KAAK,QADA,CACC;IAEV,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAE5E,uBAAuB;IACvB,IAAM,SAAS,GAAW,CACxB,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;QACd,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,oDAAoD,CAAC,CAClF,CAAC;IAEF,iBAAiB;IACjB,IAAI,YAAY,CAAC;IACjB,IAAI,KAAK,IAAK,KAAa,CAAC,IAAI,EAAE;QAChC,YAAY,GAAG,CACb,6CACG,GAAG,EACJ,2CACE,KAAK,EAAE;wBACL,eAAe,EAAE,OAAO;wBACxB,YAAY,EAAE,KAAK;wBACnB,WAAW,EAAE,KAAK;wBAClB,YAAY,EAAE,KAAK;wBACnB,KAAK,EAAE,SAAS;wBAChB,WAAW,EAAE,YAAY;wBACzB,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,QAAQ;qBACrB,0BAGA,GAAG,EACH,MAAM,CAAC,MAAC,KAAa,CAAC,IAAI,mCAAI,2BAAiB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KACjE,IACF,CACR,CAAC;KACH;IAED,UAAU;IACV,OAAO,CACL,0CACE,SAAS,EAAC,gCAAgC,EAC1C,KAAK,EAAE;YACL,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,MAAM;SACf,iBAED,yCAAI,SAAS,EAAC,MAAM,iBAClB,uBAAC,mCAAe,IACd,IAAI,EAAE,4CAAqB,EAC3B,SAAS,EAAC,MAAM,GAChB,EACD,KAAK,KACH,EACL,4CACG,SAAS,EACT,YAAY,IACT,EACL,OAAO,IAAI,CACV,yCAAK,SAAS,EAAC,MAAM,gBACnB,4CACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,eAAe,gBACd,+CAA+C,EAC1D,OAAO,EAAE,OAAO,2BAGT,IACL,CACP,KACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,mBAAmB;AACnB,kBAAe,QAAQ,CAAC"}
@@ -1,41 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- var jsx_runtime_1 = require("react/jsx-runtime");
15
- /**
16
- * Loading spinner/indicator
17
- * @author Gabe Abrams
18
- */
19
- // Import FontAwesome Icons
20
- var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
21
- var free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
22
- /*------------------------------------------------------------------------*/
23
- /* Style */
24
- /*------------------------------------------------------------------------*/
25
- var style = "\n/* Blips */\n.LoadingSpinner-blip-1,\n.LoadingSpinner-blip-2,\n.LoadingSpinner-blip-3,\n.LoadingSpinner-blip-4 {\n font-size: 25px;\n opacity: 0.6;\n margin-top: 20px;\n margin-bottom: 20px;\n}\n\n/* First Blip */\n.LoadingSpinner-blip-1 {\n animation: LoadingSpinner-pop-animation 2s infinite;\n}\n\n/* Second Blip */\n.LoadingSpinner-blip-2 {\n animation: LoadingSpinner-pop-animation 2s infinite;\n -webkit-animation-delay: 0.1s;\n animation-delay: 0.1s;\n}\n\n/* Third Blip */\n.LoadingSpinner-blip-3 {\n animation: LoadingSpinner-pop-animation 2s infinite;\n animation-delay: 0.2s;\n}\n\n/* Fourth Blip */\n.LoadingSpinner-blip-4 {\n animation: LoadingSpinner-pop-animation 2s infinite;\n animation-delay: 0.3s;\n}\n\n/* Pop Animation for Each Blip */\n@keyframes LoadingSpinner-pop-animation {\n 0% {\n transform: scale(1.0);\n }\n 10% {\n transform: scale(1.5);\n }\n 30% {\n transform: scale(1.0);\n }\n 100% {\n transform: scale(1.0);\n }\n}\n";
26
- /*------------------------------------------------------------------------*/
27
- /* Component */
28
- /*------------------------------------------------------------------------*/
29
- var LoadingSpinner = function () {
30
- /*------------------------------------------------------------------------*/
31
- /* Render */
32
- /*------------------------------------------------------------------------*/
33
- // Add all four blips to a container
34
- return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: "text-center LoadingSpinner LoadingSpinner-container" }, { children: [(0, jsx_runtime_1.jsx)("style", { children: style }), (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCircle, className: "LoadingSpinner-blip-1 me-1" }), (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCircle, className: "LoadingSpinner-blip-2 me-1" }), (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCircle, className: "LoadingSpinner-blip-3 me-1" }), (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCircle, className: "LoadingSpinner-blip-4" })] })));
35
- };
36
- /*------------------------------------------------------------------------*/
37
- /* Wrap Up */
38
- /*------------------------------------------------------------------------*/
39
- // Export component
40
- exports.default = LoadingSpinner;
41
- //# sourceMappingURL=LoadingSpinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingSpinner.js","sourceRoot":"","sources":["../../src/components/LoadingSpinner.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;GAGG;AAEH,2BAA2B;AAC3B,oEAAiE;AACjE,0EAA6D;AAE7D,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,IAAM,KAAK,GAAG,69BAmDb,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,IAAM,cAAc,GAAG;IACrB,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAE5E,oCAAoC;IACpC,OAAO,CACL,0CAAK,SAAS,EAAC,qDAAqD,iBAClE,4CAAQ,KAAK,GAAS,EACtB,uBAAC,mCAAe,IACd,IAAI,EAAE,+BAAQ,EACd,SAAS,EAAC,4BAA4B,GACtC,EACF,uBAAC,mCAAe,IACd,IAAI,EAAE,+BAAQ,EACd,SAAS,EAAC,4BAA4B,GACtC,EACF,uBAAC,mCAAe,IACd,IAAI,EAAE,+BAAQ,EACd,SAAS,EAAC,4BAA4B,GACtC,EACF,uBAAC,mCAAe,IACd,IAAI,EAAE,+BAAQ,EACd,SAAS,EAAC,uBAAuB,GACjC,KACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAE5E,mBAAmB;AACnB,kBAAe,cAAc,CAAC"}