@timardex/cluemart-shared 1.5.740 → 1.5.742

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/{ad-CqfSmtG_.d.ts → ad-DTOtubs3.d.ts} +1 -1
  2. package/dist/{ad-sgD-lSbO.d.mts → ad-DpwV6VZX.d.mts} +1 -1
  3. package/dist/{chunk-6OBMKN7F.mjs → chunk-64ZADXXH.mjs} +2 -2
  4. package/dist/{chunk-XWFE6U3E.mjs → chunk-K5OWNJY5.mjs} +131 -119
  5. package/dist/chunk-K5OWNJY5.mjs.map +1 -0
  6. package/dist/{chunk-6YISZ3OD.mjs → chunk-KXQLOILF.mjs} +2 -2
  7. package/dist/{chunk-7VNXO63T.mjs → chunk-LNIT5OS3.mjs} +1 -1
  8. package/dist/chunk-LNIT5OS3.mjs.map +1 -0
  9. package/dist/{chunk-3AI2ROPT.mjs → chunk-TIXEG66V.mjs} +19 -1
  10. package/dist/chunk-TIXEG66V.mjs.map +1 -0
  11. package/dist/{contactUs-DA3p41Uq.d.ts → contactUs-BK5MKYPx.d.ts} +1 -1
  12. package/dist/{contactUs-B6lQQq-x.d.mts → contactUs-CRypzI-A.d.mts} +1 -1
  13. package/dist/formFields/index.cjs +28 -4
  14. package/dist/formFields/index.cjs.map +1 -1
  15. package/dist/formFields/index.d.mts +1 -1
  16. package/dist/formFields/index.d.ts +1 -1
  17. package/dist/formFields/index.mjs +3 -3
  18. package/dist/{global-BEUzBSyY.d.mts → global-q9JjONd1.d.mts} +280 -1
  19. package/dist/{global-585slmSH.d.ts → global-vWzQNI8w.d.ts} +280 -1
  20. package/dist/graphql/index.cjs +18 -0
  21. package/dist/graphql/index.cjs.map +1 -1
  22. package/dist/graphql/index.d.mts +3 -4
  23. package/dist/graphql/index.d.ts +3 -4
  24. package/dist/graphql/index.mjs +1 -1
  25. package/dist/hooks/index.cjs +34 -6
  26. package/dist/hooks/index.cjs.map +1 -1
  27. package/dist/hooks/index.d.mts +3 -4
  28. package/dist/hooks/index.d.ts +3 -4
  29. package/dist/hooks/index.mjs +5 -5
  30. package/dist/index.cjs +171 -141
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.mts +922 -914
  33. package/dist/index.d.ts +922 -914
  34. package/dist/index.mjs +170 -141
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/{resourceActivities-CZqXBve8.d.mts → resourceActivities-CpjJeH23.d.mts} +1 -1
  37. package/dist/{resourceActivities-CjJdhVR7.d.ts → resourceActivities-DtxRUlrT.d.ts} +1 -1
  38. package/dist/sharing/index.cjs +82 -58
  39. package/dist/sharing/index.cjs.map +1 -1
  40. package/dist/sharing/index.d.mts +1 -1
  41. package/dist/sharing/index.d.ts +1 -1
  42. package/dist/sharing/index.mjs +3 -3
  43. package/dist/types/index.cjs.map +1 -1
  44. package/dist/types/index.d.mts +5 -6
  45. package/dist/types/index.d.ts +5 -6
  46. package/dist/types/index.mjs +1 -1
  47. package/dist/utils/index.cjs +167 -141
  48. package/dist/utils/index.cjs.map +1 -1
  49. package/dist/utils/index.d.mts +6 -3
  50. package/dist/utils/index.d.ts +6 -3
  51. package/dist/utils/index.mjs +4 -2
  52. package/package.json +1 -1
  53. package/dist/chunk-3AI2ROPT.mjs.map +0 -1
  54. package/dist/chunk-7VNXO63T.mjs.map +0 -1
  55. package/dist/chunk-XWFE6U3E.mjs.map +0 -1
  56. package/dist/post-CdLrXuH1.d.mts +0 -279
  57. package/dist/post-D6n4Vszs.d.ts +0 -279
  58. /package/dist/{chunk-6OBMKN7F.mjs.map → chunk-64ZADXXH.mjs.map} +0 -0
  59. /package/dist/{chunk-6YISZ3OD.mjs.map → chunk-KXQLOILF.mjs.map} +0 -0
