@timardex/cluemart-shared 1.5.586 → 1.5.589

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/index.cjs CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
33
  ANDROID_URL: () => ANDROID_URL,
34
+ DEFAULT_SHARE_OG_IMAGE: () => DEFAULT_SHARE_OG_IMAGE,
34
35
  EnumActivity: () => EnumActivity,
35
36
  EnumAdShowOn: () => EnumAdShowOn,
36
37
  EnumAdStatus: () => EnumAdStatus,
@@ -65,13 +66,25 @@ __export(index_exports, {
65
66
  IMAGE_EXTENSION: () => IMAGE_EXTENSION,
66
67
  IOS_URL: () => IOS_URL,
67
68
  ImageTypeEnum: () => ImageTypeEnum,
69
+ POST_SHARE_RESOURCE_TYPES: () => POST_SHARE_RESOURCE_TYPES,
68
70
  PROMO_CODE_PREFIX: () => PROMO_CODE_PREFIX,
71
+ PUBLIC_SHARE_PATH_TYPES: () => PUBLIC_SHARE_PATH_TYPES,
72
+ RELATION_SHARE_APPLICATION: () => RELATION_SHARE_APPLICATION,
73
+ RELATION_SHARE_INVITATION: () => RELATION_SHARE_INVITATION,
74
+ RELATION_SHARE_RESOURCE_TYPES: () => RELATION_SHARE_RESOURCE_TYPES,
75
+ RESOURCE_SHARE_TYPES: () => RESOURCE_SHARE_TYPES,
76
+ RESOURCE_SHARE_TYPES_FOR_URL: () => RESOURCE_SHARE_TYPES_FOR_URL,
69
77
  SAVED_EMAIL_KEY: () => SAVED_EMAIL_KEY,
70
78
  SAVED_PASSWORD_KEY: () => SAVED_PASSWORD_KEY,
71
79
  SAVED_REFRESH_TOKEN_KEY: () => SAVED_REFRESH_TOKEN_KEY,
72
80
  SAVED_TOKEN_KEY: () => SAVED_TOKEN_KEY,
73
81
  SCHOOL_MAX_STUDENT_COUNT: () => SCHOOL_MAX_STUDENT_COUNT,
74
82
  SCHOOL_MIN_STUDENT_COUNT: () => SCHOOL_MIN_STUDENT_COUNT,
83
+ SHARE_COMPACT_SECTION_SEPARATOR: () => SHARE_COMPACT_SECTION_SEPARATOR,
84
+ SHARE_DESCRIPTION_SECTION_SEPARATOR: () => SHARE_DESCRIPTION_SECTION_SEPARATOR,
85
+ SHARE_RESOURCE_LABEL: () => SHARE_RESOURCE_LABEL,
86
+ SHARE_SITE_URL: () => SHARE_SITE_URL,
87
+ SHARE_TYPE_PATH_REGEX: () => SHARE_TYPE_PATH_REGEX,
75
88
  USER_STORAGE_KEY: () => USER_STORAGE_KEY,
76
89
  availableCategories: () => availableCategories,
77
90
  availableRegionOptions: () => availableRegionOptions,
@@ -80,6 +93,11 @@ __export(index_exports, {
80
93
  badgeFiles: () => badgeFiles,
81
94
  badgeIds: () => badgeIds,
82
95
  badges: () => badges,
96
+ buildApplicationShareDescription: () => buildApplicationShareDescription,
97
+ buildFacebookShareQuote: () => buildFacebookShareQuote,
98
+ buildInvitationShareDescription: () => buildInvitationShareDescription,
99
+ buildSharePagePath: () => buildSharePagePath,
100
+ buildShareUrl: () => buildShareUrl,
83
101
  capitalizeFirstLetter: () => capitalizeFirstLetter,
84
102
  categoryColors: () => categoryColors,
85
103
  cluemartSocialMedia: () => cluemartSocialMedia,
@@ -106,7 +124,9 @@ __export(index_exports, {
106
124
  eventStartDateFields: () => eventStartDateFields,
107
125
  fonts: () => fonts,
108
126
  foodFlavourOptions: () => foodFlavourOptions,
127
+ formatCategoryLabel: () => formatCategoryLabel,
109
128
  formatDate: () => formatDate,
129
+ formatShareSectionsForCompactDisplay: () => formatShareSectionsForCompactDisplay,
110
130
  formatTimestamp: () => formatTimestamp,
111
131
  gameScreenIdentifierList: () => gameScreenIdentifierList,
112
132
  gameTypeToDisplayName: () => gameTypeToDisplayName,
@@ -117,6 +137,9 @@ __export(index_exports, {
117
137
  icons: () => icons,
118
138
  isFutureDatesBeforeThreshold: () => isFutureDatesBeforeThreshold,
119
139
  isIsoDateString: () => isIsoDateString,
140
+ isPostShareResourceType: () => isPostShareResourceType,
141
+ isRelationShareResourceType: () => isRelationShareResourceType,
142
+ joinShareDescriptionSections: () => joinShareDescriptionSections,
120
143
  licenseNiceNames: () => licenseNiceNames,
121
144
  lightColors: () => lightColors,
122
145
  loginFields: () => loginFields,
@@ -125,6 +148,8 @@ __export(index_exports, {
125
148
  logos: () => logos,
126
149
  mapArrayToOptions: () => mapArrayToOptions,
127
150
  mapBaseResourceTypeToFormData: () => mapBaseResourceTypeToFormData,
151
+ normalizeShareOgDescription: () => normalizeShareOgDescription,
152
+ normalizeShareRouteId: () => normalizeShareRouteId,
128
153
  normalizeUrl: () => normalizeUrl,
129
154
  nzStartOfDay: () => nzStartOfDay,
130
155
  otherImages: () => otherImages,
@@ -4247,7 +4272,20 @@ var useCreateEvent = () => {
4247
4272
  var useUpdateEvent = () => {
4248
4273
  const [updateEvent, { loading, error }] = (0, import_client18.useMutation)(UPDATE_EVENT_MUTATION, {
4249
4274
  awaitRefetchQueries: true,
4250
- refetchQueries: [{ query: GET_USER_EVENTS }]
4275
+ refetchQueries: (mutationResult) => {
4276
+ const eventId = mutationResult?.data?.updateEvent?._id;
4277
+ if (!eventId) return [];
4278
+ return [
4279
+ {
4280
+ query: GET_USER_EVENTS
4281
+ },
4282
+ {
4283
+ query: GET_EVENT,
4284
+ variables: { _id: eventId }
4285
+ // Pass the eventId for refetching
4286
+ }
4287
+ ];
4288
+ }
4251
4289
  });
4252
4290
  return { error, loading, updateEvent };
4253
4291
  };
@@ -8788,6 +8826,182 @@ var otherImages = Object.fromEntries(
8788
8826
  Object.entries(otherImagesFiles).map(([key, file]) => [key, `${PKG}/images/${file}`])
8789
8827
  );
8790
8828
 
8829
+ // src/sharing/formatCategoryLabel.ts
8830
+ function formatCategoryLabel(category) {
8831
+ const subcategoryNames = category.subcategories.map((subcategory) => subcategory.name).filter(Boolean);
8832
+ if (subcategoryNames.length === 0) {
8833
+ return category.name;
8834
+ }
8835
+ return `${category.name} (${subcategoryNames.join(", ")})`;
8836
+ }
8837
+
8838
+ // src/sharing/joinShareDescriptionSections.ts
8839
+ var SHARE_DESCRIPTION_SECTION_SEPARATOR = " \xB7 ";
8840
+ var SHARE_COMPACT_SECTION_SEPARATOR = SHARE_DESCRIPTION_SECTION_SEPARATOR;
8841
+ function joinShareDescriptionSections(sections) {
8842
+ return sections.filter((section) => Boolean(section)).join(SHARE_DESCRIPTION_SECTION_SEPARATOR);
8843
+ }
8844
+
8845
+ // src/sharing/buildRelationShareDescription.ts
8846
+ function formatShareDate(isoDate) {
8847
+ try {
8848
+ return new Intl.DateTimeFormat("en-NZ", {
8849
+ day: "numeric",
8850
+ month: "short",
8851
+ year: "numeric"
8852
+ }).format(new Date(isoDate));
8853
+ } catch {
8854
+ return isoDate;
8855
+ }
8856
+ }
8857
+ function buildInvitationShareDescription(event, eventInfo2) {
8858
+ const stallTypes2 = eventInfo2?.dateTime?.flatMap((date3) => date3.stallTypes) ?? [];
8859
+ if (!eventInfo2 || stallTypes2.length === 0) {
8860
+ return event.description?.trim() || "";
8861
+ }
8862
+ const requirementLabels = (eventInfo2.requirements ?? []).filter((item) => item.value).map((item) => item.label);
8863
+ const sections = [
8864
+ event.location.fullAddress,
8865
+ ...event.dateTime.map((date3) => {
8866
+ const start = formatShareDate(date3.startDate);
8867
+ const end = date3.endDate ? ` \u2013 ${formatShareDate(date3.endDate)}` : "";
8868
+ return `Market date: ${start}${end}`;
8869
+ }),
8870
+ `Application deadline: vendors must apply at least ${eventInfo2.applicationDeadlineHours} hours before each market date.`,
8871
+ ...stallTypes2.map(
8872
+ (stall) => `Stall: ${stall.label} \u2014 $${stall.price} (${stall.stallCapacity} spaces)`
8873
+ ),
8874
+ requirementLabels.length > 0 && `Requirements: ${requirementLabels.join(", ")}`
8875
+ ];
8876
+ return joinShareDescriptionSections(sections);
8877
+ }
8878
+ function buildApplicationShareDescription(vendor, vendorInfo) {
8879
+ const categoryLabels = vendor.categories.map(
8880
+ (category) => formatCategoryLabel(category)
8881
+ );
8882
+ if (!vendorInfo) {
8883
+ return vendor.description?.trim() || "";
8884
+ }
8885
+ const compliance = vendorInfo.compliance;
8886
+ const complianceLabels = [
8887
+ compliance?.liabilityInsurance && "Liability insurance",
8888
+ compliance?.foodBeverageLicense && "Food & beverage licence"
8889
+ ].filter(Boolean);
8890
+ const profileDescription = vendor.description?.trim();
8891
+ const sections = [
8892
+ categoryLabels.length > 0 && `Categories: ${categoryLabels.join(", ")}`,
8893
+ `Stall size: ${vendorInfo.stallInfo.size.width}m \xD7 ${vendorInfo.stallInfo.size.depth}m`,
8894
+ `Compliance: ${complianceLabels.length > 0 ? complianceLabels.join(", ") : "Not specified"}`,
8895
+ `Price range: $${vendorInfo.product.priceRange.min} \u2013 $${vendorInfo.product.priceRange.max}`,
8896
+ profileDescription
8897
+ ];
8898
+ return joinShareDescriptionSections(sections);
8899
+ }
8900
+
8901
+ // src/sharing/relationShareTypes.ts
8902
+ var RELATION_SHARE_INVITATION = "invitation";
8903
+ var RELATION_SHARE_APPLICATION = "application";
8904
+ var RELATION_SHARE_RESOURCE_TYPES = [
8905
+ RELATION_SHARE_INVITATION,
8906
+ RELATION_SHARE_APPLICATION
8907
+ ];
8908
+ function isRelationShareResourceType(resourceType) {
8909
+ return RELATION_SHARE_RESOURCE_TYPES.includes(
8910
+ resourceType
8911
+ );
8912
+ }
8913
+
8914
+ // src/sharing/constants.ts
8915
+ var SHARE_SITE_URL = "https://cluemart.co.nz";
8916
+ var DEFAULT_SHARE_OG_IMAGE = `${SHARE_SITE_URL}/assets/logo.webp`;
8917
+ var RESOURCE_SHARE_TYPES = [
8918
+ "market",
8919
+ "stallholder",
8920
+ "partner"
8921
+ ];
8922
+ var POST_SHARE_RESOURCE_TYPES = [
8923
+ "daily_meets",
8924
+ "daily_tips",
8925
+ "daily_games"
8926
+ ];
8927
+ var SHARE_RESOURCE_LABEL = {
8928
+ [RELATION_SHARE_APPLICATION]: "Application",
8929
+ [RELATION_SHARE_INVITATION]: "Invitation",
8930
+ daily_games: "Daily Game",
8931
+ daily_meets: "Daily Meet",
8932
+ daily_tips: "Daily Tip",
8933
+ market: "Market",
8934
+ partner: "Partner",
8935
+ stallholder: "Stallholder"
8936
+ };
8937
+ function isPostShareResourceType(resourceType) {
8938
+ return POST_SHARE_RESOURCE_TYPES.includes(
8939
+ resourceType
8940
+ );
8941
+ }
8942
+
8943
+ // src/sharing/buildShareUrl.ts
8944
+ var PUBLIC_SHARE_PATH_TYPES = [
8945
+ ...RESOURCE_SHARE_TYPES,
8946
+ ...POST_SHARE_RESOURCE_TYPES
8947
+ ];
8948
+ var RESOURCE_SHARE_TYPES_FOR_URL = PUBLIC_SHARE_PATH_TYPES;
8949
+ var SHARE_TYPE_PATH_REGEX = [
8950
+ ...PUBLIC_SHARE_PATH_TYPES,
8951
+ RELATION_SHARE_APPLICATION,
8952
+ RELATION_SHARE_INVITATION
8953
+ ].join("|");
8954
+ function buildShareUrl(type, id) {
8955
+ return `${SHARE_SITE_URL}/share/${type}/${encodeURIComponent(id)}`;
8956
+ }
8957
+
8958
+ // src/sharing/normalizeShareDescription.ts
8959
+ function normalizeShareSection(value) {
8960
+ if (value == null) {
8961
+ return "";
8962
+ }
8963
+ return value.trim().split("\n").map((line) => line.trim().replace(/[ \t]+/g, " ")).join("\n").replace(/\n{3,}/g, "\n\n");
8964
+ }
8965
+ function normalizeShareOgDescription(value) {
8966
+ const trimmed = value.trim();
8967
+ if (!trimmed) {
8968
+ return "";
8969
+ }
8970
+ if (/\n\n/.test(trimmed)) {
8971
+ return trimmed.split(/\n\n+/).map((section) => section.replace(/\s+/g, " ").trim()).filter(Boolean).join(SHARE_DESCRIPTION_SECTION_SEPARATOR);
8972
+ }
8973
+ return trimmed.replace(/\s+/g, " ").trim();
8974
+ }
8975
+ function formatShareSectionsForCompactDisplay(value) {
8976
+ const trimmed = value.trim();
8977
+ if (!trimmed) {
8978
+ return "";
8979
+ }
8980
+ if (!/\n\n/.test(trimmed)) {
8981
+ return normalizeShareSection(trimmed);
8982
+ }
8983
+ return trimmed.split(/\n\n+/).map((section) => normalizeShareSection(section)).filter((section) => section.length > 0).join(SHARE_DESCRIPTION_SECTION_SEPARATOR);
8984
+ }
8985
+ function buildFacebookShareQuote(title, description) {
8986
+ const titlePart = normalizeShareSection(title);
8987
+ const descriptionPart = normalizeShareSection(description);
8988
+ const bodyPart = descriptionPart ? formatShareSectionsForCompactDisplay(descriptionPart) : "";
8989
+ const parts = [titlePart, bodyPart].filter((part) => part.length > 0);
8990
+ return parts.length > 0 ? parts.join(SHARE_DESCRIPTION_SECTION_SEPARATOR) : void 0;
8991
+ }
8992
+
8993
+ // src/sharing/normalizeShareRouteId.ts
8994
+ function normalizeShareRouteId(id) {
8995
+ try {
8996
+ return decodeURIComponent(id);
8997
+ } catch {
8998
+ return id;
8999
+ }
9000
+ }
9001
+ function buildSharePagePath(resourceType, rawId) {
9002
+ return `/share/${resourceType}/${encodeURIComponent(normalizeShareRouteId(rawId))}`;
9003
+ }
9004
+
8791
9005
  // src/storage/index.ts
8792
9006
  var SAVED_PASSWORD_KEY = "savedPassword";
8793
9007
  var SAVED_EMAIL_KEY = "savedEmail";
@@ -8879,6 +9093,7 @@ var gameTypeToDisplayName = {
8879
9093
  // Annotate the CommonJS export names for ESM import in node:
8880
9094
  0 && (module.exports = {
8881
9095
  ANDROID_URL,
9096
+ DEFAULT_SHARE_OG_IMAGE,
8882
9097
  EnumActivity,
8883
9098
  EnumAdShowOn,
8884
9099
  EnumAdStatus,
@@ -8913,13 +9128,25 @@ var gameTypeToDisplayName = {
8913
9128
  IMAGE_EXTENSION,
8914
9129
  IOS_URL,
8915
9130
  ImageTypeEnum,
9131
+ POST_SHARE_RESOURCE_TYPES,
8916
9132
  PROMO_CODE_PREFIX,
9133
+ PUBLIC_SHARE_PATH_TYPES,
9134
+ RELATION_SHARE_APPLICATION,
9135
+ RELATION_SHARE_INVITATION,
9136
+ RELATION_SHARE_RESOURCE_TYPES,
9137
+ RESOURCE_SHARE_TYPES,
9138
+ RESOURCE_SHARE_TYPES_FOR_URL,
8917
9139
  SAVED_EMAIL_KEY,
8918
9140
  SAVED_PASSWORD_KEY,
8919
9141
  SAVED_REFRESH_TOKEN_KEY,
8920
9142
  SAVED_TOKEN_KEY,
8921
9143
  SCHOOL_MAX_STUDENT_COUNT,
8922
9144
  SCHOOL_MIN_STUDENT_COUNT,
9145
+ SHARE_COMPACT_SECTION_SEPARATOR,
9146
+ SHARE_DESCRIPTION_SECTION_SEPARATOR,
9147
+ SHARE_RESOURCE_LABEL,
9148
+ SHARE_SITE_URL,
9149
+ SHARE_TYPE_PATH_REGEX,
8923
9150
  USER_STORAGE_KEY,
8924
9151
  availableCategories,
8925
9152
  availableRegionOptions,
@@ -8928,6 +9155,11 @@ var gameTypeToDisplayName = {
8928
9155
  badgeFiles,
8929
9156
  badgeIds,
8930
9157
  badges,
9158
+ buildApplicationShareDescription,
9159
+ buildFacebookShareQuote,
9160
+ buildInvitationShareDescription,
9161
+ buildSharePagePath,
9162
+ buildShareUrl,
8931
9163
  capitalizeFirstLetter,
8932
9164
  categoryColors,
8933
9165
  cluemartSocialMedia,
@@ -8954,7 +9186,9 @@ var gameTypeToDisplayName = {
8954
9186
  eventStartDateFields,
8955
9187
  fonts,
8956
9188
  foodFlavourOptions,
9189
+ formatCategoryLabel,
8957
9190
  formatDate,
9191
+ formatShareSectionsForCompactDisplay,
8958
9192
  formatTimestamp,
8959
9193
  gameScreenIdentifierList,
8960
9194
  gameTypeToDisplayName,
@@ -8965,6 +9199,9 @@ var gameTypeToDisplayName = {
8965
9199
  icons,
8966
9200
  isFutureDatesBeforeThreshold,
8967
9201
  isIsoDateString,
9202
+ isPostShareResourceType,
9203
+ isRelationShareResourceType,
9204
+ joinShareDescriptionSections,
8968
9205
  licenseNiceNames,
8969
9206
  lightColors,
8970
9207
  loginFields,
@@ -8973,6 +9210,8 @@ var gameTypeToDisplayName = {
8973
9210
  logos,
8974
9211
  mapArrayToOptions,
8975
9212
  mapBaseResourceTypeToFormData,
9213
+ normalizeShareOgDescription,
9214
+ normalizeShareRouteId,
8976
9215
  normalizeUrl,
8977
9216
  nzStartOfDay,
8978
9217
  otherImages,