@mbpockets/shared-ui 0.1.21 → 0.2.5
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.
- package/dist/EventPage/editMode/index.cjs.map +1 -1
- package/dist/EventPage/editMode/index.d.cts +1 -1
- package/dist/EventPage/editMode/index.d.ts +1 -1
- package/dist/EventPage/editMode/index.mjs.map +1 -1
- package/dist/EventPage/editMode.cjs.map +1 -1
- package/dist/EventPage/editMode.d.cts +1 -1
- package/dist/EventPage/editMode.d.ts +1 -1
- package/dist/EventPage/editMode.mjs.map +1 -1
- package/dist/EventPage/index.cjs +122 -65
- package/dist/EventPage/index.cjs.map +1 -1
- package/dist/EventPage/index.d.cts +1 -1
- package/dist/EventPage/index.d.ts +1 -1
- package/dist/EventPage/index.mjs +122 -65
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +122 -65
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.d.cts +4 -4
- package/dist/EventPage.d.ts +4 -4
- package/dist/EventPage.mjs +122 -65
- package/dist/EventPage.mjs.map +1 -1
- package/dist/PlayerPage/index.cjs +12 -8
- package/dist/PlayerPage/index.cjs.map +1 -1
- package/dist/PlayerPage/index.mjs +12 -8
- package/dist/PlayerPage/index.mjs.map +1 -1
- package/dist/PlayerPage.cjs +12 -8
- package/dist/PlayerPage.cjs.map +1 -1
- package/dist/PlayerPage.mjs +12 -8
- package/dist/PlayerPage.mjs.map +1 -1
- package/dist/ProfilePage/index.cjs +12 -8
- package/dist/ProfilePage/index.cjs.map +1 -1
- package/dist/ProfilePage/index.mjs +12 -8
- package/dist/ProfilePage/index.mjs.map +1 -1
- package/dist/ProfilePage.cjs +12 -8
- package/dist/ProfilePage.cjs.map +1 -1
- package/dist/ProfilePage.mjs +12 -8
- package/dist/ProfilePage.mjs.map +1 -1
- package/dist/SearchPage/Filters/index.cjs +38 -18
- package/dist/SearchPage/Filters/index.cjs.map +1 -1
- package/dist/SearchPage/Filters/index.d.cts +2 -1
- package/dist/SearchPage/Filters/index.d.ts +2 -1
- package/dist/SearchPage/Filters/index.mjs +34 -17
- package/dist/SearchPage/Filters/index.mjs.map +1 -1
- package/dist/SearchPage/Filters.cjs +38 -18
- package/dist/SearchPage/Filters.cjs.map +1 -1
- package/dist/SearchPage/Filters.d.cts +13 -1
- package/dist/SearchPage/Filters.d.ts +13 -1
- package/dist/SearchPage/Filters.mjs +34 -17
- package/dist/SearchPage/Filters.mjs.map +1 -1
- package/dist/SearchPage/Results/index.cjs +87 -49
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +87 -49
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +87 -49
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +10 -3
- package/dist/SearchPage/Results.d.ts +10 -3
- package/dist/SearchPage/Results.mjs +87 -49
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +208 -101
- package/dist/SearchPage/index.cjs.map +1 -1
- package/dist/SearchPage/index.d.cts +2 -2
- package/dist/SearchPage/index.d.ts +2 -2
- package/dist/SearchPage/index.mjs +204 -100
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +208 -101
- package/dist/SearchPage.cjs.map +1 -1
- package/dist/SearchPage.d.cts +25 -3
- package/dist/SearchPage.d.ts +25 -3
- package/dist/SearchPage.mjs +204 -100
- package/dist/SearchPage.mjs.map +1 -1
- package/dist/TablePage/EditComponents/index.cjs +296 -0
- package/dist/TablePage/EditComponents/index.cjs.map +1 -0
- package/dist/TablePage/EditComponents/index.d.cts +3 -0
- package/dist/TablePage/EditComponents/index.d.ts +3 -0
- package/dist/TablePage/EditComponents/index.mjs +286 -0
- package/dist/TablePage/EditComponents/index.mjs.map +1 -0
- package/dist/TablePage/EditComponents.cjs +296 -0
- package/dist/TablePage/EditComponents.cjs.map +1 -0
- package/dist/TablePage/EditComponents.d.cts +21 -0
- package/dist/TablePage/EditComponents.d.ts +21 -0
- package/dist/TablePage/EditComponents.mjs +286 -0
- package/dist/TablePage/EditComponents.mjs.map +1 -0
- package/dist/TablePage/ModalProvider/index.cjs +59 -58
- package/dist/TablePage/ModalProvider/index.cjs.map +1 -1
- package/dist/TablePage/ModalProvider/index.d.cts +1 -1
- package/dist/TablePage/ModalProvider/index.d.ts +1 -1
- package/dist/TablePage/ModalProvider/index.mjs +50 -59
- package/dist/TablePage/ModalProvider/index.mjs.map +1 -1
- package/dist/TablePage/ModalProvider.cjs +59 -58
- package/dist/TablePage/ModalProvider.cjs.map +1 -1
- package/dist/TablePage/ModalProvider.d.cts +7 -2
- package/dist/TablePage/ModalProvider.d.ts +7 -2
- package/dist/TablePage/ModalProvider.mjs +50 -59
- package/dist/TablePage/ModalProvider.mjs.map +1 -1
- package/dist/TablePage/index.cjs +555 -331
- package/dist/TablePage/index.cjs.map +1 -1
- package/dist/TablePage/index.d.cts +3 -2
- package/dist/TablePage/index.d.ts +3 -2
- package/dist/TablePage/index.mjs +539 -320
- package/dist/TablePage/index.mjs.map +1 -1
- package/dist/TablePage/players/index.cjs +24 -4
- package/dist/TablePage/players/index.cjs.map +1 -1
- package/dist/TablePage/players/index.mjs +24 -4
- package/dist/TablePage/players/index.mjs.map +1 -1
- package/dist/TablePage/players.cjs +24 -4
- package/dist/TablePage/players.cjs.map +1 -1
- package/dist/TablePage/players.mjs +24 -4
- package/dist/TablePage/players.mjs.map +1 -1
- package/dist/TablePage.cjs +555 -331
- package/dist/TablePage.cjs.map +1 -1
- package/dist/TablePage.d.cts +4 -1
- package/dist/TablePage.d.ts +4 -1
- package/dist/TablePage.mjs +539 -320
- package/dist/TablePage.mjs.map +1 -1
- package/dist/{index-D7WHhl3Q.d.ts → index-B23RQop0.d.ts} +12 -12
- package/dist/{index-DC0kK3aC.d.cts → index-Csj8S4A4.d.cts} +12 -12
- package/dist/index.cjs +890 -426
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.mjs +871 -423
- package/dist/index.mjs.map +1 -1
- package/dist/mocks/{EventDB.cjs → EventDetails.cjs} +203 -3
- package/dist/mocks/EventDetails.cjs.map +1 -0
- package/dist/mocks/EventDetails.d.cts +6 -0
- package/dist/mocks/EventDetails.d.ts +6 -0
- package/dist/mocks/{EventDB.mjs → EventDetails.mjs} +203 -3
- package/dist/mocks/EventDetails.mjs.map +1 -0
- package/dist/mocks/Tables.cjs +1 -1
- package/dist/mocks/Tables.cjs.map +1 -1
- package/dist/mocks/Tables.mjs +1 -1
- package/dist/mocks/Tables.mjs.map +1 -1
- package/dist/mocks/Tags.cjs +200 -0
- package/dist/mocks/Tags.cjs.map +1 -1
- package/dist/mocks/Tags.mjs +200 -0
- package/dist/mocks/Tags.mjs.map +1 -1
- package/dist/mocks/index.cjs +202 -2
- package/dist/mocks/index.cjs.map +1 -1
- package/dist/mocks/index.d.cts +1 -1
- package/dist/mocks/index.d.ts +1 -1
- package/dist/mocks/index.mjs +202 -2
- package/dist/mocks/index.mjs.map +1 -1
- package/dist/mocks.cjs +202 -2
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +1 -1
- package/dist/mocks.d.ts +1 -1
- package/dist/mocks.mjs +202 -2
- package/dist/mocks.mjs.map +1 -1
- package/dist/shared/index.cjs +327 -64
- package/dist/shared/index.cjs.map +1 -1
- package/dist/shared/index.d.cts +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.mjs +324 -64
- package/dist/shared/index.mjs.map +1 -1
- package/dist/shared.cjs +327 -64
- package/dist/shared.cjs.map +1 -1
- package/dist/shared.d.cts +25 -2
- package/dist/shared.d.ts +25 -2
- package/dist/shared.mjs +324 -64
- package/dist/shared.mjs.map +1 -1
- package/dist/types/event.d.cts +2 -3
- package/dist/types/event.d.ts +2 -3
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/search.d.cts +7 -1
- package/dist/types/search.d.ts +7 -1
- package/dist/types/tables.d.cts +1 -0
- package/dist/types/tables.d.ts +1 -0
- package/dist/types.d.cts +2 -2
- package/dist/types.d.ts +2 -2
- package/package.json +9 -2
- package/dist/TablePage/ModalProvider/index.css +0 -49
- package/dist/TablePage/ModalProvider/index.css.map +0 -1
- package/dist/TablePage/ModalProvider.css +0 -49
- package/dist/TablePage/ModalProvider.css.map +0 -1
- package/dist/TablePage/index.css +0 -49
- package/dist/TablePage/index.css.map +0 -1
- package/dist/TablePage.css +0 -49
- package/dist/TablePage.css.map +0 -1
- package/dist/index.css +0 -49
- package/dist/index.css.map +0 -1
- package/dist/mocks/EventDB.cjs.map +0 -1
- package/dist/mocks/EventDB.d.cts +0 -6
- package/dist/mocks/EventDB.d.ts +0 -6
- package/dist/mocks/EventDB.mjs.map +0 -1
- package/dist/shared/Modal/index.cjs +0 -64
- package/dist/shared/Modal/index.cjs.map +0 -1
- package/dist/shared/Modal/index.css +0 -49
- package/dist/shared/Modal/index.css.map +0 -1
- package/dist/shared/Modal/index.d.cts +0 -2
- package/dist/shared/Modal/index.d.ts +0 -2
- package/dist/shared/Modal/index.mjs +0 -62
- package/dist/shared/Modal/index.mjs.map +0 -1
- package/dist/shared/Modal.cjs +0 -64
- package/dist/shared/Modal.cjs.map +0 -1
- package/dist/shared/Modal.css +0 -49
- package/dist/shared/Modal.css.map +0 -1
- package/dist/shared/Modal.d.cts +0 -9
- package/dist/shared/Modal.d.ts +0 -9
- package/dist/shared/Modal.mjs +0 -62
- package/dist/shared/Modal.mjs.map +0 -1
- package/dist/shared/index.css +0 -49
- package/dist/shared/index.css.map +0 -1
- package/dist/shared.css +0 -49
- package/dist/shared.css.map +0 -1
package/dist/TablePage/index.cjs
CHANGED
|
@@ -1,131 +1,178 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React3 = require('react');
|
|
6
5
|
var material = require('@mui/material');
|
|
7
|
-
var
|
|
6
|
+
var TextField2 = require('@mui/material/TextField');
|
|
7
|
+
var CasinoIcon = require('@mui/icons-material/Casino');
|
|
8
|
+
var Grid2 = require('@mui/material/Grid');
|
|
9
|
+
var Autocomplete = require('@mui/material/Autocomplete');
|
|
10
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
var Dialog = require('@mui/material/Dialog');
|
|
12
|
+
var DialogContent = require('@mui/material/DialogContent');
|
|
13
|
+
var DialogActions = require('@mui/material/DialogActions');
|
|
8
14
|
var Button2 = require('@mui/material/Button');
|
|
9
|
-
var
|
|
10
|
-
var
|
|
15
|
+
var IconButton = require('@mui/material/IconButton');
|
|
16
|
+
var CloseIcon = require('@mui/icons-material/Close');
|
|
17
|
+
var Image = require('next/image');
|
|
11
18
|
var DeleteIcon = require('@mui/icons-material/Delete');
|
|
12
|
-
var
|
|
19
|
+
var EditIcon2 = require('@mui/icons-material/Edit');
|
|
13
20
|
var ListIcon = require('@mui/icons-material/List');
|
|
14
21
|
var SaveIcon = require('@mui/icons-material/Save');
|
|
15
|
-
var
|
|
16
|
-
var Card2 = require('@mui/material/Card');
|
|
17
|
-
var CardContent2 = require('@mui/material/CardContent');
|
|
18
|
-
var Popper = require('@mui/material/Popper');
|
|
19
|
-
var TextField = require('@mui/material/TextField');
|
|
22
|
+
var DialogTitle = require('@mui/material/DialogTitle');
|
|
20
23
|
|
|
21
24
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
25
|
|
|
23
|
-
var
|
|
24
|
-
var
|
|
26
|
+
var React3__default = /*#__PURE__*/_interopDefault(React3);
|
|
27
|
+
var TextField2__default = /*#__PURE__*/_interopDefault(TextField2);
|
|
28
|
+
var CasinoIcon__default = /*#__PURE__*/_interopDefault(CasinoIcon);
|
|
29
|
+
var Grid2__default = /*#__PURE__*/_interopDefault(Grid2);
|
|
30
|
+
var Autocomplete__default = /*#__PURE__*/_interopDefault(Autocomplete);
|
|
31
|
+
var Dialog__default = /*#__PURE__*/_interopDefault(Dialog);
|
|
32
|
+
var DialogContent__default = /*#__PURE__*/_interopDefault(DialogContent);
|
|
33
|
+
var DialogActions__default = /*#__PURE__*/_interopDefault(DialogActions);
|
|
25
34
|
var Button2__default = /*#__PURE__*/_interopDefault(Button2);
|
|
26
|
-
var
|
|
27
|
-
var
|
|
35
|
+
var IconButton__default = /*#__PURE__*/_interopDefault(IconButton);
|
|
36
|
+
var CloseIcon__default = /*#__PURE__*/_interopDefault(CloseIcon);
|
|
37
|
+
var Image__default = /*#__PURE__*/_interopDefault(Image);
|
|
28
38
|
var DeleteIcon__default = /*#__PURE__*/_interopDefault(DeleteIcon);
|
|
29
|
-
var
|
|
39
|
+
var EditIcon2__default = /*#__PURE__*/_interopDefault(EditIcon2);
|
|
30
40
|
var ListIcon__default = /*#__PURE__*/_interopDefault(ListIcon);
|
|
31
41
|
var SaveIcon__default = /*#__PURE__*/_interopDefault(SaveIcon);
|
|
32
|
-
var
|
|
33
|
-
var Card2__default = /*#__PURE__*/_interopDefault(Card2);
|
|
34
|
-
var CardContent2__default = /*#__PURE__*/_interopDefault(CardContent2);
|
|
35
|
-
var Popper__default = /*#__PURE__*/_interopDefault(Popper);
|
|
36
|
-
var TextField__default = /*#__PURE__*/_interopDefault(TextField);
|
|
42
|
+
var DialogTitle__default = /*#__PURE__*/_interopDefault(DialogTitle);
|
|
37
43
|
|
|
38
|
-
// src/components/TablePage/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
return context;
|
|
47
|
-
}
|
|
48
|
-
throw new Error("useGameTableContext is deprecated in the package build. Pass table data through props instead.");
|
|
49
|
-
}
|
|
50
|
-
var ModalContext = React.createContext({
|
|
51
|
-
showModal: (content) => {
|
|
52
|
-
},
|
|
53
|
-
hideModal: () => {
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
var useModal = () => React.useContext(ModalContext);
|
|
57
|
-
var Modal = ({ onClose, children }) => {
|
|
58
|
-
const modalRef = React.useRef(null);
|
|
59
|
-
const previouslyFocusedElement = React.useRef(null);
|
|
60
|
-
React.useEffect(() => {
|
|
61
|
-
var _a;
|
|
62
|
-
if (children) {
|
|
63
|
-
previouslyFocusedElement.current = document.activeElement;
|
|
64
|
-
(_a = modalRef.current) == null ? void 0 : _a.focus();
|
|
65
|
-
}
|
|
66
|
-
return () => {
|
|
67
|
-
var _a2;
|
|
68
|
-
(_a2 = previouslyFocusedElement.current) == null ? void 0 : _a2.focus();
|
|
69
|
-
};
|
|
70
|
-
}, [children]);
|
|
71
|
-
const handleOnClose = () => {
|
|
72
|
-
onClose();
|
|
73
|
-
};
|
|
74
|
-
const handleKeyDown = (e) => {
|
|
75
|
-
var _a;
|
|
76
|
-
if (e.key !== "Tab") return;
|
|
77
|
-
const focusableElements = (_a = modalRef.current) == null ? void 0 : _a.querySelectorAll(
|
|
78
|
-
'button, [tabindex]:not([tabindex="-1"])'
|
|
79
|
-
);
|
|
80
|
-
if (!focusableElements || focusableElements.length === 0) return;
|
|
81
|
-
const first = focusableElements[0];
|
|
82
|
-
const last = focusableElements[focusableElements.length - 1];
|
|
83
|
-
if (e.shiftKey) {
|
|
84
|
-
if (document.activeElement === first) {
|
|
85
|
-
e.preventDefault();
|
|
86
|
-
last.focus();
|
|
87
|
-
}
|
|
88
|
-
} else {
|
|
89
|
-
if (document.activeElement === last) {
|
|
90
|
-
e.preventDefault();
|
|
91
|
-
first.focus();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
96
|
-
"div",
|
|
97
|
-
{
|
|
98
|
-
className: "modal-overlay",
|
|
99
|
-
onKeyDown: handleKeyDown,
|
|
100
|
-
ref: modalRef,
|
|
101
|
-
role: "dialog",
|
|
102
|
-
tabIndex: -1,
|
|
103
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "modal-container", children: [
|
|
104
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-control-strip", children: /* @__PURE__ */ jsxRuntime.jsx("button", { onClick: handleOnClose, children: "X" }) }),
|
|
105
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "modal-content", children })
|
|
106
|
-
] })
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
};
|
|
110
|
-
var Modal_default = Modal;
|
|
111
|
-
var ModalProvider = ({ children }) => {
|
|
112
|
-
const [modalContent, setModalContent] = React.useState(null);
|
|
113
|
-
const showModal = (content) => setModalContent(content);
|
|
114
|
-
const hideModal = () => setModalContent(null);
|
|
115
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(ModalContext.Provider, { value: { showModal, hideModal }, children: [
|
|
116
|
-
children,
|
|
117
|
-
modalContent && /* @__PURE__ */ jsxRuntime.jsx(Modal_default, { onClose: hideModal, children: modalContent })
|
|
118
|
-
] });
|
|
119
|
-
};
|
|
120
|
-
var ModalProvider_default = ModalProvider;
|
|
121
|
-
var NextGameLabel = ({ nextGameTime }) => {
|
|
122
|
-
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
123
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
124
|
-
"Next Game: ",
|
|
125
|
-
date.toLocaleString()
|
|
126
|
-
] });
|
|
44
|
+
// src/components/TablePage/EditComponents/EditTableDetailsForm.tsx
|
|
45
|
+
|
|
46
|
+
// src/components/shared/NameGenerator.ts
|
|
47
|
+
var getRandomTitle = () => {
|
|
48
|
+
const randomPrefix = titlePrefixes[Math.random() * titlePrefixes.length | 0];
|
|
49
|
+
const randomMiddle = tileMiddle[Math.random() * tileMiddle.length | 0];
|
|
50
|
+
const randomSuffix = titleSuffixes[Math.random() * titleSuffixes.length | 0];
|
|
51
|
+
return `${randomPrefix} ${randomMiddle} ${randomSuffix}`;
|
|
127
52
|
};
|
|
128
|
-
var
|
|
53
|
+
var getRandomTagline = () => taglines[Math.random() * taglines.length | 0];
|
|
54
|
+
var titlePrefixes = [
|
|
55
|
+
"The Knights of The",
|
|
56
|
+
"The Fellowship of The",
|
|
57
|
+
"The Order of The",
|
|
58
|
+
"The Infamous",
|
|
59
|
+
"The Legendary",
|
|
60
|
+
"The Dubious",
|
|
61
|
+
"The Sworn Guardians of The",
|
|
62
|
+
"The Ancient Guild of The",
|
|
63
|
+
"The Unstoppable",
|
|
64
|
+
"The Misfit",
|
|
65
|
+
"The Chaotic",
|
|
66
|
+
"The Brave",
|
|
67
|
+
"The Forgotten",
|
|
68
|
+
"The Wandering",
|
|
69
|
+
"The Noble Council of The",
|
|
70
|
+
"The Dread Pirates of The",
|
|
71
|
+
"The Honorable Society of The",
|
|
72
|
+
"The Cursed",
|
|
73
|
+
"The Unlikely Heroes of The",
|
|
74
|
+
"The Elders of The",
|
|
75
|
+
"The Seekers of The",
|
|
76
|
+
"The Champions of The",
|
|
77
|
+
"The Heralds of The",
|
|
78
|
+
"The Disciples of The",
|
|
79
|
+
"The Ragtag Band of The",
|
|
80
|
+
"The Cult of The"
|
|
81
|
+
];
|
|
82
|
+
var tileMiddle = [
|
|
83
|
+
"Round",
|
|
84
|
+
"Kitchen",
|
|
85
|
+
"Deepest",
|
|
86
|
+
"Sorcery",
|
|
87
|
+
"Munchkin",
|
|
88
|
+
"Shenanigan",
|
|
89
|
+
"Secret",
|
|
90
|
+
"Dungeon",
|
|
91
|
+
"Fireside",
|
|
92
|
+
"Tabletop",
|
|
93
|
+
"Midnight",
|
|
94
|
+
"Tavern",
|
|
95
|
+
"Goblin",
|
|
96
|
+
"Dragon",
|
|
97
|
+
"Critical",
|
|
98
|
+
"Natural Twenty",
|
|
99
|
+
"Counterspell",
|
|
100
|
+
"Nat One",
|
|
101
|
+
"Cardboard",
|
|
102
|
+
"Dice Tower",
|
|
103
|
+
"Campaign",
|
|
104
|
+
"Lore",
|
|
105
|
+
"Awkward",
|
|
106
|
+
"Unhinged",
|
|
107
|
+
"Chaotic Neutral",
|
|
108
|
+
"Homebrew",
|
|
109
|
+
"Side Quest"
|
|
110
|
+
];
|
|
111
|
+
var titleSuffixes = [
|
|
112
|
+
"Table",
|
|
113
|
+
"Dungeon",
|
|
114
|
+
"Cave",
|
|
115
|
+
"Crew",
|
|
116
|
+
"Team",
|
|
117
|
+
"League",
|
|
118
|
+
"Horde",
|
|
119
|
+
"Party",
|
|
120
|
+
"Conclave",
|
|
121
|
+
"Collective",
|
|
122
|
+
"Alliance",
|
|
123
|
+
"Syndicate",
|
|
124
|
+
"Guild",
|
|
125
|
+
"Cabal",
|
|
126
|
+
"Council",
|
|
127
|
+
"Expedition",
|
|
128
|
+
"Enclave",
|
|
129
|
+
"Consortium",
|
|
130
|
+
"Troupe",
|
|
131
|
+
"Vanguard",
|
|
132
|
+
"Cohort",
|
|
133
|
+
"Brotherhood",
|
|
134
|
+
"Sisterhood",
|
|
135
|
+
"Pantheon",
|
|
136
|
+
"Assembly",
|
|
137
|
+
"Coven"
|
|
138
|
+
];
|
|
139
|
+
var taglines = [
|
|
140
|
+
"Everyone is welcome!",
|
|
141
|
+
"Looking for serious players.",
|
|
142
|
+
"Get in nerds, we're gaming!",
|
|
143
|
+
"If you aren't there, you're square.",
|
|
144
|
+
"It will be legendary!",
|
|
145
|
+
"Beginners welcome \u2014 we were all level 1 once.",
|
|
146
|
+
"No experience necessary. Snacks encouraged.",
|
|
147
|
+
"Roleplayers, board gamers, and chaos gremlins welcome.",
|
|
148
|
+
"We don't metagame. Much.",
|
|
149
|
+
"All alignments accepted. True Neutral gets the snacks.",
|
|
150
|
+
"Where every session is a one-shot... until it isn't.",
|
|
151
|
+
"Homebrew rules may apply.",
|
|
152
|
+
"Warning: may contain excessive lore.",
|
|
153
|
+
"Critical failures celebrated as much as critical hits.",
|
|
154
|
+
"No powergamers. Okay, maybe one powergamer.",
|
|
155
|
+
"We finish campaigns. (Eventually.)",
|
|
156
|
+
"Veteran players seeking worthy companions.",
|
|
157
|
+
"Casuals only \u2014 we're here for the vibes.",
|
|
158
|
+
"Serious about fun, not about rules.",
|
|
159
|
+
"Min-maxers need not apply.",
|
|
160
|
+
"For those who read the rulebook... and those who definitely didn't.",
|
|
161
|
+
"Roll for initiative. Arrive on time.",
|
|
162
|
+
"Side quests are the main quest here.",
|
|
163
|
+
"Chaotic good energy required.",
|
|
164
|
+
"If you bring snacks, you can name the first NPC.",
|
|
165
|
+
"We read the rulebook so you don't have to.",
|
|
166
|
+
"Wargamers only \u2014 no take-backs, no mercy.",
|
|
167
|
+
"Everyone welcome. Meeple provided.",
|
|
168
|
+
"We always play the longest game on the shelf.",
|
|
169
|
+
"Worker placement. Resource management. Existential dread.",
|
|
170
|
+
"No phones at the table! We're here for the game.",
|
|
171
|
+
"Someone always flips the table. Metaphorically. Usually.",
|
|
172
|
+
"We have a designated rules lawyer. It's fine.",
|
|
173
|
+
"Cooperative games only \u2014 we can't handle another Monopoly incident.",
|
|
174
|
+
"Teaching time is half the fun!"
|
|
175
|
+
];
|
|
129
176
|
function Chip({ tag, removeCallback }) {
|
|
130
177
|
var _a;
|
|
131
178
|
const color = (_a = tag.color) != null ? _a : "#bfbcbb";
|
|
@@ -158,16 +205,196 @@ function Chip({ tag, removeCallback }) {
|
|
|
158
205
|
tag.id
|
|
159
206
|
) });
|
|
160
207
|
}
|
|
208
|
+
function TagSelector({ initialTagIDs, allTags, onTagChange }) {
|
|
209
|
+
const [tagList, updateTagList] = React3.useState(initialTagIDs);
|
|
210
|
+
const [inputValue, setInputValue] = React3.useState("");
|
|
211
|
+
const toggleTag = (id) => tagList.find((t) => t === id) ? removeTag(id) : addTag(id);
|
|
212
|
+
const addTag = (id) => {
|
|
213
|
+
const newList = [...tagList, id];
|
|
214
|
+
updateTagList(newList);
|
|
215
|
+
onTagChange(newList);
|
|
216
|
+
};
|
|
217
|
+
const removeTag = (id) => {
|
|
218
|
+
const newList = tagList.filter((t) => t !== id);
|
|
219
|
+
updateTagList(newList);
|
|
220
|
+
onTagChange(newList);
|
|
221
|
+
};
|
|
222
|
+
const selectedTags = React3.useMemo(() => allTags.filter((tag) => tagList.includes(tag.id)), [allTags, tagList]);
|
|
223
|
+
const options = React3.useMemo(
|
|
224
|
+
() => allTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
225
|
+
[allTags]
|
|
226
|
+
);
|
|
227
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
228
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
229
|
+
Chip,
|
|
230
|
+
{
|
|
231
|
+
tag,
|
|
232
|
+
removeCallback: () => toggleTag(tag.id)
|
|
233
|
+
},
|
|
234
|
+
tag.id
|
|
235
|
+
)) }),
|
|
236
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { container: true, spacing: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { sx: { marginTop: 3, width: "100%", minWidth: "550px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
237
|
+
Autocomplete__default.default,
|
|
238
|
+
{
|
|
239
|
+
options,
|
|
240
|
+
filterOptions: (availableOptions, state) => availableOptions.filter(
|
|
241
|
+
(option) => !tagList.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
|
|
242
|
+
),
|
|
243
|
+
value: null,
|
|
244
|
+
inputValue,
|
|
245
|
+
onInputChange: (event, newInputValue) => {
|
|
246
|
+
if (event && event.type === "change") {
|
|
247
|
+
setInputValue(newInputValue);
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
onChange: (event, newValue) => {
|
|
251
|
+
if (newValue) {
|
|
252
|
+
toggleTag(newValue.value);
|
|
253
|
+
}
|
|
254
|
+
setInputValue("");
|
|
255
|
+
},
|
|
256
|
+
renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField2__default.default, { ...params, label: "Select Tags" })
|
|
257
|
+
},
|
|
258
|
+
tagList.join("-")
|
|
259
|
+
) }) })
|
|
260
|
+
] });
|
|
261
|
+
}
|
|
262
|
+
function EditTableDetailsForm({ initialTitle, initialSubtitle, onTitleChange, onSubtitleChange, allowEditingTitles, initialTagIDs, allTags, onTagChange }) {
|
|
263
|
+
const [title, setTitle] = React3.useState(initialTitle);
|
|
264
|
+
const [subtitle, setSubtitle] = React3.useState(initialSubtitle);
|
|
265
|
+
const handleTitleChange = (newTitle) => {
|
|
266
|
+
setTitle(newTitle);
|
|
267
|
+
onTitleChange(newTitle);
|
|
268
|
+
};
|
|
269
|
+
const handleSubtitleChange = (newSubtitle) => {
|
|
270
|
+
setSubtitle(newSubtitle);
|
|
271
|
+
onSubtitleChange(newSubtitle);
|
|
272
|
+
};
|
|
273
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
274
|
+
allowEditingTitles && /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "flex flex-col gap-4 mb-8", children: [
|
|
275
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "inline-flex", children: [
|
|
276
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
277
|
+
TextField2__default.default,
|
|
278
|
+
{
|
|
279
|
+
sx: { minWidth: "400px" },
|
|
280
|
+
label: "Title",
|
|
281
|
+
onChange: (e) => handleTitleChange(e.target.value),
|
|
282
|
+
variant: "filled",
|
|
283
|
+
value: title
|
|
284
|
+
}
|
|
285
|
+
),
|
|
286
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Randomize", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
287
|
+
CasinoIcon__default.default,
|
|
288
|
+
{
|
|
289
|
+
sx: { cursor: "pointer", alignSelf: "center", ml: 1 },
|
|
290
|
+
onClick: () => handleTitleChange(getRandomTitle())
|
|
291
|
+
}
|
|
292
|
+
) })
|
|
293
|
+
] }),
|
|
294
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "inline-flex min-w-96", children: [
|
|
295
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
296
|
+
TextField2__default.default,
|
|
297
|
+
{
|
|
298
|
+
sx: { minWidth: "400px" },
|
|
299
|
+
label: "Short Description or Tagline",
|
|
300
|
+
onChange: (e) => handleSubtitleChange(e.target.value),
|
|
301
|
+
variant: "filled",
|
|
302
|
+
value: subtitle
|
|
303
|
+
}
|
|
304
|
+
),
|
|
305
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Randomize", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
306
|
+
CasinoIcon__default.default,
|
|
307
|
+
{
|
|
308
|
+
sx: { cursor: "pointer", alignSelf: "center", ml: 1 },
|
|
309
|
+
onClick: () => handleSubtitleChange(getRandomTagline())
|
|
310
|
+
}
|
|
311
|
+
) })
|
|
312
|
+
] })
|
|
313
|
+
] }),
|
|
314
|
+
/* @__PURE__ */ jsxRuntime.jsx(TagSelector, { initialTagIDs, allTags, onTagChange })
|
|
315
|
+
] });
|
|
316
|
+
}
|
|
317
|
+
var GameTableContext = React3__default.default.createContext(void 0);
|
|
318
|
+
function GameTableProvider(props) {
|
|
319
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children });
|
|
320
|
+
}
|
|
321
|
+
function useGameTableContext() {
|
|
322
|
+
const context = React3__default.default.useContext(GameTableContext);
|
|
323
|
+
if (context) {
|
|
324
|
+
return context;
|
|
325
|
+
}
|
|
326
|
+
throw new Error("useGameTableContext is deprecated in the package build. Pass table data through props instead.");
|
|
327
|
+
}
|
|
328
|
+
var ModalContext = React3.createContext({
|
|
329
|
+
showModal: () => {
|
|
330
|
+
},
|
|
331
|
+
hideModal: () => {
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
var useModal = () => React3.useContext(ModalContext);
|
|
161
335
|
function generateTagsDisplay(tag) {
|
|
162
336
|
return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
|
|
163
337
|
}
|
|
164
|
-
function renderTagsFromIds(ids, legalTags) {
|
|
338
|
+
function renderTagsFromIds(ids, legalTags, options = {}) {
|
|
165
339
|
if (!ids || !legalTags || legalTags.length === 0) {
|
|
166
340
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
167
341
|
}
|
|
342
|
+
const { showEventTag = false, eventTagId } = options;
|
|
168
343
|
const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
|
|
169
|
-
|
|
344
|
+
const sortedTags = [...validTags].sort((a, b) => {
|
|
345
|
+
if (showEventTag && eventTagId !== void 0) {
|
|
346
|
+
if (a.id === eventTagId && b.id === eventTagId) return 0;
|
|
347
|
+
if (a.id === eventTagId) return -1;
|
|
348
|
+
if (b.id === eventTagId) return 1;
|
|
349
|
+
}
|
|
350
|
+
const priorityOrder = ["Organizer Run", "Display Only"];
|
|
351
|
+
const aIndex = priorityOrder.indexOf(a.label);
|
|
352
|
+
const bIndex = priorityOrder.indexOf(b.label);
|
|
353
|
+
if (aIndex !== -1 && bIndex !== -1) {
|
|
354
|
+
return aIndex - bIndex;
|
|
355
|
+
}
|
|
356
|
+
if (aIndex !== -1) return -1;
|
|
357
|
+
if (bIndex !== -1) return 1;
|
|
358
|
+
return 0;
|
|
359
|
+
});
|
|
360
|
+
return sortedTags.map((tag) => generateTagsDisplay(tag));
|
|
170
361
|
}
|
|
362
|
+
|
|
363
|
+
// src/data/values.tsx
|
|
364
|
+
var DEFAULT_PROFILE_PIC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=";
|
|
365
|
+
var NextGameLabel = ({ nextGameTime }) => {
|
|
366
|
+
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
367
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
368
|
+
"Next Game: ",
|
|
369
|
+
date.toLocaleString()
|
|
370
|
+
] });
|
|
371
|
+
};
|
|
372
|
+
var NextGameLabel_default = NextGameLabel;
|
|
373
|
+
var AutoResizingTextarea = (props) => {
|
|
374
|
+
const { isInEditMode, onChange, textareaRef, value } = props;
|
|
375
|
+
React3.useEffect(() => {
|
|
376
|
+
if (isInEditMode && textareaRef.current) {
|
|
377
|
+
const textarea = textareaRef.current;
|
|
378
|
+
textarea.style.height = "auto";
|
|
379
|
+
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
380
|
+
}
|
|
381
|
+
}, [isInEditMode, textareaRef, value]);
|
|
382
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
383
|
+
"textarea",
|
|
384
|
+
{
|
|
385
|
+
ref: textareaRef,
|
|
386
|
+
value,
|
|
387
|
+
onChange: (e) => onChange(e.target.value),
|
|
388
|
+
style: {
|
|
389
|
+
backgroundColor: "#fffbea",
|
|
390
|
+
overflow: "hidden",
|
|
391
|
+
resize: "none",
|
|
392
|
+
width: "100%"
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
);
|
|
396
|
+
};
|
|
397
|
+
var AutoResizingTextarea_default = AutoResizingTextarea;
|
|
171
398
|
var PlayerHighlightsCard = function(props) {
|
|
172
399
|
const {
|
|
173
400
|
allTags,
|
|
@@ -179,14 +406,14 @@ var PlayerHighlightsCard = function(props) {
|
|
|
179
406
|
removeFromTable
|
|
180
407
|
} = props;
|
|
181
408
|
return /* @__PURE__ */ jsxRuntime.jsx(material.Card, { elevation: 3, sx: { backgroundColor: canEdit ? "#fffbea" : "#f5f9fa", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { children: [
|
|
182
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
183
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
184
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
409
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, spacing: 2, direction: "column", children: [
|
|
410
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, direction: "row", children: [
|
|
411
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image__default.default, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || DEFAULT_PROFILE_PIC, width: 64 }) }),
|
|
412
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) })
|
|
186
413
|
] }),
|
|
187
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
414
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { children: renderTagsFromIds(player.tags, allTags) })
|
|
188
415
|
] }),
|
|
189
|
-
canEdit && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
416
|
+
canEdit && /* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { children: [
|
|
190
417
|
/* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => removeFromTable(player), children: isWaitList ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Deny Player" }) : /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Remove Player" }) }),
|
|
191
418
|
canChangeDungeonMaster && /* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => {
|
|
192
419
|
handleAssignToDungeonMaster(player);
|
|
@@ -198,11 +425,11 @@ var PlayerHighlightsCard = function(props) {
|
|
|
198
425
|
var DMHighlightsCard = function({ canEdit, player, allTags }) {
|
|
199
426
|
return /* @__PURE__ */ jsxRuntime.jsxs(material.Card, { elevation: 3, sx: { backgroundColor: "#f5f9fa", marginBottom: "6px" }, children: [
|
|
200
427
|
/* @__PURE__ */ jsxRuntime.jsx(material.CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Game Master" }),
|
|
201
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
202
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
203
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
204
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
205
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
428
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, spacing: 2, direction: "column", children: [
|
|
429
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) }),
|
|
430
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, direction: "row", children: [
|
|
431
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image__default.default, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl || DEFAULT_PROFILE_PIC, width: 256 }) }),
|
|
432
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { children: renderTagsFromIds(player.tags, allTags) }),
|
|
206
433
|
/* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: player.description })
|
|
207
434
|
] })
|
|
208
435
|
] }) })
|
|
@@ -231,12 +458,11 @@ function TableActionsBar(props) {
|
|
|
231
458
|
if (waitlistPlayers.length === 0) {
|
|
232
459
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Waitlist is empty!" });
|
|
233
460
|
}
|
|
234
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
235
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
236
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gap-8", children: waitlistPlayers.map((player) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
461
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
462
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gap-8 px-6", children: waitlistPlayers.map((player) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
237
463
|
"li",
|
|
238
464
|
{
|
|
239
|
-
className: `${canMovePlayersToTable ? "bg-amber-100 cursor-pointer" : "bg-gray-200"} mb-8 flex flex-row flex-start space-between
|
|
465
|
+
className: `${canMovePlayersToTable ? "bg-amber-100 cursor-pointer" : "bg-gray-200"} mb-8 flex flex-row flex-start space-between items-center gap-3 p-2 rounded`,
|
|
240
466
|
onClick: () => canMovePlayersToTable ? onPromoteWaitlistPlayer == null ? void 0 : onPromoteWaitlistPlayer(player.id) : void 0,
|
|
241
467
|
tabIndex: 0,
|
|
242
468
|
children: [
|
|
@@ -245,7 +471,7 @@ function TableActionsBar(props) {
|
|
|
245
471
|
{
|
|
246
472
|
alt: player.username + "'s profile pic",
|
|
247
473
|
height: 64,
|
|
248
|
-
src: player.miniPic ||
|
|
474
|
+
src: player.miniPic || DEFAULT_PROFILE_PIC,
|
|
249
475
|
width: 64
|
|
250
476
|
}
|
|
251
477
|
),
|
|
@@ -254,7 +480,7 @@ function TableActionsBar(props) {
|
|
|
254
480
|
},
|
|
255
481
|
player.id
|
|
256
482
|
)) }),
|
|
257
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
483
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogActions__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => hideModal(), children: "Close" }) })
|
|
258
484
|
] });
|
|
259
485
|
};
|
|
260
486
|
return /* @__PURE__ */ jsxRuntime.jsxs(material.Grid, { container: true, direction: "column", spacing: 1, children: [
|
|
@@ -268,12 +494,12 @@ function TableActionsBar(props) {
|
|
|
268
494
|
!isOwner && !isPlayer && !isDM && !onWaitlist && /* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => onJoinWaitlist == null ? void 0 : onJoinWaitlist(), sx: buttonStyle, children: "Join Waitlist" }),
|
|
269
495
|
!isOwner && (isPlayer || onWaitlist) && /* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => onLeaveTable == null ? void 0 : onLeaveTable(), sx: buttonStyle, children: onWaitlist ? "Leave Waitlist" : "Leave Table" }),
|
|
270
496
|
canEditTable ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
271
|
-
/* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => onEditModeChange(true), sx: buttonStyle, endIcon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
497
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => onEditModeChange(true), sx: buttonStyle, endIcon: /* @__PURE__ */ jsxRuntime.jsx(EditIcon2__default.default, {}), children: "Edit" }),
|
|
272
498
|
canViewWaitlist ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
273
499
|
Button2__default.default,
|
|
274
500
|
{
|
|
275
501
|
endIcon: /* @__PURE__ */ jsxRuntime.jsx(ListIcon__default.default, {}),
|
|
276
|
-
onClick: () => showModal(renderPlayerWaitlistModalContent(false)),
|
|
502
|
+
onClick: () => showModal(renderPlayerWaitlistModalContent(false), "Waitlist Players:"),
|
|
277
503
|
sx: buttonStyle,
|
|
278
504
|
children: "View Waitlist"
|
|
279
505
|
}
|
|
@@ -285,13 +511,25 @@ function TableActionsBar(props) {
|
|
|
285
511
|
Button2__default.default,
|
|
286
512
|
{
|
|
287
513
|
endIcon: /* @__PURE__ */ jsxRuntime.jsx(ListIcon__default.default, {}),
|
|
288
|
-
onClick: () => showModal(renderPlayerWaitlistModalContent(true)),
|
|
514
|
+
onClick: () => showModal(renderPlayerWaitlistModalContent(true), "Waitlist Players:"),
|
|
289
515
|
sx: buttonStyle,
|
|
290
516
|
children: "Edit Waitlist"
|
|
291
517
|
}
|
|
292
518
|
)
|
|
293
519
|
] }) : null,
|
|
294
|
-
isOwner && /* @__PURE__ */ jsxRuntime.jsx(
|
|
520
|
+
isOwner && /* @__PURE__ */ jsxRuntime.jsx(
|
|
521
|
+
Button2__default.default,
|
|
522
|
+
{
|
|
523
|
+
onClick: () => showModal(
|
|
524
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: "Are you sure you want to delete this table? This action cannot be undone." }),
|
|
525
|
+
"Delete Table",
|
|
526
|
+
{ acceptText: "Delete", onAccept: () => onDeleteTable == null ? void 0 : onDeleteTable() }
|
|
527
|
+
),
|
|
528
|
+
sx: buttonStyle,
|
|
529
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(DeleteIcon__default.default, {}),
|
|
530
|
+
children: "Delete Table"
|
|
531
|
+
}
|
|
532
|
+
)
|
|
295
533
|
] })
|
|
296
534
|
] });
|
|
297
535
|
}
|
|
@@ -301,135 +539,82 @@ var buttonStyle = {
|
|
|
301
539
|
color: "white",
|
|
302
540
|
borderRadius: "5px"
|
|
303
541
|
};
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
const options = React.useMemo(
|
|
338
|
-
() => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
339
|
-
[possibleTags]
|
|
542
|
+
function TablePageLayout(props) {
|
|
543
|
+
var _a;
|
|
544
|
+
const { hideModal, showModal } = useModal();
|
|
545
|
+
const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers, startWithEditTitle, eventTagId } = props;
|
|
546
|
+
const canEdit = tableStatus.isOwner;
|
|
547
|
+
const textAreaRef = React3.useRef(null);
|
|
548
|
+
const [isTableInEditMode, setIsTableInEditMode] = React3.useState(false);
|
|
549
|
+
const [currentTitle, setCurrentTitle] = React3.useState(table.title);
|
|
550
|
+
const [currentSubtitle, setCurrentSubtitle] = React3.useState(table.shortDescription);
|
|
551
|
+
const [currentDescription, setCurrentDescription] = React3.useState(table.description);
|
|
552
|
+
const [currentDungeonMaster, setCurrentDungeonMaster] = React3.useState(dungeonMaster);
|
|
553
|
+
const [currentPlayers, setCurrentPlayers] = React3.useState(players);
|
|
554
|
+
const [currentWaitlistPlayers, setCurrentWaitlistPlayers] = React3.useState(waitlistPlayers);
|
|
555
|
+
const [currentTagIds, setCurrentTagIds] = React3.useState((_a = table.tags) != null ? _a : []);
|
|
556
|
+
const pendingEdits = React3.useRef({ title: currentTitle, subtitle: currentSubtitle, tags: currentTagIds });
|
|
557
|
+
const handleSaveTable = (tableData = {}) => {
|
|
558
|
+
const nextDraft = {
|
|
559
|
+
...table,
|
|
560
|
+
description: currentDescription,
|
|
561
|
+
dungeonMaster: String(currentDungeonMaster.id),
|
|
562
|
+
players: currentPlayers.map((player) => player.id),
|
|
563
|
+
shortDescription: currentSubtitle,
|
|
564
|
+
tags: currentTagIds,
|
|
565
|
+
title: currentTitle,
|
|
566
|
+
waitlist: currentWaitlistPlayers.map((player) => player.id),
|
|
567
|
+
...tableData
|
|
568
|
+
};
|
|
569
|
+
void (onSaveDraft == null ? void 0 : onSaveDraft(nextDraft));
|
|
570
|
+
setIsTableInEditMode(false);
|
|
571
|
+
};
|
|
572
|
+
const clean = (text) => text.replaceAll(
|
|
573
|
+
/\b(n[i1!]g+(er|a|e)s?|f[a@]g|f[a@]g+[o0]ts?|k[i1!]k[e3]s?|ch[i1!]nks?|w[e3]tb[a@]cks?|r[a@]gh[e3][a@]ds?|t[o0]w[e3]lh[e3][a@]ds?|r[e3]t[a@]rd(ed|s)?|c[o0][o0]ns?|tr[a@]nn(y|i[e3]s?)|g[o0][o0]ks?)\b/gi,
|
|
574
|
+
"dudes"
|
|
340
575
|
);
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
576
|
+
const editTableDetails = () => {
|
|
577
|
+
if (!canEdit) {
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
pendingEdits.current = {
|
|
581
|
+
title: currentTitle,
|
|
582
|
+
subtitle: currentSubtitle,
|
|
583
|
+
tags: currentTagIds
|
|
584
|
+
};
|
|
585
|
+
const editContent = /* @__PURE__ */ jsxRuntime.jsx(
|
|
586
|
+
EditTableDetailsForm,
|
|
344
587
|
{
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
588
|
+
initialTitle: currentTitle,
|
|
589
|
+
initialSubtitle: currentSubtitle,
|
|
590
|
+
onTitleChange: (t) => pendingEdits.current.title = t,
|
|
591
|
+
onSubtitleChange: (s) => pendingEdits.current.subtitle = s,
|
|
592
|
+
onTagChange: (t) => pendingEdits.current.tags = t,
|
|
593
|
+
initialTagIDs: currentTagIds,
|
|
594
|
+
allTags: allTags.filter((t) => t.appliesTo.tables),
|
|
595
|
+
allowEditingTitles: true
|
|
352
596
|
}
|
|
353
|
-
)
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
inputValue,
|
|
372
|
-
onInputChange: (event, newInputValue) => {
|
|
373
|
-
if (event && event.type === "change") {
|
|
374
|
-
setInputValue(newInputValue);
|
|
375
|
-
}
|
|
376
|
-
},
|
|
377
|
-
onChange: (event, newValue) => {
|
|
378
|
-
if (newValue) {
|
|
379
|
-
onToggleTag(newValue.value);
|
|
380
|
-
}
|
|
381
|
-
setInputValue("");
|
|
382
|
-
},
|
|
383
|
-
slots: { popper: CustomPopper },
|
|
384
|
-
renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField__default.default, { ...params, label: "Select Tags" })
|
|
385
|
-
},
|
|
386
|
-
selectedIds.join("-")
|
|
387
|
-
) }) })
|
|
388
|
-
] })
|
|
389
|
-
] }) }) });
|
|
390
|
-
}
|
|
391
|
-
var CustomPopper = (props) => {
|
|
392
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
393
|
-
Popper__default.default,
|
|
394
|
-
{
|
|
395
|
-
...props,
|
|
396
|
-
modifiers: [
|
|
397
|
-
{
|
|
398
|
-
name: "preventOverflow",
|
|
399
|
-
options: { boundary: "viewport" }
|
|
400
|
-
},
|
|
401
|
-
{
|
|
402
|
-
name: "offset",
|
|
403
|
-
options: { offset: [0, -10] }
|
|
404
|
-
}
|
|
405
|
-
],
|
|
406
|
-
placement: "top-start"
|
|
597
|
+
);
|
|
598
|
+
showModal(editContent, "Edit Table Details", {
|
|
599
|
+
acceptText: "Save",
|
|
600
|
+
onAccept: () => {
|
|
601
|
+
setCurrentTitle(clean(pendingEdits.current.title));
|
|
602
|
+
setCurrentSubtitle(clean(pendingEdits.current.subtitle));
|
|
603
|
+
setCurrentTagIds(pendingEdits.current.tags);
|
|
604
|
+
handleSaveTable({
|
|
605
|
+
title: clean(pendingEdits.current.title),
|
|
606
|
+
shortDescription: clean(pendingEdits.current.subtitle),
|
|
607
|
+
tags: pendingEdits.current.tags
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
});
|
|
611
|
+
};
|
|
612
|
+
React3.useEffect(() => {
|
|
613
|
+
if (startWithEditTitle) {
|
|
614
|
+
editTableDetails();
|
|
407
615
|
}
|
|
408
|
-
);
|
|
409
|
-
|
|
410
|
-
function TablePageLayout(props) {
|
|
411
|
-
var _a;
|
|
412
|
-
const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers } = props;
|
|
413
|
-
const textAreaRef = React.useRef(null);
|
|
414
|
-
const [isTableInEditMode, setIsTableInEditMode] = React.useState(false);
|
|
415
|
-
const [currentDescription, setCurrentDescription] = React.useState(table.description);
|
|
416
|
-
const [currentDungeonMaster, setCurrentDungeonMaster] = React.useState(dungeonMaster);
|
|
417
|
-
const [currentPlayers, setCurrentPlayers] = React.useState(players);
|
|
418
|
-
const [currentShortDescription, setCurrentShortDescription] = React.useState(table.shortDescription);
|
|
419
|
-
const [currentTitle, setCurrentTitle] = React.useState(table.title);
|
|
420
|
-
const [currentWaitlistPlayers, setCurrentWaitlistPlayers] = React.useState(waitlistPlayers);
|
|
421
|
-
const [currentTagIds, setCurrentTagIds] = React.useState((_a = table.tags) != null ? _a : []);
|
|
422
|
-
React.useEffect(() => {
|
|
423
|
-
var _a2;
|
|
424
|
-
setCurrentDescription(table.description);
|
|
425
|
-
setCurrentDungeonMaster(dungeonMaster);
|
|
426
|
-
setCurrentPlayers(players);
|
|
427
|
-
setCurrentShortDescription(table.shortDescription);
|
|
428
|
-
setCurrentTitle(table.title);
|
|
429
|
-
setCurrentWaitlistPlayers(waitlistPlayers);
|
|
430
|
-
setCurrentTagIds((_a2 = table.tags) != null ? _a2 : []);
|
|
431
|
-
}, [dungeonMaster, players, table, waitlistPlayers]);
|
|
432
|
-
const currentTags = React.useMemo(
|
|
616
|
+
});
|
|
617
|
+
React3.useMemo(
|
|
433
618
|
() => allTags.filter((tag) => currentTagIds.includes(tag.id)),
|
|
434
619
|
[allTags, currentTagIds]
|
|
435
620
|
);
|
|
@@ -449,37 +634,17 @@ function TablePageLayout(props) {
|
|
|
449
634
|
return prevWaitlist.filter((player) => player.id !== playerIdToPromote);
|
|
450
635
|
});
|
|
451
636
|
};
|
|
452
|
-
const handleToggleTag = (tagId) => {
|
|
453
|
-
setCurrentTagIds(
|
|
454
|
-
(prevState) => prevState.includes(tagId) ? prevState.filter((id) => id !== tagId) : [...prevState, tagId]
|
|
455
|
-
);
|
|
456
|
-
};
|
|
457
|
-
const handleSaveTable = () => {
|
|
458
|
-
const nextDraft = {
|
|
459
|
-
...table,
|
|
460
|
-
description: currentDescription,
|
|
461
|
-
dungeonMaster: String(currentDungeonMaster.id),
|
|
462
|
-
players: currentPlayers.map((player) => player.id),
|
|
463
|
-
shortDescription: currentShortDescription,
|
|
464
|
-
tags: currentTagIds,
|
|
465
|
-
title: currentTitle,
|
|
466
|
-
waitlist: currentWaitlistPlayers.map((player) => player.id)
|
|
467
|
-
};
|
|
468
|
-
void (onSaveDraft == null ? void 0 : onSaveDraft(nextDraft));
|
|
469
|
-
setIsTableInEditMode(false);
|
|
470
|
-
};
|
|
471
637
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
472
638
|
material.Card,
|
|
473
639
|
{
|
|
474
640
|
sx: {
|
|
475
641
|
backgroundColor: isTableInEditMode ? "lightsalmon" : "white",
|
|
476
|
-
borderRadius: "5%",
|
|
477
642
|
p: 2,
|
|
478
643
|
boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)"
|
|
479
644
|
},
|
|
480
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
645
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, direction: "column", children: [
|
|
481
646
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
482
|
-
|
|
647
|
+
Grid2__default.default,
|
|
483
648
|
{
|
|
484
649
|
container: true,
|
|
485
650
|
direction: "column",
|
|
@@ -492,39 +657,49 @@ function TablePageLayout(props) {
|
|
|
492
657
|
textShadow: "4px 4px 6px rgba(0, 0, 0, 0.5)"
|
|
493
658
|
},
|
|
494
659
|
children: [
|
|
495
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { children:
|
|
496
|
-
|
|
497
|
-
{
|
|
498
|
-
onChange: (e) => setCurrentTitle(e.target.value),
|
|
499
|
-
style: { backgroundColor: "#fffbea" },
|
|
500
|
-
tabIndex: 0,
|
|
501
|
-
type: "text",
|
|
502
|
-
value: currentTitle
|
|
503
|
-
}
|
|
504
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
505
|
-
material.CardHeader,
|
|
660
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
661
|
+
material.Box,
|
|
506
662
|
{
|
|
507
|
-
|
|
508
|
-
sx: {
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
663
|
+
className: `flex items-center gap-1 ${canEdit ? "cursor-pointer" : ""}`,
|
|
664
|
+
sx: { "&:hover .edit-icon": { opacity: 1 } },
|
|
665
|
+
onClick: editTableDetails,
|
|
666
|
+
children: [
|
|
667
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
668
|
+
material.CardHeader,
|
|
669
|
+
{
|
|
670
|
+
title: currentTitle,
|
|
671
|
+
sx: {
|
|
672
|
+
p: 0,
|
|
673
|
+
"& .MuiCardHeader-title": {
|
|
674
|
+
color: "white",
|
|
675
|
+
fontWeight: 700
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
),
|
|
680
|
+
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(EditIcon2__default.default, { className: "edit-icon text-white", sx: { opacity: 0, transition: "opacity 0.2s" } }) : ""
|
|
681
|
+
]
|
|
515
682
|
}
|
|
516
683
|
) }),
|
|
517
|
-
|
|
518
|
-
|
|
684
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
685
|
+
material.Box,
|
|
519
686
|
{
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
687
|
+
className: `flex items-center gap-1 ${canEdit ? "cursor-pointer" : ""}`,
|
|
688
|
+
sx: { "&:hover .edit-icon": { opacity: 1 } },
|
|
689
|
+
onClick: editTableDetails,
|
|
690
|
+
children: [
|
|
691
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
692
|
+
material.Typography,
|
|
693
|
+
{
|
|
694
|
+
sx: { color: "white", opacity: 0.95 },
|
|
695
|
+
children: currentSubtitle
|
|
696
|
+
}
|
|
697
|
+
),
|
|
698
|
+
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(EditIcon2__default.default, { className: "edit-icon text-white", sx: { opacity: 0, transition: "opacity 0.2s", fontSize: "medium" } }) : ""
|
|
699
|
+
]
|
|
525
700
|
}
|
|
526
|
-
)
|
|
527
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
701
|
+
),
|
|
702
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { container: true, onClick: editTableDetails, className: `${canEdit ? "cursor-pointer" : ""}`, children: renderTags(currentTagIds, allTags, canEdit, table.eventTagId || eventTagId) }),
|
|
528
703
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
529
704
|
TableActionsBar,
|
|
530
705
|
{
|
|
@@ -544,8 +719,8 @@ function TablePageLayout(props) {
|
|
|
544
719
|
]
|
|
545
720
|
}
|
|
546
721
|
),
|
|
547
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
548
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
722
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, spacing: 2, sx: { mt: 2 }, children: [
|
|
723
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid2__default.default, { size: { xs: 12, md: 8 }, children: /* @__PURE__ */ jsxRuntime.jsx(material.Card, { sx: { height: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { children: isTableInEditMode ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
549
724
|
AutoResizingTextarea_default,
|
|
550
725
|
{
|
|
551
726
|
isInEditMode: isTableInEditMode,
|
|
@@ -554,7 +729,7 @@ function TablePageLayout(props) {
|
|
|
554
729
|
value: currentDescription
|
|
555
730
|
}
|
|
556
731
|
) : /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: { whiteSpace: "pre-wrap" }, children: currentDescription }) }) }) }),
|
|
557
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
732
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { size: { xs: 12, md: 4 }, children: [
|
|
558
733
|
/* @__PURE__ */ jsxRuntime.jsx(DMHighlightsCard, { canEdit: isTableInEditMode, player: currentDungeonMaster, allTags }),
|
|
559
734
|
/* @__PURE__ */ jsxRuntime.jsxs(material.Card, { sx: { height: "100%" }, children: [
|
|
560
735
|
/* @__PURE__ */ jsxRuntime.jsx(material.CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Players: " }),
|
|
@@ -577,32 +752,80 @@ function TablePageLayout(props) {
|
|
|
577
752
|
}
|
|
578
753
|
);
|
|
579
754
|
}
|
|
580
|
-
var renderTags = function(tags, allTags) {
|
|
755
|
+
var renderTags = function(tags, allTags, canEdit, eventTagId) {
|
|
581
756
|
if (!tags || !allTags) {
|
|
582
757
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
583
758
|
}
|
|
584
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
759
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Grid2__default.default, { container: true, spacing: 1, sx: { pb: 1.5 }, children: [
|
|
760
|
+
renderTagsFromIds(tags, allTags, { showEventTag: true, eventTagId }),
|
|
761
|
+
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
762
|
+
material.Button,
|
|
763
|
+
{
|
|
764
|
+
variant: "text",
|
|
765
|
+
className: "inline-block text-sm px-3 py-1font-outlined m-0.5 font-stretch-105% font-sans",
|
|
766
|
+
sx: {
|
|
767
|
+
color: "white",
|
|
768
|
+
textShadow: "black 1.5px 1px 1.5px",
|
|
769
|
+
"&:hover": {
|
|
770
|
+
background: "#889"
|
|
771
|
+
}
|
|
772
|
+
},
|
|
773
|
+
children: "Edit Tags..."
|
|
774
|
+
}
|
|
775
|
+
) : ""
|
|
776
|
+
] });
|
|
602
777
|
};
|
|
603
778
|
var TablePageLayout_default = TablePageLayout;
|
|
779
|
+
var ModalProvider = ({ children }) => {
|
|
780
|
+
var _a;
|
|
781
|
+
const [modalContent, setModalContent] = React3.useState(null);
|
|
782
|
+
const [displayModal, setDisplayModal] = React3.useState(false);
|
|
783
|
+
const [title, setTitle] = React3.useState("");
|
|
784
|
+
const [options, setOptions] = React3.useState({});
|
|
785
|
+
const showModal = (content, title2, opts) => {
|
|
786
|
+
setModalContent(content);
|
|
787
|
+
setTitle(title2);
|
|
788
|
+
setOptions(opts != null ? opts : {});
|
|
789
|
+
setDisplayModal(true);
|
|
790
|
+
};
|
|
791
|
+
const hideModal = () => {
|
|
792
|
+
setDisplayModal(false);
|
|
793
|
+
};
|
|
794
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ModalContext.Provider, { value: { showModal, hideModal }, children: [
|
|
795
|
+
children,
|
|
796
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Dialog__default.default, { open: displayModal, onClose: hideModal, sx: { height: "85%" }, children: [
|
|
797
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { children: [
|
|
798
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogTitle__default.default, { sx: { marginRight: "20px", minWidth: "400px" }, children: title }),
|
|
799
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
800
|
+
IconButton__default.default,
|
|
801
|
+
{
|
|
802
|
+
"aria-label": "close",
|
|
803
|
+
onClick: hideModal,
|
|
804
|
+
sx: { position: "absolute", right: 8, top: 8 },
|
|
805
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, {})
|
|
806
|
+
}
|
|
807
|
+
)
|
|
808
|
+
] }),
|
|
809
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogContent__default.default, { sx: { paddingTop: 0 }, children: modalContent }),
|
|
810
|
+
(options.acceptText || options.onAccept) && /* @__PURE__ */ jsxRuntime.jsxs(DialogActions__default.default, { children: [
|
|
811
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { variant: "contained", onClick: () => {
|
|
812
|
+
var _a2;
|
|
813
|
+
hideModal();
|
|
814
|
+
(_a2 = options.onAccept) == null ? void 0 : _a2.call(options);
|
|
815
|
+
}, children: (_a = options.acceptText) != null ? _a : "OK" }),
|
|
816
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button2__default.default, { onClick: () => {
|
|
817
|
+
var _a2;
|
|
818
|
+
hideModal();
|
|
819
|
+
(_a2 = options.onCancel) == null ? void 0 : _a2.call(options);
|
|
820
|
+
}, children: "Cancel" })
|
|
821
|
+
] })
|
|
822
|
+
] })
|
|
823
|
+
] });
|
|
824
|
+
};
|
|
825
|
+
var ModalProvider_default = ModalProvider;
|
|
604
826
|
|
|
605
827
|
exports.DMHighlightsCard = DMHighlightsCard;
|
|
828
|
+
exports.EditTableDetailsForm = EditTableDetailsForm;
|
|
606
829
|
exports.GameTableProvider = GameTableProvider;
|
|
607
830
|
exports.ModalContext = ModalContext;
|
|
608
831
|
exports.ModalProvider = ModalProvider_default;
|
|
@@ -610,6 +833,7 @@ exports.NextGameLabel = NextGameLabel_default;
|
|
|
610
833
|
exports.PlayerHighlightsCard = PlayerHighlightsCard;
|
|
611
834
|
exports.TableActionsBar = TableActionsBar;
|
|
612
835
|
exports.TablePageLayout = TablePageLayout_default;
|
|
836
|
+
exports.TagSelector = TagSelector;
|
|
613
837
|
exports.useGameTableContext = useGameTableContext;
|
|
614
838
|
exports.useModal = useModal;
|
|
615
839
|
//# sourceMappingURL=index.cjs.map
|