@timardex/cluemart-shared 1.5.792 → 1.5.793

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
@@ -1008,6 +1008,150 @@ var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
1008
1008
  var import_timezone = __toESM(require("dayjs/plugin/timezone.js"));
1009
1009
  var import_utc = __toESM(require("dayjs/plugin/utc.js"));
1010
1010
 
1011
+ // src/sharing/relationShareTypes.ts
1012
+ var RELATION_SHARE_INVITATION = "invitation";
1013
+ var RELATION_SHARE_APPLICATION = "application";
1014
+ var RELATION_OVERLAY_LAYOUT_VERSION = 36;
1015
+ var RELATION_SHARE_RESOURCE_TYPES = [
1016
+ RELATION_SHARE_INVITATION,
1017
+ RELATION_SHARE_APPLICATION
1018
+ ];
1019
+ function isRelationShareResourceType(resourceType) {
1020
+ return RELATION_SHARE_RESOURCE_TYPES.includes(
1021
+ resourceType
1022
+ );
1023
+ }
1024
+
1025
+ // src/sharing/constants.ts
1026
+ var SOCIAL_IMAGE_WIDTH = 1200;
1027
+ var SOCIAL_IMAGE_HEIGHT = 630;
1028
+ var SHARE_SITE_URL = "https://cluemart.co.nz";
1029
+ var SHARE_CALENDAR_ICON = "\u{1F4C5}";
1030
+ var SHARE_MARKET_DATES_SECTION_HEADING = `${SHARE_CALENDAR_ICON} Market dates:`;
1031
+ var SHARE_CHECKMARK_ICON = "\u2705";
1032
+ var SHARE_REQUIREMENTS_SECTION_HEADING = `${SHARE_CHECKMARK_ICON} Requirements:`;
1033
+ var SHARE_INFO_ICON = "\u2139\uFE0F";
1034
+ var SHARE_TAGS_SECTION_HEADING = `${SHARE_INFO_ICON} Tags:`;
1035
+ var SHARE_RAIN_OR_SHINE_LINE = "Rain or Shine";
1036
+ var SHARE_FOOD_TRUCK_LINE = "Food Truck";
1037
+ var SHARE_COMPLIANCE_PREFIX = `${SHARE_CHECKMARK_ICON} Compliance:`;
1038
+ var SHARE_CATEGORY_ICON = "\u{1F3F7}\uFE0F";
1039
+ var SHARE_CATEGORIES_SECTION_HEADING = `${SHARE_CATEGORY_ICON} Categories:`;
1040
+ var SHARE_RULER_ICON = "\u{1F4CF}";
1041
+ var SHARE_STALL_SIZE_PREFIX = `${SHARE_RULER_ICON} Stall size:`;
1042
+ var SHARE_DOLLAR_ICON = "$";
1043
+ var SHARE_PRICE_RANGE_PREFIX = `${SHARE_DOLLAR_ICON} Price range:`;
1044
+ var SHARE_CLOCK_ICON = "\u23F0";
1045
+ var SHARE_APPLICATION_DEADLINE_PREFIX = `${SHARE_CLOCK_ICON} Application deadline:`;
1046
+ var SHARE_MORE_INFO_LINE = "Shared from ClueMart";
1047
+ var DEFAULT_SHARE_OG_IMAGE = `${SHARE_SITE_URL}/assets/logo.webp`;
1048
+ var RESOURCE_SHARE_TYPES = [
1049
+ "market",
1050
+ "stallholder",
1051
+ "partner",
1052
+ "affiliate",
1053
+ "school"
1054
+ ];
1055
+ var POST_SHARE_RESOURCE_TYPES = [
1056
+ "market_faces",
1057
+ "clue_bites",
1058
+ "play_and_win"
1059
+ ];
1060
+ var SHARE_RESOURCE_LABEL = {
1061
+ [RELATION_SHARE_APPLICATION]: "Application",
1062
+ [RELATION_SHARE_INVITATION]: "Invitation",
1063
+ clue_bites: "Clue Bites",
1064
+ market_faces: "Market Faces",
1065
+ play_and_win: "Play & Win",
1066
+ market: "Market",
1067
+ partner: "Partner",
1068
+ stallholder: "Stallholder",
1069
+ affiliate: "Affiliate",
1070
+ school: "School"
1071
+ };
1072
+ function isPostShareResourceType(resourceType) {
1073
+ return POST_SHARE_RESOURCE_TYPES.includes(
1074
+ resourceType
1075
+ );
1076
+ }
1077
+
1078
+ // src/sharing/joinShareDescriptionSections.ts
1079
+ var SHARE_DESCRIPTION_SECTION_BREAK = "\n\n";
1080
+ var OG_DESCRIPTION_LINE_BREAK = "
";
1081
+ function joinShareOgDescriptionSections(sections) {
1082
+ return sections.map((section) => typeof section === "string" ? section.trim() : "").filter((section) => section.length > 0).map((section) => section.replace(/\n/g, OG_DESCRIPTION_LINE_BREAK)).join(OG_DESCRIPTION_LINE_BREAK);
1083
+ }
1084
+ function joinShareDescriptionSections(sections) {
1085
+ return sections.filter((section) => Boolean(section)).join(SHARE_DESCRIPTION_SECTION_BREAK);
1086
+ }
1087
+ function appendShareMoreInfoLine(description) {
1088
+ const trimmed = description.trim();
1089
+ if (trimmed.startsWith(SHARE_MORE_INFO_LINE)) {
1090
+ return trimmed;
1091
+ }
1092
+ if (trimmed.length === 0) {
1093
+ return SHARE_MORE_INFO_LINE;
1094
+ }
1095
+ return joinShareDescriptionSections([SHARE_MORE_INFO_LINE, trimmed]);
1096
+ }
1097
+
1098
+ // src/sharing/normalizeShareDescription.ts
1099
+ var LEADING_WHITESPACE = /^[ \t]*/;
1100
+ function normalizeShareText(value) {
1101
+ if (value == null) {
1102
+ return "";
1103
+ }
1104
+ return value.trim().split("\n").map((line) => {
1105
+ const leading = LEADING_WHITESPACE.exec(line)?.[0] ?? "";
1106
+ const rest = line.slice(leading.length).trim().replace(/[ \t]{2,}/g, " ");
1107
+ return leading + rest;
1108
+ }).join("\n").replace(/\n{3,}/g, "\n\n");
1109
+ }
1110
+ function shareMessageFooterPlacementForType(_shareType) {
1111
+ return "before-body";
1112
+ }
1113
+ function buildShareMessageSections(input) {
1114
+ const title = normalizeShareText(input.title);
1115
+ const description = normalizeShareText(input.description);
1116
+ return [SHARE_MORE_INFO_LINE, title, description].filter(
1117
+ (section) => section.length > 0
1118
+ );
1119
+ }
1120
+ function splitShareDescriptionSections(value) {
1121
+ const trimmed = normalizeShareText(value);
1122
+ if (!trimmed) {
1123
+ return [];
1124
+ }
1125
+ if (/\n\n/.test(trimmed)) {
1126
+ return trimmed.split(/\n\n+/).map((section) => normalizeShareText(section)).filter((section) => section.length > 0);
1127
+ }
1128
+ if (/\n/.test(trimmed)) {
1129
+ return trimmed.split(/\n+/).map((section) => normalizeShareText(section)).filter((section) => section.length > 0);
1130
+ }
1131
+ return [trimmed];
1132
+ }
1133
+ function normalizeShareOgDescription(value) {
1134
+ return joinShareOgDescriptionSections(splitShareDescriptionSections(value));
1135
+ }
1136
+ function buildFacebookShareQuote(title, description, shareType) {
1137
+ const sections = buildShareMessageSections({ description, shareType, title });
1138
+ const quote = sections.join(SHARE_DESCRIPTION_SECTION_BREAK).trim();
1139
+ return quote.length > 0 ? quote : void 0;
1140
+ }
1141
+ function buildShareOgDescriptionFromSections(sections) {
1142
+ return joinShareOgDescriptionSections(sections);
1143
+ }
1144
+ function buildShareOgDescription(_title, description) {
1145
+ return joinShareOgDescriptionSections(
1146
+ splitShareDescriptionSections(description)
1147
+ );
1148
+ }
1149
+ function stripOverlaySubtitleSpecialChars(text) {
1150
+ const regex = /[^\p{L}\p{M}\p{N}\s.,!?'"&\-():;/]/gu;
1151
+ const result = text.replace(/\p{Extended_Pictographic}/gu, "").replace(regex, "");
1152
+ return result.trim();
1153
+ }
1154
+
1011
1155
  // src/types/auth.ts
1012
1156
  var EnumVerificationType = /* @__PURE__ */ ((EnumVerificationType2) => {
1013
1157
  EnumVerificationType2["REGISTER"] = "register";
@@ -1145,7 +1289,8 @@ var removeTypename = (obj) => {
1145
1289
  return obj;
1146
1290
  };
1147
1291
  var truncateText = (text, maxLength = 30) => {
1148
- return text.length > maxLength ? text.substring(0, maxLength) + "..." : text;
1292
+ const result = stripOverlaySubtitleSpecialChars(text);
1293
+ return result.length > maxLength ? result.substring(0, maxLength) + "..." : result;
1149
1294
  };
1150
1295
  var mapArrayToOptions = (items) => items.map((item) => ({
1151
1296
  label: item,
@@ -8725,73 +8870,6 @@ var otherImages = Object.fromEntries(
8725
8870
  Object.entries(otherImagesFiles).map(([key, file]) => [key, `${PKG}/images/${file}`])
8726
8871
  );
8727
8872
 
8728
- // src/sharing/relationShareTypes.ts
8729
- var RELATION_SHARE_INVITATION = "invitation";
8730
- var RELATION_SHARE_APPLICATION = "application";
8731
- var RELATION_OVERLAY_LAYOUT_VERSION = 36;
8732
- var RELATION_SHARE_RESOURCE_TYPES = [
8733
- RELATION_SHARE_INVITATION,
8734
- RELATION_SHARE_APPLICATION
8735
- ];
8736
- function isRelationShareResourceType(resourceType) {
8737
- return RELATION_SHARE_RESOURCE_TYPES.includes(
8738
- resourceType
8739
- );
8740
- }
8741
-
8742
- // src/sharing/constants.ts
8743
- var SOCIAL_IMAGE_WIDTH = 1200;
8744
- var SOCIAL_IMAGE_HEIGHT = 630;
8745
- var SHARE_SITE_URL = CLUEMART_MAIN_DOMAIN_URL;
8746
- var SHARE_CALENDAR_ICON = "\u{1F4C5}";
8747
- var SHARE_MARKET_DATES_SECTION_HEADING = `${SHARE_CALENDAR_ICON} Market dates:`;
8748
- var SHARE_CHECKMARK_ICON = "\u2705";
8749
- var SHARE_REQUIREMENTS_SECTION_HEADING = `${SHARE_CHECKMARK_ICON} Requirements:`;
8750
- var SHARE_INFO_ICON = "\u2139\uFE0F";
8751
- var SHARE_TAGS_SECTION_HEADING = `${SHARE_INFO_ICON} Tags:`;
8752
- var SHARE_RAIN_OR_SHINE_LINE = "Rain or Shine";
8753
- var SHARE_FOOD_TRUCK_LINE = "Food Truck";
8754
- var SHARE_COMPLIANCE_PREFIX = `${SHARE_CHECKMARK_ICON} Compliance:`;
8755
- var SHARE_CATEGORY_ICON = "\u{1F3F7}\uFE0F";
8756
- var SHARE_CATEGORIES_SECTION_HEADING = `${SHARE_CATEGORY_ICON} Categories:`;
8757
- var SHARE_RULER_ICON = "\u{1F4CF}";
8758
- var SHARE_STALL_SIZE_PREFIX = `${SHARE_RULER_ICON} Stall size:`;
8759
- var SHARE_DOLLAR_ICON = "$";
8760
- var SHARE_PRICE_RANGE_PREFIX = `${SHARE_DOLLAR_ICON} Price range:`;
8761
- var SHARE_CLOCK_ICON = "\u23F0";
8762
- var SHARE_APPLICATION_DEADLINE_PREFIX = `${SHARE_CLOCK_ICON} Application deadline:`;
8763
- var SHARE_MORE_INFO_LINE = "Shared from ClueMart";
8764
- var DEFAULT_SHARE_OG_IMAGE = `${SHARE_SITE_URL}/assets/logo.webp`;
8765
- var RESOURCE_SHARE_TYPES = [
8766
- "market",
8767
- "stallholder",
8768
- "partner",
8769
- "affiliate",
8770
- "school"
8771
- ];
8772
- var POST_SHARE_RESOURCE_TYPES = [
8773
- "market_faces",
8774
- "clue_bites",
8775
- "play_and_win"
8776
- ];
8777
- var SHARE_RESOURCE_LABEL = {
8778
- [RELATION_SHARE_APPLICATION]: "Application",
8779
- [RELATION_SHARE_INVITATION]: "Invitation",
8780
- clue_bites: "Clue Bites",
8781
- market_faces: "Market Faces",
8782
- play_and_win: "Play & Win",
8783
- market: "Market",
8784
- partner: "Partner",
8785
- stallholder: "Stallholder",
8786
- affiliate: "Affiliate",
8787
- school: "School"
8788
- };
8789
- function isPostShareResourceType(resourceType) {
8790
- return POST_SHARE_RESOURCE_TYPES.includes(
8791
- resourceType
8792
- );
8793
- }
8794
-
8795
8873
  // src/sharing/formatCategoryLabel.ts
8796
8874
  function formatCategoryLabel(category) {
8797
8875
  const subcategoryNames = category.subcategories.map((subcategory) => subcategory.name).filter(Boolean);
@@ -8801,26 +8879,6 @@ function formatCategoryLabel(category) {
8801
8879
  return `${category.name} (${subcategoryNames.join(", ")})`;
8802
8880
  }
8803
8881
 
8804
- // src/sharing/joinShareDescriptionSections.ts
8805
- var SHARE_DESCRIPTION_SECTION_BREAK = "\n\n";
8806
- var OG_DESCRIPTION_LINE_BREAK = "
";
8807
- function joinShareOgDescriptionSections(sections) {
8808
- return sections.map((section) => typeof section === "string" ? section.trim() : "").filter((section) => section.length > 0).map((section) => section.replace(/\n/g, OG_DESCRIPTION_LINE_BREAK)).join(OG_DESCRIPTION_LINE_BREAK);
8809
- }
8810
- function joinShareDescriptionSections(sections) {
8811
- return sections.filter((section) => Boolean(section)).join(SHARE_DESCRIPTION_SECTION_BREAK);
8812
- }
8813
- function appendShareMoreInfoLine(description) {
8814
- const trimmed = description.trim();
8815
- if (trimmed.startsWith(SHARE_MORE_INFO_LINE)) {
8816
- return trimmed;
8817
- }
8818
- if (trimmed.length === 0) {
8819
- return SHARE_MORE_INFO_LINE;
8820
- }
8821
- return joinShareDescriptionSections([SHARE_MORE_INFO_LINE, trimmed]);
8822
- }
8823
-
8824
8882
  // src/sharing/buildRelationShareDescription.ts
8825
8883
  function formatShareMarketDate(dateStr) {
8826
8884
  return formatDate(dateStr, "date");
@@ -8952,61 +9010,6 @@ function buildShareUrl(type, slug, utmMedium = "app") {
8952
9010
  return `${SHARE_SITE_URL}/${type}/${encodeURIComponent(slug)}?utm_source=share&utm_medium=${utmMedium}&utm_campaign=${type}`;
8953
9011
  }
8954
9012
 
8955
- // src/sharing/normalizeShareDescription.ts
8956
- var LEADING_WHITESPACE = /^[ \t]*/;
8957
- function normalizeShareText(value) {
8958
- if (value == null) {
8959
- return "";
8960
- }
8961
- return value.trim().split("\n").map((line) => {
8962
- const leading = LEADING_WHITESPACE.exec(line)?.[0] ?? "";
8963
- const rest = line.slice(leading.length).trim().replace(/[ \t]{2,}/g, " ");
8964
- return leading + rest;
8965
- }).join("\n").replace(/\n{3,}/g, "\n\n");
8966
- }
8967
- function shareMessageFooterPlacementForType(_shareType) {
8968
- return "before-body";
8969
- }
8970
- function buildShareMessageSections(input) {
8971
- const title = normalizeShareText(input.title);
8972
- const description = normalizeShareText(input.description);
8973
- return [SHARE_MORE_INFO_LINE, title, description].filter(
8974
- (section) => section.length > 0
8975
- );
8976
- }
8977
- function splitShareDescriptionSections(value) {
8978
- const trimmed = normalizeShareText(value);
8979
- if (!trimmed) {
8980
- return [];
8981
- }
8982
- if (/\n\n/.test(trimmed)) {
8983
- return trimmed.split(/\n\n+/).map((section) => normalizeShareText(section)).filter((section) => section.length > 0);
8984
- }
8985
- if (/\n/.test(trimmed)) {
8986
- return trimmed.split(/\n+/).map((section) => normalizeShareText(section)).filter((section) => section.length > 0);
8987
- }
8988
- return [trimmed];
8989
- }
8990
- function normalizeShareOgDescription(value) {
8991
- return joinShareOgDescriptionSections(splitShareDescriptionSections(value));
8992
- }
8993
- function buildFacebookShareQuote(title, description, shareType) {
8994
- const sections = buildShareMessageSections({ description, shareType, title });
8995
- const quote = sections.join(SHARE_DESCRIPTION_SECTION_BREAK).trim();
8996
- return quote.length > 0 ? quote : void 0;
8997
- }
8998
- function buildShareOgDescriptionFromSections(sections) {
8999
- return joinShareOgDescriptionSections(sections);
9000
- }
9001
- function buildShareOgDescription(_title, description) {
9002
- return joinShareOgDescriptionSections(
9003
- splitShareDescriptionSections(description)
9004
- );
9005
- }
9006
- function stripOverlaySubtitleSpecialChars(text) {
9007
- return text.replace(/\p{Extended_Pictographic}/gu, "").replace(/[^\p{L}\p{M}\p{N}\s.,!?'"&\-():;/]/gu, "");
9008
- }
9009
-
9010
9013
  // src/sharing/normalizeShareRouteId.ts
9011
9014
  function normalizeShareRouteId(id) {
9012
9015
  try {