@@ -1,7 +1,6 @@
1
- import { L as LocationType, j as VendorFormData, k as CreateVendorFormData, l as VendorInfoFormData, m as CreateVendorInfoFormData, n as UnregisteredVendorFormData, o as CreateUnregisteredVendorFormData, p as EventFormData, q as CreateEventFormData, r as EventInfoFormData, s as CreateEventInfoFormData, B as BaseResourceTypeFormData } from '../global-BEUzBSyY.mjs';
2
- import { U as UserFormData, C as CreateUserFormData, i as CreateLoginFormData, j as CreateRegisterFormData, k as CreateRequestPasswordResetFormData, l as CreateValidateVerificationTokenFormData, m as CreateResetPasswordFormData, n as PartnerFormData, o as AdFormData, p as CreateAdFormState, q as CreatePartnerFormData, r as AppSettingsFormData, s as CreateAppSettingsFormData, t as SchoolFormData, u as CreateSchoolFormData } from '../ad-sgD-lSbO.mjs';
3
- import { C as ContactUsFormData, a as CreateContactUsFormData } from '../contactUs-B6lQQq-x.mjs';
4
- import { b as PostFormData, C as CreatePostFormData } from '../post-CdLrXuH1.mjs';
1
+ import { L as LocationType, l as VendorFormData, m as CreateVendorFormData, n as VendorInfoFormData, o as CreateVendorInfoFormData, p as UnregisteredVendorFormData, q as CreateUnregisteredVendorFormData, r as EventFormData, s as CreateEventFormData, t as EventInfoFormData, u as CreateEventInfoFormData, B as BaseResourceTypeFormData, v as PostFormData, w as CreatePostFormData } from '../global-q9JjONd1.mjs';
2
+ import { U as UserFormData, C as CreateUserFormData, i as CreateLoginFormData, j as CreateRegisterFormData, k as CreateRequestPasswordResetFormData, l as CreateValidateVerificationTokenFormData, m as CreateResetPasswordFormData, n as PartnerFormData, o as AdFormData, p as CreateAdFormState, q as CreatePartnerFormData, r as AppSettingsFormData, s as CreateAppSettingsFormData, t as SchoolFormData, u as CreateSchoolFormData } from '../ad-DpwV6VZX.mjs';
3
+ import { C as ContactUsFormData, a as CreateContactUsFormData } from '../contactUs-CRypzI-A.mjs';
5
4
  import 'react-hook-form';
6
5
  import '../enums/index.mjs';
7
6
  import '../images/index.mjs';
@@ -1,7 +1,6 @@
1
- import { L as LocationType, j as VendorFormData, k as CreateVendorFormData, l as VendorInfoFormData, m as CreateVendorInfoFormData, n as UnregisteredVendorFormData, o as CreateUnregisteredVendorFormData, p as EventFormData, q as CreateEventFormData, r as EventInfoFormData, s as CreateEventInfoFormData, B as BaseResourceTypeFormData } from '../global-585slmSH.js';
2
- import { U as UserFormData, C as CreateUserFormData, i as CreateLoginFormData, j as CreateRegisterFormData, k as CreateRequestPasswordResetFormData, l as CreateValidateVerificationTokenFormData, m as CreateResetPasswordFormData, n as PartnerFormData, o as AdFormData, p as CreateAdFormState, q as CreatePartnerFormData, r as AppSettingsFormData, s as CreateAppSettingsFormData, t as SchoolFormData, u as CreateSchoolFormData } from '../ad-CqfSmtG_.js';
3
- import { C as ContactUsFormData, a as CreateContactUsFormData } from '../contactUs-DA3p41Uq.js';
4
- import { b as PostFormData, C as CreatePostFormData } from '../post-D6n4Vszs.js';
1
+ import { L as LocationType, l as VendorFormData, m as CreateVendorFormData, n as VendorInfoFormData, o as CreateVendorInfoFormData, p as UnregisteredVendorFormData, q as CreateUnregisteredVendorFormData, r as EventFormData, s as CreateEventFormData, t as EventInfoFormData, u as CreateEventInfoFormData, B as BaseResourceTypeFormData, v as PostFormData, w as CreatePostFormData } from '../global-vWzQNI8w.js';
2
+ import { U as UserFormData, C as CreateUserFormData, i as CreateLoginFormData, j as CreateRegisterFormData, k as CreateRequestPasswordResetFormData, l as CreateValidateVerificationTokenFormData, m as CreateResetPasswordFormData, n as PartnerFormData, o as AdFormData, p as CreateAdFormState, q as CreatePartnerFormData, r as AppSettingsFormData, s as CreateAppSettingsFormData, t as SchoolFormData, u as CreateSchoolFormData } from '../ad-DTOtubs3.js';
3
+ import { C as ContactUsFormData, a as CreateContactUsFormData } from '../contactUs-BK5MKYPx.js';
5
4
  import 'react-hook-form';
