@mbpockets/shared-ui 0.2.0 → 0.2.6
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 +202 -96
- 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 +202 -96
- package/dist/EventPage/index.mjs.map +1 -1
- package/dist/EventPage.cjs +202 -96
- package/dist/EventPage.cjs.map +1 -1
- package/dist/EventPage.d.cts +6 -4
- package/dist/EventPage.d.ts +6 -4
- package/dist/EventPage.mjs +202 -96
- 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 +137 -73
- package/dist/SearchPage/Results/index.cjs.map +1 -1
- package/dist/SearchPage/Results/index.mjs +137 -73
- package/dist/SearchPage/Results/index.mjs.map +1 -1
- package/dist/SearchPage/Results.cjs +137 -73
- package/dist/SearchPage/Results.cjs.map +1 -1
- package/dist/SearchPage/Results.d.cts +14 -3
- package/dist/SearchPage/Results.d.ts +14 -3
- package/dist/SearchPage/Results.mjs +137 -73
- package/dist/SearchPage/Results.mjs.map +1 -1
- package/dist/SearchPage/index.cjs +265 -130
- 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 +261 -129
- package/dist/SearchPage/index.mjs.map +1 -1
- package/dist/SearchPage.cjs +265 -130
- 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 +261 -129
- 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 +972 -460
- 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 +953 -457
- 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/index.cjs
CHANGED
|
@@ -5,13 +5,13 @@ var React7 = require('react');
|
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var material = require('@mui/material');
|
|
7
7
|
var DeleteIcon = require('@mui/icons-material/Delete');
|
|
8
|
-
var
|
|
8
|
+
var EditIcon3 = require('@mui/icons-material/Edit');
|
|
9
9
|
var AddIcon = require('@mui/icons-material/Add');
|
|
10
10
|
var ColorizeIcon = require('@mui/icons-material/Colorize');
|
|
11
11
|
var CancelIcon = require('@mui/icons-material/Cancel');
|
|
12
12
|
var CheckCircleIcon = require('@mui/icons-material/CheckCircle');
|
|
13
13
|
var Box2 = require('@mui/material/Box');
|
|
14
|
-
var
|
|
14
|
+
var Grid10 = require('@mui/material/Grid');
|
|
15
15
|
var Card10 = require('@mui/material/Card');
|
|
16
16
|
var CardContent10 = require('@mui/material/CardContent');
|
|
17
17
|
var CardHeader4 = require('@mui/material/CardHeader');
|
|
@@ -19,6 +19,7 @@ var Divider3 = require('@mui/material/Divider');
|
|
|
19
19
|
var Typography4 = require('@mui/material/Typography');
|
|
20
20
|
var Pagination = require('@mui/material/Pagination');
|
|
21
21
|
var Avatar = require('@mui/material/Avatar');
|
|
22
|
+
var navigation = require('next/navigation');
|
|
22
23
|
var Chip2 = require('@mui/material/Chip');
|
|
23
24
|
var LinearProgress = require('@mui/material/LinearProgress');
|
|
24
25
|
var PersonIcon = require('@mui/icons-material/Person');
|
|
@@ -29,31 +30,41 @@ var LocationOnIcon = require('@mui/icons-material/LocationOn');
|
|
|
29
30
|
var EventIcon = require('@mui/icons-material/Event');
|
|
30
31
|
var Autocomplete = require('@mui/material/Autocomplete');
|
|
31
32
|
var Popper = require('@mui/material/Popper');
|
|
33
|
+
var FormControl2 = require('@mui/material/FormControl');
|
|
34
|
+
var Select2 = require('@mui/material/Select');
|
|
35
|
+
var MenuItem2 = require('@mui/material/MenuItem');
|
|
32
36
|
var FormControlLabel = require('@mui/material/FormControlLabel');
|
|
33
37
|
var Checkbox = require('@mui/material/Checkbox');
|
|
34
|
-
var FormControl2 = require('@mui/material/FormControl');
|
|
35
38
|
var RadioGroup = require('@mui/material/RadioGroup');
|
|
36
39
|
var Radio = require('@mui/material/Radio');
|
|
37
|
-
var
|
|
40
|
+
var TextField7 = require('@mui/material/TextField');
|
|
38
41
|
var FormGroup = require('@mui/material/FormGroup');
|
|
39
|
-
var
|
|
42
|
+
var Button8 = require('@mui/material/Button');
|
|
40
43
|
var SearchIcon = require('@mui/icons-material/Search');
|
|
41
44
|
var CircularProgress3 = require('@mui/material/CircularProgress');
|
|
45
|
+
var CasinoIcon = require('@mui/icons-material/Casino');
|
|
46
|
+
var Dialog3 = require('@mui/material/Dialog');
|
|
47
|
+
var DialogContent3 = require('@mui/material/DialogContent');
|
|
48
|
+
var DialogActions3 = require('@mui/material/DialogActions');
|
|
49
|
+
var IconButton3 = require('@mui/material/IconButton');
|
|
50
|
+
var CloseIcon = require('@mui/icons-material/Close');
|
|
51
|
+
var ReactMarkdown = require('react-markdown');
|
|
42
52
|
var Image2 = require('next/image');
|
|
43
53
|
var ListIcon = require('@mui/icons-material/List');
|
|
44
54
|
var SaveIcon = require('@mui/icons-material/Save');
|
|
55
|
+
var DialogTitle3 = require('@mui/material/DialogTitle');
|
|
45
56
|
|
|
46
57
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
47
58
|
|
|
48
59
|
var React7__default = /*#__PURE__*/_interopDefault(React7);
|
|
49
60
|
var DeleteIcon__default = /*#__PURE__*/_interopDefault(DeleteIcon);
|
|
50
|
-
var
|
|
61
|
+
var EditIcon3__default = /*#__PURE__*/_interopDefault(EditIcon3);
|
|
51
62
|
var AddIcon__default = /*#__PURE__*/_interopDefault(AddIcon);
|
|
52
63
|
var ColorizeIcon__default = /*#__PURE__*/_interopDefault(ColorizeIcon);
|
|
53
64
|
var CancelIcon__default = /*#__PURE__*/_interopDefault(CancelIcon);
|
|
54
65
|
var CheckCircleIcon__default = /*#__PURE__*/_interopDefault(CheckCircleIcon);
|
|
55
66
|
var Box2__default = /*#__PURE__*/_interopDefault(Box2);
|
|
56
|
-
var
|
|
67
|
+
var Grid10__default = /*#__PURE__*/_interopDefault(Grid10);
|
|
57
68
|
var Card10__default = /*#__PURE__*/_interopDefault(Card10);
|
|
58
69
|
var CardContent10__default = /*#__PURE__*/_interopDefault(CardContent10);
|
|
59
70
|
var CardHeader4__default = /*#__PURE__*/_interopDefault(CardHeader4);
|
|
@@ -71,19 +82,29 @@ var LocationOnIcon__default = /*#__PURE__*/_interopDefault(LocationOnIcon);
|
|
|
71
82
|
var EventIcon__default = /*#__PURE__*/_interopDefault(EventIcon);
|
|
72
83
|
var Autocomplete__default = /*#__PURE__*/_interopDefault(Autocomplete);
|
|
73
84
|
var Popper__default = /*#__PURE__*/_interopDefault(Popper);
|
|
85
|
+
var FormControl2__default = /*#__PURE__*/_interopDefault(FormControl2);
|
|
86
|
+
var Select2__default = /*#__PURE__*/_interopDefault(Select2);
|
|
87
|
+
var MenuItem2__default = /*#__PURE__*/_interopDefault(MenuItem2);
|
|
74
88
|
var FormControlLabel__default = /*#__PURE__*/_interopDefault(FormControlLabel);
|
|
75
89
|
var Checkbox__default = /*#__PURE__*/_interopDefault(Checkbox);
|
|
76
|
-
var FormControl2__default = /*#__PURE__*/_interopDefault(FormControl2);
|
|
77
90
|
var RadioGroup__default = /*#__PURE__*/_interopDefault(RadioGroup);
|
|
78
91
|
var Radio__default = /*#__PURE__*/_interopDefault(Radio);
|
|
79
|
-
var
|
|
92
|
+
var TextField7__default = /*#__PURE__*/_interopDefault(TextField7);
|
|
80
93
|
var FormGroup__default = /*#__PURE__*/_interopDefault(FormGroup);
|
|
81
|
-
var
|
|
94
|
+
var Button8__default = /*#__PURE__*/_interopDefault(Button8);
|
|
82
95
|
var SearchIcon__default = /*#__PURE__*/_interopDefault(SearchIcon);
|
|
83
96
|
var CircularProgress3__default = /*#__PURE__*/_interopDefault(CircularProgress3);
|
|
97
|
+
var CasinoIcon__default = /*#__PURE__*/_interopDefault(CasinoIcon);
|
|
98
|
+
var Dialog3__default = /*#__PURE__*/_interopDefault(Dialog3);
|
|
99
|
+
var DialogContent3__default = /*#__PURE__*/_interopDefault(DialogContent3);
|
|
100
|
+
var DialogActions3__default = /*#__PURE__*/_interopDefault(DialogActions3);
|
|
101
|
+
var IconButton3__default = /*#__PURE__*/_interopDefault(IconButton3);
|
|
102
|
+
var CloseIcon__default = /*#__PURE__*/_interopDefault(CloseIcon);
|
|
103
|
+
var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
|
|
84
104
|
var Image2__default = /*#__PURE__*/_interopDefault(Image2);
|
|
85
105
|
var ListIcon__default = /*#__PURE__*/_interopDefault(ListIcon);
|
|
86
106
|
var SaveIcon__default = /*#__PURE__*/_interopDefault(SaveIcon);
|
|
107
|
+
var DialogTitle3__default = /*#__PURE__*/_interopDefault(DialogTitle3);
|
|
87
108
|
|
|
88
109
|
// src/components/EventPage/editMode/EventBannerEdit.tsx
|
|
89
110
|
var defaultValue = {
|
|
@@ -172,12 +193,29 @@ function Chip({ tag, removeCallback }) {
|
|
|
172
193
|
function generateTagsDisplay(tag) {
|
|
173
194
|
return /* @__PURE__ */ jsxRuntime.jsx(Chip, { tag }, tag.id);
|
|
174
195
|
}
|
|
175
|
-
function renderTagsFromIds(ids, legalTags) {
|
|
196
|
+
function renderTagsFromIds(ids, legalTags, options = {}) {
|
|
176
197
|
if (!ids || !legalTags || legalTags.length === 0) {
|
|
177
198
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
178
199
|
}
|
|
200
|
+
const { showEventTag = false, eventTagId } = options;
|
|
179
201
|
const validTags = ids.map((id) => legalTags.find((tag) => tag.id === id)).filter((tag) => Boolean(tag));
|
|
180
|
-
|
|
202
|
+
const sortedTags = [...validTags].sort((a, b) => {
|
|
203
|
+
if (showEventTag && eventTagId !== void 0) {
|
|
204
|
+
if (a.id === eventTagId && b.id === eventTagId) return 0;
|
|
205
|
+
if (a.id === eventTagId) return -1;
|
|
206
|
+
if (b.id === eventTagId) return 1;
|
|
207
|
+
}
|
|
208
|
+
const priorityOrder = ["Organizer Run", "Display Only"];
|
|
209
|
+
const aIndex = priorityOrder.indexOf(a.label);
|
|
210
|
+
const bIndex = priorityOrder.indexOf(b.label);
|
|
211
|
+
if (aIndex !== -1 && bIndex !== -1) {
|
|
212
|
+
return aIndex - bIndex;
|
|
213
|
+
}
|
|
214
|
+
if (aIndex !== -1) return -1;
|
|
215
|
+
if (bIndex !== -1) return 1;
|
|
216
|
+
return 0;
|
|
217
|
+
});
|
|
218
|
+
return sortedTags.map((tag) => generateTagsDisplay(tag));
|
|
181
219
|
}
|
|
182
220
|
function EventBannerEdit({
|
|
183
221
|
initialValue,
|
|
@@ -401,7 +439,7 @@ function EventBannerEdit({
|
|
|
401
439
|
children: [
|
|
402
440
|
link.text,
|
|
403
441
|
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { sx: { ml: 1, display: "flex" }, children: [
|
|
404
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Edit Link", children: /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { size: "small", onClick: () => openEditLink(index), sx: { color: "white", p: 0.2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
442
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Edit Link", children: /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { size: "small", onClick: () => openEditLink(index), sx: { color: "white", p: 0.2 }, children: /* @__PURE__ */ jsxRuntime.jsx(EditIcon3__default.default, { fontSize: "inherit" }) }) }),
|
|
405
443
|
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Remove Link", children: /* @__PURE__ */ jsxRuntime.jsx(material.IconButton, { size: "small", onClick: () => removeLink(index), sx: { color: "error.light", p: 0.2 }, children: /* @__PURE__ */ jsxRuntime.jsx(DeleteIcon__default.default, { fontSize: "inherit" }) }) })
|
|
406
444
|
] })
|
|
407
445
|
]
|
|
@@ -528,7 +566,7 @@ function EventBasicInfo(props) {
|
|
|
528
566
|
);
|
|
529
567
|
}
|
|
530
568
|
function EventBasicInfoView({ description, locationId, startingDate, endingDate, timeInfo, timezone, isOwner, onEdit }) {
|
|
531
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
569
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { sx: { position: "relative" }, children: /* @__PURE__ */ jsxRuntime.jsx(material.Card, { style: {
|
|
532
570
|
boxShadow: "0px 4px 10px rgba(0, 0, 0, 0.1)",
|
|
533
571
|
background: "linear-gradient(135deg, rgba(225, 225, 225, 1), rgba(250, 250, 250, 1))"
|
|
534
572
|
}, children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { children: [
|
|
@@ -812,7 +850,7 @@ function EventBannerView({
|
|
|
812
850
|
}) {
|
|
813
851
|
const backgroundColor = bannerColor || "linear-gradient(135deg, rgba(25,118,210,0.8), rgba(25,118,210,1))";
|
|
814
852
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
815
|
-
|
|
853
|
+
Grid10__default.default,
|
|
816
854
|
{
|
|
817
855
|
sx: {
|
|
818
856
|
background: backgroundColor,
|
|
@@ -820,7 +858,7 @@ function EventBannerView({
|
|
|
820
858
|
position: "relative"
|
|
821
859
|
},
|
|
822
860
|
children: [
|
|
823
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
861
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { children: [
|
|
824
862
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
825
863
|
material.Box,
|
|
826
864
|
{
|
|
@@ -879,7 +917,7 @@ function EventBannerView({
|
|
|
879
917
|
}
|
|
880
918
|
),
|
|
881
919
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
882
|
-
|
|
920
|
+
Grid10__default.default,
|
|
883
921
|
{
|
|
884
922
|
display: "flex",
|
|
885
923
|
justifyContent: "center",
|
|
@@ -987,6 +1025,11 @@ var generateLink = function(link) {
|
|
|
987
1025
|
link.text
|
|
988
1026
|
);
|
|
989
1027
|
};
|
|
1028
|
+
|
|
1029
|
+
// src/data/values.tsx
|
|
1030
|
+
var DEFAULT_PROFILE_PIC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiB2aWV3Qm94PSIwIDAgMjU2IDI1NiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIHN0eWxlPSJzdHJva2U6IG5vbmU7IHN0cm9rZS13aWR0aDogMDsgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IGJ1dHQ7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1taXRlcmxpbWl0OiAxMDsgZmlsbDogbm9uZTsgZmlsbC1ydWxlOiBub256ZXJvOyBvcGFjaXR5OiAxOyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40MDY1OTM0MDY1OTM0MDE2IDEuNDA2NTkzNDA2NTkzNDAxNikgc2NhbGUoMi44MSAyLjgxKSI+Cgk8cGF0aCBkPSJNIDQ1IDg4IGMgLTExLjA0OSAwIC0yMS4xOCAtMi4wMDMgLTI5LjAyMSAtOC42MzQgQyA2LjIxMiA3MS4xMDUgMCA1OC43NjQgMCA0NSBDIDAgMjAuMTg3IDIwLjE4NyAwIDQ1IDAgYyAyNC44MTMgMCA0NSAyMC4xODcgNDUgNDUgYyAwIDEzLjc2NSAtNi4yMTIgMjYuMTA1IC0xNS45NzkgMzQuMzY2IEMgNjYuMTgxIDg1Ljk5OCA1Ni4wNDkgODggNDUgODggeiIgc3R5bGU9InN0cm9rZTogbm9uZTsgc3Ryb2tlLXdpZHRoOiAxOyBzdHJva2UtZGFzaGFycmF5OiBub25lOyBzdHJva2UtbGluZWNhcDogYnV0dDsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLW1pdGVybGltaXQ6IDEwOyBmaWxsOiByZ2IoMjE0LDIxNCwyMTQpOyBmaWxsLXJ1bGU6IG5vbnplcm87IG9wYWNpdHk6IDE7IiB0cmFuc2Zvcm09IiBtYXRyaXgoMSAwIDAgMSAwIDApICIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cgk8cGF0aCBkPSJNIDQ1IDYwLjcxIGMgLTExLjQ3OSAwIC0yMC44MTggLTkuMzM5IC0yMC44MTggLTIwLjgxNyBjIDAgLTExLjQ3OSA5LjMzOSAtMjAuODE4IDIwLjgxOCAtMjAuODE4IGMgMTEuNDc5IDAgMjAuODE3IDkuMzM5IDIwLjgxNyAyMC44MTggQyA2NS44MTcgNTEuMzcxIDU2LjQ3OSA2MC43MSA0NSA2MC43MSB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KCTxwYXRoIGQ9Ik0gNDUgOTAgYyAtMTAuNjEzIDAgLTIwLjkyMiAtMy43NzMgLTI5LjAyOCAtMTAuNjI1IGMgLTAuNjQ4IC0wLjU0OCAtMC44OCAtMS40NDQgLTAuNTc5IC0yLjIzNyBDIDIwLjAzNCA2NC45MTkgMzEuOTMzIDU2LjcxIDQ1IDU2LjcxIHMgMjQuOTY2IDguMjA5IDI5LjYwNyAyMC40MjggYyAwLjMwMSAwLjc5MyAwLjA2OSAxLjY4OSAtMC41NzkgMi4yMzcgQyA2NS45MjIgODYuMjI3IDU1LjYxMyA5MCA0NSA5MCB6IiBzdHlsZT0ic3Ryb2tlOiBub25lOyBzdHJva2Utd2lkdGg6IDE7IHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7IHN0cm9rZS1saW5lY2FwOiBidXR0OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbWl0ZXJsaW1pdDogMTA7IGZpbGw6IHJnYigxNjUsMTY0LDE2NCk7IGZpbGwtcnVsZTogbm9uemVybzsgb3BhY2l0eTogMTsiIHRyYW5zZm9ybT0iIG1hdHJpeCgxIDAgMCAxIDAgMCkgIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9nPgo8L3N2Zz4=";
|
|
1031
|
+
var ProfilePictureSettings = {
|
|
1032
|
+
aspectRatio: 4 / 5};
|
|
990
1033
|
var NextGameLabel = ({ nextGameTime }) => {
|
|
991
1034
|
const date = typeof nextGameTime === "string" ? new Date(nextGameTime) : nextGameTime;
|
|
992
1035
|
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "caption", sx: { display: "block", mb: 1, color: "primary.main", fontWeight: "bold" }, children: [
|
|
@@ -1000,17 +1043,22 @@ var BaseSearchResultCard = ({
|
|
|
1000
1043
|
onClick,
|
|
1001
1044
|
children,
|
|
1002
1045
|
icon,
|
|
1003
|
-
tags
|
|
1046
|
+
tags,
|
|
1047
|
+
showEventTag,
|
|
1048
|
+
eventTagId
|
|
1004
1049
|
}) => {
|
|
1050
|
+
const router = navigation.useRouter();
|
|
1005
1051
|
const handleClick = (e) => {
|
|
1052
|
+
const url = `/${result.type}/${result.id}`;
|
|
1053
|
+
if (e.ctrlKey || e.metaKey || e.shiftKey) {
|
|
1054
|
+
e.stopPropagation();
|
|
1055
|
+
window.open(url, "_blank");
|
|
1056
|
+
return;
|
|
1057
|
+
}
|
|
1006
1058
|
if (onClick) {
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
window.open(url, "_blank");
|
|
1011
|
-
} else {
|
|
1012
|
-
onClick(result.id);
|
|
1013
|
-
}
|
|
1059
|
+
onClick(result.id);
|
|
1060
|
+
} else {
|
|
1061
|
+
router.push(url);
|
|
1014
1062
|
}
|
|
1015
1063
|
};
|
|
1016
1064
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1019,7 +1067,7 @@ var BaseSearchResultCard = ({
|
|
|
1019
1067
|
elevation: 6,
|
|
1020
1068
|
sx: {
|
|
1021
1069
|
width: "100%",
|
|
1022
|
-
cursor:
|
|
1070
|
+
cursor: "pointer",
|
|
1023
1071
|
boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)",
|
|
1024
1072
|
transition: "box-shadow 0.3s ease-in-out",
|
|
1025
1073
|
"&:hover": {
|
|
@@ -1041,7 +1089,7 @@ var BaseSearchResultCard = ({
|
|
|
1041
1089
|
const text = full || "";
|
|
1042
1090
|
return text.length > 200 ? `${text.slice(0, 200).trimEnd()}...` : text;
|
|
1043
1091
|
})() }) : /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body1", children: result.description }),
|
|
1044
|
-
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags) })
|
|
1092
|
+
result.tags && result.tags.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { mt: 1, display: "flex", flexWrap: "wrap", gap: 1 }, children: renderTagsFromIds(result.tags, tags, { showEventTag, eventTagId }) })
|
|
1045
1093
|
] })
|
|
1046
1094
|
] })
|
|
1047
1095
|
}
|
|
@@ -1051,7 +1099,9 @@ var BaseSearchResultCard_default = BaseSearchResultCard;
|
|
|
1051
1099
|
var PlayerResultCard = ({
|
|
1052
1100
|
result,
|
|
1053
1101
|
onClick,
|
|
1054
|
-
tags
|
|
1102
|
+
tags,
|
|
1103
|
+
showEventTag,
|
|
1104
|
+
eventTagId
|
|
1055
1105
|
}) => {
|
|
1056
1106
|
const firstLetter = result.title.charAt(0).toUpperCase();
|
|
1057
1107
|
const getAvatarColor = (name) => {
|
|
@@ -1083,7 +1133,7 @@ var PlayerResultCard = ({
|
|
|
1083
1133
|
const playerIcon = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1084
1134
|
Avatar__default.default,
|
|
1085
1135
|
{
|
|
1086
|
-
src: result.imageUrl,
|
|
1136
|
+
src: result.imageUrl || DEFAULT_PROFILE_PIC,
|
|
1087
1137
|
alt: result.title,
|
|
1088
1138
|
sx: {
|
|
1089
1139
|
width: 40,
|
|
@@ -1093,13 +1143,25 @@ var PlayerResultCard = ({
|
|
|
1093
1143
|
children: !result.imageUrl && firstLetter
|
|
1094
1144
|
}
|
|
1095
1145
|
);
|
|
1096
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1146
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1147
|
+
BaseSearchResultCard_default,
|
|
1148
|
+
{
|
|
1149
|
+
result,
|
|
1150
|
+
onClick,
|
|
1151
|
+
icon: playerIcon,
|
|
1152
|
+
tags,
|
|
1153
|
+
showEventTag,
|
|
1154
|
+
eventTagId
|
|
1155
|
+
}
|
|
1156
|
+
);
|
|
1097
1157
|
};
|
|
1098
1158
|
var PlayerResultCard_default = PlayerResultCard;
|
|
1099
1159
|
var TableResultCard = ({
|
|
1100
1160
|
result,
|
|
1101
1161
|
onClick,
|
|
1102
|
-
tags
|
|
1162
|
+
tags,
|
|
1163
|
+
showEventTag,
|
|
1164
|
+
eventTagId
|
|
1103
1165
|
}) => {
|
|
1104
1166
|
const rawCapacity = result.capacity;
|
|
1105
1167
|
const hasDefinedCapacity = typeof rawCapacity === "number" && Number.isFinite(rawCapacity) && rawCapacity > 0;
|
|
@@ -1117,46 +1179,59 @@ var TableResultCard = ({
|
|
|
1117
1179
|
}
|
|
1118
1180
|
}
|
|
1119
1181
|
);
|
|
1120
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1182
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1183
|
+
BaseSearchResultCard_default,
|
|
1184
|
+
{
|
|
1185
|
+
result,
|
|
1186
|
+
onClick,
|
|
1187
|
+
icon: tableIcon,
|
|
1188
|
+
tags,
|
|
1189
|
+
showEventTag,
|
|
1190
|
+
eventTagId,
|
|
1191
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1192
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 1 }, children: [
|
|
1193
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1194
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Players:" }),
|
|
1195
|
+
" ",
|
|
1196
|
+
hasDefinedCapacity ? `${activePlayers}/${capacity}` : activePlayers
|
|
1197
|
+
] }),
|
|
1198
|
+
typeof hasDM === "boolean" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1199
|
+
Chip2__default.default,
|
|
1200
|
+
{
|
|
1201
|
+
icon: hasDM ? /* @__PURE__ */ jsxRuntime.jsx(SupervisorAccountIcon__default.default, {}) : /* @__PURE__ */ jsxRuntime.jsx(PersonIcon__default.default, {}),
|
|
1202
|
+
label: hasDM ? "DM Present" : "No DM",
|
|
1203
|
+
color: hasDM ? "success" : "warning",
|
|
1204
|
+
size: "small"
|
|
1205
|
+
}
|
|
1206
|
+
)
|
|
1207
|
+
] }),
|
|
1208
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1209
|
+
LinearProgress__default.default,
|
|
1210
|
+
{
|
|
1211
|
+
variant: "determinate",
|
|
1212
|
+
value: occupancyPercentage,
|
|
1213
|
+
sx: {
|
|
1214
|
+
height: 10,
|
|
1215
|
+
borderRadius: 5,
|
|
1216
|
+
backgroundColor: "#e0e0e0",
|
|
1217
|
+
"& .MuiLinearProgress-bar": {
|
|
1218
|
+
backgroundColor: hasDefinedCapacity ? availableSlots > 0 ? "#4caf50" : "#f44336" : "#2196f3"
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1148
1221
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1222
|
+
),
|
|
1223
|
+
hasDefinedCapacity && /* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "body2", sx: { mt: 0.5, textAlign: "right" }, children: availableSlots > 0 ? `${availableSlots} slot${availableSlots !== 1 ? "s" : ""} available` : "Table full" })
|
|
1224
|
+
] })
|
|
1225
|
+
}
|
|
1226
|
+
);
|
|
1154
1227
|
};
|
|
1155
1228
|
var TableResultCard_default = TableResultCard;
|
|
1156
1229
|
var EventResultCard = ({
|
|
1157
1230
|
result,
|
|
1158
1231
|
onClick,
|
|
1159
|
-
tags
|
|
1232
|
+
tags,
|
|
1233
|
+
showEventTag,
|
|
1234
|
+
eventTagId
|
|
1160
1235
|
}) => {
|
|
1161
1236
|
const formatDate = (dateString) => {
|
|
1162
1237
|
const options = {
|
|
@@ -1168,7 +1243,7 @@ var EventResultCard = ({
|
|
|
1168
1243
|
try {
|
|
1169
1244
|
const date = new Date(dateString);
|
|
1170
1245
|
return date.toLocaleDateString("en-US", options);
|
|
1171
|
-
} catch (
|
|
1246
|
+
} catch (__) {
|
|
1172
1247
|
return dateString;
|
|
1173
1248
|
}
|
|
1174
1249
|
};
|
|
@@ -1183,29 +1258,40 @@ var EventResultCard = ({
|
|
|
1183
1258
|
}
|
|
1184
1259
|
}
|
|
1185
1260
|
);
|
|
1186
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1261
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1262
|
+
BaseSearchResultCard_default,
|
|
1263
|
+
{
|
|
1264
|
+
result,
|
|
1265
|
+
onClick,
|
|
1266
|
+
icon: eventIcon,
|
|
1267
|
+
tags,
|
|
1268
|
+
showEventTag,
|
|
1269
|
+
eventTagId,
|
|
1270
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
1271
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center", mb: 1 }, children: [
|
|
1272
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarTodayIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1273
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1274
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Date:" }),
|
|
1275
|
+
" ",
|
|
1276
|
+
formattedDate
|
|
1277
|
+
] })
|
|
1278
|
+
] }),
|
|
1279
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { display: "flex", alignItems: "center" }, children: [
|
|
1280
|
+
/* @__PURE__ */ jsxRuntime.jsx(LocationOnIcon__default.default, { sx: { mr: 1, color: "primary.main" } }),
|
|
1281
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", children: [
|
|
1282
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Location:" }),
|
|
1283
|
+
" ",
|
|
1284
|
+
location
|
|
1285
|
+
] })
|
|
1286
|
+
] }),
|
|
1287
|
+
result.organizer && /* @__PURE__ */ jsxRuntime.jsxs(Typography4__default.default, { variant: "body2", sx: { mt: 1 }, children: [
|
|
1288
|
+
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Organizer:" }),
|
|
1289
|
+
" ",
|
|
1290
|
+
result.organizer
|
|
1291
|
+
] })
|
|
1201
1292
|
] })
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
/* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Organizer:" }),
|
|
1205
|
-
" ",
|
|
1206
|
-
result.organizer
|
|
1207
|
-
] })
|
|
1208
|
-
] }) });
|
|
1293
|
+
}
|
|
1294
|
+
);
|
|
1209
1295
|
};
|
|
1210
1296
|
var EventResultCard_default = EventResultCard;
|
|
1211
1297
|
var ResultsContainer = ({
|
|
@@ -1213,20 +1299,22 @@ var ResultsContainer = ({
|
|
|
1213
1299
|
onResultClick,
|
|
1214
1300
|
tags,
|
|
1215
1301
|
pagination,
|
|
1216
|
-
onPacketChange
|
|
1302
|
+
onPacketChange,
|
|
1303
|
+
showEventTag,
|
|
1304
|
+
eventTagId
|
|
1217
1305
|
}) => {
|
|
1218
1306
|
if (!results || results.length === 0 || !results.map) {
|
|
1219
1307
|
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 4 }, children: "No results found. Try adjusting your filters." });
|
|
1220
1308
|
}
|
|
1221
|
-
const onPlayerClick = (id) => {
|
|
1222
|
-
onResultClick
|
|
1223
|
-
};
|
|
1224
|
-
const onTableClick = (id) => {
|
|
1225
|
-
onResultClick
|
|
1226
|
-
};
|
|
1227
|
-
const onEventClick = (id) => {
|
|
1228
|
-
onResultClick
|
|
1229
|
-
};
|
|
1309
|
+
const onPlayerClick = onResultClick ? (id) => {
|
|
1310
|
+
onResultClick(id, "player");
|
|
1311
|
+
} : void 0;
|
|
1312
|
+
const onTableClick = onResultClick ? (id) => {
|
|
1313
|
+
onResultClick(id, "table");
|
|
1314
|
+
} : void 0;
|
|
1315
|
+
const onEventClick = onResultClick ? (id) => {
|
|
1316
|
+
onResultClick(id, "event");
|
|
1317
|
+
} : void 0;
|
|
1230
1318
|
const handlePacketChange = (_event, packet) => {
|
|
1231
1319
|
onPacketChange == null ? void 0 : onPacketChange(packet);
|
|
1232
1320
|
};
|
|
@@ -1250,7 +1338,9 @@ var ResultsContainer = ({
|
|
|
1250
1338
|
{
|
|
1251
1339
|
result,
|
|
1252
1340
|
onClick: onPlayerClick,
|
|
1253
|
-
tags
|
|
1341
|
+
tags,
|
|
1342
|
+
showEventTag,
|
|
1343
|
+
eventTagId
|
|
1254
1344
|
},
|
|
1255
1345
|
result.id
|
|
1256
1346
|
);
|
|
@@ -1260,7 +1350,9 @@ var ResultsContainer = ({
|
|
|
1260
1350
|
{
|
|
1261
1351
|
result,
|
|
1262
1352
|
onClick: onTableClick,
|
|
1263
|
-
tags
|
|
1353
|
+
tags,
|
|
1354
|
+
showEventTag,
|
|
1355
|
+
eventTagId
|
|
1264
1356
|
},
|
|
1265
1357
|
result.id
|
|
1266
1358
|
);
|
|
@@ -1270,7 +1362,9 @@ var ResultsContainer = ({
|
|
|
1270
1362
|
{
|
|
1271
1363
|
result,
|
|
1272
1364
|
onClick: onEventClick,
|
|
1273
|
-
tags
|
|
1365
|
+
tags,
|
|
1366
|
+
showEventTag,
|
|
1367
|
+
eventTagId
|
|
1274
1368
|
},
|
|
1275
1369
|
result.id
|
|
1276
1370
|
);
|
|
@@ -1296,29 +1390,43 @@ var ScrollableResultsList = ({
|
|
|
1296
1390
|
tags,
|
|
1297
1391
|
maxHeight = 400,
|
|
1298
1392
|
onResultClick,
|
|
1299
|
-
emptyText
|
|
1393
|
+
emptyText,
|
|
1394
|
+
showEventTag,
|
|
1395
|
+
eventTagId
|
|
1300
1396
|
}) => {
|
|
1301
1397
|
const hasResults = Array.isArray(results) && results.length > 0;
|
|
1302
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { maxHeight, overflowY: "auto", pr: 1 }, children: hasResults ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1398
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { maxHeight, overflowY: "auto", pr: 1 }, children: hasResults ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1399
|
+
ResultsContainer_default,
|
|
1400
|
+
{
|
|
1401
|
+
results,
|
|
1402
|
+
onResultClick,
|
|
1403
|
+
tags,
|
|
1404
|
+
showEventTag,
|
|
1405
|
+
eventTagId
|
|
1406
|
+
}
|
|
1407
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { textAlign: "center", py: 2 }, children: emptyText || "No results to display." }) });
|
|
1303
1408
|
};
|
|
1304
1409
|
var ScrollableResultsList_default = ScrollableResultsList;
|
|
1305
1410
|
var TablesScrollableList = ({
|
|
1306
1411
|
results,
|
|
1307
1412
|
tags,
|
|
1308
1413
|
maxHeight,
|
|
1309
|
-
onResultClick
|
|
1414
|
+
onResultClick,
|
|
1415
|
+
showEventTag,
|
|
1416
|
+
eventTagId
|
|
1310
1417
|
}) => {
|
|
1311
1418
|
const tables = (results || []).filter((r) => (r == null ? void 0 : r.type) === "table");
|
|
1312
|
-
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
1313
1419
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1314
1420
|
ScrollableResultsList_default,
|
|
1315
1421
|
{
|
|
1316
1422
|
results: tables,
|
|
1317
1423
|
tags,
|
|
1318
1424
|
maxHeight,
|
|
1319
|
-
onResultClick: (id, type) => {
|
|
1320
|
-
if (type === "table")
|
|
1321
|
-
}
|
|
1425
|
+
onResultClick: onResultClick ? (id, type) => {
|
|
1426
|
+
if (type === "table") onResultClick(id);
|
|
1427
|
+
} : void 0,
|
|
1428
|
+
showEventTag,
|
|
1429
|
+
eventTagId
|
|
1322
1430
|
}
|
|
1323
1431
|
);
|
|
1324
1432
|
};
|
|
@@ -1327,12 +1435,24 @@ var EventTablesCard = ({
|
|
|
1327
1435
|
tables,
|
|
1328
1436
|
tags,
|
|
1329
1437
|
maxHeight = 450,
|
|
1330
|
-
onTableClick
|
|
1438
|
+
onTableClick,
|
|
1439
|
+
showEventTag,
|
|
1440
|
+
eventTagId
|
|
1331
1441
|
}) => {
|
|
1332
1442
|
return /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { elevation: 6, sx: { width: "100%", boxShadow: "0px 8px 24px rgba(0, 0, 0, 0.15)" }, children: [
|
|
1333
1443
|
/* @__PURE__ */ jsxRuntime.jsx(CardHeader4__default.default, { title: "Tables" }),
|
|
1334
1444
|
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, {}),
|
|
1335
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1445
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1446
|
+
TablesScrollableList_default,
|
|
1447
|
+
{
|
|
1448
|
+
results: tables,
|
|
1449
|
+
tags,
|
|
1450
|
+
maxHeight,
|
|
1451
|
+
onResultClick: onTableClick,
|
|
1452
|
+
showEventTag,
|
|
1453
|
+
eventTagId
|
|
1454
|
+
}
|
|
1455
|
+
) })
|
|
1336
1456
|
] });
|
|
1337
1457
|
};
|
|
1338
1458
|
var EventTablesCard_default = EventTablesCard;
|
|
@@ -1346,24 +1466,32 @@ function EventPageLayout({
|
|
|
1346
1466
|
tables,
|
|
1347
1467
|
allTags
|
|
1348
1468
|
}) {
|
|
1349
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1350
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1469
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { container: true, flexDirection: "column", children: /* @__PURE__ */ jsxRuntime.jsxs(EventEditProvider, { initialEvent: mergedEvent, value: { isOwner, updateEvent, updateImages }, children: [
|
|
1470
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1351
1471
|
EventBanner,
|
|
1352
1472
|
{
|
|
1353
1473
|
attendees,
|
|
1354
1474
|
numGames
|
|
1355
1475
|
}
|
|
1356
1476
|
) }),
|
|
1357
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1358
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1477
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, flexDirection: "row", spacing: 3, size: { xs: 12, md: 12 }, children: [
|
|
1478
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { size: { xs: 12, md: 4 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1359
1479
|
EventBasicInfo,
|
|
1360
1480
|
{
|
|
1361
1481
|
locationId: mergedEvent.location || "0"
|
|
1362
1482
|
}
|
|
1363
1483
|
) }),
|
|
1364
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1484
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { size: { xs: 12, md: 8 }, spacing: 3, padding: 3, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1485
|
+
EventTablesCard_default,
|
|
1486
|
+
{
|
|
1487
|
+
tables,
|
|
1488
|
+
tags: allTags,
|
|
1489
|
+
showEventTag: true,
|
|
1490
|
+
eventTagId: mergedEvent.id
|
|
1491
|
+
}
|
|
1492
|
+
) })
|
|
1365
1493
|
] }),
|
|
1366
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1494
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, {})
|
|
1367
1495
|
] }) });
|
|
1368
1496
|
}
|
|
1369
1497
|
var PlayerDetailsCard = ({
|
|
@@ -1522,19 +1650,18 @@ var PlayerDetailsCard = ({
|
|
|
1522
1650
|
);
|
|
1523
1651
|
};
|
|
1524
1652
|
var PlayerDetailsCard_default = PlayerDetailsCard;
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
const [imageSrc, setImageSrc] = React7.useState(
|
|
1532
|
-
const { aspectRatio } = ProfilePictureSettings;
|
|
1653
|
+
var PlayerDisplayCard = ({
|
|
1654
|
+
profilePicture,
|
|
1655
|
+
username,
|
|
1656
|
+
bio,
|
|
1657
|
+
preferredPronouns
|
|
1658
|
+
}) => {
|
|
1659
|
+
const [imageSrc, setImageSrc] = React7.useState(DEFAULT_PROFILE_PIC);
|
|
1533
1660
|
React7.useEffect(() => {
|
|
1534
1661
|
async function validateImage() {
|
|
1535
|
-
const newImage = profilePicture ||
|
|
1662
|
+
const newImage = profilePicture || DEFAULT_PROFILE_PIC;
|
|
1536
1663
|
if (!profilePicture) {
|
|
1537
|
-
setImageSrc(
|
|
1664
|
+
setImageSrc(DEFAULT_PROFILE_PIC);
|
|
1538
1665
|
return;
|
|
1539
1666
|
}
|
|
1540
1667
|
const img = new Image();
|
|
@@ -1543,7 +1670,7 @@ var PlayerDisplayCard = ({ profilePicture, username, bio, preferredPronouns }) =
|
|
|
1543
1670
|
setImageSrc(newImage);
|
|
1544
1671
|
};
|
|
1545
1672
|
img.onerror = () => {
|
|
1546
|
-
setImageSrc(
|
|
1673
|
+
setImageSrc(DEFAULT_PROFILE_PIC);
|
|
1547
1674
|
};
|
|
1548
1675
|
}
|
|
1549
1676
|
validateImage();
|
|
@@ -1573,7 +1700,7 @@ var PlayerDisplayCard = ({ profilePicture, username, bio, preferredPronouns }) =
|
|
|
1573
1700
|
image: imageSrc,
|
|
1574
1701
|
alt: `${username}'s Profile Picture`,
|
|
1575
1702
|
sx: {
|
|
1576
|
-
aspectRatio,
|
|
1703
|
+
aspectRatio: ProfilePictureSettings.aspectRatio,
|
|
1577
1704
|
height: "auto",
|
|
1578
1705
|
// Updates to maintain aspect ratio and fill space nicely
|
|
1579
1706
|
width: "100%",
|
|
@@ -1892,6 +2019,24 @@ function PlayerPageLayout({
|
|
|
1892
2019
|
] }) })
|
|
1893
2020
|
] }) }) });
|
|
1894
2021
|
}
|
|
2022
|
+
var DistanceFilter = ({ distances, selectedDistance, onChange }) => {
|
|
2023
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2024
|
+
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Distance" }),
|
|
2025
|
+
/* @__PURE__ */ jsxRuntime.jsx(FormControl2__default.default, { fullWidth: true, size: "small", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2026
|
+
Select2__default.default,
|
|
2027
|
+
{
|
|
2028
|
+
value: selectedDistance !== void 0 ? selectedDistance : "",
|
|
2029
|
+
onChange: (e) => onChange(Number(e.target.value)),
|
|
2030
|
+
displayEmpty: true,
|
|
2031
|
+
children: [
|
|
2032
|
+
/* @__PURE__ */ jsxRuntime.jsx(MenuItem2__default.default, { value: "", children: /* @__PURE__ */ jsxRuntime.jsx("em", { children: "Any Distance" }) }),
|
|
2033
|
+
distances.map((option) => /* @__PURE__ */ jsxRuntime.jsx(MenuItem2__default.default, { value: option.value, children: option.display }, option.value))
|
|
2034
|
+
]
|
|
2035
|
+
}
|
|
2036
|
+
) })
|
|
2037
|
+
] });
|
|
2038
|
+
};
|
|
2039
|
+
var DistanceFilter_default = DistanceFilter;
|
|
1895
2040
|
var ExpiredTablesFilter = ({
|
|
1896
2041
|
includeExpiredTables,
|
|
1897
2042
|
onChange
|
|
@@ -1960,13 +2105,13 @@ var TagsFilter = ({
|
|
|
1960
2105
|
shouldHaveAtLeastOne: ""
|
|
1961
2106
|
});
|
|
1962
2107
|
const tagOptions = React7__default.default.useMemo(() => {
|
|
2108
|
+
var _a;
|
|
1963
2109
|
console.log("available tags: " + JSON.stringify(Tags));
|
|
1964
2110
|
console.log(!Tags);
|
|
1965
|
-
|
|
1966
|
-
return Tags.map((tag) => ({
|
|
2111
|
+
return (_a = Tags == null ? void 0 : Tags.map((tag) => ({
|
|
1967
2112
|
value: tag.id,
|
|
1968
2113
|
label: tag.label
|
|
1969
|
-
}));
|
|
2114
|
+
}))) != null ? _a : [];
|
|
1970
2115
|
}, [Tags]);
|
|
1971
2116
|
const handleTagChange = (tagId, category) => {
|
|
1972
2117
|
let newTags = [];
|
|
@@ -1994,8 +2139,7 @@ var TagsFilter = ({
|
|
|
1994
2139
|
};
|
|
1995
2140
|
const renderSelectedTags = (selectedTags, category) => {
|
|
1996
2141
|
const tagValues = [];
|
|
1997
|
-
|
|
1998
|
-
Tags.forEach((tag) => {
|
|
2142
|
+
Tags == null ? void 0 : Tags.forEach((tag) => {
|
|
1999
2143
|
if (selectedTags.includes(tag.id)) {
|
|
2000
2144
|
tagValues.push(tag);
|
|
2001
2145
|
}
|
|
@@ -2061,7 +2205,7 @@ var TagsFilter = ({
|
|
|
2061
2205
|
});
|
|
2062
2206
|
},
|
|
2063
2207
|
slots: { popper: CustomPopper2 },
|
|
2064
|
-
renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2208
|
+
renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField7__default.default, { ...params, label: `Select ${label}` })
|
|
2065
2209
|
},
|
|
2066
2210
|
`${category}-${selectedTags.join("-")}`
|
|
2067
2211
|
)
|
|
@@ -2133,7 +2277,7 @@ var TextSearchCard = ({ onChange, selectedTypes, initialTextSearch }) => {
|
|
|
2133
2277
|
/* @__PURE__ */ jsxRuntime.jsx(Typography4__default.default, { variant: "h6", gutterBottom: true, children: "Text Search" }),
|
|
2134
2278
|
/* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { sx: { mb: 2 }, children: [
|
|
2135
2279
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2136
|
-
|
|
2280
|
+
TextField7__default.default,
|
|
2137
2281
|
{
|
|
2138
2282
|
fullWidth: true,
|
|
2139
2283
|
label: "Search in title and description",
|
|
@@ -2182,9 +2326,7 @@ var TypeFilter = ({ types, initialSelectedTypes = [], onChange }) => {
|
|
|
2182
2326
|
Checkbox__default.default,
|
|
2183
2327
|
{
|
|
2184
2328
|
checked: selectedTypes.includes(type.id),
|
|
2185
|
-
onChange: () => handleTypeChange(type.id)
|
|
2186
|
-
disabled: type.id === "event",
|
|
2187
|
-
title: type.id === "event" ? "Coming soon! Currently only player and table search are supported." : ""
|
|
2329
|
+
onChange: () => handleTypeChange(type.id)
|
|
2188
2330
|
}
|
|
2189
2331
|
),
|
|
2190
2332
|
label: type.label
|
|
@@ -2199,10 +2341,13 @@ var FiltersContainer = ({
|
|
|
2199
2341
|
initialSelectedTags,
|
|
2200
2342
|
initialTextSearch,
|
|
2201
2343
|
includeExpiredTables = false,
|
|
2344
|
+
distance,
|
|
2345
|
+
distances,
|
|
2202
2346
|
onTypeChange,
|
|
2203
2347
|
onTagChange,
|
|
2204
2348
|
onTextSearchChange,
|
|
2205
2349
|
onIncludeExpiredTablesChange,
|
|
2350
|
+
onDistanceChange,
|
|
2206
2351
|
onSubmit,
|
|
2207
2352
|
tags,
|
|
2208
2353
|
searchTypes
|
|
@@ -2217,7 +2362,10 @@ var FiltersContainer = ({
|
|
|
2217
2362
|
onTypeChange(types);
|
|
2218
2363
|
}
|
|
2219
2364
|
};
|
|
2220
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, {
|
|
2365
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Box2__default.default, { component: "form", onSubmit: (e) => {
|
|
2366
|
+
e.preventDefault();
|
|
2367
|
+
if (onSubmit) onSubmit();
|
|
2368
|
+
}, children: [
|
|
2221
2369
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2222
2370
|
TypeFilter_default,
|
|
2223
2371
|
{
|
|
@@ -2227,6 +2375,16 @@ var FiltersContainer = ({
|
|
|
2227
2375
|
}
|
|
2228
2376
|
),
|
|
2229
2377
|
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2378
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2379
|
+
DistanceFilter_default,
|
|
2380
|
+
{
|
|
2381
|
+
distances,
|
|
2382
|
+
selectedDistance: distance,
|
|
2383
|
+
onChange: onDistanceChange || (() => {
|
|
2384
|
+
})
|
|
2385
|
+
}
|
|
2386
|
+
),
|
|
2387
|
+
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } }),
|
|
2230
2388
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2231
2389
|
TextSearchCard_default,
|
|
2232
2390
|
{
|
|
@@ -2257,13 +2415,13 @@ var FiltersContainer = ({
|
|
|
2257
2415
|
/* @__PURE__ */ jsxRuntime.jsx(Divider3__default.default, { sx: { my: 2 } })
|
|
2258
2416
|
] }),
|
|
2259
2417
|
/* @__PURE__ */ jsxRuntime.jsx(Box2__default.default, { sx: { display: "flex", justifyContent: "center", mt: 2 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2260
|
-
|
|
2418
|
+
Button8__default.default,
|
|
2261
2419
|
{
|
|
2420
|
+
type: "submit",
|
|
2262
2421
|
variant: "contained",
|
|
2263
2422
|
color: "primary",
|
|
2264
2423
|
size: "large",
|
|
2265
2424
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(SearchIcon__default.default, {}),
|
|
2266
|
-
onClick: onSubmit,
|
|
2267
2425
|
sx: {
|
|
2268
2426
|
width: "100%",
|
|
2269
2427
|
py: 1.5,
|
|
@@ -2288,16 +2446,15 @@ var PlayersScrollableList = ({
|
|
|
2288
2446
|
onResultClick
|
|
2289
2447
|
}) => {
|
|
2290
2448
|
const players = (results || []).filter((r) => (r == null ? void 0 : r.type) === "player");
|
|
2291
|
-
const handleClick = (id) => onResultClick == null ? void 0 : onResultClick(id);
|
|
2292
2449
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2293
2450
|
ScrollableResultsList_default,
|
|
2294
2451
|
{
|
|
2295
2452
|
results: players,
|
|
2296
2453
|
tags,
|
|
2297
2454
|
maxHeight,
|
|
2298
|
-
onResultClick: (id, type) => {
|
|
2299
|
-
if (type === "player")
|
|
2300
|
-
}
|
|
2455
|
+
onResultClick: onResultClick ? (id, type) => {
|
|
2456
|
+
if (type === "player") onResultClick(id);
|
|
2457
|
+
} : void 0
|
|
2301
2458
|
}
|
|
2302
2459
|
);
|
|
2303
2460
|
};
|
|
@@ -2323,11 +2480,13 @@ function SearchPageLayout({
|
|
|
2323
2480
|
query: "",
|
|
2324
2481
|
titleOnly: false
|
|
2325
2482
|
},
|
|
2326
|
-
|
|
2483
|
+
initialDistance,
|
|
2484
|
+
distances,
|
|
2327
2485
|
onTypeChange,
|
|
2328
2486
|
onTagChange,
|
|
2329
2487
|
onTextSearchChange,
|
|
2330
2488
|
onIncludeExpiredTablesChange,
|
|
2489
|
+
onDistanceChange,
|
|
2331
2490
|
onSubmit,
|
|
2332
2491
|
onResultClick,
|
|
2333
2492
|
onPacketChange,
|
|
@@ -2335,14 +2494,16 @@ function SearchPageLayout({
|
|
|
2335
2494
|
validTags,
|
|
2336
2495
|
allTags,
|
|
2337
2496
|
searchTypes,
|
|
2338
|
-
isLoading = false
|
|
2497
|
+
isLoading = false,
|
|
2498
|
+
eventTagId
|
|
2339
2499
|
}) {
|
|
2340
2500
|
const theme = material.useTheme();
|
|
2341
2501
|
const isMobile = material.useMediaQuery(theme.breakpoints.down("md"));
|
|
2342
2502
|
const [selectedTypes, setSelectedTypes] = React7.useState(initialSelectedTypes);
|
|
2343
2503
|
const [selectedTags, setSelectedTags] = React7.useState(initialSelectedTags);
|
|
2344
2504
|
const [textSearch, setTextSearch] = React7.useState(initialTextSearch);
|
|
2345
|
-
const [includeExpiredTables, setIncludeExpiredTables] = React7.useState(
|
|
2505
|
+
const [includeExpiredTables, setIncludeExpiredTables] = React7.useState(false);
|
|
2506
|
+
const [distance, setDistance] = React7.useState(initialDistance);
|
|
2346
2507
|
React7.useEffect(() => {
|
|
2347
2508
|
setSelectedTypes(initialSelectedTypes);
|
|
2348
2509
|
}, [initialSelectedTypes]);
|
|
@@ -2353,8 +2514,8 @@ function SearchPageLayout({
|
|
|
2353
2514
|
setTextSearch(initialTextSearch);
|
|
2354
2515
|
}, [initialTextSearch]);
|
|
2355
2516
|
React7.useEffect(() => {
|
|
2356
|
-
|
|
2357
|
-
}, [
|
|
2517
|
+
setDistance(initialDistance);
|
|
2518
|
+
}, [initialDistance]);
|
|
2358
2519
|
const handleTypeChange = (types) => {
|
|
2359
2520
|
setSelectedTypes(types);
|
|
2360
2521
|
if (onTypeChange) onTypeChange(types);
|
|
@@ -2371,12 +2532,17 @@ function SearchPageLayout({
|
|
|
2371
2532
|
setIncludeExpiredTables(include);
|
|
2372
2533
|
if (onIncludeExpiredTablesChange) onIncludeExpiredTablesChange(include);
|
|
2373
2534
|
};
|
|
2535
|
+
const handleDistanceChange = (dist) => {
|
|
2536
|
+
setDistance(dist);
|
|
2537
|
+
if (onDistanceChange) onDistanceChange(dist);
|
|
2538
|
+
};
|
|
2374
2539
|
const handleSubmit = () => {
|
|
2375
2540
|
const currentCriteria = {
|
|
2376
2541
|
selectedTypes,
|
|
2377
2542
|
selectedTags,
|
|
2378
2543
|
textSearch,
|
|
2379
|
-
includeExpiredTables
|
|
2544
|
+
includeExpiredTables,
|
|
2545
|
+
distance
|
|
2380
2546
|
};
|
|
2381
2547
|
if (onSubmit) {
|
|
2382
2548
|
onSubmit(currentCriteria);
|
|
@@ -2395,8 +2561,8 @@ function SearchPageLayout({
|
|
|
2395
2561
|
}
|
|
2396
2562
|
}
|
|
2397
2563
|
) }),
|
|
2398
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2399
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2564
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, spacing: 2, children: [
|
|
2565
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { size: { xs: 12, md: 3 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { sx: { marginBottom: isMobile ? 2 : 0 }, children: [
|
|
2400
2566
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2401
2567
|
CardHeader4__default.default,
|
|
2402
2568
|
{
|
|
@@ -2416,17 +2582,20 @@ function SearchPageLayout({
|
|
|
2416
2582
|
initialSelectedTags: selectedTags,
|
|
2417
2583
|
initialTextSearch: textSearch,
|
|
2418
2584
|
includeExpiredTables,
|
|
2585
|
+
distance,
|
|
2586
|
+
distances,
|
|
2419
2587
|
onTypeChange: handleTypeChange,
|
|
2420
2588
|
onTagChange: handleTagChange,
|
|
2421
2589
|
onTextSearchChange: handleTextSearchChange,
|
|
2422
2590
|
onIncludeExpiredTablesChange: handleIncludeExpiredTablesChange,
|
|
2591
|
+
onDistanceChange: handleDistanceChange,
|
|
2423
2592
|
onSubmit: handleSubmit,
|
|
2424
2593
|
tags: validTags,
|
|
2425
2594
|
searchTypes
|
|
2426
2595
|
}
|
|
2427
2596
|
) })
|
|
2428
2597
|
] }) }),
|
|
2429
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2598
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { size: { xs: 12, md: 9 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
|
|
2430
2599
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2431
2600
|
CardHeader4__default.default,
|
|
2432
2601
|
{
|
|
@@ -2446,13 +2615,255 @@ function SearchPageLayout({
|
|
|
2446
2615
|
pagination,
|
|
2447
2616
|
onPacketChange,
|
|
2448
2617
|
onResultClick,
|
|
2449
|
-
tags: allTags
|
|
2618
|
+
tags: allTags,
|
|
2619
|
+
showEventTag: true,
|
|
2620
|
+
eventTagId
|
|
2450
2621
|
}
|
|
2451
2622
|
) })
|
|
2452
2623
|
] }) })
|
|
2453
2624
|
] })
|
|
2454
2625
|
] });
|
|
2455
2626
|
}
|
|
2627
|
+
|
|
2628
|
+
// src/components/shared/NameGenerator.ts
|
|
2629
|
+
var getRandomTitle = () => {
|
|
2630
|
+
const randomPrefix = titlePrefixes[Math.random() * titlePrefixes.length | 0];
|
|
2631
|
+
const randomMiddle = tileMiddle[Math.random() * tileMiddle.length | 0];
|
|
2632
|
+
const randomSuffix = titleSuffixes[Math.random() * titleSuffixes.length | 0];
|
|
2633
|
+
return `${randomPrefix} ${randomMiddle} ${randomSuffix}`;
|
|
2634
|
+
};
|
|
2635
|
+
var getRandomTagline = () => taglines[Math.random() * taglines.length | 0];
|
|
2636
|
+
var titlePrefixes = [
|
|
2637
|
+
"The Knights of The",
|
|
2638
|
+
"The Fellowship of The",
|
|
2639
|
+
"The Order of The",
|
|
2640
|
+
"The Infamous",
|
|
2641
|
+
"The Legendary",
|
|
2642
|
+
"The Dubious",
|
|
2643
|
+
"The Sworn Guardians of The",
|
|
2644
|
+
"The Ancient Guild of The",
|
|
2645
|
+
"The Unstoppable",
|
|
2646
|
+
"The Misfit",
|
|
2647
|
+
"The Chaotic",
|
|
2648
|
+
"The Brave",
|
|
2649
|
+
"The Forgotten",
|
|
2650
|
+
"The Wandering",
|
|
2651
|
+
"The Noble Council of The",
|
|
2652
|
+
"The Dread Pirates of The",
|
|
2653
|
+
"The Honorable Society of The",
|
|
2654
|
+
"The Cursed",
|
|
2655
|
+
"The Unlikely Heroes of The",
|
|
2656
|
+
"The Elders of The",
|
|
2657
|
+
"The Seekers of The",
|
|
2658
|
+
"The Champions of The",
|
|
2659
|
+
"The Heralds of The",
|
|
2660
|
+
"The Disciples of The",
|
|
2661
|
+
"The Ragtag Band of The",
|
|
2662
|
+
"The Cult of The"
|
|
2663
|
+
];
|
|
2664
|
+
var tileMiddle = [
|
|
2665
|
+
"Round",
|
|
2666
|
+
"Kitchen",
|
|
2667
|
+
"Deepest",
|
|
2668
|
+
"Sorcery",
|
|
2669
|
+
"Munchkin",
|
|
2670
|
+
"Shenanigan",
|
|
2671
|
+
"Secret",
|
|
2672
|
+
"Dungeon",
|
|
2673
|
+
"Fireside",
|
|
2674
|
+
"Tabletop",
|
|
2675
|
+
"Midnight",
|
|
2676
|
+
"Tavern",
|
|
2677
|
+
"Goblin",
|
|
2678
|
+
"Dragon",
|
|
2679
|
+
"Critical",
|
|
2680
|
+
"Natural Twenty",
|
|
2681
|
+
"Counterspell",
|
|
2682
|
+
"Nat One",
|
|
2683
|
+
"Cardboard",
|
|
2684
|
+
"Dice Tower",
|
|
2685
|
+
"Campaign",
|
|
2686
|
+
"Lore",
|
|
2687
|
+
"Awkward",
|
|
2688
|
+
"Unhinged",
|
|
2689
|
+
"Chaotic Neutral",
|
|
2690
|
+
"Homebrew",
|
|
2691
|
+
"Side Quest"
|
|
2692
|
+
];
|
|
2693
|
+
var titleSuffixes = [
|
|
2694
|
+
"Table",
|
|
2695
|
+
"Dungeon",
|
|
2696
|
+
"Cave",
|
|
2697
|
+
"Crew",
|
|
2698
|
+
"Team",
|
|
2699
|
+
"League",
|
|
2700
|
+
"Horde",
|
|
2701
|
+
"Party",
|
|
2702
|
+
"Conclave",
|
|
2703
|
+
"Collective",
|
|
2704
|
+
"Alliance",
|
|
2705
|
+
"Syndicate",
|
|
2706
|
+
"Guild",
|
|
2707
|
+
"Cabal",
|
|
2708
|
+
"Council",
|
|
2709
|
+
"Expedition",
|
|
2710
|
+
"Enclave",
|
|
2711
|
+
"Consortium",
|
|
2712
|
+
"Troupe",
|
|
2713
|
+
"Vanguard",
|
|
2714
|
+
"Cohort",
|
|
2715
|
+
"Brotherhood",
|
|
2716
|
+
"Sisterhood",
|
|
2717
|
+
"Pantheon",
|
|
2718
|
+
"Assembly",
|
|
2719
|
+
"Coven"
|
|
2720
|
+
];
|
|
2721
|
+
var taglines = [
|
|
2722
|
+
"Everyone is welcome!",
|
|
2723
|
+
"Looking for serious players.",
|
|
2724
|
+
"Get in nerds, we're gaming!",
|
|
2725
|
+
"If you aren't there, you're square.",
|
|
2726
|
+
"It will be legendary!",
|
|
2727
|
+
"Beginners welcome \u2014 we were all level 1 once.",
|
|
2728
|
+
"No experience necessary. Snacks encouraged.",
|
|
2729
|
+
"Roleplayers, board gamers, and chaos gremlins welcome.",
|
|
2730
|
+
"We don't metagame. Much.",
|
|
2731
|
+
"All alignments accepted. True Neutral gets the snacks.",
|
|
2732
|
+
"Where every session is a one-shot... until it isn't.",
|
|
2733
|
+
"Homebrew rules may apply.",
|
|
2734
|
+
"Warning: may contain excessive lore.",
|
|
2735
|
+
"Critical failures celebrated as much as critical hits.",
|
|
2736
|
+
"No powergamers. Okay, maybe one powergamer.",
|
|
2737
|
+
"We finish campaigns. (Eventually.)",
|
|
2738
|
+
"Veteran players seeking worthy companions.",
|
|
2739
|
+
"Casuals only \u2014 we're here for the vibes.",
|
|
2740
|
+
"Serious about fun, not about rules.",
|
|
2741
|
+
"Min-maxers need not apply.",
|
|
2742
|
+
"For those who read the rulebook... and those who definitely didn't.",
|
|
2743
|
+
"Roll for initiative. Arrive on time.",
|
|
2744
|
+
"Side quests are the main quest here.",
|
|
2745
|
+
"Chaotic good energy required.",
|
|
2746
|
+
"If you bring snacks, you can name the first NPC.",
|
|
2747
|
+
"We read the rulebook so you don't have to.",
|
|
2748
|
+
"Wargamers only \u2014 no take-backs, no mercy.",
|
|
2749
|
+
"Everyone welcome. Meeple provided.",
|
|
2750
|
+
"We always play the longest game on the shelf.",
|
|
2751
|
+
"Worker placement. Resource management. Existential dread.",
|
|
2752
|
+
"No phones at the table! We're here for the game.",
|
|
2753
|
+
"Someone always flips the table. Metaphorically. Usually.",
|
|
2754
|
+
"We have a designated rules lawyer. It's fine.",
|
|
2755
|
+
"Cooperative games only \u2014 we can't handle another Monopoly incident.",
|
|
2756
|
+
"Teaching time is half the fun!"
|
|
2757
|
+
];
|
|
2758
|
+
function TagSelector({ initialTagIDs, allTags, onTagChange }) {
|
|
2759
|
+
const [tagList, updateTagList] = React7.useState(initialTagIDs);
|
|
2760
|
+
const [inputValue, setInputValue] = React7.useState("");
|
|
2761
|
+
const toggleTag = (id) => tagList.find((t) => t === id) ? removeTag(id) : addTag(id);
|
|
2762
|
+
const addTag = (id) => {
|
|
2763
|
+
const newList = [...tagList, id];
|
|
2764
|
+
updateTagList(newList);
|
|
2765
|
+
onTagChange(newList);
|
|
2766
|
+
};
|
|
2767
|
+
const removeTag = (id) => {
|
|
2768
|
+
const newList = tagList.filter((t) => t !== id);
|
|
2769
|
+
updateTagList(newList);
|
|
2770
|
+
onTagChange(newList);
|
|
2771
|
+
};
|
|
2772
|
+
const selectedTags = React7.useMemo(() => allTags.filter((tag) => tagList.includes(tag.id)), [allTags, tagList]);
|
|
2773
|
+
const options = React7.useMemo(
|
|
2774
|
+
() => allTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
2775
|
+
[allTags]
|
|
2776
|
+
);
|
|
2777
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2778
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2779
|
+
Chip,
|
|
2780
|
+
{
|
|
2781
|
+
tag,
|
|
2782
|
+
removeCallback: () => toggleTag(tag.id)
|
|
2783
|
+
},
|
|
2784
|
+
tag.id
|
|
2785
|
+
)) }),
|
|
2786
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { container: true, spacing: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { sx: { marginTop: 3, width: "100%", minWidth: "550px" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2787
|
+
Autocomplete__default.default,
|
|
2788
|
+
{
|
|
2789
|
+
options,
|
|
2790
|
+
filterOptions: (availableOptions, state) => availableOptions.filter(
|
|
2791
|
+
(option) => !tagList.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
|
|
2792
|
+
),
|
|
2793
|
+
value: null,
|
|
2794
|
+
inputValue,
|
|
2795
|
+
onInputChange: (event, newInputValue) => {
|
|
2796
|
+
if (event && event.type === "change") {
|
|
2797
|
+
setInputValue(newInputValue);
|
|
2798
|
+
}
|
|
2799
|
+
},
|
|
2800
|
+
onChange: (event, newValue) => {
|
|
2801
|
+
if (newValue) {
|
|
2802
|
+
toggleTag(newValue.value);
|
|
2803
|
+
}
|
|
2804
|
+
setInputValue("");
|
|
2805
|
+
},
|
|
2806
|
+
renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField7__default.default, { ...params, label: "Select Tags" })
|
|
2807
|
+
},
|
|
2808
|
+
tagList.join("-")
|
|
2809
|
+
) }) })
|
|
2810
|
+
] });
|
|
2811
|
+
}
|
|
2812
|
+
function EditTableDetailsForm({ initialTitle, initialSubtitle, onTitleChange, onSubtitleChange, allowEditingTitles, initialTagIDs, allTags, onTagChange }) {
|
|
2813
|
+
const [title, setTitle] = React7.useState(initialTitle);
|
|
2814
|
+
const [subtitle, setSubtitle] = React7.useState(initialSubtitle);
|
|
2815
|
+
const handleTitleChange = (newTitle) => {
|
|
2816
|
+
setTitle(newTitle);
|
|
2817
|
+
onTitleChange(newTitle);
|
|
2818
|
+
};
|
|
2819
|
+
const handleSubtitleChange = (newSubtitle) => {
|
|
2820
|
+
setSubtitle(newSubtitle);
|
|
2821
|
+
onSubtitleChange(newSubtitle);
|
|
2822
|
+
};
|
|
2823
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2824
|
+
allowEditingTitles && /* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "flex flex-col gap-4 mb-8", children: [
|
|
2825
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "inline-flex", children: [
|
|
2826
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2827
|
+
TextField7__default.default,
|
|
2828
|
+
{
|
|
2829
|
+
sx: { minWidth: "400px" },
|
|
2830
|
+
label: "Title",
|
|
2831
|
+
onChange: (e) => handleTitleChange(e.target.value),
|
|
2832
|
+
variant: "filled",
|
|
2833
|
+
value: title
|
|
2834
|
+
}
|
|
2835
|
+
),
|
|
2836
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Randomize", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2837
|
+
CasinoIcon__default.default,
|
|
2838
|
+
{
|
|
2839
|
+
sx: { cursor: "pointer", alignSelf: "center", ml: 1 },
|
|
2840
|
+
onClick: () => handleTitleChange(getRandomTitle())
|
|
2841
|
+
}
|
|
2842
|
+
) })
|
|
2843
|
+
] }),
|
|
2844
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { className: "inline-flex min-w-96", children: [
|
|
2845
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2846
|
+
TextField7__default.default,
|
|
2847
|
+
{
|
|
2848
|
+
sx: { minWidth: "400px" },
|
|
2849
|
+
label: "Short Description or Tagline",
|
|
2850
|
+
onChange: (e) => handleSubtitleChange(e.target.value),
|
|
2851
|
+
variant: "filled",
|
|
2852
|
+
value: subtitle
|
|
2853
|
+
}
|
|
2854
|
+
),
|
|
2855
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Tooltip, { title: "Randomize", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2856
|
+
CasinoIcon__default.default,
|
|
2857
|
+
{
|
|
2858
|
+
sx: { cursor: "pointer", alignSelf: "center", ml: 1 },
|
|
2859
|
+
onClick: () => handleSubtitleChange(getRandomTagline())
|
|
2860
|
+
}
|
|
2861
|
+
) })
|
|
2862
|
+
] })
|
|
2863
|
+
] }),
|
|
2864
|
+
/* @__PURE__ */ jsxRuntime.jsx(TagSelector, { initialTagIDs, allTags, onTagChange })
|
|
2865
|
+
] });
|
|
2866
|
+
}
|
|
2456
2867
|
var GameTableContext = React7__default.default.createContext(void 0);
|
|
2457
2868
|
function GameTableProvider(props) {
|
|
2458
2869
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children });
|
|
@@ -2465,76 +2876,206 @@ function useGameTableContext() {
|
|
|
2465
2876
|
throw new Error("useGameTableContext is deprecated in the package build. Pass table data through props instead.");
|
|
2466
2877
|
}
|
|
2467
2878
|
var ModalContext = React7.createContext({
|
|
2468
|
-
showModal: (
|
|
2879
|
+
showModal: () => {
|
|
2469
2880
|
},
|
|
2470
2881
|
hideModal: () => {
|
|
2471
2882
|
}
|
|
2472
2883
|
});
|
|
2473
2884
|
var useModal = () => React7.useContext(ModalContext);
|
|
2474
|
-
var
|
|
2475
|
-
const
|
|
2476
|
-
const previouslyFocusedElement = React7.useRef(null);
|
|
2885
|
+
var AutoResizingTextarea = (props) => {
|
|
2886
|
+
const { isInEditMode, onChange, textareaRef, value } = props;
|
|
2477
2887
|
React7.useEffect(() => {
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2888
|
+
if (isInEditMode && textareaRef.current) {
|
|
2889
|
+
const textarea = textareaRef.current;
|
|
2890
|
+
textarea.style.height = "auto";
|
|
2891
|
+
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
2482
2892
|
}
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
'button, [tabindex]:not([tabindex="-1"])'
|
|
2496
|
-
);
|
|
2497
|
-
if (!focusableElements || focusableElements.length === 0) return;
|
|
2498
|
-
const first = focusableElements[0];
|
|
2499
|
-
const last = focusableElements[focusableElements.length - 1];
|
|
2500
|
-
if (e.shiftKey) {
|
|
2501
|
-
if (document.activeElement === first) {
|
|
2502
|
-
e.preventDefault();
|
|
2503
|
-
last.focus();
|
|
2893
|
+
}, [isInEditMode, textareaRef, value]);
|
|
2894
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2895
|
+
"textarea",
|
|
2896
|
+
{
|
|
2897
|
+
ref: textareaRef,
|
|
2898
|
+
value,
|
|
2899
|
+
onChange: (e) => onChange(e.target.value),
|
|
2900
|
+
style: {
|
|
2901
|
+
backgroundColor: "#fffbea",
|
|
2902
|
+
overflow: "hidden",
|
|
2903
|
+
resize: "none",
|
|
2904
|
+
width: "100%"
|
|
2504
2905
|
}
|
|
2505
|
-
}
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2906
|
+
}
|
|
2907
|
+
);
|
|
2908
|
+
};
|
|
2909
|
+
var AutoResizingTextarea_default = AutoResizingTextarea;
|
|
2910
|
+
var NextGameCountdown = ({ nextGameTime }) => {
|
|
2911
|
+
const [timeLeft, setTimeLeft] = React7.useState("");
|
|
2912
|
+
React7.useEffect(() => {
|
|
2913
|
+
if (!nextGameTime) return;
|
|
2914
|
+
const timer = setInterval(() => {
|
|
2915
|
+
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
2916
|
+
const distance = new Date(nextGameTime).getTime() - now;
|
|
2917
|
+
if (distance < 0) {
|
|
2918
|
+
clearInterval(timer);
|
|
2919
|
+
setTimeLeft("Started");
|
|
2920
|
+
return;
|
|
2921
|
+
}
|
|
2922
|
+
const days = Math.floor(distance / (1e3 * 60 * 60 * 24));
|
|
2923
|
+
const hours = Math.floor(distance % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60));
|
|
2924
|
+
const minutes = Math.floor(distance % (1e3 * 60 * 60) / (1e3 * 60));
|
|
2925
|
+
const seconds = Math.floor(distance % (1e3 * 60) / 1e3);
|
|
2926
|
+
let timeString = "";
|
|
2927
|
+
if (days > 0) timeString += `${days}d `;
|
|
2928
|
+
if (hours > 0 || days > 0) timeString += `${hours}h `;
|
|
2929
|
+
timeString += `${minutes}m ${seconds}s`;
|
|
2930
|
+
setTimeLeft(timeString);
|
|
2931
|
+
}, 1e3);
|
|
2932
|
+
return () => clearInterval(timer);
|
|
2933
|
+
}, [nextGameTime]);
|
|
2934
|
+
if (!nextGameTime) return null;
|
|
2935
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "body2", color: "primary", sx: { fontWeight: "bold" }, children: [
|
|
2936
|
+
"Next Game: ",
|
|
2937
|
+
timeLeft
|
|
2938
|
+
] });
|
|
2939
|
+
};
|
|
2940
|
+
function TagEditor({
|
|
2941
|
+
title,
|
|
2942
|
+
selectedTags,
|
|
2943
|
+
possibleTags,
|
|
2944
|
+
onToggleTag
|
|
2945
|
+
}) {
|
|
2946
|
+
const selectedIds = React7.useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
|
|
2947
|
+
const onTagChange = (newSelectedIds) => {
|
|
2948
|
+
const addedTags = newSelectedIds.filter((id) => !selectedIds.includes(id));
|
|
2949
|
+
const removedTags = selectedIds.filter((id) => !newSelectedIds.includes(id));
|
|
2950
|
+
addedTags.forEach((id) => onToggleTag(id));
|
|
2951
|
+
removedTags.forEach((id) => onToggleTag(id));
|
|
2952
|
+
};
|
|
2953
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { container: true, children: /* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { size: { xs: 12 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
|
|
2954
|
+
title ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2955
|
+
CardHeader4__default.default,
|
|
2956
|
+
{
|
|
2957
|
+
title,
|
|
2958
|
+
style: {
|
|
2959
|
+
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
|
|
2960
|
+
color: "#FFFFFF",
|
|
2961
|
+
fontSize: "1.5rem",
|
|
2962
|
+
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
|
|
2963
|
+
}
|
|
2509
2964
|
}
|
|
2965
|
+
) : "",
|
|
2966
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardContent10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(TagSelector, { initialTagIDs: selectedIds, allTags: possibleTags, onTagChange }) })
|
|
2967
|
+
] }) }) });
|
|
2968
|
+
}
|
|
2969
|
+
var UserAgreementModal = ({
|
|
2970
|
+
open,
|
|
2971
|
+
onClose,
|
|
2972
|
+
markdownContent,
|
|
2973
|
+
requirements,
|
|
2974
|
+
onAccept,
|
|
2975
|
+
title = "User Agreement",
|
|
2976
|
+
forceAgreement = false
|
|
2977
|
+
}) => {
|
|
2978
|
+
const [checkedState, setCheckedState] = React7.useState(
|
|
2979
|
+
new Array(requirements.length).fill(false)
|
|
2980
|
+
);
|
|
2981
|
+
const handleCheckboxChange = (index) => {
|
|
2982
|
+
const updatedCheckedState = checkedState.map(
|
|
2983
|
+
(item, i) => i === index ? !item : item
|
|
2984
|
+
);
|
|
2985
|
+
setCheckedState(updatedCheckedState);
|
|
2986
|
+
};
|
|
2987
|
+
const isAllRequiredChecked = requirements.every((req, index) => {
|
|
2988
|
+
if (req.required) {
|
|
2989
|
+
return checkedState[index];
|
|
2990
|
+
}
|
|
2991
|
+
return true;
|
|
2992
|
+
});
|
|
2993
|
+
const handleAccept = () => {
|
|
2994
|
+
if (isAllRequiredChecked) {
|
|
2995
|
+
onAccept();
|
|
2510
2996
|
}
|
|
2511
2997
|
};
|
|
2512
|
-
|
|
2513
|
-
|
|
2998
|
+
const handleClose = (event, reason) => {
|
|
2999
|
+
if (forceAgreement) return;
|
|
3000
|
+
if (onClose) onClose();
|
|
3001
|
+
};
|
|
3002
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3003
|
+
material.Dialog,
|
|
2514
3004
|
{
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
children:
|
|
2521
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2522
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2523
|
-
|
|
3005
|
+
open,
|
|
3006
|
+
onClose: handleClose,
|
|
3007
|
+
maxWidth: "md",
|
|
3008
|
+
fullWidth: true,
|
|
3009
|
+
disableEscapeKeyDown: forceAgreement,
|
|
3010
|
+
children: [
|
|
3011
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.DialogTitle, { children: title }),
|
|
3012
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.DialogContent, { dividers: true, children: [
|
|
3013
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { mb: 3 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3014
|
+
ReactMarkdown__default.default,
|
|
3015
|
+
{
|
|
3016
|
+
components: {
|
|
3017
|
+
h1: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h4", gutterBottom: true, ...props }),
|
|
3018
|
+
h2: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", gutterBottom: true, ...props }),
|
|
3019
|
+
h3: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h6", gutterBottom: true, ...props }),
|
|
3020
|
+
h4: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "subtitle1", gutterBottom: true, ...props }),
|
|
3021
|
+
h5: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "subtitle2", gutterBottom: true, ...props }),
|
|
3022
|
+
h6: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "caption", gutterBottom: true, ...props }),
|
|
3023
|
+
p: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "body1", gutterBottom: true, ...props }),
|
|
3024
|
+
li: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Box, { component: "li", sx: { mb: 1, ml: 2 }, ...props }),
|
|
3025
|
+
ul: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Box, { component: "ul", sx: { mb: 2 }, ...props }),
|
|
3026
|
+
ol: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Box, { component: "ol", sx: { mb: 2 }, ...props }),
|
|
3027
|
+
a: ({ node, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(material.Link, { ...props, target: "_blank", rel: "noopener" })
|
|
3028
|
+
},
|
|
3029
|
+
children: markdownContent
|
|
3030
|
+
}
|
|
3031
|
+
) }),
|
|
3032
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { display: "flex", flexDirection: "column", gap: 1 }, children: requirements.map((req, index) => /* @__PURE__ */ jsxRuntime.jsx(material.Box, { sx: { display: "flex", alignItems: "flex-start" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3033
|
+
material.FormControlLabel,
|
|
3034
|
+
{
|
|
3035
|
+
control: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3036
|
+
material.Checkbox,
|
|
3037
|
+
{
|
|
3038
|
+
checked: checkedState[index],
|
|
3039
|
+
onChange: () => handleCheckboxChange(index)
|
|
3040
|
+
}
|
|
3041
|
+
),
|
|
3042
|
+
label: /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "body2", children: [
|
|
3043
|
+
req.statement,
|
|
3044
|
+
req.link && req.linkText && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3045
|
+
" ",
|
|
3046
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Link, { href: req.link, target: "_blank", rel: "noopener", children: req.linkText })
|
|
3047
|
+
] }),
|
|
3048
|
+
req.required && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3049
|
+
material.Typography,
|
|
3050
|
+
{
|
|
3051
|
+
component: "span",
|
|
3052
|
+
color: "error",
|
|
3053
|
+
sx: { ml: 0.5 },
|
|
3054
|
+
children: "*"
|
|
3055
|
+
}
|
|
3056
|
+
)
|
|
3057
|
+
] })
|
|
3058
|
+
}
|
|
3059
|
+
) }, index)) })
|
|
3060
|
+
] }),
|
|
3061
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.DialogActions, { children: [
|
|
3062
|
+
!forceAgreement && /* @__PURE__ */ jsxRuntime.jsx(material.Button, { onClick: onClose, color: "inherit", children: "Cancel" }),
|
|
3063
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3064
|
+
material.Button,
|
|
3065
|
+
{
|
|
3066
|
+
onClick: handleAccept,
|
|
3067
|
+
variant: "contained",
|
|
3068
|
+
disabled: !isAllRequiredChecked,
|
|
3069
|
+
fullWidth: forceAgreement,
|
|
3070
|
+
children: "Accept"
|
|
3071
|
+
}
|
|
3072
|
+
)
|
|
3073
|
+
] })
|
|
3074
|
+
]
|
|
2524
3075
|
}
|
|
2525
3076
|
);
|
|
2526
3077
|
};
|
|
2527
|
-
var
|
|
2528
|
-
var ModalProvider = ({ children }) => {
|
|
2529
|
-
const [modalContent, setModalContent] = React7.useState(null);
|
|
2530
|
-
const showModal = (content) => setModalContent(content);
|
|
2531
|
-
const hideModal = () => setModalContent(null);
|
|
2532
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(ModalContext.Provider, { value: { showModal, hideModal }, children: [
|
|
2533
|
-
children,
|
|
2534
|
-
modalContent && /* @__PURE__ */ jsxRuntime.jsx(Modal_default, { onClose: hideModal, children: modalContent })
|
|
2535
|
-
] });
|
|
2536
|
-
};
|
|
2537
|
-
var ModalProvider_default = ModalProvider;
|
|
3078
|
+
var UserAgreementModal_default = UserAgreementModal;
|
|
2538
3079
|
var PlayerHighlightsCard = function(props) {
|
|
2539
3080
|
const {
|
|
2540
3081
|
allTags,
|
|
@@ -2546,16 +3087,16 @@ var PlayerHighlightsCard = function(props) {
|
|
|
2546
3087
|
removeFromTable
|
|
2547
3088
|
} = props;
|
|
2548
3089
|
return /* @__PURE__ */ jsxRuntime.jsx(material.Card, { elevation: 3, sx: { backgroundColor: canEdit ? "#fffbea" : "#f5f9fa", marginBottom: "6px" }, children: /* @__PURE__ */ jsxRuntime.jsxs(material.CardContent, { children: [
|
|
2549
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2550
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2551
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2552
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3090
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, spacing: 2, direction: "column", children: [
|
|
3091
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, direction: "row", children: [
|
|
3092
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image2__default.default, { alt: player.username + "'s profile pic", height: 64, src: player.miniPic || DEFAULT_PROFILE_PIC, width: 64 }) }),
|
|
3093
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) })
|
|
2553
3094
|
] }),
|
|
2554
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3095
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: renderTagsFromIds(player.tags, allTags) })
|
|
2555
3096
|
] }),
|
|
2556
|
-
canEdit && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2557
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2558
|
-
canChangeDungeonMaster && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3097
|
+
canEdit && /* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { children: [
|
|
3098
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => removeFromTable(player), children: isWaitList ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Deny Player" }) : /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Remove Player" }) }),
|
|
3099
|
+
canChangeDungeonMaster && /* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => {
|
|
2559
3100
|
handleAssignToDungeonMaster(player);
|
|
2560
3101
|
removeFromTable(player);
|
|
2561
3102
|
}, children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Assign to DungeonMaster" }) })
|
|
@@ -2565,11 +3106,11 @@ var PlayerHighlightsCard = function(props) {
|
|
|
2565
3106
|
var DMHighlightsCard = function({ canEdit, player, allTags }) {
|
|
2566
3107
|
return /* @__PURE__ */ jsxRuntime.jsxs(material.Card, { elevation: 3, sx: { backgroundColor: "#f5f9fa", marginBottom: "6px" }, children: [
|
|
2567
3108
|
/* @__PURE__ */ jsxRuntime.jsx(material.CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Game Master" }),
|
|
2568
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2569
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2570
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2571
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2572
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3109
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.CardContent, { sx: { backgroundColor: canEdit ? "#fffbea" : "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, spacing: 2, direction: "column", children: [
|
|
3110
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { variant: "h5", children: player.username }) }),
|
|
3111
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, direction: "row", children: [
|
|
3112
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Image2__default.default, { alt: player.username + "'s profile pic", height: 120, src: player.imageUrl || DEFAULT_PROFILE_PIC, width: 256 }) }),
|
|
3113
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { children: renderTagsFromIds(player.tags, allTags) }),
|
|
2573
3114
|
/* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: player.description })
|
|
2574
3115
|
] })
|
|
2575
3116
|
] }) })
|
|
@@ -2598,12 +3139,11 @@ function TableActionsBar(props) {
|
|
|
2598
3139
|
if (waitlistPlayers.length === 0) {
|
|
2599
3140
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Waitlist is empty!" });
|
|
2600
3141
|
}
|
|
2601
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2602
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2603
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gap-8", children: waitlistPlayers.map((player) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3142
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3143
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gap-8 px-6", children: waitlistPlayers.map((player) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2604
3144
|
"li",
|
|
2605
3145
|
{
|
|
2606
|
-
className: `${canMovePlayersToTable ? "bg-amber-100 cursor-pointer" : "bg-gray-200"} mb-8 flex flex-row flex-start space-between
|
|
3146
|
+
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`,
|
|
2607
3147
|
onClick: () => canMovePlayersToTable ? onPromoteWaitlistPlayer == null ? void 0 : onPromoteWaitlistPlayer(player.id) : void 0,
|
|
2608
3148
|
tabIndex: 0,
|
|
2609
3149
|
children: [
|
|
@@ -2612,7 +3152,7 @@ function TableActionsBar(props) {
|
|
|
2612
3152
|
{
|
|
2613
3153
|
alt: player.username + "'s profile pic",
|
|
2614
3154
|
height: 64,
|
|
2615
|
-
src: player.miniPic ||
|
|
3155
|
+
src: player.miniPic || DEFAULT_PROFILE_PIC,
|
|
2616
3156
|
width: 64
|
|
2617
3157
|
}
|
|
2618
3158
|
),
|
|
@@ -2621,7 +3161,7 @@ function TableActionsBar(props) {
|
|
|
2621
3161
|
},
|
|
2622
3162
|
player.id
|
|
2623
3163
|
)) }),
|
|
2624
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3164
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogActions3__default.default, { children: /* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => hideModal(), children: "Close" }) })
|
|
2625
3165
|
] });
|
|
2626
3166
|
};
|
|
2627
3167
|
return /* @__PURE__ */ jsxRuntime.jsxs(material.Grid, { container: true, direction: "column", spacing: 1, children: [
|
|
@@ -2632,33 +3172,45 @@ function TableActionsBar(props) {
|
|
|
2632
3172
|
slots
|
|
2633
3173
|
] }) }),
|
|
2634
3174
|
/* @__PURE__ */ jsxRuntime.jsxs(material.Grid, { container: true, direction: "row", children: [
|
|
2635
|
-
!isOwner && !isPlayer && !isDM && !onWaitlist && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2636
|
-
!isOwner && (isPlayer || onWaitlist) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3175
|
+
!isOwner && !isPlayer && !isDM && !onWaitlist && /* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => onJoinWaitlist == null ? void 0 : onJoinWaitlist(), sx: buttonStyle, children: "Join Waitlist" }),
|
|
3176
|
+
!isOwner && (isPlayer || onWaitlist) && /* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => onLeaveTable == null ? void 0 : onLeaveTable(), sx: buttonStyle, children: onWaitlist ? "Leave Waitlist" : "Leave Table" }),
|
|
2637
3177
|
canEditTable ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2638
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3178
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => onEditModeChange(true), sx: buttonStyle, endIcon: /* @__PURE__ */ jsxRuntime.jsx(EditIcon3__default.default, {}), children: "Edit" }),
|
|
2639
3179
|
canViewWaitlist ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2640
|
-
|
|
3180
|
+
Button8__default.default,
|
|
2641
3181
|
{
|
|
2642
3182
|
endIcon: /* @__PURE__ */ jsxRuntime.jsx(ListIcon__default.default, {}),
|
|
2643
|
-
onClick: () => showModal(renderPlayerWaitlistModalContent(false)),
|
|
3183
|
+
onClick: () => showModal(renderPlayerWaitlistModalContent(false), "Waitlist Players:"),
|
|
2644
3184
|
sx: buttonStyle,
|
|
2645
3185
|
children: "View Waitlist"
|
|
2646
3186
|
}
|
|
2647
3187
|
) : null
|
|
2648
3188
|
] }) : canSaveTable ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2649
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2650
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3189
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: onSave, sx: buttonStyle, endIcon: /* @__PURE__ */ jsxRuntime.jsx(SaveIcon__default.default, {}), children: "Save" }),
|
|
3190
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => onEditModeChange(false), sx: buttonStyle, children: "Cancel" }),
|
|
2651
3191
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2652
|
-
|
|
3192
|
+
Button8__default.default,
|
|
2653
3193
|
{
|
|
2654
3194
|
endIcon: /* @__PURE__ */ jsxRuntime.jsx(ListIcon__default.default, {}),
|
|
2655
|
-
onClick: () => showModal(renderPlayerWaitlistModalContent(true)),
|
|
3195
|
+
onClick: () => showModal(renderPlayerWaitlistModalContent(true), "Waitlist Players:"),
|
|
2656
3196
|
sx: buttonStyle,
|
|
2657
3197
|
children: "Edit Waitlist"
|
|
2658
3198
|
}
|
|
2659
3199
|
)
|
|
2660
3200
|
] }) : null,
|
|
2661
|
-
isOwner && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3201
|
+
isOwner && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3202
|
+
Button8__default.default,
|
|
3203
|
+
{
|
|
3204
|
+
onClick: () => showModal(
|
|
3205
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Typography, { children: "Are you sure you want to delete this table? This action cannot be undone." }),
|
|
3206
|
+
"Delete Table",
|
|
3207
|
+
{ acceptText: "Delete", onAccept: () => onDeleteTable == null ? void 0 : onDeleteTable() }
|
|
3208
|
+
),
|
|
3209
|
+
sx: buttonStyle,
|
|
3210
|
+
endIcon: /* @__PURE__ */ jsxRuntime.jsx(DeleteIcon__default.default, {}),
|
|
3211
|
+
children: "Delete Table"
|
|
3212
|
+
}
|
|
3213
|
+
)
|
|
2662
3214
|
] })
|
|
2663
3215
|
] });
|
|
2664
3216
|
}
|
|
@@ -2668,165 +3220,82 @@ var buttonStyle = {
|
|
|
2668
3220
|
color: "white",
|
|
2669
3221
|
borderRadius: "5px"
|
|
2670
3222
|
};
|
|
2671
|
-
var AutoResizingTextarea = (props) => {
|
|
2672
|
-
const { isInEditMode, onChange, textareaRef, value } = props;
|
|
2673
|
-
React7.useEffect(() => {
|
|
2674
|
-
if (isInEditMode && textareaRef.current) {
|
|
2675
|
-
const textarea = textareaRef.current;
|
|
2676
|
-
textarea.style.height = "auto";
|
|
2677
|
-
textarea.style.height = `${textarea.scrollHeight}px`;
|
|
2678
|
-
}
|
|
2679
|
-
}, [isInEditMode, textareaRef, value]);
|
|
2680
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2681
|
-
"textarea",
|
|
2682
|
-
{
|
|
2683
|
-
ref: textareaRef,
|
|
2684
|
-
value,
|
|
2685
|
-
onChange: (e) => onChange(e.target.value),
|
|
2686
|
-
style: {
|
|
2687
|
-
backgroundColor: "#fffbea",
|
|
2688
|
-
overflow: "hidden",
|
|
2689
|
-
resize: "none",
|
|
2690
|
-
width: "100%"
|
|
2691
|
-
}
|
|
2692
|
-
}
|
|
2693
|
-
);
|
|
2694
|
-
};
|
|
2695
|
-
var AutoResizingTextarea_default = AutoResizingTextarea;
|
|
2696
|
-
var NextGameCountdown = ({ nextGameTime }) => {
|
|
2697
|
-
const [timeLeft, setTimeLeft] = React7.useState("");
|
|
2698
|
-
React7.useEffect(() => {
|
|
2699
|
-
if (!nextGameTime) return;
|
|
2700
|
-
const timer = setInterval(() => {
|
|
2701
|
-
const now = (/* @__PURE__ */ new Date()).getTime();
|
|
2702
|
-
const distance = new Date(nextGameTime).getTime() - now;
|
|
2703
|
-
if (distance < 0) {
|
|
2704
|
-
clearInterval(timer);
|
|
2705
|
-
setTimeLeft("Started");
|
|
2706
|
-
return;
|
|
2707
|
-
}
|
|
2708
|
-
const days = Math.floor(distance / (1e3 * 60 * 60 * 24));
|
|
2709
|
-
const hours = Math.floor(distance % (1e3 * 60 * 60 * 24) / (1e3 * 60 * 60));
|
|
2710
|
-
const minutes = Math.floor(distance % (1e3 * 60 * 60) / (1e3 * 60));
|
|
2711
|
-
const seconds = Math.floor(distance % (1e3 * 60) / 1e3);
|
|
2712
|
-
let timeString = "";
|
|
2713
|
-
if (days > 0) timeString += `${days}d `;
|
|
2714
|
-
if (hours > 0 || days > 0) timeString += `${hours}h `;
|
|
2715
|
-
timeString += `${minutes}m ${seconds}s`;
|
|
2716
|
-
setTimeLeft(timeString);
|
|
2717
|
-
}, 1e3);
|
|
2718
|
-
return () => clearInterval(timer);
|
|
2719
|
-
}, [nextGameTime]);
|
|
2720
|
-
if (!nextGameTime) return null;
|
|
2721
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(material.Typography, { variant: "body2", color: "primary", sx: { fontWeight: "bold" }, children: [
|
|
2722
|
-
"Next Game: ",
|
|
2723
|
-
timeLeft
|
|
2724
|
-
] });
|
|
2725
|
-
};
|
|
2726
|
-
function TagEditor({
|
|
2727
|
-
title = "Tags",
|
|
2728
|
-
selectedTags,
|
|
2729
|
-
possibleTags,
|
|
2730
|
-
onToggleTag
|
|
2731
|
-
}) {
|
|
2732
|
-
const [inputValue, setInputValue] = React7.useState("");
|
|
2733
|
-
const selectedIds = React7.useMemo(() => selectedTags.map((tag) => tag.id), [selectedTags]);
|
|
2734
|
-
const options = React7.useMemo(
|
|
2735
|
-
() => possibleTags.map((tag) => ({ value: tag.id, label: tag.label })),
|
|
2736
|
-
[possibleTags]
|
|
2737
|
-
);
|
|
2738
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, children: /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { size: { xs: 12 }, children: /* @__PURE__ */ jsxRuntime.jsxs(Card10__default.default, { children: [
|
|
2739
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2740
|
-
CardHeader4__default.default,
|
|
2741
|
-
{
|
|
2742
|
-
title,
|
|
2743
|
-
style: {
|
|
2744
|
-
background: "linear-gradient(135deg, rgba(25, 118, 210, 0.8), rgba(25, 118, 210, 1))",
|
|
2745
|
-
color: "#FFFFFF",
|
|
2746
|
-
fontSize: "1.5rem",
|
|
2747
|
-
textShadow: "0px 3px 6px rgba(0, 0, 0, 0.5)"
|
|
2748
|
-
}
|
|
2749
|
-
}
|
|
2750
|
-
),
|
|
2751
|
-
/* @__PURE__ */ jsxRuntime.jsxs(CardContent10__default.default, { children: [
|
|
2752
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: selectedTags.map((tag) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2753
|
-
Chip,
|
|
2754
|
-
{
|
|
2755
|
-
tag,
|
|
2756
|
-
removeCallback: () => onToggleTag(tag.id)
|
|
2757
|
-
},
|
|
2758
|
-
tag.id
|
|
2759
|
-
)) }),
|
|
2760
|
-
/* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { container: true, spacing: 3, children: /* @__PURE__ */ jsxRuntime.jsx(Grid8__default.default, { sx: { marginTop: 3, width: "100%" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2761
|
-
Autocomplete__default.default,
|
|
2762
|
-
{
|
|
2763
|
-
options,
|
|
2764
|
-
filterOptions: (availableOptions, state) => availableOptions.filter(
|
|
2765
|
-
(option) => !selectedIds.includes(option.value) && option.label.toLowerCase().includes(state.inputValue.toLowerCase())
|
|
2766
|
-
).slice(0, 3),
|
|
2767
|
-
value: null,
|
|
2768
|
-
inputValue,
|
|
2769
|
-
onInputChange: (event, newInputValue) => {
|
|
2770
|
-
if (event && event.type === "change") {
|
|
2771
|
-
setInputValue(newInputValue);
|
|
2772
|
-
}
|
|
2773
|
-
},
|
|
2774
|
-
onChange: (event, newValue) => {
|
|
2775
|
-
if (newValue) {
|
|
2776
|
-
onToggleTag(newValue.value);
|
|
2777
|
-
}
|
|
2778
|
-
setInputValue("");
|
|
2779
|
-
},
|
|
2780
|
-
slots: { popper: CustomPopper3 },
|
|
2781
|
-
renderInput: (params) => /* @__PURE__ */ jsxRuntime.jsx(TextField4__default.default, { ...params, label: "Select Tags" })
|
|
2782
|
-
},
|
|
2783
|
-
selectedIds.join("-")
|
|
2784
|
-
) }) })
|
|
2785
|
-
] })
|
|
2786
|
-
] }) }) });
|
|
2787
|
-
}
|
|
2788
|
-
var CustomPopper3 = (props) => {
|
|
2789
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2790
|
-
Popper__default.default,
|
|
2791
|
-
{
|
|
2792
|
-
...props,
|
|
2793
|
-
modifiers: [
|
|
2794
|
-
{
|
|
2795
|
-
name: "preventOverflow",
|
|
2796
|
-
options: { boundary: "viewport" }
|
|
2797
|
-
},
|
|
2798
|
-
{
|
|
2799
|
-
name: "offset",
|
|
2800
|
-
options: { offset: [0, -10] }
|
|
2801
|
-
}
|
|
2802
|
-
],
|
|
2803
|
-
placement: "top-start"
|
|
2804
|
-
}
|
|
2805
|
-
);
|
|
2806
|
-
};
|
|
2807
3223
|
function TablePageLayout(props) {
|
|
2808
3224
|
var _a;
|
|
2809
|
-
const {
|
|
3225
|
+
const { hideModal, showModal } = useModal();
|
|
3226
|
+
const { allTags, dungeonMaster, onDeleteTable, onJoinWaitlist, onLeaveTable, onSaveDraft, players, table, tableStatus, waitlistPlayers, startWithEditTitle, eventTagId } = props;
|
|
3227
|
+
const canEdit = tableStatus.isOwner;
|
|
2810
3228
|
const textAreaRef = React7.useRef(null);
|
|
2811
3229
|
const [isTableInEditMode, setIsTableInEditMode] = React7.useState(false);
|
|
3230
|
+
const [currentTitle, setCurrentTitle] = React7.useState(table.title);
|
|
3231
|
+
const [currentSubtitle, setCurrentSubtitle] = React7.useState(table.shortDescription);
|
|
2812
3232
|
const [currentDescription, setCurrentDescription] = React7.useState(table.description);
|
|
2813
3233
|
const [currentDungeonMaster, setCurrentDungeonMaster] = React7.useState(dungeonMaster);
|
|
2814
3234
|
const [currentPlayers, setCurrentPlayers] = React7.useState(players);
|
|
2815
|
-
const [currentShortDescription, setCurrentShortDescription] = React7.useState(table.shortDescription);
|
|
2816
|
-
const [currentTitle, setCurrentTitle] = React7.useState(table.title);
|
|
2817
3235
|
const [currentWaitlistPlayers, setCurrentWaitlistPlayers] = React7.useState(waitlistPlayers);
|
|
2818
3236
|
const [currentTagIds, setCurrentTagIds] = React7.useState((_a = table.tags) != null ? _a : []);
|
|
3237
|
+
const pendingEdits = React7.useRef({ title: currentTitle, subtitle: currentSubtitle, tags: currentTagIds });
|
|
3238
|
+
const handleSaveTable = (tableData = {}) => {
|
|
3239
|
+
const nextDraft = {
|
|
3240
|
+
...table,
|
|
3241
|
+
description: currentDescription,
|
|
3242
|
+
dungeonMaster: String(currentDungeonMaster.id),
|
|
3243
|
+
players: currentPlayers.map((player) => player.id),
|
|
3244
|
+
shortDescription: currentSubtitle,
|
|
3245
|
+
tags: currentTagIds,
|
|
3246
|
+
title: currentTitle,
|
|
3247
|
+
waitlist: currentWaitlistPlayers.map((player) => player.id),
|
|
3248
|
+
...tableData
|
|
3249
|
+
};
|
|
3250
|
+
void (onSaveDraft == null ? void 0 : onSaveDraft(nextDraft));
|
|
3251
|
+
setIsTableInEditMode(false);
|
|
3252
|
+
};
|
|
3253
|
+
const clean = (text) => text.replaceAll(
|
|
3254
|
+
/\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,
|
|
3255
|
+
"dudes"
|
|
3256
|
+
);
|
|
3257
|
+
const editTableDetails = () => {
|
|
3258
|
+
if (!canEdit) {
|
|
3259
|
+
return;
|
|
3260
|
+
}
|
|
3261
|
+
pendingEdits.current = {
|
|
3262
|
+
title: currentTitle,
|
|
3263
|
+
subtitle: currentSubtitle,
|
|
3264
|
+
tags: currentTagIds
|
|
3265
|
+
};
|
|
3266
|
+
const editContent = /* @__PURE__ */ jsxRuntime.jsx(
|
|
3267
|
+
EditTableDetailsForm,
|
|
3268
|
+
{
|
|
3269
|
+
initialTitle: currentTitle,
|
|
3270
|
+
initialSubtitle: currentSubtitle,
|
|
3271
|
+
onTitleChange: (t) => pendingEdits.current.title = t,
|
|
3272
|
+
onSubtitleChange: (s) => pendingEdits.current.subtitle = s,
|
|
3273
|
+
onTagChange: (t) => pendingEdits.current.tags = t,
|
|
3274
|
+
initialTagIDs: currentTagIds,
|
|
3275
|
+
allTags: allTags.filter((t) => t.appliesTo.tables),
|
|
3276
|
+
allowEditingTitles: true
|
|
3277
|
+
}
|
|
3278
|
+
);
|
|
3279
|
+
showModal(editContent, "Edit Table Details", {
|
|
3280
|
+
acceptText: "Save",
|
|
3281
|
+
onAccept: () => {
|
|
3282
|
+
setCurrentTitle(clean(pendingEdits.current.title));
|
|
3283
|
+
setCurrentSubtitle(clean(pendingEdits.current.subtitle));
|
|
3284
|
+
setCurrentTagIds(pendingEdits.current.tags);
|
|
3285
|
+
handleSaveTable({
|
|
3286
|
+
title: clean(pendingEdits.current.title),
|
|
3287
|
+
shortDescription: clean(pendingEdits.current.subtitle),
|
|
3288
|
+
tags: pendingEdits.current.tags
|
|
3289
|
+
});
|
|
3290
|
+
}
|
|
3291
|
+
});
|
|
3292
|
+
};
|
|
2819
3293
|
React7.useEffect(() => {
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
setCurrentTitle(table.title);
|
|
2826
|
-
setCurrentWaitlistPlayers(waitlistPlayers);
|
|
2827
|
-
setCurrentTagIds((_a2 = table.tags) != null ? _a2 : []);
|
|
2828
|
-
}, [dungeonMaster, players, table, waitlistPlayers]);
|
|
2829
|
-
const currentTags = React7.useMemo(
|
|
3294
|
+
if (startWithEditTitle) {
|
|
3295
|
+
editTableDetails();
|
|
3296
|
+
}
|
|
3297
|
+
});
|
|
3298
|
+
React7.useMemo(
|
|
2830
3299
|
() => allTags.filter((tag) => currentTagIds.includes(tag.id)),
|
|
2831
3300
|
[allTags, currentTagIds]
|
|
2832
3301
|
);
|
|
@@ -2846,37 +3315,17 @@ function TablePageLayout(props) {
|
|
|
2846
3315
|
return prevWaitlist.filter((player) => player.id !== playerIdToPromote);
|
|
2847
3316
|
});
|
|
2848
3317
|
};
|
|
2849
|
-
const handleToggleTag = (tagId) => {
|
|
2850
|
-
setCurrentTagIds(
|
|
2851
|
-
(prevState) => prevState.includes(tagId) ? prevState.filter((id) => id !== tagId) : [...prevState, tagId]
|
|
2852
|
-
);
|
|
2853
|
-
};
|
|
2854
|
-
const handleSaveTable = () => {
|
|
2855
|
-
const nextDraft = {
|
|
2856
|
-
...table,
|
|
2857
|
-
description: currentDescription,
|
|
2858
|
-
dungeonMaster: String(currentDungeonMaster.id),
|
|
2859
|
-
players: currentPlayers.map((player) => player.id),
|
|
2860
|
-
shortDescription: currentShortDescription,
|
|
2861
|
-
tags: currentTagIds,
|
|
2862
|
-
title: currentTitle,
|
|
2863
|
-
waitlist: currentWaitlistPlayers.map((player) => player.id)
|
|
2864
|
-
};
|
|
2865
|
-
void (onSaveDraft == null ? void 0 : onSaveDraft(nextDraft));
|
|
2866
|
-
setIsTableInEditMode(false);
|
|
2867
|
-
};
|
|
2868
3318
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2869
3319
|
material.Card,
|
|
2870
3320
|
{
|
|
2871
3321
|
sx: {
|
|
2872
3322
|
backgroundColor: isTableInEditMode ? "lightsalmon" : "white",
|
|
2873
|
-
borderRadius: "5%",
|
|
2874
3323
|
p: 2,
|
|
2875
3324
|
boxShadow: "0px 8px 15px rgba(25, 118, 210, 0.3)"
|
|
2876
3325
|
},
|
|
2877
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3326
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, direction: "column", children: [
|
|
2878
3327
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2879
|
-
|
|
3328
|
+
Grid10__default.default,
|
|
2880
3329
|
{
|
|
2881
3330
|
container: true,
|
|
2882
3331
|
direction: "column",
|
|
@@ -2889,39 +3338,49 @@ function TablePageLayout(props) {
|
|
|
2889
3338
|
textShadow: "4px 4px 6px rgba(0, 0, 0, 0.5)"
|
|
2890
3339
|
},
|
|
2891
3340
|
children: [
|
|
2892
|
-
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { children:
|
|
2893
|
-
|
|
3341
|
+
/* @__PURE__ */ jsxRuntime.jsx(material.Box, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3342
|
+
material.Box,
|
|
2894
3343
|
{
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
3344
|
+
className: `flex items-center gap-1 ${canEdit ? "cursor-pointer" : ""}`,
|
|
3345
|
+
sx: { "&:hover .edit-icon": { opacity: 1 } },
|
|
3346
|
+
onClick: editTableDetails,
|
|
3347
|
+
children: [
|
|
3348
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3349
|
+
material.CardHeader,
|
|
3350
|
+
{
|
|
3351
|
+
title: currentTitle,
|
|
3352
|
+
sx: {
|
|
3353
|
+
p: 0,
|
|
3354
|
+
"& .MuiCardHeader-title": {
|
|
3355
|
+
color: "white",
|
|
3356
|
+
fontWeight: 700
|
|
3357
|
+
}
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
),
|
|
3361
|
+
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(EditIcon3__default.default, { className: "edit-icon text-white", sx: { opacity: 0, transition: "opacity 0.2s" } }) : ""
|
|
3362
|
+
]
|
|
2912
3363
|
}
|
|
2913
3364
|
) }),
|
|
2914
|
-
|
|
2915
|
-
|
|
3365
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3366
|
+
material.Box,
|
|
2916
3367
|
{
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
3368
|
+
className: `flex items-center gap-1 ${canEdit ? "cursor-pointer" : ""}`,
|
|
3369
|
+
sx: { "&:hover .edit-icon": { opacity: 1 } },
|
|
3370
|
+
onClick: editTableDetails,
|
|
3371
|
+
children: [
|
|
3372
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3373
|
+
material.Typography,
|
|
3374
|
+
{
|
|
3375
|
+
sx: { color: "white", opacity: 0.95 },
|
|
3376
|
+
children: currentSubtitle
|
|
3377
|
+
}
|
|
3378
|
+
),
|
|
3379
|
+
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(EditIcon3__default.default, { className: "edit-icon text-white", sx: { opacity: 0, transition: "opacity 0.2s", fontSize: "medium" } }) : ""
|
|
3380
|
+
]
|
|
2922
3381
|
}
|
|
2923
|
-
)
|
|
2924
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3382
|
+
),
|
|
3383
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__default.default, { container: true, onClick: editTableDetails, className: `${canEdit ? "cursor-pointer" : ""}`, children: renderTags(currentTagIds, allTags, canEdit, table.eventTagId || eventTagId) }),
|
|
2925
3384
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2926
3385
|
TableActionsBar,
|
|
2927
3386
|
{
|
|
@@ -2941,8 +3400,8 @@ function TablePageLayout(props) {
|
|
|
2941
3400
|
]
|
|
2942
3401
|
}
|
|
2943
3402
|
),
|
|
2944
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2945
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3403
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, spacing: 2, sx: { mt: 2 }, children: [
|
|
3404
|
+
/* @__PURE__ */ jsxRuntime.jsx(Grid10__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(
|
|
2946
3405
|
AutoResizingTextarea_default,
|
|
2947
3406
|
{
|
|
2948
3407
|
isInEditMode: isTableInEditMode,
|
|
@@ -2951,7 +3410,7 @@ function TablePageLayout(props) {
|
|
|
2951
3410
|
value: currentDescription
|
|
2952
3411
|
}
|
|
2953
3412
|
) : /* @__PURE__ */ jsxRuntime.jsx(material.Typography, { sx: { whiteSpace: "pre-wrap" }, children: currentDescription }) }) }) }),
|
|
2954
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3413
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { size: { xs: 12, md: 4 }, children: [
|
|
2955
3414
|
/* @__PURE__ */ jsxRuntime.jsx(DMHighlightsCard, { canEdit: isTableInEditMode, player: currentDungeonMaster, allTags }),
|
|
2956
3415
|
/* @__PURE__ */ jsxRuntime.jsxs(material.Card, { sx: { height: "100%" }, children: [
|
|
2957
3416
|
/* @__PURE__ */ jsxRuntime.jsx(material.CardHeader, { slotProps: { title: { variant: "h4" } }, title: "Players: " }),
|
|
@@ -2974,36 +3433,85 @@ function TablePageLayout(props) {
|
|
|
2974
3433
|
}
|
|
2975
3434
|
);
|
|
2976
3435
|
}
|
|
2977
|
-
var renderTags = function(tags, allTags) {
|
|
3436
|
+
var renderTags = function(tags, allTags, canEdit, eventTagId) {
|
|
2978
3437
|
if (!tags || !allTags) {
|
|
2979
3438
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
2980
3439
|
}
|
|
2981
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
3440
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Grid10__default.default, { container: true, spacing: 1, sx: { pb: 1.5 }, children: [
|
|
3441
|
+
renderTagsFromIds(tags, allTags, { showEventTag: true, eventTagId }),
|
|
3442
|
+
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3443
|
+
material.Button,
|
|
3444
|
+
{
|
|
3445
|
+
variant: "text",
|
|
3446
|
+
className: "inline-block text-sm px-3 py-1font-outlined m-0.5 font-stretch-105% font-sans",
|
|
3447
|
+
sx: {
|
|
3448
|
+
color: "white",
|
|
3449
|
+
textShadow: "black 1.5px 1px 1.5px",
|
|
3450
|
+
"&:hover": {
|
|
3451
|
+
background: "#889"
|
|
3452
|
+
}
|
|
3453
|
+
},
|
|
3454
|
+
children: "Edit Tags..."
|
|
3455
|
+
}
|
|
3456
|
+
) : ""
|
|
3457
|
+
] });
|
|
2999
3458
|
};
|
|
3000
3459
|
var TablePageLayout_default = TablePageLayout;
|
|
3460
|
+
var ModalProvider = ({ children }) => {
|
|
3461
|
+
var _a;
|
|
3462
|
+
const [modalContent, setModalContent] = React7.useState(null);
|
|
3463
|
+
const [displayModal, setDisplayModal] = React7.useState(false);
|
|
3464
|
+
const [title, setTitle] = React7.useState("");
|
|
3465
|
+
const [options, setOptions] = React7.useState({});
|
|
3466
|
+
const showModal = (content, title2, opts) => {
|
|
3467
|
+
setModalContent(content);
|
|
3468
|
+
setTitle(title2);
|
|
3469
|
+
setOptions(opts != null ? opts : {});
|
|
3470
|
+
setDisplayModal(true);
|
|
3471
|
+
};
|
|
3472
|
+
const hideModal = () => {
|
|
3473
|
+
setDisplayModal(false);
|
|
3474
|
+
};
|
|
3475
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ModalContext.Provider, { value: { showModal, hideModal }, children: [
|
|
3476
|
+
children,
|
|
3477
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Dialog3__default.default, { open: displayModal, onClose: hideModal, sx: { height: "85%" }, children: [
|
|
3478
|
+
/* @__PURE__ */ jsxRuntime.jsxs(material.Box, { children: [
|
|
3479
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogTitle3__default.default, { sx: { marginRight: "20px", minWidth: "400px" }, children: title }),
|
|
3480
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3481
|
+
IconButton3__default.default,
|
|
3482
|
+
{
|
|
3483
|
+
"aria-label": "close",
|
|
3484
|
+
onClick: hideModal,
|
|
3485
|
+
sx: { position: "absolute", right: 8, top: 8 },
|
|
3486
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon__default.default, {})
|
|
3487
|
+
}
|
|
3488
|
+
)
|
|
3489
|
+
] }),
|
|
3490
|
+
/* @__PURE__ */ jsxRuntime.jsx(DialogContent3__default.default, { sx: { paddingTop: 0 }, children: modalContent }),
|
|
3491
|
+
(options.acceptText || options.onAccept) && /* @__PURE__ */ jsxRuntime.jsxs(DialogActions3__default.default, { children: [
|
|
3492
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { variant: "contained", onClick: () => {
|
|
3493
|
+
var _a2;
|
|
3494
|
+
hideModal();
|
|
3495
|
+
(_a2 = options.onAccept) == null ? void 0 : _a2.call(options);
|
|
3496
|
+
}, children: (_a = options.acceptText) != null ? _a : "OK" }),
|
|
3497
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button8__default.default, { onClick: () => {
|
|
3498
|
+
var _a2;
|
|
3499
|
+
hideModal();
|
|
3500
|
+
(_a2 = options.onCancel) == null ? void 0 : _a2.call(options);
|
|
3501
|
+
}, children: "Cancel" })
|
|
3502
|
+
] })
|
|
3503
|
+
] })
|
|
3504
|
+
] });
|
|
3505
|
+
};
|
|
3506
|
+
var ModalProvider_default = ModalProvider;
|
|
3001
3507
|
|
|
3002
3508
|
exports.AutoResizingTextarea = AutoResizingTextarea_default;
|
|
3003
3509
|
exports.BaseSearchResultCard = BaseSearchResultCard_default;
|
|
3004
3510
|
exports.CANDIDATE_TIMEZONES = CANDIDATE_TIMEZONES;
|
|
3005
3511
|
exports.Chip = Chip;
|
|
3006
3512
|
exports.DMHighlightsCard = DMHighlightsCard;
|
|
3513
|
+
exports.DistanceFilter = DistanceFilter_default;
|
|
3514
|
+
exports.EditTableDetailsForm = EditTableDetailsForm;
|
|
3007
3515
|
exports.EventBanner = EventBanner;
|
|
3008
3516
|
exports.EventBannerEdit = EventBannerEdit;
|
|
3009
3517
|
exports.EventBasicInfo = EventBasicInfo;
|
|
@@ -3038,10 +3546,14 @@ exports.TablePageLayout = TablePageLayout_default;
|
|
|
3038
3546
|
exports.TableResultCard = TableResultCard_default;
|
|
3039
3547
|
exports.TablesScrollableList = TablesScrollableList_default;
|
|
3040
3548
|
exports.TagEditor = TagEditor;
|
|
3549
|
+
exports.TagSelector = TagSelector;
|
|
3041
3550
|
exports.TagsFilter = TagsFilter_default;
|
|
3042
3551
|
exports.TextSearchCard = TextSearchCard_default;
|
|
3043
3552
|
exports.TypeFilter = TypeFilter_default;
|
|
3553
|
+
exports.UserAgreementModal = UserAgreementModal_default;
|
|
3044
3554
|
exports.generateTagsDisplay = generateTagsDisplay;
|
|
3555
|
+
exports.getRandomTagline = getRandomTagline;
|
|
3556
|
+
exports.getRandomTitle = getRandomTitle;
|
|
3045
3557
|
exports.renderTagsFromIds = renderTagsFromIds;
|
|
3046
3558
|
exports.useEventEdit = useEventEdit;
|
|
3047
3559
|
exports.useGameTableContext = useGameTableContext;
|