@timardex/cluemart-shared 1.5.792 → 1.5.794

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
@@ -184,6 +184,7 @@ __export(index_exports, {
184
184
  foodFlavourOptions: () => foodFlavourOptions,
185
185
  formatCategoryLabel: () => formatCategoryLabel,
186
186
  formatDate: () => formatDate,
187
+ formatNZBankAccount: () => formatNZBankAccount,
187
188
  formatShareApplicationCategoriesSection: () => formatShareApplicationCategoriesSection,
188
189
  formatShareApplicationComplianceSection: () => formatShareApplicationComplianceSection,
189
190
  formatShareApplicationPriceRangeLine: () => formatShareApplicationPriceRangeLine,
@@ -1008,6 +1009,150 @@ var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
1008
1009
  var import_timezone = __toESM(require("dayjs/plugin/timezone.js"));
1009
1010
  var import_utc = __toESM(require("dayjs/plugin/utc.js"));
1010
1011
 
1012
+ // src/sharing/relationShareTypes.ts
1013
+ var RELATION_SHARE_INVITATION = "invitation";
1014
+ var RELATION_SHARE_APPLICATION = "application";
1015
+ var RELATION_OVERLAY_LAYOUT_VERSION = 36;
1016
+ var RELATION_SHARE_RESOURCE_TYPES = [
1017
+ RELATION_SHARE_INVITATION,
1018
+ RELATION_SHARE_APPLICATION
1019
+ ];
1020
+ function isRelationShareResourceType(resourceType) {
1021
+ return RELATION_SHARE_RESOURCE_TYPES.includes(
1022
+ resourceType
1023
+ );
1024
+ }
1025
+
1026
+ // src/sharing/constants.ts
1027
+ var SOCIAL_IMAGE_WIDTH = 1200;
1028
+ var SOCIAL_IMAGE_HEIGHT = 630;
1029
+ var SHARE_SITE_URL = "https://cluemart.co.nz";
1030
+ var SHARE_CALENDAR_ICON = "\u{1F4C5}";
1031
+ var SHARE_MARKET_DATES_SECTION_HEADING = `${SHARE_CALENDAR_ICON} Market dates:`;
1032
+ var SHARE_CHECKMARK_ICON = "\u2705";
1033
+ var SHARE_REQUIREMENTS_SECTION_HEADING = `${SHARE_CHECKMARK_ICON} Requirements:`;
1034
+ var SHARE_INFO_ICON = "\u2139\uFE0F";
1035
+ var SHARE_TAGS_SECTION_HEADING = `${SHARE_INFO_ICON} Tags:`;
1036
+ var SHARE_RAIN_OR_SHINE_LINE = "Rain or Shine";
1037
+ var SHARE_FOOD_TRUCK_LINE = "Food Truck";
1038
+ var SHARE_COMPLIANCE_PREFIX = `${SHARE_CHECKMARK_ICON} Compliance:`;
1039
+ var SHARE_CATEGORY_ICON = "\u{1F3F7}\uFE0F";
1040
+ var SHARE_CATEGORIES_SECTION_HEADING = `${SHARE_CATEGORY_ICON} Categories:`;
1041
+ var SHARE_RULER_ICON = "\u{1F4CF}";
1042
+ var SHARE_STALL_SIZE_PREFIX = `${SHARE_RULER_ICON} Stall size:`;
1043
+ var SHARE_DOLLAR_ICON = "$";
1044
+ var SHARE_PRICE_RANGE_PREFIX = `${SHARE_DOLLAR_ICON} Price range:`;
1045
+ var SHARE_CLOCK_ICON = "\u23F0";
1046
+ var SHARE_APPLICATION_DEADLINE_PREFIX = `${SHARE_CLOCK_ICON} Application deadline:`;
1047
+ var SHARE_MORE_INFO_LINE = "Shared from ClueMart";
1048
+ var DEFAULT_SHARE_OG_IMAGE = `${SHARE_SITE_URL}/assets/logo.webp`;
1049
+ var RESOURCE_SHARE_TYPES = [
1050
+ "market",
1051
+ "stallholder",
1052
+ "partner",
1053
+ "affiliate",
1054
+ "school"
1055
+ ];
1056
+ var POST_SHARE_RESOURCE_TYPES = [
1057
+ "market_faces",
1058
+ "clue_bites",
1059
+ "play_and_win"
1060
+ ];
1061
+ var SHARE_RESOURCE_LABEL = {
1062
+ [RELATION_SHARE_APPLICATION]: "Application",
1063
+ [RELATION_SHARE_INVITATION]: "Invitation",
1064
+ clue_bites: "Clue Bites",
1065
+ market_faces: "Market Faces",
1066
+ play_and_win: "Play & Win",
1067
+ market: "Market",
1068
+ partner: "Partner",
1069
+ stallholder: "Stallholder",
1070
+ affiliate: "Affiliate",
1071
+ school: "School"
1072
+ };
1073
+ function isPostShareResourceType(resourceType) {
1074
+ return POST_SHARE_RESOURCE_TYPES.includes(
1075
+ resourceType
1076
+ );
1077
+ }
1078
+
1079
+ // src/sharing/joinShareDescriptionSections.ts
1080
+ var SHARE_DESCRIPTION_SECTION_BREAK = "\n\n";
1081
+ var OG_DESCRIPTION_LINE_BREAK = "
";
1082
+ function joinShareOgDescriptionSections(sections) {
1083
+ 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);
1084
+ }
1085
+ function joinShareDescriptionSections(sections) {
1086
+ return sections.filter((section) => Boolean(section)).join(SHARE_DESCRIPTION_SECTION_BREAK);
1087
+ }
1088
+ function appendShareMoreInfoLine(description) {
1089
+ const trimmed = description.trim();
1090
+ if (trimmed.startsWith(SHARE_MORE_INFO_LINE)) {
1091
+ return trimmed;
1092
+ }
1093
+ if (trimmed.length === 0) {
1094
+ return SHARE_MORE_INFO_LINE;
1095
+ }
1096
+ return joinShareDescriptionSections([SHARE_MORE_INFO_LINE, trimmed]);
1097
+ }
1098
+
1099
+ // src/sharing/normalizeShareDescription.ts
1100
+ var LEADING_WHITESPACE = /^[ \t]*/;
1101
+ function normalizeShareText(value) {
1102
+ if (value == null) {
1103
+ return "";
1104
+ }
1105
+ return value.trim().split("\n").map((line) => {
1106
+ const leading = LEADING_WHITESPACE.exec(line)?.[0] ?? "";
1107
+ const rest = line.slice(leading.length).trim().replace(/[ \t]{2,}/g, " ");
1108
+ return leading + rest;
1109
+ }).join("\n").replace(/\n{3,}/g, "\n\n");
1110
+ }
1111
+ function shareMessageFooterPlacementForType(_shareType) {
1112
+ return "before-body";
1113
+ }
1114
+ function buildShareMessageSections(input) {
1115
+ const title = normalizeShareText(input.title);
1116
+ const description = normalizeShareText(input.description);
1117
+ return [SHARE_MORE_INFO_LINE, title, description].filter(
1118
+ (section) => section.length > 0
1119
+ );
1120
+ }
1121
+ function splitShareDescriptionSections(value) {
1122
+ const trimmed = normalizeShareText(value);
1123
+ if (!trimmed) {
1124
+ return [];
1125
+ }
1126
+ if (/\n\n/.test(trimmed)) {
1127
+ return trimmed.split(/\n\n+/).map((section) => normalizeShareText(section)).filter((section) => section.length > 0);
1128
+ }
1129
+ if (/\n/.test(trimmed)) {
1130
+ return trimmed.split(/\n+/).map((section) => normalizeShareText(section)).filter((section) => section.length > 0);
1131
+ }
1132
+ return [trimmed];
1133
+ }
1134
+ function normalizeShareOgDescription(value) {
1135
+ return joinShareOgDescriptionSections(splitShareDescriptionSections(value));
1136
+ }
1137
+ function buildFacebookShareQuote(title, description, shareType) {
1138
+ const sections = buildShareMessageSections({ description, shareType, title });
1139
+ const quote = sections.join(SHARE_DESCRIPTION_SECTION_BREAK).trim();
1140
+ return quote.length > 0 ? quote : void 0;
1141
+ }
1142
+ function buildShareOgDescriptionFromSections(sections) {
1143
+ return joinShareOgDescriptionSections(sections);
1144
+ }
1145
+ function buildShareOgDescription(_title, description) {
1146
+ return joinShareOgDescriptionSections(
1147
+ splitShareDescriptionSections(description)
1148
+ );
1149
+ }
1150
+ function stripOverlaySubtitleSpecialChars(text) {
1151
+ const regex = /[^\p{L}\p{M}\p{N}\s.,!?'"&\-():;/]/gu;
1152
+ const result = text.replace(/\p{Extended_Pictographic}/gu, "").replace(regex, "");
1153
+ return result.trim();
1154
+ }
1155
+
1011
1156
  // src/types/auth.ts
1012
1157
  var EnumVerificationType = /* @__PURE__ */ ((EnumVerificationType2) => {
1013
1158
  EnumVerificationType2["REGISTER"] = "register";
@@ -1145,7 +1290,8 @@ var removeTypename = (obj) => {
1145
1290
  return obj;
1146
1291
  };
1147
1292
  var truncateText = (text, maxLength = 30) => {
1148
- return text.length > maxLength ? text.substring(0, maxLength) + "..." : text;
1293
+ const result = stripOverlaySubtitleSpecialChars(text);
1294
+ return result.length > maxLength ? result.substring(0, maxLength) + "..." : result;
1149
1295
  };
1150
1296
  var mapArrayToOptions = (items) => items.map((item) => ({
1151
1297
  label: item,
@@ -1227,6 +1373,15 @@ var PostTypeLabels = {
1227
1373
  };
1228
1374
  var CM_SCHOOL_PROMO_CODE = `${PROMO_CODE_PREFIX}SCHOOL`;
1229
1375
  var CM_AFFILIATE_PROMO_CODE = `${PROMO_CODE_PREFIX}AFFILIATE`;
1376
+ function formatNZBankAccount(input) {
1377
+ const digitsOnly = input.replaceAll(/\D/g, "");
1378
+ const parts = [];
1379
+ if (digitsOnly.length > 0) parts.push(digitsOnly.slice(0, 2));
1380
+ if (digitsOnly.length > 2) parts.push(digitsOnly.slice(2, 6));
1381
+ if (digitsOnly.length > 6) parts.push(digitsOnly.slice(6, 13));
1382
+ if (digitsOnly.length > 13) parts.push(digitsOnly.slice(13, 15));
1383
+ return parts.join("-");
1384
+ }
1230
1385
 
1231
1386
  // src/utils/date.ts
1232
1387
  var dateFormat = "DD-MM-YYYY";
@@ -8725,73 +8880,6 @@ var otherImages = Object.fromEntries(
8725
8880
  Object.entries(otherImagesFiles).map(([key, file]) => [key, `${PKG}/images/${file}`])
8726
8881
  );
8727
8882
 
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
8883
  // src/sharing/formatCategoryLabel.ts
8796
8884
  function formatCategoryLabel(category) {
8797
8885
  const subcategoryNames = category.subcategories.map((subcategory) => subcategory.name).filter(Boolean);
@@ -8801,26 +8889,6 @@ function formatCategoryLabel(category) {
8801
8889
  return `${category.name} (${subcategoryNames.join(", ")})`;
8802
8890
  }
8803
8891
 
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
8892
  // src/sharing/buildRelationShareDescription.ts
8825
8893
  function formatShareMarketDate(dateStr) {
8826
8894
  return formatDate(dateStr, "date");
@@ -8952,61 +9020,6 @@ function buildShareUrl(type, slug, utmMedium = "app") {
8952
9020
  return `${SHARE_SITE_URL}/${type}/${encodeURIComponent(slug)}?utm_source=share&utm_medium=${utmMedium}&utm_campaign=${type}`;
8953
9021
  }
8954
9022
 
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
9023
  // src/sharing/normalizeShareRouteId.ts
9011
9024
  function normalizeShareRouteId(id) {
9012
9025
  try {
@@ -9228,6 +9241,7 @@ var fonts = {
9228
9241
  foodFlavourOptions,
9229
9242
  formatCategoryLabel,
9230
9243
  formatDate,
9244
+ formatNZBankAccount,
9231
9245
  formatShareApplicationCategoriesSection,
9232
9246
  formatShareApplicationComplianceSection,
9233
9247
  formatShareApplicationPriceRangeLine,