6
5
  import '../enums/index.js';
7
6
  import '../images/index.js';
@@ -1,13 +1,13 @@
1
- import "../chunk-6YISZ3OD.mjs";
2
- import "../chunk-3AI2ROPT.mjs";
1
+ import "../chunk-KXQLOILF.mjs";
2
+ import "../chunk-TIXEG66V.mjs";
3
3
  import "../chunk-NPFJ2CN2.mjs";
4
- import "../chunk-6OBMKN7F.mjs";
4
+ import "../chunk-64ZADXXH.mjs";
5
5
  import {
6
6
  SCHOOL_MIN_STUDENT_COUNT,
7
7
  dateFormat,
8
8
  normalizeUrl,
9
9
  timeFormat
10
- } from "../chunk-XWFE6U3E.mjs";
10
+ } from "../chunk-K5OWNJY5.mjs";
11
11
  import {
12
12
  EnumAdShowOn,
13
13
  EnumAdStatus,
@@ -15,7 +15,7 @@ import {
15
15
  EnumAdType,
16
16
  EnumPostContentType,
17
17
  EnumPostType
18
- } from "../chunk-7VNXO63T.mjs";
18
+ } from "../chunk-LNIT5OS3.mjs";
19
19
  import {
20
20
  EnumEventDateStatus,
21
21
  EnumEventType,
package/dist/index.cjs CHANGED
@@ -170,6 +170,7 @@ __export(index_exports, {
170
170
  formatShareTagsSection: () => formatShareTagsSection,
171
171
  formatStallCapacityLabel: () => formatStallCapacityLabel,
172
172
  formatTimestamp: () => formatTimestamp,
173
+ futureTimePeriods: () => futureTimePeriods,
173
174
  gameScreenIdentifierList: () => gameScreenIdentifierList,
174
175
  gameTypeToDisplayName: () => gameTypeToDisplayName,
175
176
  getAllowedEventDateStatuses: () => getAllowedEventDateStatuses,
@@ -938,147 +939,6 @@ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.j
938
939
  var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
939
940
  var import_timezone = __toESM(require("dayjs/plugin/timezone.js"));
940
941
  var import_utc = __toESM(require("dayjs/plugin/utc.js"));
941
- var dateFormat = "DD-MM-YYYY";
942
- var timeFormat = "HH:mm";
943
- import_dayjs.default.extend(import_customParseFormat.default);
944
- import_dayjs.default.extend(import_utc.default);
945
- import_dayjs.default.extend(import_timezone.default);
946
- import_dayjs.default.extend(import_isSameOrAfter.default);
947
- var NZ_TZ = "Pacific/Auckland";
948
- function toNZTime(date) {
949
- return date ? (0, import_dayjs.default)(date).tz(NZ_TZ) : (0, import_dayjs.default)().tz(NZ_TZ);
950
- }
951
- function nzStartOfDay(input) {
952
- if (input == null) {
953
- return (0, import_dayjs.default)().tz(NZ_TZ).startOf("day");
954
- }
955
- return import_dayjs.default.tz(input, NZ_TZ).startOf("day");
956
- }
957
- var formatDate = (dateStr, display = "datetime", timeStr) => {
958
- const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
959
- const dateTime = timeStr ? (0, import_dayjs.default)(dateTimeStr, `${dateFormat} ${timeFormat}`) : (0, import_dayjs.default)(dateStr, dateFormat);
960
- const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
961
- const formattedTime = dateTime.format("h:mm a");
962
- switch (display) {
963
- case "date":
964
- return formattedDate;
965
- case "time":
966
- return formattedTime;
967
- case "datetime":
968
- return `${formattedDate} at ${formattedTime}`;
969
- default:
970
- return formattedDate;
971
- }
972
- };
973
- var getCurrentAndFutureDates = (dates) => {
974
- const now = (0, import_dayjs.default)();
975
- return dates.filter((dateObj) => {
976
- const dateTime = (0, import_dayjs.default)(
977
- `${dateObj.startDate} ${dateObj.startTime}`,
978
- `${dateFormat} ${timeFormat}`
979
- );
980
- return dateTime.isSameOrAfter(now);
981
- });
982
- };
983
- var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
984
- const threshold = minHoursFromNow ? (0, import_dayjs.default)().add(minHoursFromNow, "hour") : (0, import_dayjs.default)().startOf("day");
985
- const dateTime = (0, import_dayjs.default)(
986
- `${date.startDate} ${date.startTime}`,
987
- `${dateFormat} ${timeFormat}`
988
- );
989
- return dateTime.isSameOrAfter(threshold);
990
- };
991
- var formatTimestamp = (timestamp) => {
992
- const formattedDate = toNZTime(timestamp).format(dateFormat);
993
- return formatDate(formattedDate, "date");
994
- };
995
- var isIsoDateString = (value) => {
996
- return typeof value === "string" && !isNaN(Date.parse(value));
997
- };
998
- function sortDatesChronologically(dates) {
999
- if (!dates || !dates.length) {
1000
- return [];
1001
- }
1002
- return [...dates].sort((a, b) => {
1003
- const dateTimeFormat = `${dateFormat} ${timeFormat}`;
1004
- const dateA = (0, import_dayjs.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
1005
- const dateB = (0, import_dayjs.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
1006
- return dateA.valueOf() - dateB.valueOf();
1007
- });
1008
- }
1009
-
1010
- // src/utils/dailyClueGame.ts
1011
- function createSeededRng(seed) {
1012
- let t = seed >>> 0;
1013
- return function random() {
1014
- t += 1831565813;
1015
- let x = t;
1016
- x = Math.imul(x ^ x >>> 15, x | 1);
1017
- x ^= x + Math.imul(x ^ x >>> 7, x | 61);
1018
- return ((x ^ x >>> 14) >>> 0) / 4294967296;
1019
- };
1020
- }
1021
- function hashStringToNumber(seed) {
1022
- let hash = 2166136261;
1023
- for (let i = 0; i < seed.length; i++) {
1024
- hash ^= seed.codePointAt(i) ?? 0;
1025
- hash = Math.imul(hash, 16777619);
1026
- }
1027
- return hash >>> 0;
1028
- }
1029
- function seededShuffle(array, seed) {
1030
- const rng = createSeededRng(hashStringToNumber(seed));
1031
- const result = [...array];
1032
- for (let i = result.length - 1; i > 0; i--) {
1033
- const j = Math.floor(rng() * (i + 1));
1034
- [result[i], result[j]] = [result[j], result[i]];
1035
- }
1036
- return result;
1037
- }
1038
- function getDayIndex(start, today) {
1039
- return today.diff(start, "day");
1040
- }
1041
- function computeDailyClueState(dailyClue) {
1042
- const { startDate, endDate } = dailyClue.gameFields.gameDate;
1043
- const { solutionShuffled, collected } = dailyClue.letterInfo;
1044
- const today = nzStartOfDay();
1045
- const start = nzStartOfDay(startDate);
1046
- const end = nzStartOfDay(endDate);
1047
- if (today.isBefore(start)) {
1048
- return null;
1049
- }
1050
- const shuffledPlacements = seededShuffle(
1051
- gameScreenIdentifierList,
1052
- start.toISOString()
1053
- );
1054
- const index = getDayIndex(start, today);
1055
- if (today.isAfter(end)) {
1056
- return {
1057
- todaysClue: null,
1058
- todaysLetter: null,
1059
- todaysPlacement: null
1060
- };
1061
- }
1062
- if (index < 0 || index >= solutionShuffled.length || index >= shuffledPlacements.length) {
1063
- return null;
1064
- }
1065
- const letterToday = solutionShuffled[index];
1066
- const placement = shuffledPlacements[index];
1067
- if (!letterToday || !placement) return null;
1068
- const alreadyCollectedToday = (collected ?? []).includes(letterToday);
1069
- if (alreadyCollectedToday) {
1070
- return {
1071
- todaysClue: null,
1072
- todaysLetter: null,
1073
- todaysPlacement: null
1074
- };
1075
- }
1076
- return {
1077
- todaysClue: placement.clue,
1078
- todaysLetter: letterToday,
1079
- todaysPlacement: placement.id
1080
- };
1081
- }
1082
942
 
1083
943
  // src/types/auth.ts
1084
944
  var EnumVerificationType = /* @__PURE__ */ ((EnumVerificationType2) => {
@@ -1284,6 +1144,157 @@ var PostTypeLabels = {
1284
1144
  ["play_and_win" /* PLAY_AND_WIN */]: "Play & Win"
1285
1145
  };
1286
1146
 
1147
+ // src/utils/date.ts
1148
+ var dateFormat = "DD-MM-YYYY";
1149
+ var timeFormat = "HH:mm";
1150
+ import_dayjs.default.extend(import_customParseFormat.default);
1151
+ import_dayjs.default.extend(import_utc.default);
1152
+ import_dayjs.default.extend(import_timezone.default);
1153
+ import_dayjs.default.extend(import_isSameOrAfter.default);
1154
+ var NZ_TZ = "Pacific/Auckland";
1155
+ function toNZTime(date) {
1156
+ return date ? (0, import_dayjs.default)(date).tz(NZ_TZ) : (0, import_dayjs.default)().tz(NZ_TZ);
1157
+ }
1158
+ function nzStartOfDay(input) {
1159
+ if (input == null) {
1160
+ return (0, import_dayjs.default)().tz(NZ_TZ).startOf("day");
1161
+ }
1162
+ return import_dayjs.default.tz(input, NZ_TZ).startOf("day");
1163
+ }
1164
+ var formatDate = (dateStr, display = "datetime", timeStr) => {
1165
+ const dateTimeStr = timeStr ? `${dateStr} ${timeStr}` : dateStr;
1166
+ const dateTime = timeStr ? (0, import_dayjs.default)(dateTimeStr, `${dateFormat} ${timeFormat}`) : (0, import_dayjs.default)(dateStr, dateFormat);
1167
+ const formattedDate = dateTime.format("dddd, D MMMM, YYYY");
1168
+ const formattedTime = dateTime.format("h:mm a");
1169
+ switch (display) {
1170
+ case "date":
1171
+ return formattedDate;
1172
+ case "time":
1173
+ return formattedTime;
1174
+ case "datetime":
1175
+ return `${formattedDate} at ${formattedTime}`;
1176
+ default:
1177
+ return formattedDate;
1178
+ }
1179
+ };
1180
+ var getCurrentAndFutureDates = (dates) => {
1181
+ const now = (0, import_dayjs.default)();
1182
+ return dates.filter((dateObj) => {
1183
+ const dateTime = (0, import_dayjs.default)(
1184
+ `${dateObj.startDate} ${dateObj.startTime}`,
1185
+ `${dateFormat} ${timeFormat}`
1186
+ );
1187
+ return dateTime.isSameOrAfter(now);
1188
+ });
1189
+ };
1190
+ var isFutureDatesBeforeThreshold = (date, minHoursFromNow) => {
1191
+ const threshold = minHoursFromNow ? (0, import_dayjs.default)().add(minHoursFromNow, "hour") : (0, import_dayjs.default)().startOf("day");
1192
+ const dateTime = (0, import_dayjs.default)(
1193
+ `${date.startDate} ${date.startTime}`,
1194
+ `${dateFormat} ${timeFormat}`
1195
+ );
1196
+ return dateTime.isSameOrAfter(threshold);
1197
+ };
1198
+ var formatTimestamp = (timestamp) => {
1199
+ const formattedDate = toNZTime(timestamp).format(dateFormat);
1200
+ return formatDate(formattedDate, "date");
1201
+ };
1202
+ var isIsoDateString = (value) => {
1203
+ return typeof value === "string" && !Number.isNaN(Date.parse(value));
1204
+ };
1205
+ function sortDatesChronologically(dates) {
1206
+ if (!dates?.length) {
1207
+ return [];
1208
+ }
1209
+ return [...dates].sort((a, b) => {
1210
+ const dateTimeFormat = `${dateFormat} ${timeFormat}`;
1211
+ const dateA = (0, import_dayjs.default)(`${a.startDate} ${a.startTime}`, dateTimeFormat);
1212
+ const dateB = (0, import_dayjs.default)(`${b.startDate} ${b.startTime}`, dateTimeFormat);
1213
+ return dateA.valueOf() - dateB.valueOf();
1214
+ });
1215
+ }
1216
+ var futureTimePeriods = mapArrayToOptions(
1217
+ Object.values(EnumEventDateStatus)
1218
+ ).filter(
1219
+ (period) => period.value !== "Starting_Soon" /* STARTING_SOON */ && period.value !== "Canceled" /* CANCELED */ && period.value !== "Rescheduled" /* RE_SCHEDULED */ && period.value !== "Started" /* STARTED */ && period.value !== "Ended" /* ENDED */ && period.value !== "Invalid" /* INVALID */
1220
+ ).map((period) => ({
1221
+ label: period.value.replaceAll("_", " "),
1222
+ value: period.value
1223
+ }));
1224
+
1225
+ // src/utils/dailyClueGame.ts
1226
+ function createSeededRng(seed) {
1227
+ let t = seed >>> 0;
1228
+ return function random() {
1229
+ t += 1831565813;
1230
+ let x = t;
1231
+ x = Math.imul(x ^ x >>> 15, x | 1);
1232
+ x ^= x + Math.imul(x ^ x >>> 7, x | 61);
1233
+ return ((x ^ x >>> 14) >>> 0) / 4294967296;
1234
+ };
1235
+ }
1236
+ function hashStringToNumber(seed) {
1237
+ let hash = 2166136261;
1238
+ for (let i = 0; i < seed.length; i++) {
1239
+ hash ^= seed.codePointAt(i) ?? 0;
1240
+ hash = Math.imul(hash, 16777619);
1241
+ }
1242
+ return hash >>> 0;
1243
+ }
1244
+ function seededShuffle(array, seed) {
1245
+ const rng = createSeededRng(hashStringToNumber(seed));
1246
+ const result = [...array];
1247
+ for (let i = result.length - 1; i > 0; i--) {
1248
+ const j = Math.floor(rng() * (i + 1));
1249
+ [result[i], result[j]] = [result[j], result[i]];
1250
+ }
1251
+ return result;
1252
+ }
1253
+ function getDayIndex(start, today) {
1254
+ return today.diff(start, "day");
1255
+ }
1256
+ function computeDailyClueState(dailyClue) {
1257
+ const { startDate, endDate } = dailyClue.gameFields.gameDate;
1258
+ const { solutionShuffled, collected } = dailyClue.letterInfo;
1259
+ const today = nzStartOfDay();
1260
+ const start = nzStartOfDay(startDate);
1261
+ const end = nzStartOfDay(endDate);
1262
+ if (today.isBefore(start)) {
1263
+ return null;
1264
+ }
1265
+ const shuffledPlacements = seededShuffle(
1266
+ gameScreenIdentifierList,
1267
+ start.toISOString()
1268
+ );
1269
+ const index = getDayIndex(start, today);
1270
+ if (today.isAfter(end)) {
1271
+ return {
1272
+ todaysClue: null,
1273
+ todaysLetter: null,
1274
+ todaysPlacement: null
1275
+ };
1276
+ }
1277
+ if (index < 0 || index >= solutionShuffled.length || index >= shuffledPlacements.length) {
1278
+ return null;
1279
+ }
1280
+ const letterToday = solutionShuffled[index];
1281
+ const placement = shuffledPlacements[index];
1282
+ if (!letterToday || !placement) return null;
1283
+ const alreadyCollectedToday = (collected ?? []).includes(letterToday);
1284
+ if (alreadyCollectedToday) {
1285
+ return {
1286
+ todaysClue: null,
1287
+ todaysLetter: null,
1288
+ todaysPlacement: null
1289
+ };
1290
+ }
1291
+ return {
1292
+ todaysClue: placement.clue,
1293
+ todaysLetter: letterToday,
1294
+ todaysPlacement: placement.id
1295
+ };
1296
+ }
1297
+
1287
1298
  // src/utils/school.ts
1288
1299
  var SCHOOL_MIN_STUDENT_COUNT = 300;
1289
1300
  var SCHOOL_MAX_STUDENT_COUNT = 0;
@@ -3323,6 +3334,12 @@ var EVENT_LIST_ITEM = import_client2.gql`
3323
3334
  ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
3324
3335
  ${RELATION_DATES_FRAGMENT}
3325
3336
  `;
3337
+ var RELATED_POST_FIELDS_FRAGMENT = import_client2.gql`
3338
+ fragment RelatedPostFields on RelatedPostType {
3339
+ postId
3340
+ postType
3341
+ }
3342
+ `;
3326
3343
 
3327
3344
  // src/graphql/queries/event.ts
3328
3345
  var EVENT_INFO = import_client3.gql`
@@ -3414,6 +3431,9 @@ var EVENT = import_client3.gql`
3414
3431
  rating
3415
3432
  reviewCount
3416
3433
  rainOrShine
3434
+ relatedPost {
3435
+ ...RelatedPostFields
3436
+ }
3417
3437
  socialMedia {
3418
3438
  ...SocialMediaFields
3419
3439
  }
@@ -3433,6 +3453,7 @@ var EVENT = import_client3.gql`
3433
3453
  ${CONTACT_DETAILS_FIELDS_FRAGMENT}
3434
3454
  ${TERMS_AGREEMENT_FIELDS_FRAGMENT}
3435
3455
  ${RELATION_DATES_FRAGMENT}
3456
+ ${RELATED_POST_FIELDS_FRAGMENT}
3436
3457
  `;
3437
3458
  var GET_EVENTS = import_client3.gql`
3438
3459
  query getEvents($dateStatus: EventDateStatusEnumType) {
@@ -3602,6 +3623,9 @@ var VENDOR = import_client4.gql`
3602
3623
  rating
3603
3624
  region
3604
3625
  reviewCount
3626
+ relatedPost {
3627
+ ...RelatedPostFields
3628
+ }
3605
3629
  relations {
3606
3630
  relationId
3607
3631
  relationDates {
@@ -3630,6 +3654,7 @@ var VENDOR = import_client4.gql`
3630
3654
  ${CONTACT_DETAILS_FIELDS_FRAGMENT}
3631
3655
  ${TERMS_AGREEMENT_FIELDS_FRAGMENT}
3632
3656
  ${RELATION_DATES_FRAGMENT}
3657
+ ${RELATED_POST_FIELDS_FRAGMENT}
3633
3658
  `;
3634
3659
  var VENDOR_ATTRIBUTES_FRAGMENT = import_client4.gql`
3635
3660
  fragment VendorAttributesFields on VendorAttributesType {
@@ -4362,6 +4387,9 @@ var PARTNER = import_client16.gql`
4362
4387
  rating
4363
4388
  region
4364
4389
  reviewCount
4390
+ relatedPost {
4391
+ ...RelatedPostFields
4392
+ }
4365
4393
  socialMedia {
4366
4394
  ...SocialMediaFields
4367
4395
  }
@@ -4378,6 +4406,7 @@ var PARTNER = import_client16.gql`
4378
4406
  ${POSTER_USAGE_FIELDS_FRAGMENT}
4379
4407
  ${SOCIAL_MEDIA_FIELDS_FRAGMENT}
4380
4408
  ${CONTACT_DETAILS_FIELDS_FRAGMENT}
4409
+ ${RELATED_POST_FIELDS_FRAGMENT}
4381
4410
  `;
4382
4411
  var GET_PARTNERS = import_client16.gql`
4383
4412
  query getPartners {
@@ -7712,6 +7741,7 @@ var fonts = {
7712
7741
  formatShareTagsSection,
7713
7742
  formatStallCapacityLabel,
7714
7743
  formatTimestamp,
7744
+ futureTimePeriods,
7715
7745
  gameScreenIdentifierList,
7716
7746
  gameTypeToDisplayName,
7717
7747
  getAllowedEventDateStatuses,