@sendbird/uikit-utils 3.7.5 → 3.8.0

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 (71) hide show
  1. package/lib/commonjs/hooks/index.js +2 -5
  2. package/lib/commonjs/hooks/index.js.map +1 -1
  3. package/lib/commonjs/hooks/react-native.js +23 -7
  4. package/lib/commonjs/hooks/react-native.js.map +1 -1
  5. package/lib/commonjs/index.js +16 -6
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/sendbird/attrs.js +2 -4
  8. package/lib/commonjs/sendbird/attrs.js.map +1 -1
  9. package/lib/commonjs/sendbird/channel.js.map +1 -1
  10. package/lib/commonjs/sendbird/message.js +6 -11
  11. package/lib/commonjs/sendbird/message.js.map +1 -1
  12. package/lib/commonjs/sendbird/user.js.map +1 -1
  13. package/lib/commonjs/shared/arrayToMap.js.map +1 -1
  14. package/lib/commonjs/shared/bufferedRequest.js +8 -8
  15. package/lib/commonjs/shared/bufferedRequest.js.map +1 -1
  16. package/lib/commonjs/shared/file.js +5 -10
  17. package/lib/commonjs/shared/file.js.map +1 -1
  18. package/lib/commonjs/shared/index.js.map +1 -1
  19. package/lib/commonjs/shared/logger.js +7 -24
  20. package/lib/commonjs/shared/logger.js.map +1 -1
  21. package/lib/commonjs/shared/regex.js +17 -24
  22. package/lib/commonjs/shared/regex.js.map +1 -1
  23. package/lib/commonjs/shared/rtl.js +52 -0
  24. package/lib/commonjs/shared/rtl.js.map +1 -0
  25. package/lib/commonjs/types.js.map +1 -1
  26. package/lib/commonjs/ui-format/common.js +4 -9
  27. package/lib/commonjs/ui-format/common.js.map +1 -1
  28. package/lib/commonjs/ui-format/groupChannel.js +7 -17
  29. package/lib/commonjs/ui-format/groupChannel.js.map +1 -1
  30. package/lib/commonjs/ui-format/openChannel.js +1 -2
  31. package/lib/commonjs/ui-format/openChannel.js.map +1 -1
  32. package/lib/module/hooks/index.js +2 -5
  33. package/lib/module/hooks/index.js.map +1 -1
  34. package/lib/module/hooks/react-native.js +24 -8
  35. package/lib/module/hooks/react-native.js.map +1 -1
  36. package/lib/module/index.js +1 -0
  37. package/lib/module/index.js.map +1 -1
  38. package/lib/module/sendbird/attrs.js.map +1 -1
  39. package/lib/module/sendbird/channel.js.map +1 -1
  40. package/lib/module/sendbird/message.js +6 -11
  41. package/lib/module/sendbird/message.js.map +1 -1
  42. package/lib/module/sendbird/user.js.map +1 -1
  43. package/lib/module/shared/arrayToMap.js.map +1 -1
  44. package/lib/module/shared/bufferedRequest.js +8 -8
  45. package/lib/module/shared/bufferedRequest.js.map +1 -1
  46. package/lib/module/shared/file.js +2 -4
  47. package/lib/module/shared/file.js.map +1 -1
  48. package/lib/module/shared/index.js.map +1 -1
  49. package/lib/module/shared/logger.js +6 -22
  50. package/lib/module/shared/logger.js.map +1 -1
  51. package/lib/module/shared/regex.js +12 -14
  52. package/lib/module/shared/regex.js.map +1 -1
  53. package/lib/module/shared/rtl.js +44 -0
  54. package/lib/module/shared/rtl.js.map +1 -0
  55. package/lib/module/types.js.map +1 -1
  56. package/lib/module/ui-format/common.js +4 -9
  57. package/lib/module/ui-format/common.js.map +1 -1
  58. package/lib/module/ui-format/groupChannel.js +7 -17
  59. package/lib/module/ui-format/groupChannel.js.map +1 -1
  60. package/lib/module/ui-format/openChannel.js +1 -2
  61. package/lib/module/ui-format/openChannel.js.map +1 -1
  62. package/lib/typescript/src/hooks/react-native.d.ts +3 -3
  63. package/lib/typescript/src/index.d.ts +1 -0
  64. package/lib/typescript/src/shared/rtl.d.ts +2 -0
  65. package/lib/typescript/src/types.d.ts +2 -1
  66. package/package.json +3 -3
  67. package/src/hooks/react-native.ts +28 -9
  68. package/src/index.ts +1 -0
  69. package/src/sendbird/message.ts +1 -1
  70. package/src/shared/rtl.ts +45 -0
  71. package/src/types.ts +2 -0
@@ -53,12 +53,9 @@ const EXTENSION_MIME_MAP = {
53
53
  'json': 'application/json',
54
54
  'gzip': 'application/x-gzip'
55
55
  };
56
- const imageExtRegex = /jpeg|jpg|png|webp|gif/i;
57
- exports.imageExtRegex = imageExtRegex;
58
- const audioExtRegex = /3gp|aac|aax|act|aiff|flac|gsm|m4a|m4b|m4p|tta|wma|mp3|webm|wav|ogg/i;
59
- exports.audioExtRegex = audioExtRegex;
60
- const videoExtRegex = /mov|vod|mp4|avi|mpeg|ogv/i;
61
- exports.videoExtRegex = videoExtRegex;
56
+ const imageExtRegex = exports.imageExtRegex = /jpeg|jpg|png|webp|gif/i;
57
+ const audioExtRegex = exports.audioExtRegex = /3gp|aac|aax|act|aiff|flac|gsm|m4a|m4b|m4p|tta|wma|mp3|webm|wav|ogg/i;
58
+ const videoExtRegex = exports.videoExtRegex = /mov|vod|mp4|avi|mpeg|ogv/i;
62
59
  const getFileType = extensionOrType => {
63
60
  const lowerCased = extensionOrType.toLowerCase();
64
61
 
@@ -172,8 +169,7 @@ function parseMimeType(mimeType) {
172
169
  */
173
170
  function getFileExtensionFromMime(mimeType) {
174
171
  if (!mimeType) return '';
175
- const MIME_EXTENSION_MAP = Object.entries(EXTENSION_MIME_MAP).reduce((acc, _ref) => {
176
- let [key, value] = _ref;
172
+ const MIME_EXTENSION_MAP = Object.entries(EXTENSION_MIME_MAP).reduce((acc, [key, value]) => {
177
173
  acc[value] = key;
178
174
  return acc;
179
175
  }, {});
@@ -216,8 +212,7 @@ function isImage(filePath, mimeType) {
216
212
  const type = getFileType(mimeType || getFileExtension(filePath));
217
213
  return type === 'image';
218
214
  }
219
- function shouldCompressImage(mime) {
220
- let compressionEnabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
215
+ function shouldCompressImage(mime, compressionEnabled = true) {
221
216
  const extension = isJPG(mime) ? 'jpg' : getFileExtensionFromMime(mime);
222
217
  return Boolean(extension.match(/jpg|jpeg|png/i) && compressionEnabled);
223
218
  }
@@ -1 +1 @@
1
- {"version":3,"names":["EXTENSION_MIME_MAP","imageExtRegex","exports","audioExtRegex","videoExtRegex","getFileType","extensionOrType","lowerCased","toLowerCase","indexOf","type","split","match","startsWith","getDownscaleSize","origin","resizing","ratio","maxWidth","width","maxHeight","height","Math","min","normalizeFileName","fileName","extension","_extension","_filename","hasExtension","lastIndexOf","length","parseMimeType","mimeType","fullType","parts","subtype","parameters","part","name","value","trim","getFileExtensionFromMime","MIME_EXTENSION_MAP","Object","entries","reduce","acc","_ref","key","getMimeFromFileExtension","ext","sliceIdx","extWithoutDot","slice","getFileExtension","filePath","pathWithoutParams","idx","result","getFileExtensionFromUri","uri","fetch","then","response","headers","get","isImage","shouldCompressImage","mime","compressionEnabled","arguments","undefined","isJPG","Boolean"],"sources":["file.ts"],"sourcesContent":["const EXTENSION_MIME_MAP = {\n // Image\n 'jpeg': 'image/jpeg',\n 'jpg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'svg': 'image/svg+xml',\n\n // Video\n '3gp': 'video/3gpp',\n 'mp4': 'video/mp4',\n 'mpeg': 'video/mpeg',\n 'ogv': 'video/ogg',\n 'video/quicktime': 'mov',\n 'webm': 'video/webm',\n 'avi': 'video/x-msvideo',\n\n // Audio\n 'aac': 'audio/aac',\n 'm4a': 'audio/m4a',\n 'mid': 'audio/midi',\n 'mp3': 'audio/mpeg',\n 'ogg': 'audio/ogg',\n 'wav': 'audio/wav',\n 'weba': 'audio/webm',\n\n // Files\n 'txt': 'text/plain',\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'zip': 'application/zip',\n 'json': 'application/json',\n 'gzip': 'application/x-gzip',\n} as Record<string, string>;\n\nexport const imageExtRegex = /jpeg|jpg|png|webp|gif/i;\nexport const audioExtRegex = /3gp|aac|aax|act|aiff|flac|gsm|m4a|m4b|m4p|tta|wma|mp3|webm|wav|ogg/i;\nexport const videoExtRegex = /mov|vod|mp4|avi|mpeg|ogv/i;\nexport const getFileType = (extensionOrType: string) => {\n const lowerCased = extensionOrType.toLowerCase();\n\n // mime type\n if (lowerCased.indexOf('/') > -1) {\n const type = lowerCased.split('/')[0];\n if (type === 'video') return 'video';\n if (type === 'audio') return 'audio';\n if (type === 'image') return 'image';\n return 'file';\n }\n\n // extensions\n if (lowerCased.match(imageExtRegex)) return 'image';\n if (lowerCased.match(audioExtRegex)) return 'audio';\n if (lowerCased.match(videoExtRegex)) return 'video';\n\n // others\n if (lowerCased.startsWith('image')) return 'image';\n if (lowerCased.startsWith('audio')) return 'audio';\n if (lowerCased.startsWith('video')) return 'video';\n\n return 'file';\n};\n\n/**\n * Calculates the downscaled size of an image while preserving its aspect ratio.\n *\n * @param {Object} origin - The original size object with `width` and `height` properties.\n * @param {Object} resizing - The resizing object with optional `width` and `height` properties.\n * @returns {Object} - A new size object with the downscaled `width` and `height` properties.\n * @example\n * ```ts\n * getDownscaleSize({ width: 1200, height: 800 }, { width: 600 }); // returns { width: 600, height: 400 }\n * ```\n */\ntype Size = { width: number; height: number };\nexport function getDownscaleSize(origin: Size, resizing: Partial<Size>) {\n let ratio: number;\n\n const maxWidth = resizing.width || origin.width,\n maxHeight = resizing.height || origin.height;\n\n if (origin.width <= maxWidth && origin.height <= maxHeight) {\n ratio = 1;\n } else if (origin.width > maxWidth && origin.height <= maxHeight) {\n ratio = maxWidth / origin.width;\n } else if (origin.width <= maxWidth && origin.height > maxHeight) {\n ratio = maxHeight / origin.height;\n } else {\n ratio = Math.min(maxWidth / origin.width, maxHeight / origin.height);\n }\n\n return { width: origin.width * ratio, height: origin.height * ratio };\n}\n\n/**\n * Normalize a file name by ensuring it has the given extension, if it doesn't already.\n *\n * @param {string} fileName - The file name to normalize.\n * @param {string} extension - The desired extension, without a leading period.\n * @returns {string} - The normalized file name, with the extension.\n */\nexport function normalizeFileName(fileName: string, extension: string) {\n if (!extension) return fileName;\n\n // .extension\n let _extension = extension.toLowerCase();\n if (_extension.indexOf('.') !== 0) {\n _extension = '.' + _extension;\n }\n\n // filename.extension | filename\n const _filename = fileName.toLowerCase();\n const hasExtension = _filename.lastIndexOf(_extension) === _filename.length - _extension.length;\n if (!hasExtension) {\n // filename.extension\n return fileName + _extension;\n } else {\n // filename.extension\n return fileName;\n }\n}\n\n/**\n * Parses a MIME type string into its components.\n *\n * @param mimeType - The MIME type string to parse.\n * @returns An object containing the type, subtype, and parameters of the MIME type.\n */\ntype MimeType = { type: string; subtype: string; parameters: Record<string, string> };\nexport function parseMimeType(mimeType: string): MimeType {\n const [fullType, ...parts] = mimeType.split(';');\n const [type, subtype] = fullType.split('/');\n const parameters: MimeType['parameters'] = {};\n\n for (const part of parts) {\n const [name, value] = part.trim().split('=');\n parameters[name] = value;\n }\n\n return { type, subtype, parameters };\n}\n\n/**\n * Returns the file extension based on the MIME type.\n *\n * @param {string | null | undefined} mimeType - The MIME type to look up.\n * @returns {string} - The file extension for the given MIME type, or an empty string if no matching file extension was found.\n */\nexport function getFileExtensionFromMime(mimeType?: string | null): string {\n if (!mimeType) return '';\n const MIME_EXTENSION_MAP = Object.entries(EXTENSION_MIME_MAP).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n }, {} as Record<string, string>);\n\n const extension = MIME_EXTENSION_MAP[mimeType.toLowerCase()];\n if (extension) return '.' + extension;\n return '';\n}\n\n/**\n * Returns the MIME type based on the file extension.\n *\n * @param {string | null | undefined} ext - The file extension to look up.\n * @returns {string} - The MIME type for the given file extension, or an empty string if no matching MIME type was found.\n */\nexport function getMimeFromFileExtension(ext?: string | null) {\n if (!ext) return '';\n\n const sliceIdx = ext.lastIndexOf('.');\n const extWithoutDot = sliceIdx === -1 ? ext : ext.slice(sliceIdx + 1);\n\n return EXTENSION_MIME_MAP[extWithoutDot.toLowerCase()] || '';\n}\n\n/**\n * Returns the file extension of a file path.\n *\n * @param {string} filePath - The file path to extract the extension from.\n * @returns {string} - The file extension, or an empty string if the file path does not have an extension.\n */\nexport function getFileExtension(filePath: string) {\n const pathWithoutParams = filePath.split('?')[0];\n\n const idx = pathWithoutParams.lastIndexOf('.');\n if (idx === -1) return '';\n\n const result = pathWithoutParams.slice(idx - pathWithoutParams.length).toLowerCase();\n if (result === '.') return '';\n else return result;\n}\n\nexport async function getFileExtensionFromUri(uri: string) {\n const type = await fetch(uri).then((response) => response.headers.get('content-type'));\n return getFileExtensionFromMime(type);\n}\n\nexport function isImage(filePath: string, mimeType?: string) {\n const type = getFileType(mimeType || getFileExtension(filePath));\n return type === 'image';\n}\n\nexport function shouldCompressImage(mime: string, compressionEnabled = true) {\n const extension = isJPG(mime) ? 'jpg' : getFileExtensionFromMime(mime);\n return Boolean(extension.match(/jpg|jpeg|png/i) && compressionEnabled);\n}\n\n/**\n * https://github.com/gathertown/sendbird-uikit-react-native/pull/29\n * This function is used solely for the purpose of classifying `image/jpg`.\n *\n * We only use it to determine whether image compression is applied because `image/jpg` is not a MIME type standard.\n * Therefore, it is not reflected in `EXTENSION_MIME_MAP`, which extracts MIME types uploaded to the server. (to comply standard)\n * */\nfunction isJPG(mime: string) {\n return mime === 'image/jpg';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,MAAMA,kBAAkB,GAAG;EACzB;EACA,MAAM,EAAE,YAAY;EACpB,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,WAAW;EAClB,KAAK,EAAE,WAAW;EAClB,MAAM,EAAE,YAAY;EACpB,KAAK,EAAE,eAAe;EAEtB;EACA,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,WAAW;EAClB,MAAM,EAAE,YAAY;EACpB,KAAK,EAAE,WAAW;EAClB,iBAAiB,EAAE,KAAK;EACxB,MAAM,EAAE,YAAY;EACpB,KAAK,EAAE,iBAAiB;EAExB;EACA,KAAK,EAAE,WAAW;EAClB,KAAK,EAAE,WAAW;EAClB,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,WAAW;EAClB,KAAK,EAAE,WAAW;EAClB,MAAM,EAAE,YAAY;EAEpB;EACA,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,iBAAiB;EACxB,KAAK,EAAE,oBAAoB;EAC3B,MAAM,EAAE,yEAAyE;EACjF,KAAK,EAAE,0BAA0B;EACjC,MAAM,EAAE,mEAAmE;EAC3E,KAAK,EAAE,+BAA+B;EACtC,MAAM,EAAE,2EAA2E;EACnF,KAAK,EAAE,iBAAiB;EACxB,MAAM,EAAE,kBAAkB;EAC1B,MAAM,EAAE;AACV,CAA2B;AAEpB,MAAMC,aAAa,GAAG,wBAAwB;AAACC,OAAA,CAAAD,aAAA,GAAAA,aAAA;AAC/C,MAAME,aAAa,GAAG,qEAAqE;AAACD,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAC5F,MAAMC,aAAa,GAAG,2BAA2B;AAACF,OAAA,CAAAE,aAAA,GAAAA,aAAA;AAClD,MAAMC,WAAW,GAAIC,eAAuB,IAAK;EACtD,MAAMC,UAAU,GAAGD,eAAe,CAACE,WAAW,EAAE;;EAEhD;EACA,IAAID,UAAU,CAACE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAChC,MAAMC,IAAI,GAAGH,UAAU,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,IAAID,IAAI,KAAK,OAAO,EAAE,OAAO,OAAO;IACpC,IAAIA,IAAI,KAAK,OAAO,EAAE,OAAO,OAAO;IACpC,IAAIA,IAAI,KAAK,OAAO,EAAE,OAAO,OAAO;IACpC,OAAO,MAAM;EACf;;EAEA;EACA,IAAIH,UAAU,CAACK,KAAK,CAACX,aAAa,CAAC,EAAE,OAAO,OAAO;EACnD,IAAIM,UAAU,CAACK,KAAK,CAACT,aAAa,CAAC,EAAE,OAAO,OAAO;EACnD,IAAII,UAAU,CAACK,KAAK,CAACR,aAAa,CAAC,EAAE,OAAO,OAAO;;EAEnD;EACA,IAAIG,UAAU,CAACM,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO;EAClD,IAAIN,UAAU,CAACM,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO;EAClD,IAAIN,UAAU,CAACM,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,OAAO;EAElD,OAAO,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVAX,OAAA,CAAAG,WAAA,GAAAA,WAAA;AAYO,SAASS,gBAAgBA,CAACC,MAAY,EAAEC,QAAuB,EAAE;EACtE,IAAIC,KAAa;EAEjB,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,KAAK,IAAIJ,MAAM,CAACI,KAAK;IAC7CC,SAAS,GAAGJ,QAAQ,CAACK,MAAM,IAAIN,MAAM,CAACM,MAAM;EAE9C,IAAIN,MAAM,CAACI,KAAK,IAAID,QAAQ,IAAIH,MAAM,CAACM,MAAM,IAAID,SAAS,EAAE;IAC1DH,KAAK,GAAG,CAAC;EACX,CAAC,MAAM,IAAIF,MAAM,CAACI,KAAK,GAAGD,QAAQ,IAAIH,MAAM,CAACM,MAAM,IAAID,SAAS,EAAE;IAChEH,KAAK,GAAGC,QAAQ,GAAGH,MAAM,CAACI,KAAK;EACjC,CAAC,MAAM,IAAIJ,MAAM,CAACI,KAAK,IAAID,QAAQ,IAAIH,MAAM,CAACM,MAAM,GAAGD,SAAS,EAAE;IAChEH,KAAK,GAAGG,SAAS,GAAGL,MAAM,CAACM,MAAM;EACnC,CAAC,MAAM;IACLJ,KAAK,GAAGK,IAAI,CAACC,GAAG,CAACL,QAAQ,GAAGH,MAAM,CAACI,KAAK,EAAEC,SAAS,GAAGL,MAAM,CAACM,MAAM,CAAC;EACtE;EAEA,OAAO;IAAEF,KAAK,EAAEJ,MAAM,CAACI,KAAK,GAAGF,KAAK;IAAEI,MAAM,EAAEN,MAAM,CAACM,MAAM,GAAGJ;EAAM,CAAC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,iBAAiBA,CAACC,QAAgB,EAAEC,SAAiB,EAAE;EACrE,IAAI,CAACA,SAAS,EAAE,OAAOD,QAAQ;;EAE/B;EACA,IAAIE,UAAU,GAAGD,SAAS,CAAClB,WAAW,EAAE;EACxC,IAAImB,UAAU,CAAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IACjCkB,UAAU,GAAG,GAAG,GAAGA,UAAU;EAC/B;;EAEA;EACA,MAAMC,SAAS,GAAGH,QAAQ,CAACjB,WAAW,EAAE;EACxC,MAAMqB,YAAY,GAAGD,SAAS,CAACE,WAAW,CAACH,UAAU,CAAC,KAAKC,SAAS,CAACG,MAAM,GAAGJ,UAAU,CAACI,MAAM;EAC/F,IAAI,CAACF,YAAY,EAAE;IACjB;IACA,OAAOJ,QAAQ,GAAGE,UAAU;EAC9B,CAAC,MAAM;IACL;IACA,OAAOF,QAAQ;EACjB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASO,aAAaA,CAACC,QAAgB,EAAY;EACxD,MAAM,CAACC,QAAQ,EAAE,GAAGC,KAAK,CAAC,GAAGF,QAAQ,CAACtB,KAAK,CAAC,GAAG,CAAC;EAChD,MAAM,CAACD,IAAI,EAAE0B,OAAO,CAAC,GAAGF,QAAQ,CAACvB,KAAK,CAAC,GAAG,CAAC;EAC3C,MAAM0B,UAAkC,GAAG,CAAC,CAAC;EAE7C,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;IACxB,MAAM,CAACI,IAAI,EAAEC,KAAK,CAAC,GAAGF,IAAI,CAACG,IAAI,EAAE,CAAC9B,KAAK,CAAC,GAAG,CAAC;IAC5C0B,UAAU,CAACE,IAAI,CAAC,GAAGC,KAAK;EAC1B;EAEA,OAAO;IAAE9B,IAAI;IAAE0B,OAAO;IAAEC;EAAW,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,wBAAwBA,CAACT,QAAwB,EAAU;EACzE,IAAI,CAACA,QAAQ,EAAE,OAAO,EAAE;EACxB,MAAMU,kBAAkB,GAAGC,MAAM,CAACC,OAAO,CAAC7C,kBAAkB,CAAC,CAAC8C,MAAM,CAAC,CAACC,GAAG,EAAAC,IAAA,KAAmB;IAAA,IAAjB,CAACC,GAAG,EAAET,KAAK,CAAC,GAAAQ,IAAA;IACrFD,GAAG,CAACP,KAAK,CAAC,GAAGS,GAAG;IAChB,OAAOF,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAA2B;EAEhC,MAAMrB,SAAS,GAAGiB,kBAAkB,CAACV,QAAQ,CAACzB,WAAW,EAAE,CAAC;EAC5D,IAAIkB,SAAS,EAAE,OAAO,GAAG,GAAGA,SAAS;EACrC,OAAO,EAAE;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASwB,wBAAwBA,CAACC,GAAmB,EAAE;EAC5D,IAAI,CAACA,GAAG,EAAE,OAAO,EAAE;EAEnB,MAAMC,QAAQ,GAAGD,GAAG,CAACrB,WAAW,CAAC,GAAG,CAAC;EACrC,MAAMuB,aAAa,GAAGD,QAAQ,KAAK,CAAC,CAAC,GAAGD,GAAG,GAAGA,GAAG,CAACG,KAAK,CAACF,QAAQ,GAAG,CAAC,CAAC;EAErE,OAAOpD,kBAAkB,CAACqD,aAAa,CAAC7C,WAAW,EAAE,CAAC,IAAI,EAAE;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS+C,gBAAgBA,CAACC,QAAgB,EAAE;EACjD,MAAMC,iBAAiB,GAAGD,QAAQ,CAAC7C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAEhD,MAAM+C,GAAG,GAAGD,iBAAiB,CAAC3B,WAAW,CAAC,GAAG,CAAC;EAC9C,IAAI4B,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE;EAEzB,MAAMC,MAAM,GAAGF,iBAAiB,CAACH,KAAK,CAACI,GAAG,GAAGD,iBAAiB,CAAC1B,MAAM,CAAC,CAACvB,WAAW,EAAE;EACpF,IAAImD,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,KACzB,OAAOA,MAAM;AACpB;AAEO,eAAeC,uBAAuBA,CAACC,GAAW,EAAE;EACzD,MAAMnD,IAAI,GAAG,MAAMoD,KAAK,CAACD,GAAG,CAAC,CAACE,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,OAAO,CAACC,GAAG,CAAC,cAAc,CAAC,CAAC;EACtF,OAAOxB,wBAAwB,CAAChC,IAAI,CAAC;AACvC;AAEO,SAASyD,OAAOA,CAACX,QAAgB,EAAEvB,QAAiB,EAAE;EAC3D,MAAMvB,IAAI,GAAGL,WAAW,CAAC4B,QAAQ,IAAIsB,gBAAgB,CAACC,QAAQ,CAAC,CAAC;EAChE,OAAO9C,IAAI,KAAK,OAAO;AACzB;AAEO,SAAS0D,mBAAmBA,CAACC,IAAY,EAA6B;EAAA,IAA3BC,kBAAkB,GAAAC,SAAA,CAAAxC,MAAA,QAAAwC,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;EACzE,MAAM7C,SAAS,GAAG+C,KAAK,CAACJ,IAAI,CAAC,GAAG,KAAK,GAAG3B,wBAAwB,CAAC2B,IAAI,CAAC;EACtE,OAAOK,OAAO,CAAChD,SAAS,CAACd,KAAK,CAAC,eAAe,CAAC,IAAI0D,kBAAkB,CAAC;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,KAAKA,CAACJ,IAAY,EAAE;EAC3B,OAAOA,IAAI,KAAK,WAAW;AAC7B"}
1
+ {"version":3,"names":["EXTENSION_MIME_MAP","imageExtRegex","exports","audioExtRegex","videoExtRegex","getFileType","extensionOrType","lowerCased","toLowerCase","indexOf","type","split","match","startsWith","getDownscaleSize","origin","resizing","ratio","maxWidth","width","maxHeight","height","Math","min","normalizeFileName","fileName","extension","_extension","_filename","hasExtension","lastIndexOf","length","parseMimeType","mimeType","fullType","parts","subtype","parameters","part","name","value","trim","getFileExtensionFromMime","MIME_EXTENSION_MAP","Object","entries","reduce","acc","key","getMimeFromFileExtension","ext","sliceIdx","extWithoutDot","slice","getFileExtension","filePath","pathWithoutParams","idx","result","getFileExtensionFromUri","uri","fetch","then","response","headers","get","isImage","shouldCompressImage","mime","compressionEnabled","isJPG","Boolean"],"sources":["file.ts"],"sourcesContent":["const EXTENSION_MIME_MAP = {\n // Image\n 'jpeg': 'image/jpeg',\n 'jpg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'svg': 'image/svg+xml',\n\n // Video\n '3gp': 'video/3gpp',\n 'mp4': 'video/mp4',\n 'mpeg': 'video/mpeg',\n 'ogv': 'video/ogg',\n 'video/quicktime': 'mov',\n 'webm': 'video/webm',\n 'avi': 'video/x-msvideo',\n\n // Audio\n 'aac': 'audio/aac',\n 'm4a': 'audio/m4a',\n 'mid': 'audio/midi',\n 'mp3': 'audio/mpeg',\n 'ogg': 'audio/ogg',\n 'wav': 'audio/wav',\n 'weba': 'audio/webm',\n\n // Files\n 'txt': 'text/plain',\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'zip': 'application/zip',\n 'json': 'application/json',\n 'gzip': 'application/x-gzip',\n} as Record<string, string>;\n\nexport const imageExtRegex = /jpeg|jpg|png|webp|gif/i;\nexport const audioExtRegex = /3gp|aac|aax|act|aiff|flac|gsm|m4a|m4b|m4p|tta|wma|mp3|webm|wav|ogg/i;\nexport const videoExtRegex = /mov|vod|mp4|avi|mpeg|ogv/i;\nexport const getFileType = (extensionOrType: string) => {\n const lowerCased = extensionOrType.toLowerCase();\n\n // mime type\n if (lowerCased.indexOf('/') > -1) {\n const type = lowerCased.split('/')[0];\n if (type === 'video') return 'video';\n if (type === 'audio') return 'audio';\n if (type === 'image') return 'image';\n return 'file';\n }\n\n // extensions\n if (lowerCased.match(imageExtRegex)) return 'image';\n if (lowerCased.match(audioExtRegex)) return 'audio';\n if (lowerCased.match(videoExtRegex)) return 'video';\n\n // others\n if (lowerCased.startsWith('image')) return 'image';\n if (lowerCased.startsWith('audio')) return 'audio';\n if (lowerCased.startsWith('video')) return 'video';\n\n return 'file';\n};\n\n/**\n * Calculates the downscaled size of an image while preserving its aspect ratio.\n *\n * @param {Object} origin - The original size object with `width` and `height` properties.\n * @param {Object} resizing - The resizing object with optional `width` and `height` properties.\n * @returns {Object} - A new size object with the downscaled `width` and `height` properties.\n * @example\n * ```ts\n * getDownscaleSize({ width: 1200, height: 800 }, { width: 600 }); // returns { width: 600, height: 400 }\n * ```\n */\ntype Size = { width: number; height: number };\nexport function getDownscaleSize(origin: Size, resizing: Partial<Size>) {\n let ratio: number;\n\n const maxWidth = resizing.width || origin.width,\n maxHeight = resizing.height || origin.height;\n\n if (origin.width <= maxWidth && origin.height <= maxHeight) {\n ratio = 1;\n } else if (origin.width > maxWidth && origin.height <= maxHeight) {\n ratio = maxWidth / origin.width;\n } else if (origin.width <= maxWidth && origin.height > maxHeight) {\n ratio = maxHeight / origin.height;\n } else {\n ratio = Math.min(maxWidth / origin.width, maxHeight / origin.height);\n }\n\n return { width: origin.width * ratio, height: origin.height * ratio };\n}\n\n/**\n * Normalize a file name by ensuring it has the given extension, if it doesn't already.\n *\n * @param {string} fileName - The file name to normalize.\n * @param {string} extension - The desired extension, without a leading period.\n * @returns {string} - The normalized file name, with the extension.\n */\nexport function normalizeFileName(fileName: string, extension: string) {\n if (!extension) return fileName;\n\n // .extension\n let _extension = extension.toLowerCase();\n if (_extension.indexOf('.') !== 0) {\n _extension = '.' + _extension;\n }\n\n // filename.extension | filename\n const _filename = fileName.toLowerCase();\n const hasExtension = _filename.lastIndexOf(_extension) === _filename.length - _extension.length;\n if (!hasExtension) {\n // filename.extension\n return fileName + _extension;\n } else {\n // filename.extension\n return fileName;\n }\n}\n\n/**\n * Parses a MIME type string into its components.\n *\n * @param mimeType - The MIME type string to parse.\n * @returns An object containing the type, subtype, and parameters of the MIME type.\n */\ntype MimeType = { type: string; subtype: string; parameters: Record<string, string> };\nexport function parseMimeType(mimeType: string): MimeType {\n const [fullType, ...parts] = mimeType.split(';');\n const [type, subtype] = fullType.split('/');\n const parameters: MimeType['parameters'] = {};\n\n for (const part of parts) {\n const [name, value] = part.trim().split('=');\n parameters[name] = value;\n }\n\n return { type, subtype, parameters };\n}\n\n/**\n * Returns the file extension based on the MIME type.\n *\n * @param {string | null | undefined} mimeType - The MIME type to look up.\n * @returns {string} - The file extension for the given MIME type, or an empty string if no matching file extension was found.\n */\nexport function getFileExtensionFromMime(mimeType?: string | null): string {\n if (!mimeType) return '';\n const MIME_EXTENSION_MAP = Object.entries(EXTENSION_MIME_MAP).reduce((acc, [key, value]) => {\n acc[value] = key;\n return acc;\n }, {} as Record<string, string>);\n\n const extension = MIME_EXTENSION_MAP[mimeType.toLowerCase()];\n if (extension) return '.' + extension;\n return '';\n}\n\n/**\n * Returns the MIME type based on the file extension.\n *\n * @param {string | null | undefined} ext - The file extension to look up.\n * @returns {string} - The MIME type for the given file extension, or an empty string if no matching MIME type was found.\n */\nexport function getMimeFromFileExtension(ext?: string | null) {\n if (!ext) return '';\n\n const sliceIdx = ext.lastIndexOf('.');\n const extWithoutDot = sliceIdx === -1 ? ext : ext.slice(sliceIdx + 1);\n\n return EXTENSION_MIME_MAP[extWithoutDot.toLowerCase()] || '';\n}\n\n/**\n * Returns the file extension of a file path.\n *\n * @param {string} filePath - The file path to extract the extension from.\n * @returns {string} - The file extension, or an empty string if the file path does not have an extension.\n */\nexport function getFileExtension(filePath: string) {\n const pathWithoutParams = filePath.split('?')[0];\n\n const idx = pathWithoutParams.lastIndexOf('.');\n if (idx === -1) return '';\n\n const result = pathWithoutParams.slice(idx - pathWithoutParams.length).toLowerCase();\n if (result === '.') return '';\n else return result;\n}\n\nexport async function getFileExtensionFromUri(uri: string) {\n const type = await fetch(uri).then((response) => response.headers.get('content-type'));\n return getFileExtensionFromMime(type);\n}\n\nexport function isImage(filePath: string, mimeType?: string) {\n const type = getFileType(mimeType || getFileExtension(filePath));\n return type === 'image';\n}\n\nexport function shouldCompressImage(mime: string, compressionEnabled = true) {\n const extension = isJPG(mime) ? 'jpg' : getFileExtensionFromMime(mime);\n return Boolean(extension.match(/jpg|jpeg|png/i) && compressionEnabled);\n}\n\n/**\n * https://github.com/gathertown/sendbird-uikit-react-native/pull/29\n * This function is used solely for the purpose of classifying `image/jpg`.\n *\n * We only use it to determine whether image compression is applied because `image/jpg` is not a MIME type standard.\n * Therefore, it is not reflected in `EXTENSION_MIME_MAP`, which extracts MIME types uploaded to the server. (to comply standard)\n * */\nfunction isJPG(mime: string) {\n return mime === 'image/jpg';\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["hash","str","String","Math","abs","split","reduce","a","c","charCodeAt","replace","start","end","text","slice","conditionChaining","conditions","values","idx","findIndex","state","Boolean","length","pick","obj","keys","pickedObj","key","mergeObjectArrays","A","B","uniqueValues","Set","map","newArr","i","has","push","add","sleep","ms","Promise","resolve","setTimeout","matchesOneOf","value","candidates","includes"],"sources":["index.ts"],"sourcesContent":["/**\n * Converts a given string to a hashed string.\n * */\nexport function hash(str: string) {\n return String(Math.abs(str.split('').reduce((a, c) => ((a << 5) - a + c.charCodeAt(0)) | 0, 0)));\n}\n\n/**\n * Replace a specific range of text in the string with another text.\n * */\nexport function replace(str: string, start: number, end: number, text: string) {\n return str.slice(0, start) + text + str.slice(end);\n}\n\n/**\n * Returns the value corresponding to the first true index of a given condition array.\n * */\nexport function conditionChaining<T, V>(conditions: T[], values: V[]) {\n const idx = conditions.findIndex((state) => Boolean(state));\n return idx > -1 ? values[idx] : values[values.length - 1];\n}\n\n/**\n * Returns a new object with only the specified keys from the input object.\n *\n * @param {Object} obj - The input object to pick keys from.\n * @param {Array<string>} keys - An array of keys to pick from the input object.\n * @returns {Object} - A new object containing only the specified keys from the input object.\n * @example\n * ```ts\n * pick({ a: 1, b: '2', c: true }, ['a', 'c']); // returns { a: 1, c: true }\n * ```\n */\nexport function pick<T extends { [key: string]: unknown }, Keys extends keyof T>(obj: T, keys: Keys[]) {\n return keys.reduce((pickedObj, key) => {\n pickedObj[key] = obj[key];\n return pickedObj;\n }, {} as { [key in Keys]: T[key] });\n}\n\nexport function mergeObjectArrays<T>(A: T[], B: T[], key: keyof T): T[] {\n const uniqueValues = new Set(A.map((obj) => obj[key]));\n const newArr = [...A];\n\n for (let i = 0; i < B.length; i++) {\n if (!uniqueValues.has(B[i][key])) {\n newArr.push(B[i]);\n uniqueValues.add(B[i][key]);\n }\n }\n\n return newArr;\n}\n\nexport function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function matchesOneOf<V, C extends V[]>(value: V, candidates: C) {\n return candidates.includes(value);\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACO,SAASA,IAAIA,CAACC,GAAW,EAAE;EAChC,OAAOC,MAAM,CAACC,IAAI,CAACC,GAAG,CAACH,GAAG,CAACI,KAAK,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAM,CAACD,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAGC,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,GAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG;;AAEA;AACA;AACA;AACO,SAASC,OAAOA,CAACT,GAAW,EAAEU,KAAa,EAAEC,GAAW,EAAEC,IAAY,EAAE;EAC7E,OAAOZ,GAAG,CAACa,KAAK,CAAC,CAAC,EAAEH,KAAK,CAAC,GAAGE,IAAI,GAAGZ,GAAG,CAACa,KAAK,CAACF,GAAG,CAAC;AACpD;;AAEA;AACA;AACA;AACO,SAASG,iBAAiBA,CAAOC,UAAe,EAAEC,MAAW,EAAE;EACpE,MAAMC,GAAG,GAAGF,UAAU,CAACG,SAAS,CAAEC,KAAK,IAAKC,OAAO,CAACD,KAAK,CAAC,CAAC;EAC3D,OAAOF,GAAG,GAAG,CAAC,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC,GAAGD,MAAM,CAACA,MAAM,CAACK,MAAM,GAAG,CAAC,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAA6DC,GAAM,EAAEC,IAAY,EAAE;EACrG,OAAOA,IAAI,CAACnB,MAAM,CAAC,CAACoB,SAAS,EAAEC,GAAG,KAAK;IACrCD,SAAS,CAACC,GAAG,CAAC,GAAGH,GAAG,CAACG,GAAG,CAAC;IACzB,OAAOD,SAAS;EAClB,CAAC,EAAE,CAAC,CAAC,CAA8B;AACrC;AAEO,SAASE,iBAAiBA,CAAIC,CAAM,EAAEC,CAAM,EAAEH,GAAY,EAAO;EACtE,MAAMI,YAAY,GAAG,IAAIC,GAAG,CAACH,CAAC,CAACI,GAAG,CAAET,GAAG,IAAKA,GAAG,CAACG,GAAG,CAAC,CAAC,CAAC;EACtD,MAAMO,MAAM,GAAG,CAAC,GAAGL,CAAC,CAAC;EAErB,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,CAAC,CAACR,MAAM,EAAEa,CAAC,EAAE,EAAE;IACjC,IAAI,CAACJ,YAAY,CAACK,GAAG,CAACN,CAAC,CAACK,CAAC,CAAC,CAACR,GAAG,CAAC,CAAC,EAAE;MAChCO,MAAM,CAACG,IAAI,CAACP,CAAC,CAACK,CAAC,CAAC,CAAC;MACjBJ,YAAY,CAACO,GAAG,CAACR,CAAC,CAACK,CAAC,CAAC,CAACR,GAAG,CAAC,CAAC;IAC7B;EACF;EAEA,OAAOO,MAAM;AACf;AAEO,SAASK,KAAKA,CAACC,EAAU,EAAE;EAChC,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAEF,EAAE,CAAC,CAAC;AAC1D;AAEO,SAASI,YAAYA,CAAmBC,KAAQ,EAAEC,UAAa,EAAE;EACtE,OAAOA,UAAU,CAACC,QAAQ,CAACF,KAAK,CAAC;AACnC"}
1
+ {"version":3,"names":["hash","str","String","Math","abs","split","reduce","a","c","charCodeAt","replace","start","end","text","slice","conditionChaining","conditions","values","idx","findIndex","state","Boolean","length","pick","obj","keys","pickedObj","key","mergeObjectArrays","A","B","uniqueValues","Set","map","newArr","i","has","push","add","sleep","ms","Promise","resolve","setTimeout","matchesOneOf","value","candidates","includes"],"sources":["index.ts"],"sourcesContent":["/**\n * Converts a given string to a hashed string.\n * */\nexport function hash(str: string) {\n return String(Math.abs(str.split('').reduce((a, c) => ((a << 5) - a + c.charCodeAt(0)) | 0, 0)));\n}\n\n/**\n * Replace a specific range of text in the string with another text.\n * */\nexport function replace(str: string, start: number, end: number, text: string) {\n return str.slice(0, start) + text + str.slice(end);\n}\n\n/**\n * Returns the value corresponding to the first true index of a given condition array.\n * */\nexport function conditionChaining<T, V>(conditions: T[], values: V[]) {\n const idx = conditions.findIndex((state) => Boolean(state));\n return idx > -1 ? values[idx] : values[values.length - 1];\n}\n\n/**\n * Returns a new object with only the specified keys from the input object.\n *\n * @param {Object} obj - The input object to pick keys from.\n * @param {Array<string>} keys - An array of keys to pick from the input object.\n * @returns {Object} - A new object containing only the specified keys from the input object.\n * @example\n * ```ts\n * pick({ a: 1, b: '2', c: true }, ['a', 'c']); // returns { a: 1, c: true }\n * ```\n */\nexport function pick<T extends { [key: string]: unknown }, Keys extends keyof T>(obj: T, keys: Keys[]) {\n return keys.reduce((pickedObj, key) => {\n pickedObj[key] = obj[key];\n return pickedObj;\n }, {} as { [key in Keys]: T[key] });\n}\n\nexport function mergeObjectArrays<T>(A: T[], B: T[], key: keyof T): T[] {\n const uniqueValues = new Set(A.map((obj) => obj[key]));\n const newArr = [...A];\n\n for (let i = 0; i < B.length; i++) {\n if (!uniqueValues.has(B[i][key])) {\n newArr.push(B[i]);\n uniqueValues.add(B[i][key]);\n }\n }\n\n return newArr;\n}\n\nexport function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function matchesOneOf<V, C extends V[]>(value: V, candidates: C) {\n return candidates.includes(value);\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACO,SAASA,IAAIA,CAACC,GAAW,EAAE;EAChC,OAAOC,MAAM,CAACC,IAAI,CAACC,GAAG,CAACH,GAAG,CAACI,KAAK,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAM,CAACD,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAGC,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,GAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG;;AAEA;AACA;AACA;AACO,SAASC,OAAOA,CAACT,GAAW,EAAEU,KAAa,EAAEC,GAAW,EAAEC,IAAY,EAAE;EAC7E,OAAOZ,GAAG,CAACa,KAAK,CAAC,CAAC,EAAEH,KAAK,CAAC,GAAGE,IAAI,GAAGZ,GAAG,CAACa,KAAK,CAACF,GAAG,CAAC;AACpD;;AAEA;AACA;AACA;AACO,SAASG,iBAAiBA,CAAOC,UAAe,EAAEC,MAAW,EAAE;EACpE,MAAMC,GAAG,GAAGF,UAAU,CAACG,SAAS,CAAEC,KAAK,IAAKC,OAAO,CAACD,KAAK,CAAC,CAAC;EAC3D,OAAOF,GAAG,GAAG,CAAC,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC,GAAGD,MAAM,CAACA,MAAM,CAACK,MAAM,GAAG,CAAC,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,IAAIA,CAA6DC,GAAM,EAAEC,IAAY,EAAE;EACrG,OAAOA,IAAI,CAACnB,MAAM,CAAC,CAACoB,SAAS,EAAEC,GAAG,KAAK;IACrCD,SAAS,CAACC,GAAG,CAAC,GAAGH,GAAG,CAACG,GAAG,CAAC;IACzB,OAAOD,SAAS;EAClB,CAAC,EAAE,CAAC,CAA8B,CAAC;AACrC;AAEO,SAASE,iBAAiBA,CAAIC,CAAM,EAAEC,CAAM,EAAEH,GAAY,EAAO;EACtE,MAAMI,YAAY,GAAG,IAAIC,GAAG,CAACH,CAAC,CAACI,GAAG,CAAET,GAAG,IAAKA,GAAG,CAACG,GAAG,CAAC,CAAC,CAAC;EACtD,MAAMO,MAAM,GAAG,CAAC,GAAGL,CAAC,CAAC;EAErB,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,CAAC,CAACR,MAAM,EAAEa,CAAC,EAAE,EAAE;IACjC,IAAI,CAACJ,YAAY,CAACK,GAAG,CAACN,CAAC,CAACK,CAAC,CAAC,CAACR,GAAG,CAAC,CAAC,EAAE;MAChCO,MAAM,CAACG,IAAI,CAACP,CAAC,CAACK,CAAC,CAAC,CAAC;MACjBJ,YAAY,CAACO,GAAG,CAACR,CAAC,CAACK,CAAC,CAAC,CAACR,GAAG,CAAC,CAAC;IAC7B;EACF;EAEA,OAAOO,MAAM;AACf;AAEO,SAASK,KAAKA,CAACC,EAAU,EAAE;EAChC,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAKC,UAAU,CAACD,OAAO,EAAEF,EAAE,CAAC,CAAC;AAC1D;AAEO,SAASI,YAAYA,CAAmBC,KAAQ,EAAEC,UAAa,EAAE;EACtE,OAAOA,UAAU,CAACC,QAAQ,CAACF,KAAK,CAAC;AACnC","ignoreList":[]}
@@ -14,8 +14,7 @@ const LogLevelEnum = {
14
14
  'info': 4,
15
15
  'debug': 5
16
16
  };
17
- const createLogger = function () {
18
- let level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'warn';
17
+ const createLogger = (level = 'warn') => {
19
18
  let _logLevel = level;
20
19
  let _title = '[UIKit]';
21
20
  return {
@@ -28,52 +27,36 @@ const createLogger = function () {
28
27
  getLogLevel() {
29
28
  return _logLevel;
30
29
  },
31
- log() {
30
+ log(...args) {
32
31
  if (LogLevelEnum[_logLevel] < LogLevelEnum.log) return LogLevelEnum.none;
33
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
- args[_key] = arguments[_key];
35
- }
36
32
  console.log(_title, ...args);
37
33
  return LogLevelEnum[_logLevel];
38
34
  },
39
- error() {
35
+ error(...args) {
40
36
  if (LogLevelEnum[_logLevel] < LogLevelEnum.error) return LogLevelEnum.none;
41
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
42
- args[_key2] = arguments[_key2];
43
- }
44
37
  console.error(_title, ...args);
45
38
  return LogLevelEnum[_logLevel];
46
39
  },
47
- warn() {
40
+ warn(...args) {
48
41
  if (LogLevelEnum[_logLevel] < LogLevelEnum.warn) return LogLevelEnum.none;
49
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
50
- args[_key3] = arguments[_key3];
51
- }
52
42
  console.warn(_title, ...args);
53
43
  return LogLevelEnum[_logLevel];
54
44
  },
55
- info() {
45
+ info(...args) {
56
46
  if (LogLevelEnum[_logLevel] < LogLevelEnum.info) return LogLevelEnum.none;
57
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
58
- args[_key4] = arguments[_key4];
59
- }
60
47
  console.info(_title, ...args);
61
48
  return LogLevelEnum[_logLevel];
62
49
  },
63
- debug() {
50
+ debug(...args) {
64
51
  if (LogLevelEnum[_logLevel] < LogLevelEnum.debug) return LogLevelEnum.none;
65
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
66
- args[_key5] = arguments[_key5];
67
- }
68
52
  console.log(_title, ...args);
69
53
  return LogLevelEnum[_logLevel];
70
54
  }
71
55
  };
72
56
  };
73
- const Logger = {
57
+ const Logger = exports.Logger = {
74
58
  ...createLogger(),
75
59
  LogLevelEnum,
76
60
  create: createLogger
77
61
  };
78
- exports.Logger = Logger;
79
62
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LogLevelEnum","createLogger","level","arguments","length","undefined","_logLevel","_title","setTitle","title","setLogLevel","lv","getLogLevel","log","none","_len","args","Array","_key","console","error","_len2","_key2","warn","_len3","_key3","info","_len4","_key4","debug","_len5","_key5","Logger","create","exports"],"sources":["logger.ts"],"sourcesContent":["/* eslint-disable no-console */\n\nconst LogLevelEnum = {\n 'none': 0,\n 'log': 1,\n 'error': 2,\n 'warn': 3,\n 'info': 4,\n 'debug': 5,\n};\ntype LogLevel = keyof typeof LogLevelEnum;\n\nconst createLogger = (level: LogLevel = 'warn') => {\n let _logLevel = level;\n let _title = '[UIKit]';\n\n return {\n setTitle(title: string) {\n _title = title;\n },\n setLogLevel(lv: LogLevel) {\n _logLevel = lv;\n },\n getLogLevel() {\n return _logLevel;\n },\n log(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.log) return LogLevelEnum.none;\n console.log(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n error(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.error) return LogLevelEnum.none;\n console.error(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n warn(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.warn) return LogLevelEnum.none;\n console.warn(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n info(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.info) return LogLevelEnum.none;\n console.info(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n debug(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.debug) return LogLevelEnum.none;\n console.log(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n };\n};\n\nexport const Logger = {\n ...createLogger(),\n LogLevelEnum,\n create: createLogger,\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["LogLevelEnum","createLogger","level","_logLevel","_title","setTitle","title","setLogLevel","lv","getLogLevel","log","args","none","console","error","warn","info","debug","Logger","exports","create"],"sources":["logger.ts"],"sourcesContent":["/* eslint-disable no-console */\n\nconst LogLevelEnum = {\n 'none': 0,\n 'log': 1,\n 'error': 2,\n 'warn': 3,\n 'info': 4,\n 'debug': 5,\n};\ntype LogLevel = keyof typeof LogLevelEnum;\n\nconst createLogger = (level: LogLevel = 'warn') => {\n let _logLevel = level;\n let _title = '[UIKit]';\n\n return {\n setTitle(title: string) {\n _title = title;\n },\n setLogLevel(lv: LogLevel) {\n _logLevel = lv;\n },\n getLogLevel() {\n return _logLevel;\n },\n log(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.log) return LogLevelEnum.none;\n console.log(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n error(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.error) return LogLevelEnum.none;\n console.error(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n warn(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.warn) return LogLevelEnum.none;\n console.warn(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n info(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.info) return LogLevelEnum.none;\n console.info(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n debug(...args: unknown[]) {\n if (LogLevelEnum[_logLevel] < LogLevelEnum.debug) return LogLevelEnum.none;\n console.log(_title, ...args);\n return LogLevelEnum[_logLevel];\n },\n };\n};\n\nexport const Logger = {\n ...createLogger(),\n LogLevelEnum,\n create: createLogger,\n};\n"],"mappings":";;;;;;AAAA;;AAEA,MAAMA,YAAY,GAAG;EACnB,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC;EACR,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;EACT,OAAO,EAAE;AACX,CAAC;AAGD,MAAMC,YAAY,GAAGA,CAACC,KAAe,GAAG,MAAM,KAAK;EACjD,IAAIC,SAAS,GAAGD,KAAK;EACrB,IAAIE,MAAM,GAAG,SAAS;EAEtB,OAAO;IACLC,QAAQA,CAACC,KAAa,EAAE;MACtBF,MAAM,GAAGE,KAAK;IAChB,CAAC;IACDC,WAAWA,CAACC,EAAY,EAAE;MACxBL,SAAS,GAAGK,EAAE;IAChB,CAAC;IACDC,WAAWA,CAAA,EAAG;MACZ,OAAON,SAAS;IAClB,CAAC;IACDO,GAAGA,CAAC,GAAGC,IAAe,EAAE;MACtB,IAAIX,YAAY,CAACG,SAAS,CAAC,GAAGH,YAAY,CAACU,GAAG,EAAE,OAAOV,YAAY,CAACY,IAAI;MACxEC,OAAO,CAACH,GAAG,CAACN,MAAM,EAAE,GAAGO,IAAI,CAAC;MAC5B,OAAOX,YAAY,CAACG,SAAS,CAAC;IAChC,CAAC;IACDW,KAAKA,CAAC,GAAGH,IAAe,EAAE;MACxB,IAAIX,YAAY,CAACG,SAAS,CAAC,GAAGH,YAAY,CAACc,KAAK,EAAE,OAAOd,YAAY,CAACY,IAAI;MAC1EC,OAAO,CAACC,KAAK,CAACV,MAAM,EAAE,GAAGO,IAAI,CAAC;MAC9B,OAAOX,YAAY,CAACG,SAAS,CAAC;IAChC,CAAC;IACDY,IAAIA,CAAC,GAAGJ,IAAe,EAAE;MACvB,IAAIX,YAAY,CAACG,SAAS,CAAC,GAAGH,YAAY,CAACe,IAAI,EAAE,OAAOf,YAAY,CAACY,IAAI;MACzEC,OAAO,CAACE,IAAI,CAACX,MAAM,EAAE,GAAGO,IAAI,CAAC;MAC7B,OAAOX,YAAY,CAACG,SAAS,CAAC;IAChC,CAAC;IACDa,IAAIA,CAAC,GAAGL,IAAe,EAAE;MACvB,IAAIX,YAAY,CAACG,SAAS,CAAC,GAAGH,YAAY,CAACgB,IAAI,EAAE,OAAOhB,YAAY,CAACY,IAAI;MACzEC,OAAO,CAACG,IAAI,CAACZ,MAAM,EAAE,GAAGO,IAAI,CAAC;MAC7B,OAAOX,YAAY,CAACG,SAAS,CAAC;IAChC,CAAC;IACDc,KAAKA,CAAC,GAAGN,IAAe,EAAE;MACxB,IAAIX,YAAY,CAACG,SAAS,CAAC,GAAGH,YAAY,CAACiB,KAAK,EAAE,OAAOjB,YAAY,CAACY,IAAI;MAC1EC,OAAO,CAACH,GAAG,CAACN,MAAM,EAAE,GAAGO,IAAI,CAAC;MAC5B,OAAOX,YAAY,CAACG,SAAS,CAAC;IAChC;EACF,CAAC;AACH,CAAC;AAEM,MAAMe,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG;EACpB,GAAGjB,YAAY,CAAC,CAAC;EACjBD,YAAY;EACZoB,MAAM,EAAEnB;AACV,CAAC","ignoreList":[]}
@@ -6,16 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.urlRegexStrict = exports.urlRegexRough = exports.replaceWithRegex = exports.replaceUrlAsComponents = exports.phoneRegex = exports.newLineRegex = exports.emailRegex = exports.createMentionTemplateRegex = void 0;
7
7
  // For iOS 12 backwards compatibility
8
8
  require('string.prototype.matchall').shim();
9
- const urlRegexStrict = /(https?:\/\/|www\.)[-a-zA-Z0-9@:%._+~#=]{1,256}\.(xn--)?[a-z0-9-]{2,20}\b([-a-zA-Z0-9@:%_+[\],.~#?&/=]*[-a-zA-Z0-9@:%_+\]~#?&/=])*/g;
10
- exports.urlRegexStrict = urlRegexStrict;
11
- const urlRegexRough = /(https?:\/\/|www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g;
12
- exports.urlRegexRough = urlRegexRough;
13
- const phoneRegex = /[+]?[(]?[0-9]{3}[)]?[-\s.]?[0-9]{3}[-\s.]?[0-9]{4,7}/;
14
- exports.phoneRegex = phoneRegex;
15
- const emailRegex = /\S+@\S+\.\S+/;
16
- exports.emailRegex = emailRegex;
17
- const newLineRegex = /\r\n|\r|\n/g;
18
- exports.newLineRegex = newLineRegex;
9
+ const urlRegexStrict = exports.urlRegexStrict = /(https?:\/\/|www\.)[-a-zA-Z0-9@:%._+~#=]{1,256}\.(xn--)?[a-z0-9-]{2,20}\b([-a-zA-Z0-9@:%_+[\],.~#?&/=]*[-a-zA-Z0-9@:%_+\]~#?&/=])*/g;
10
+ const urlRegexRough = exports.urlRegexRough = /(https?:\/\/|www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g;
11
+ const phoneRegex = exports.phoneRegex = /[+]?[(]?[0-9]{3}[)]?[-\s.]?[0-9]{3}[-\s.]?[0-9]{4,7}/;
12
+ const emailRegex = exports.emailRegex = /\S+@\S+\.\S+/;
13
+ const newLineRegex = exports.newLineRegex = /\r\n|\r|\n/g;
19
14
  const createMentionTemplateRegex = trigger => new RegExp(`(${trigger}[{])(.*?)([}])`, 'g');
20
15
 
21
16
  // const cases = [
@@ -53,14 +48,13 @@ const replaceWithRegex = (text, regex, replacer, keyPrefix) => {
53
48
  });
54
49
  const items = [text];
55
50
  let cursor = 0;
56
- founds.forEach((_ref, index) => {
57
- let {
58
- text,
59
- start,
60
- end,
61
- groups,
62
- matchIndex
63
- } = _ref;
51
+ founds.forEach(({
52
+ text,
53
+ start,
54
+ end,
55
+ groups,
56
+ matchIndex
57
+ }, index) => {
64
58
  const restText = items.pop();
65
59
  const head = restText.slice(0, start - cursor);
66
60
  const mid = replacer({
@@ -91,12 +85,11 @@ const replaceUrlAsComponents = (originText, replacer, strict) => {
91
85
  });
92
86
  const items = [originText];
93
87
  let cursor = 0;
94
- founds.forEach(_ref2 => {
95
- let {
96
- text,
97
- start,
98
- end
99
- } = _ref2;
88
+ founds.forEach(({
89
+ text,
90
+ start,
91
+ end
92
+ }) => {
100
93
  const restText = items.pop();
101
94
  const head = restText.slice(0, start - cursor);
102
95
  const mid = replacer(text);
@@ -1 +1 @@
1
- {"version":3,"names":["require","shim","urlRegexStrict","exports","urlRegexRough","phoneRegex","emailRegex","newLineRegex","createMentionTemplateRegex","trigger","RegExp","replaceWithRegex","text","regex","replacer","keyPrefix","matches","matchAll","founds","map","value","start","index","end","length","groups","matchIndex","items","cursor","forEach","_ref","restText","pop","head","slice","mid","match","tail","push","replaceUrlAsComponents","originText","strict","_ref2"],"sources":["regex.ts"],"sourcesContent":["// For iOS 12 backwards compatibility\nrequire('string.prototype.matchall').shim();\n\nexport const urlRegexStrict =\n /(https?:\\/\\/|www\\.)[-a-zA-Z0-9@:%._+~#=]{1,256}\\.(xn--)?[a-z0-9-]{2,20}\\b([-a-zA-Z0-9@:%_+[\\],.~#?&/=]*[-a-zA-Z0-9@:%_+\\]~#?&/=])*/g;\nexport const urlRegexRough =\n /(https?:\\/\\/|www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g;\nexport const phoneRegex = /[+]?[(]?[0-9]{3}[)]?[-\\s.]?[0-9]{3}[-\\s.]?[0-9]{4,7}/;\nexport const emailRegex = /\\S+@\\S+\\.\\S+/;\nexport const newLineRegex = /\\r\\n|\\r|\\n/g;\n\nexport const createMentionTemplateRegex = (trigger: string) => new RegExp(`(${trigger}[{])(.*?)([}])`, 'g');\n\n// const cases = [\n// {\n// type: 'urlStrict',\n// regex: urlRegexStrict,\n// },\n// {\n// type: 'urlRough',\n// regex: urlRegexStrict,\n// },\n// {\n// type: 'email',\n// regex: emailRegex,\n// },\n// {\n// type: 'phone',\n// regex: urlRegexStrict,\n// },\n// ];\n\nexport const replaceWithRegex = <T>(\n text: string,\n regex: RegExp,\n replacer: (params: {\n match: string;\n groups: string[];\n matchIndex: number | undefined;\n index: number;\n keyPrefix: string;\n }) => T,\n keyPrefix: string,\n) => {\n const matches = [...text.matchAll(regex)];\n const founds = matches.map((value) => {\n const text = value[0];\n const start = value.index ?? 0;\n const end = start + text.length;\n return { text, start, end, groups: value, matchIndex: value.index };\n });\n\n const items: Array<T | string> = [text];\n let cursor = 0;\n founds.forEach(({ text, start, end, groups, matchIndex }, index) => {\n const restText = items.pop() as string;\n const head = restText.slice(0, start - cursor);\n const mid = replacer({ match: text, groups, matchIndex, index, keyPrefix });\n const tail = restText.slice(end - cursor);\n items.push(head, mid, tail);\n cursor = end;\n });\n return items;\n};\n\nexport const replaceUrlAsComponents = <T>(originText: string, replacer: (url: string) => T, strict?: boolean) => {\n const matches = [...originText.matchAll(strict ? urlRegexStrict : urlRegexRough)];\n const founds = matches.map((value) => {\n const text = value[0];\n const start = value.index ?? 0;\n const end = start + text.length;\n return { text, start, end };\n });\n\n const items: Array<string | T> = [originText];\n let cursor = 0;\n founds.forEach(({ text, start, end }) => {\n const restText = items.pop() as string;\n const head = restText.slice(0, start - cursor);\n const mid = replacer(text);\n const tail = restText.slice(end - cursor);\n items.push(head, mid, tail);\n cursor = end;\n });\n return items;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["require","shim","urlRegexStrict","exports","urlRegexRough","phoneRegex","emailRegex","newLineRegex","createMentionTemplateRegex","trigger","RegExp","replaceWithRegex","text","regex","replacer","keyPrefix","matches","matchAll","founds","map","value","start","index","end","length","groups","matchIndex","items","cursor","forEach","restText","pop","head","slice","mid","match","tail","push","replaceUrlAsComponents","originText","strict"],"sources":["regex.ts"],"sourcesContent":["// For iOS 12 backwards compatibility\nrequire('string.prototype.matchall').shim();\n\nexport const urlRegexStrict =\n /(https?:\\/\\/|www\\.)[-a-zA-Z0-9@:%._+~#=]{1,256}\\.(xn--)?[a-z0-9-]{2,20}\\b([-a-zA-Z0-9@:%_+[\\],.~#?&/=]*[-a-zA-Z0-9@:%_+\\]~#?&/=])*/g;\nexport const urlRegexRough =\n /(https?:\\/\\/|www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/g;\nexport const phoneRegex = /[+]?[(]?[0-9]{3}[)]?[-\\s.]?[0-9]{3}[-\\s.]?[0-9]{4,7}/;\nexport const emailRegex = /\\S+@\\S+\\.\\S+/;\nexport const newLineRegex = /\\r\\n|\\r|\\n/g;\n\nexport const createMentionTemplateRegex = (trigger: string) => new RegExp(`(${trigger}[{])(.*?)([}])`, 'g');\n\n// const cases = [\n// {\n// type: 'urlStrict',\n// regex: urlRegexStrict,\n// },\n// {\n// type: 'urlRough',\n// regex: urlRegexStrict,\n// },\n// {\n// type: 'email',\n// regex: emailRegex,\n// },\n// {\n// type: 'phone',\n// regex: urlRegexStrict,\n// },\n// ];\n\nexport const replaceWithRegex = <T>(\n text: string,\n regex: RegExp,\n replacer: (params: {\n match: string;\n groups: string[];\n matchIndex: number | undefined;\n index: number;\n keyPrefix: string;\n }) => T,\n keyPrefix: string,\n) => {\n const matches = [...text.matchAll(regex)];\n const founds = matches.map((value) => {\n const text = value[0];\n const start = value.index ?? 0;\n const end = start + text.length;\n return { text, start, end, groups: value, matchIndex: value.index };\n });\n\n const items: Array<T | string> = [text];\n let cursor = 0;\n founds.forEach(({ text, start, end, groups, matchIndex }, index) => {\n const restText = items.pop() as string;\n const head = restText.slice(0, start - cursor);\n const mid = replacer({ match: text, groups, matchIndex, index, keyPrefix });\n const tail = restText.slice(end - cursor);\n items.push(head, mid, tail);\n cursor = end;\n });\n return items;\n};\n\nexport const replaceUrlAsComponents = <T>(originText: string, replacer: (url: string) => T, strict?: boolean) => {\n const matches = [...originText.matchAll(strict ? urlRegexStrict : urlRegexRough)];\n const founds = matches.map((value) => {\n const text = value[0];\n const start = value.index ?? 0;\n const end = start + text.length;\n return { text, start, end };\n });\n\n const items: Array<string | T> = [originText];\n let cursor = 0;\n founds.forEach(({ text, start, end }) => {\n const restText = items.pop() as string;\n const head = restText.slice(0, start - cursor);\n const mid = replacer(text);\n const tail = restText.slice(end - cursor);\n items.push(head, mid, tail);\n cursor = end;\n });\n return items;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isStartsWithRTL = exports.isEndsWithRTL = void 0;
7
+ const isRTLString = (dir, str) => {
8
+ if (!str || str.length === 0) {
9
+ return false;
10
+ }
11
+ const trimmedStr = str.trimStart();
12
+ if (trimmedStr.length === 0) {
13
+ return false;
14
+ }
15
+ const char = dir === 'start' ? Array.from(trimmedStr)[0] : Array.from(trimmedStr).pop();
16
+ const point = char === null || char === void 0 ? void 0 : char.codePointAt(0);
17
+ if (point === undefined) {
18
+ return false;
19
+ }
20
+ return isRTLCodePoint(point);
21
+ };
22
+ const isStartsWithRTL = str => {
23
+ return isRTLString('start', str);
24
+ };
25
+ exports.isStartsWithRTL = isStartsWithRTL;
26
+ const isEndsWithRTL = str => {
27
+ return isRTLString('end', str);
28
+ };
29
+ exports.isEndsWithRTL = isEndsWithRTL;
30
+ const isRTLCodePoint = codePoint => {
31
+ for (const [start, end] of rtlCodePointRanges) {
32
+ if (codePoint >= start && codePoint <= end) {
33
+ return true;
34
+ }
35
+ }
36
+ return false;
37
+ };
38
+ const rtlCodePointRanges = [[0x0590, 0x05ff],
39
+ // Hebrew
40
+ [0x0600, 0x06ff],
41
+ // Arabic
42
+ [0x0750, 0x077f],
43
+ // Arabic Supplement
44
+ [0x08a0, 0x08ff],
45
+ // Hebrew Supplement
46
+ [0xfb1d, 0xfb4f],
47
+ // Hebrew Presentation Forms
48
+ [0xfe70, 0xfeff],
49
+ // Arabic Presentation Forms-B
50
+ [0x1ee00, 0x1eeff] // Arabic Mathematical Alphabetic Symbols
51
+ ];
52
+ //# sourceMappingURL=rtl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isRTLString","dir","str","length","trimmedStr","trimStart","char","Array","from","pop","point","codePointAt","undefined","isRTLCodePoint","isStartsWithRTL","exports","isEndsWithRTL","codePoint","start","end","rtlCodePointRanges"],"sources":["rtl.ts"],"sourcesContent":["const isRTLString = (dir: 'start' | 'end', str?: string) => {\n if (!str || str.length === 0) {\n return false;\n }\n\n const trimmedStr = str.trimStart();\n if (trimmedStr.length === 0) {\n return false;\n }\n\n const char = dir === 'start' ? Array.from(trimmedStr)[0] : Array.from(trimmedStr).pop();\n const point = char?.codePointAt(0);\n if (point === undefined) {\n return false;\n }\n\n return isRTLCodePoint(point);\n};\n\nexport const isStartsWithRTL = (str?: string): boolean => {\n return isRTLString('start', str);\n};\n\nexport const isEndsWithRTL = (str?: string): boolean => {\n return isRTLString('end', str);\n};\n\nconst isRTLCodePoint = (codePoint: number) => {\n for (const [start, end] of rtlCodePointRanges) {\n if (codePoint >= start && codePoint <= end) {\n return true;\n }\n }\n return false;\n};\n\nconst rtlCodePointRanges = [\n [0x0590, 0x05ff], // Hebrew\n [0x0600, 0x06ff], // Arabic\n [0x0750, 0x077f], // Arabic Supplement\n [0x08a0, 0x08ff], // Hebrew Supplement\n [0xfb1d, 0xfb4f], // Hebrew Presentation Forms\n [0xfe70, 0xfeff], // Arabic Presentation Forms-B\n [0x1ee00, 0x1eeff], // Arabic Mathematical Alphabetic Symbols\n];\n"],"mappings":";;;;;;AAAA,MAAMA,WAAW,GAAGA,CAACC,GAAoB,EAAEC,GAAY,KAAK;EAC1D,IAAI,CAACA,GAAG,IAAIA,GAAG,CAACC,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAO,KAAK;EACd;EAEA,MAAMC,UAAU,GAAGF,GAAG,CAACG,SAAS,CAAC,CAAC;EAClC,IAAID,UAAU,CAACD,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,KAAK;EACd;EAEA,MAAMG,IAAI,GAAGL,GAAG,KAAK,OAAO,GAAGM,KAAK,CAACC,IAAI,CAACJ,UAAU,CAAC,CAAC,CAAC,CAAC,GAAGG,KAAK,CAACC,IAAI,CAACJ,UAAU,CAAC,CAACK,GAAG,CAAC,CAAC;EACvF,MAAMC,KAAK,GAAGJ,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,WAAW,CAAC,CAAC,CAAC;EAClC,IAAID,KAAK,KAAKE,SAAS,EAAE;IACvB,OAAO,KAAK;EACd;EAEA,OAAOC,cAAc,CAACH,KAAK,CAAC;AAC9B,CAAC;AAEM,MAAMI,eAAe,GAAIZ,GAAY,IAAc;EACxD,OAAOF,WAAW,CAAC,OAAO,EAAEE,GAAG,CAAC;AAClC,CAAC;AAACa,OAAA,CAAAD,eAAA,GAAAA,eAAA;AAEK,MAAME,aAAa,GAAId,GAAY,IAAc;EACtD,OAAOF,WAAW,CAAC,KAAK,EAAEE,GAAG,CAAC;AAChC,CAAC;AAACa,OAAA,CAAAC,aAAA,GAAAA,aAAA;AAEF,MAAMH,cAAc,GAAII,SAAiB,IAAK;EAC5C,KAAK,MAAM,CAACC,KAAK,EAAEC,GAAG,CAAC,IAAIC,kBAAkB,EAAE;IAC7C,IAAIH,SAAS,IAAIC,KAAK,IAAID,SAAS,IAAIE,GAAG,EAAE;MAC1C,OAAO,IAAI;IACb;EACF;EACA,OAAO,KAAK;AACd,CAAC;AAED,MAAMC,kBAAkB,GAAG,CACzB,CAAC,MAAM,EAAE,MAAM,CAAC;AAAE;AAClB,CAAC,MAAM,EAAE,MAAM,CAAC;AAAE;AAClB,CAAC,MAAM,EAAE,MAAM,CAAC;AAAE;AAClB,CAAC,MAAM,EAAE,MAAM,CAAC;AAAE;AAClB,CAAC,MAAM,EAAE,MAAM,CAAC;AAAE;AAClB,CAAC,MAAM,EAAE,MAAM,CAAC;AAAE;AAClB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAE;AAAA,CACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from 'react';\n\nimport type {\n BaseChannel,\n Emoji,\n EmojiCategory,\n EmojiContainer,\n Encryption,\n Participant,\n RestrictedUser,\n SendbirdError as SBError,\n SendbirdChatWith,\n User,\n UserUpdateParams,\n} from '@sendbird/chat';\nimport type { FeedChannel } from '@sendbird/chat/feedChannel';\nimport type {\n GroupChannel,\n GroupChannelCollection,\n GroupChannelCreateParams,\n GroupChannelListQuery,\n GroupChannelModule,\n GroupChannelUpdateParams,\n Member,\n MessageCollection,\n} from '@sendbird/chat/groupChannel';\nimport type {\n OpenChannelCreateParams,\n OpenChannelUpdateParams,\n SendableMessage,\n} from '@sendbird/chat/lib/__definition';\nimport type {\n AdminMessage,\n BaseMessage,\n FileMessage,\n FileMessageCreateParams,\n FileMessageUpdateParams,\n MessageSearchQuery,\n MultipleFilesMessage,\n PreviousMessageListQuery,\n Reaction,\n UserMessage,\n UserMessageCreateParams,\n UserMessageUpdateParams,\n} from '@sendbird/chat/message';\nimport type { OpenChannel, OpenChannelListQuery, OpenChannelModule } from '@sendbird/chat/openChannel';\n\nexport type FilterByValueType<T extends object, Type> = {\n [K in keyof T as T[K] extends Type ? K : never]: T[K];\n};\n\nexport type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport type OmittedValues<T, K extends keyof T> = Omit<T, K>[keyof Omit<T, K>];\n\nexport type PartialDeep<T> = T extends object\n ? T extends Set<unknown>\n ? T\n : T extends Function\n ? T\n : {\n [P in keyof T]?: PartialDeep<T[P]>;\n }\n : T;\n\nexport type PartialNullable<T> = {\n [P in keyof T]?: T[P] | null;\n};\n\nexport type PickPartial<T, PK extends keyof T, PPK extends keyof T> = Pick<T, PK> & Partial<Pick<T, PPK>>;\n\nexport type Optional<T> = T | undefined;\n\nexport type ContextValue<T extends React.Context<any>> = T extends React.Context<infer V> ? V : never;\n\nexport type OnBeforeHandler<T> = (params: T) => T | Promise<T>;\n\nexport interface UserStruct {\n userId: string;\n}\nexport type SendbirdChatSDK = SendbirdChatWith<[GroupChannelModule, OpenChannelModule]>;\nexport type SendbirdMessage = BaseMessage | FileMessage | UserMessage | AdminMessage | SendableMessage;\nexport type SendbirdChannel = BaseChannel | GroupChannel | OpenChannel;\nexport type SendbirdUserMessage = UserMessage;\nexport type SendbirdFileMessage = FileMessage;\nexport type SendbirdMultipleFilesMessage = MultipleFilesMessage;\nexport type SendbirdAdminMessage = AdminMessage;\nexport type SendbirdBaseMessage = BaseMessage;\nexport type SendbirdSendableMessage = SendableMessage;\nexport type SendbirdFileMessageCreateParams = FileMessageCreateParams;\nexport type SendbirdFileMessageUpdateParams = FileMessageUpdateParams;\nexport type SendbirdUserMessageCreateParams = UserMessageCreateParams;\nexport type SendbirdUserMessageUpdateParams = UserMessageUpdateParams;\n\nexport type SendbirdGroupChannelCreateParams = GroupChannelCreateParams;\nexport type SendbirdGroupChannelUpdateParams = GroupChannelUpdateParams;\nexport type SendbirdOpenChannelCreateParams = OpenChannelCreateParams;\nexport type SendbirdOpenChannelUpdateParams = OpenChannelUpdateParams;\n\nexport type SendbirdUserUpdateParams = UserUpdateParams;\nexport type SendbirdUser = User;\nexport type SendbirdRestrictedUser = RestrictedUser;\nexport type SendbirdMember = Member;\nexport type SendbirdParticipant = Participant;\n\nexport type SendbirdGroupChannel = GroupChannel;\nexport type SendbirdBaseChannel = BaseChannel;\nexport type SendbirdOpenChannel = OpenChannel;\nexport type SendbirdFeedChannel = FeedChannel;\n\nexport type SendbirdReaction = Reaction;\nexport type SendbirdEmoji = Emoji;\nexport type SendbirdEmojiCategory = EmojiCategory;\nexport type SendbirdEmojiContainer = EmojiContainer;\n\nexport type SendbirdGroupChannelCollection = GroupChannelCollection;\nexport type SendbirdGroupChannelListQuery = GroupChannelListQuery;\nexport type SendbirdOpenChannelListQuery = OpenChannelListQuery;\nexport type SendbirdMessageCollection = MessageCollection;\nexport type SendbirdPreviousMessageListQuery = PreviousMessageListQuery;\nexport type SendbirdMessageSearchQuery = MessageSearchQuery;\n\nexport type SendbirdError = SBError;\nexport type SendbirdEncryption = Encryption;\n\nexport interface SendbirdDataPayload {\n app_id: string;\n audience_type: string;\n category: string;\n channel: {\n channel_unread_message_count: number;\n channel_url: string;\n custom_type: string;\n name: string;\n };\n channel_type: string;\n created_at: number;\n custom_type: string;\n files: NotificationFiles[];\n mentioned_users: NotificationMentionedUsers[];\n message: string;\n message_id: number;\n push_sound: string;\n push_title: null;\n recipient: {\n id: string;\n name: string;\n push_template: string;\n };\n sender?: {\n id: string;\n name: string;\n profile_url: string;\n require_auth_for_profile_image: boolean;\n };\n sqs_ts: number;\n translations: NotificationTranslations;\n type: 'ADMM' | 'MESG' | 'FILE' | string;\n unread_message_count: number;\n}\nexport interface NotificationFiles {\n type: string;\n url: string;\n name: string;\n size: number;\n require_auth: boolean;\n}\n\nexport interface NotificationTranslations {}\nexport interface NotificationMentionedUsers {}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from 'react';\n\nimport type {\n BaseChannel,\n Emoji,\n EmojiCategory,\n EmojiContainer,\n Encryption,\n Participant,\n RestrictedUser,\n SendbirdError as SBError,\n SendbirdChatWith,\n User,\n UserUpdateParams,\n} from '@sendbird/chat';\nimport type { FeedChannel } from '@sendbird/chat/feedChannel';\nimport type {\n GroupChannel,\n GroupChannelCollection,\n GroupChannelCreateParams,\n GroupChannelListQuery,\n GroupChannelModule,\n GroupChannelUpdateParams,\n Member,\n MessageCollection,\n} from '@sendbird/chat/groupChannel';\nimport type {\n OpenChannelCreateParams,\n OpenChannelUpdateParams,\n SendableMessage,\n} from '@sendbird/chat/lib/__definition';\nimport type {\n AdminMessage,\n BaseMessage,\n FileMessage,\n FileMessageCreateParams,\n FileMessageUpdateParams,\n MessageSearchQuery,\n MultipleFilesMessage,\n PreviousMessageListQuery,\n ReactedUserInfo,\n Reaction,\n UserMessage,\n UserMessageCreateParams,\n UserMessageUpdateParams,\n} from '@sendbird/chat/message';\nimport type { OpenChannel, OpenChannelListQuery, OpenChannelModule } from '@sendbird/chat/openChannel';\n\nexport type FilterByValueType<T extends object, Type> = {\n [K in keyof T as T[K] extends Type ? K : never]: T[K];\n};\n\nexport type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void\n ? I\n : never;\n\nexport type OmittedValues<T, K extends keyof T> = Omit<T, K>[keyof Omit<T, K>];\n\nexport type PartialDeep<T> = T extends object\n ? T extends Set<unknown>\n ? T\n : T extends Function\n ? T\n : {\n [P in keyof T]?: PartialDeep<T[P]>;\n }\n : T;\n\nexport type PartialNullable<T> = {\n [P in keyof T]?: T[P] | null;\n};\n\nexport type PickPartial<T, PK extends keyof T, PPK extends keyof T> = Pick<T, PK> & Partial<Pick<T, PPK>>;\n\nexport type Optional<T> = T | undefined;\n\nexport type ContextValue<T extends React.Context<any>> = T extends React.Context<infer V> ? V : never;\n\nexport type OnBeforeHandler<T> = (params: T) => T | Promise<T>;\n\nexport interface UserStruct {\n userId: string;\n}\nexport type SendbirdChatSDK = SendbirdChatWith<[GroupChannelModule, OpenChannelModule]>;\nexport type SendbirdMessage = BaseMessage | FileMessage | UserMessage | AdminMessage | SendableMessage;\nexport type SendbirdChannel = BaseChannel | GroupChannel | OpenChannel;\nexport type SendbirdUserMessage = UserMessage;\nexport type SendbirdFileMessage = FileMessage;\nexport type SendbirdMultipleFilesMessage = MultipleFilesMessage;\nexport type SendbirdAdminMessage = AdminMessage;\nexport type SendbirdBaseMessage = BaseMessage;\nexport type SendbirdSendableMessage = SendableMessage;\nexport type SendbirdFileMessageCreateParams = FileMessageCreateParams;\nexport type SendbirdFileMessageUpdateParams = FileMessageUpdateParams;\nexport type SendbirdUserMessageCreateParams = UserMessageCreateParams;\nexport type SendbirdUserMessageUpdateParams = UserMessageUpdateParams;\n\nexport type SendbirdGroupChannelCreateParams = GroupChannelCreateParams;\nexport type SendbirdGroupChannelUpdateParams = GroupChannelUpdateParams;\nexport type SendbirdOpenChannelCreateParams = OpenChannelCreateParams;\nexport type SendbirdOpenChannelUpdateParams = OpenChannelUpdateParams;\n\nexport type SendbirdUserUpdateParams = UserUpdateParams;\nexport type SendbirdUser = User;\nexport type SendbirdRestrictedUser = RestrictedUser;\nexport type SendbirdMember = Member;\nexport type SendbirdParticipant = Participant;\n\nexport type SendbirdGroupChannel = GroupChannel;\nexport type SendbirdBaseChannel = BaseChannel;\nexport type SendbirdOpenChannel = OpenChannel;\nexport type SendbirdFeedChannel = FeedChannel;\n\nexport type SendbirdReaction = Reaction;\nexport type SendbirdReactedUserInfo = ReactedUserInfo;\nexport type SendbirdEmoji = Emoji;\nexport type SendbirdEmojiCategory = EmojiCategory;\nexport type SendbirdEmojiContainer = EmojiContainer;\n\nexport type SendbirdGroupChannelCollection = GroupChannelCollection;\nexport type SendbirdGroupChannelListQuery = GroupChannelListQuery;\nexport type SendbirdOpenChannelListQuery = OpenChannelListQuery;\nexport type SendbirdMessageCollection = MessageCollection;\nexport type SendbirdPreviousMessageListQuery = PreviousMessageListQuery;\nexport type SendbirdMessageSearchQuery = MessageSearchQuery;\n\nexport type SendbirdError = SBError;\nexport type SendbirdEncryption = Encryption;\n\nexport interface SendbirdDataPayload {\n app_id: string;\n audience_type: string;\n category: string;\n channel: {\n channel_unread_message_count: number;\n channel_url: string;\n custom_type: string;\n name: string;\n };\n channel_type: string;\n created_at: number;\n custom_type: string;\n files: NotificationFiles[];\n mentioned_users: NotificationMentionedUsers[];\n message: string;\n message_id: number;\n push_sound: string;\n push_title: null;\n recipient: {\n id: string;\n name: string;\n push_template: string;\n };\n sender?: {\n id: string;\n name: string;\n profile_url: string;\n require_auth_for_profile_image: boolean;\n };\n sqs_ts: number;\n translations: NotificationTranslations;\n type: 'ADMM' | 'MESG' | 'FILE' | string;\n unread_message_count: number;\n}\nexport interface NotificationFiles {\n type: string;\n url: string;\n name: string;\n size: number;\n require_auth: boolean;\n}\n\nexport interface NotificationTranslations {}\nexport interface NotificationMentionedUsers {}\n"],"mappings":"","ignoreList":[]}
@@ -20,8 +20,7 @@ const defaultOpts = {
20
20
  * @param {string} opts.separator default "..."
21
21
  * @returns {string}
22
22
  * */
23
- const truncate = function (str) {
24
- let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOpts;
23
+ const truncate = (str, opts = defaultOpts) => {
25
24
  const options = {
26
25
  ...defaultOpts,
27
26
  ...opts
@@ -56,9 +55,7 @@ const truncate = function (str) {
56
55
  * @returns {string}
57
56
  * */
58
57
  exports.truncate = truncate;
59
- const truncatedCount = function (count) {
60
- let MAX = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 99;
61
- let MAX_SUFFIX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '+';
58
+ const truncatedCount = (count, MAX = 99, MAX_SUFFIX = '+') => {
62
59
  if (count >= MAX) return `${MAX}${MAX_SUFFIX}`;
63
60
  return `${count}`;
64
61
  };
@@ -98,8 +95,7 @@ const getMessageTimeFormat = (date, locale) => {
98
95
  * Message preview title text
99
96
  * */
100
97
  exports.getMessageTimeFormat = getMessageTimeFormat;
101
- const getMessagePreviewTitle = function (message) {
102
- let EMPTY_USERNAME = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '(No name)';
98
+ const getMessagePreviewTitle = (message, EMPTY_USERNAME = '(No name)') => {
103
99
  if (message.isFileMessage() || message.isUserMessage()) {
104
100
  return message.sender.nickname || EMPTY_USERNAME;
105
101
  }
@@ -113,8 +109,7 @@ const getMessagePreviewTitle = function (message) {
113
109
  * Message preview body text
114
110
  * */
115
111
  exports.getMessagePreviewTitle = getMessagePreviewTitle;
116
- const getMessagePreviewBody = function (message) {
117
- let EMPTY_MESSAGE = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
112
+ const getMessagePreviewBody = (message, EMPTY_MESSAGE = '') => {
118
113
  if (message.isFileMessage()) {
119
114
  const extIdx = message.name.lastIndexOf('.');
120
115
  if (extIdx > -1) {
@@ -1 +1 @@
1
- {"version":3,"names":["_dateFns","require","defaultOpts","mode","maxLen","separator","truncate","str","opts","arguments","length","undefined","options","slice","lead","Math","ceil","trail","floor","Error","exports","truncatedCount","count","MAX","MAX_SUFFIX","getDateSeparatorFormat","date","locale","isThisYear","format","getMessageTimeFormat","getMessagePreviewTitle","message","EMPTY_USERNAME","isFileMessage","isUserMessage","sender","nickname","isAdminMessage","getMessagePreviewBody","EMPTY_MESSAGE","extIdx","name","lastIndexOf","file","ext","getMessagePreviewTime","timestamp","isToday","isYesterday","millsToMMSS","mills","seconds","max","minutes","mm","String","padStart","ss","millsToMSS","getReplyCountFormat","replyCount","maxReplyCount","getThreadParentMessageTimeFormat","getReadableFileSize","fileSize","units","digitGroups","log10","pow","toFixed"],"sources":["common.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\nimport { format, isThisYear, isToday, isYesterday } from 'date-fns';\n\nimport type { SendbirdBaseMessage } from '../types';\n\ntype TruncateMode = 'head' | 'mid' | 'tail';\ntype TruncateOption = { mode: TruncateMode; maxLen: number; separator: string };\nconst defaultOpts: TruncateOption = { mode: 'mid', maxLen: 40, separator: '...' };\n\n/**\n * String truncate util\n * @param {string} str\n * @param {Object} opts Options for truncate\n * @param {'head' | 'mid' | 'tail'} opts.mode default \"mid\"\n * @param {number} opts.maxLen default 40\n * @param {string} opts.separator default \"...\"\n * @returns {string}\n * */\nexport const truncate = (str: string, opts: Partial<TruncateOption> = defaultOpts): string => {\n const options = { ...defaultOpts, ...opts };\n const { maxLen, mode, separator } = options;\n\n if (str.length <= maxLen) return str;\n\n if (mode === 'head') {\n return separator + str.slice(-maxLen);\n }\n\n if (mode === 'mid') {\n const lead = Math.ceil(maxLen / 2);\n const trail = Math.floor(maxLen / 2);\n return str.slice(0, lead) + separator + str.slice(-trail);\n }\n\n if (mode === 'tail') {\n return str.slice(0, maxLen) + separator;\n }\n\n throw new Error('Invalid truncate mode: ' + mode);\n};\n\n/**\n * Count truncate util\n * If count exceed the limit, it comes in the form of \"MAX+\"\n *\n * @param {number} count\n * @param {number} MAX default 99\n * @param {string} MAX_SUFFIX default +\n * @returns {string}\n * */\nexport const truncatedCount = (count: number, MAX = 99, MAX_SUFFIX = '+') => {\n if (count >= MAX) return `${MAX}${MAX_SUFFIX}`;\n return `${count}`;\n};\n\n/**\n * Messages date separator format\n *\n * @param {Date} date\n * @param {Locale} [locale]\n * @returns {string}\n * */\nexport const getDateSeparatorFormat = (date: Date, locale?: Locale): string => {\n if (isThisYear(date)) return format(date, 'MMM dd, yyyy', { locale });\n return format(date, 'E, MMM dd', { locale });\n};\n\n/**\n * Message time format\n *\n * @param {Date} date\n * @param {Locale} [locale]\n * @returns {string}\n * */\nexport const getMessageTimeFormat = (date: Date, locale?: Locale): string => {\n return format(date, 'p', { locale });\n};\n\n/**\n * Message preview title text\n * */\nexport const getMessagePreviewTitle = (message: SendbirdBaseMessage, EMPTY_USERNAME = '(No name)') => {\n if (message.isFileMessage() || message.isUserMessage()) {\n return message.sender.nickname || EMPTY_USERNAME;\n }\n if (message.isAdminMessage()) {\n return 'Admin';\n }\n return EMPTY_USERNAME;\n};\n\n/**\n * Message preview body text\n * */\nexport const getMessagePreviewBody = (message: SendbirdBaseMessage, EMPTY_MESSAGE = '') => {\n if (message.isFileMessage()) {\n const extIdx = message.name.lastIndexOf('.');\n if (extIdx > -1) {\n const file = message.name.slice(0, extIdx);\n const ext = message.name.slice(extIdx);\n return file + ext;\n }\n\n return message.name;\n }\n\n if (message.isUserMessage()) {\n return message.message ?? EMPTY_MESSAGE;\n }\n\n if (message.isAdminMessage()) {\n return message.message ?? EMPTY_MESSAGE;\n }\n\n return EMPTY_MESSAGE;\n};\n\n/**\n * Message preview time format\n * */\nexport const getMessagePreviewTime = (timestamp: number, locale?: Locale) => {\n if (isToday(timestamp)) return format(timestamp, 'p', { locale });\n if (isYesterday(timestamp)) return 'Yesterday';\n if (isThisYear(timestamp)) return format(timestamp, 'MMM dd', { locale });\n\n return format(timestamp, 'yyyy/MM/dd', { locale });\n};\n\n/**\n * milliseconds to 00:00 format\n * */\nexport const millsToMMSS = (mills: number) => {\n let seconds = Math.floor(Math.max(0, mills) / 1000);\n const minutes = Math.floor(seconds / 60);\n seconds = seconds % 60;\n\n const mm = String(minutes).padStart(2, '0');\n const ss = String(seconds).padStart(2, '0');\n\n return `${mm}:${ss}`;\n};\n\n/**\n * milliseconds to 0:00 format\n * */\nexport const millsToMSS = (mills: number) => {\n let seconds = Math.floor(Math.max(0, mills) / 1000);\n const minutes = Math.floor(seconds / 60);\n seconds = seconds % 60;\n\n const ss = String(seconds).padStart(2, '0');\n\n return `${minutes}:${ss}`;\n};\n\n/**\n * Message reply count format\n * If reply count is 1: 1 'reply'\n * If the reply count is greater than 1 : '{count} replies'\n * If the reply count is greater than {maxReplyCount} : '{maxReplyCount}+ replies'\n * */\nexport const getReplyCountFormat = (replyCount: number, maxReplyCount?: number) => {\n if (maxReplyCount && replyCount > maxReplyCount) {\n return `${maxReplyCount}+ replies`;\n } else if (replyCount === 1) {\n return `${replyCount} reply`;\n } else if (replyCount > 1) {\n return `${replyCount} replies`;\n }\n return '';\n};\n\n/**\n * Thread parent message time format\n *\n * @param {Date} date\n * @param {Locale} [locale]\n * @returns {string}\n * */\nexport const getThreadParentMessageTimeFormat = (date: Date, locale?: Locale): string => {\n return format(date, \"MMM dd 'at' h:mm a\", { locale });\n};\n\n/**\n * File size format\n *\n * @param {number} fileSize\n * @returns {string}\n * */\nexport const getReadableFileSize = (fileSize: number): string => {\n if (fileSize <= 0) {\n return '0 B';\n }\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const digitGroups = Math.floor(Math.log10(fileSize) / Math.log10(1024));\n return `${(fileSize / Math.pow(1024, digitGroups)).toFixed(1)} ${units[digitGroups]}`;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dateFns","require","defaultOpts","mode","maxLen","separator","truncate","str","opts","options","length","slice","lead","Math","ceil","trail","floor","Error","exports","truncatedCount","count","MAX","MAX_SUFFIX","getDateSeparatorFormat","date","locale","isThisYear","format","getMessageTimeFormat","getMessagePreviewTitle","message","EMPTY_USERNAME","isFileMessage","isUserMessage","sender","nickname","isAdminMessage","getMessagePreviewBody","EMPTY_MESSAGE","extIdx","name","lastIndexOf","file","ext","getMessagePreviewTime","timestamp","isToday","isYesterday","millsToMMSS","mills","seconds","max","minutes","mm","String","padStart","ss","millsToMSS","getReplyCountFormat","replyCount","maxReplyCount","getThreadParentMessageTimeFormat","getReadableFileSize","fileSize","units","digitGroups","log10","pow","toFixed"],"sources":["common.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\nimport { format, isThisYear, isToday, isYesterday } from 'date-fns';\n\nimport type { SendbirdBaseMessage } from '../types';\n\ntype TruncateMode = 'head' | 'mid' | 'tail';\ntype TruncateOption = { mode: TruncateMode; maxLen: number; separator: string };\nconst defaultOpts: TruncateOption = { mode: 'mid', maxLen: 40, separator: '...' };\n\n/**\n * String truncate util\n * @param {string} str\n * @param {Object} opts Options for truncate\n * @param {'head' | 'mid' | 'tail'} opts.mode default \"mid\"\n * @param {number} opts.maxLen default 40\n * @param {string} opts.separator default \"...\"\n * @returns {string}\n * */\nexport const truncate = (str: string, opts: Partial<TruncateOption> = defaultOpts): string => {\n const options = { ...defaultOpts, ...opts };\n const { maxLen, mode, separator } = options;\n\n if (str.length <= maxLen) return str;\n\n if (mode === 'head') {\n return separator + str.slice(-maxLen);\n }\n\n if (mode === 'mid') {\n const lead = Math.ceil(maxLen / 2);\n const trail = Math.floor(maxLen / 2);\n return str.slice(0, lead) + separator + str.slice(-trail);\n }\n\n if (mode === 'tail') {\n return str.slice(0, maxLen) + separator;\n }\n\n throw new Error('Invalid truncate mode: ' + mode);\n};\n\n/**\n * Count truncate util\n * If count exceed the limit, it comes in the form of \"MAX+\"\n *\n * @param {number} count\n * @param {number} MAX default 99\n * @param {string} MAX_SUFFIX default +\n * @returns {string}\n * */\nexport const truncatedCount = (count: number, MAX = 99, MAX_SUFFIX = '+') => {\n if (count >= MAX) return `${MAX}${MAX_SUFFIX}`;\n return `${count}`;\n};\n\n/**\n * Messages date separator format\n *\n * @param {Date} date\n * @param {Locale} [locale]\n * @returns {string}\n * */\nexport const getDateSeparatorFormat = (date: Date, locale?: Locale): string => {\n if (isThisYear(date)) return format(date, 'MMM dd, yyyy', { locale });\n return format(date, 'E, MMM dd', { locale });\n};\n\n/**\n * Message time format\n *\n * @param {Date} date\n * @param {Locale} [locale]\n * @returns {string}\n * */\nexport const getMessageTimeFormat = (date: Date, locale?: Locale): string => {\n return format(date, 'p', { locale });\n};\n\n/**\n * Message preview title text\n * */\nexport const getMessagePreviewTitle = (message: SendbirdBaseMessage, EMPTY_USERNAME = '(No name)') => {\n if (message.isFileMessage() || message.isUserMessage()) {\n return message.sender.nickname || EMPTY_USERNAME;\n }\n if (message.isAdminMessage()) {\n return 'Admin';\n }\n return EMPTY_USERNAME;\n};\n\n/**\n * Message preview body text\n * */\nexport const getMessagePreviewBody = (message: SendbirdBaseMessage, EMPTY_MESSAGE = '') => {\n if (message.isFileMessage()) {\n const extIdx = message.name.lastIndexOf('.');\n if (extIdx > -1) {\n const file = message.name.slice(0, extIdx);\n const ext = message.name.slice(extIdx);\n return file + ext;\n }\n\n return message.name;\n }\n\n if (message.isUserMessage()) {\n return message.message ?? EMPTY_MESSAGE;\n }\n\n if (message.isAdminMessage()) {\n return message.message ?? EMPTY_MESSAGE;\n }\n\n return EMPTY_MESSAGE;\n};\n\n/**\n * Message preview time format\n * */\nexport const getMessagePreviewTime = (timestamp: number, locale?: Locale) => {\n if (isToday(timestamp)) return format(timestamp, 'p', { locale });\n if (isYesterday(timestamp)) return 'Yesterday';\n if (isThisYear(timestamp)) return format(timestamp, 'MMM dd', { locale });\n\n return format(timestamp, 'yyyy/MM/dd', { locale });\n};\n\n/**\n * milliseconds to 00:00 format\n * */\nexport const millsToMMSS = (mills: number) => {\n let seconds = Math.floor(Math.max(0, mills) / 1000);\n const minutes = Math.floor(seconds / 60);\n seconds = seconds % 60;\n\n const mm = String(minutes).padStart(2, '0');\n const ss = String(seconds).padStart(2, '0');\n\n return `${mm}:${ss}`;\n};\n\n/**\n * milliseconds to 0:00 format\n * */\nexport const millsToMSS = (mills: number) => {\n let seconds = Math.floor(Math.max(0, mills) / 1000);\n const minutes = Math.floor(seconds / 60);\n seconds = seconds % 60;\n\n const ss = String(seconds).padStart(2, '0');\n\n return `${minutes}:${ss}`;\n};\n\n/**\n * Message reply count format\n * If reply count is 1: 1 'reply'\n * If the reply count is greater than 1 : '{count} replies'\n * If the reply count is greater than {maxReplyCount} : '{maxReplyCount}+ replies'\n * */\nexport const getReplyCountFormat = (replyCount: number, maxReplyCount?: number) => {\n if (maxReplyCount && replyCount > maxReplyCount) {\n return `${maxReplyCount}+ replies`;\n } else if (replyCount === 1) {\n return `${replyCount} reply`;\n } else if (replyCount > 1) {\n return `${replyCount} replies`;\n }\n return '';\n};\n\n/**\n * Thread parent message time format\n *\n * @param {Date} date\n * @param {Locale} [locale]\n * @returns {string}\n * */\nexport const getThreadParentMessageTimeFormat = (date: Date, locale?: Locale): string => {\n return format(date, \"MMM dd 'at' h:mm a\", { locale });\n};\n\n/**\n * File size format\n *\n * @param {number} fileSize\n * @returns {string}\n * */\nexport const getReadableFileSize = (fileSize: number): string => {\n if (fileSize <= 0) {\n return '0 B';\n }\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const digitGroups = Math.floor(Math.log10(fileSize) / Math.log10(1024));\n return `${(fileSize / Math.pow(1024, digitGroups)).toFixed(1)} ${units[digitGroups]}`;\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAMA,MAAMC,WAA2B,GAAG;EAAEC,IAAI,EAAE,KAAK;EAAEC,MAAM,EAAE,EAAE;EAAEC,SAAS,EAAE;AAAM,CAAC;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,GAAGA,CAACC,GAAW,EAAEC,IAA6B,GAAGN,WAAW,KAAa;EAC5F,MAAMO,OAAO,GAAG;IAAE,GAAGP,WAAW;IAAE,GAAGM;EAAK,CAAC;EAC3C,MAAM;IAAEJ,MAAM;IAAED,IAAI;IAAEE;EAAU,CAAC,GAAGI,OAAO;EAE3C,IAAIF,GAAG,CAACG,MAAM,IAAIN,MAAM,EAAE,OAAOG,GAAG;EAEpC,IAAIJ,IAAI,KAAK,MAAM,EAAE;IACnB,OAAOE,SAAS,GAAGE,GAAG,CAACI,KAAK,CAAC,CAACP,MAAM,CAAC;EACvC;EAEA,IAAID,IAAI,KAAK,KAAK,EAAE;IAClB,MAAMS,IAAI,GAAGC,IAAI,CAACC,IAAI,CAACV,MAAM,GAAG,CAAC,CAAC;IAClC,MAAMW,KAAK,GAAGF,IAAI,CAACG,KAAK,CAACZ,MAAM,GAAG,CAAC,CAAC;IACpC,OAAOG,GAAG,CAACI,KAAK,CAAC,CAAC,EAAEC,IAAI,CAAC,GAAGP,SAAS,GAAGE,GAAG,CAACI,KAAK,CAAC,CAACI,KAAK,CAAC;EAC3D;EAEA,IAAIZ,IAAI,KAAK,MAAM,EAAE;IACnB,OAAOI,GAAG,CAACI,KAAK,CAAC,CAAC,EAAEP,MAAM,CAAC,GAAGC,SAAS;EACzC;EAEA,MAAM,IAAIY,KAAK,CAAC,yBAAyB,GAAGd,IAAI,CAAC;AACnD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAe,OAAA,CAAAZ,QAAA,GAAAA,QAAA;AASO,MAAMa,cAAc,GAAGA,CAACC,KAAa,EAAEC,GAAG,GAAG,EAAE,EAAEC,UAAU,GAAG,GAAG,KAAK;EAC3E,IAAIF,KAAK,IAAIC,GAAG,EAAE,OAAO,GAAGA,GAAG,GAAGC,UAAU,EAAE;EAC9C,OAAO,GAAGF,KAAK,EAAE;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAF,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAOO,MAAMI,sBAAsB,GAAGA,CAACC,IAAU,EAAEC,MAAe,KAAa;EAC7E,IAAI,IAAAC,mBAAU,EAACF,IAAI,CAAC,EAAE,OAAO,IAAAG,eAAM,EAACH,IAAI,EAAE,cAAc,EAAE;IAAEC;EAAO,CAAC,CAAC;EACrE,OAAO,IAAAE,eAAM,EAACH,IAAI,EAAE,WAAW,EAAE;IAAEC;EAAO,CAAC,CAAC;AAC9C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAP,OAAA,CAAAK,sBAAA,GAAAA,sBAAA;AAOO,MAAMK,oBAAoB,GAAGA,CAACJ,IAAU,EAAEC,MAAe,KAAa;EAC3E,OAAO,IAAAE,eAAM,EAACH,IAAI,EAAE,GAAG,EAAE;IAAEC;EAAO,CAAC,CAAC;AACtC,CAAC;;AAED;AACA;AACA;AAFAP,OAAA,CAAAU,oBAAA,GAAAA,oBAAA;AAGO,MAAMC,sBAAsB,GAAGA,CAACC,OAA4B,EAAEC,cAAc,GAAG,WAAW,KAAK;EACpG,IAAID,OAAO,CAACE,aAAa,CAAC,CAAC,IAAIF,OAAO,CAACG,aAAa,CAAC,CAAC,EAAE;IACtD,OAAOH,OAAO,CAACI,MAAM,CAACC,QAAQ,IAAIJ,cAAc;EAClD;EACA,IAAID,OAAO,CAACM,cAAc,CAAC,CAAC,EAAE;IAC5B,OAAO,OAAO;EAChB;EACA,OAAOL,cAAc;AACvB,CAAC;;AAED;AACA;AACA;AAFAb,OAAA,CAAAW,sBAAA,GAAAA,sBAAA;AAGO,MAAMQ,qBAAqB,GAAGA,CAACP,OAA4B,EAAEQ,aAAa,GAAG,EAAE,KAAK;EACzF,IAAIR,OAAO,CAACE,aAAa,CAAC,CAAC,EAAE;IAC3B,MAAMO,MAAM,GAAGT,OAAO,CAACU,IAAI,CAACC,WAAW,CAAC,GAAG,CAAC;IAC5C,IAAIF,MAAM,GAAG,CAAC,CAAC,EAAE;MACf,MAAMG,IAAI,GAAGZ,OAAO,CAACU,IAAI,CAAC7B,KAAK,CAAC,CAAC,EAAE4B,MAAM,CAAC;MAC1C,MAAMI,GAAG,GAAGb,OAAO,CAACU,IAAI,CAAC7B,KAAK,CAAC4B,MAAM,CAAC;MACtC,OAAOG,IAAI,GAAGC,GAAG;IACnB;IAEA,OAAOb,OAAO,CAACU,IAAI;EACrB;EAEA,IAAIV,OAAO,CAACG,aAAa,CAAC,CAAC,EAAE;IAC3B,OAAOH,OAAO,CAACA,OAAO,IAAIQ,aAAa;EACzC;EAEA,IAAIR,OAAO,CAACM,cAAc,CAAC,CAAC,EAAE;IAC5B,OAAON,OAAO,CAACA,OAAO,IAAIQ,aAAa;EACzC;EAEA,OAAOA,aAAa;AACtB,CAAC;;AAED;AACA;AACA;AAFApB,OAAA,CAAAmB,qBAAA,GAAAA,qBAAA;AAGO,MAAMO,qBAAqB,GAAGA,CAACC,SAAiB,EAAEpB,MAAe,KAAK;EAC3E,IAAI,IAAAqB,gBAAO,EAACD,SAAS,CAAC,EAAE,OAAO,IAAAlB,eAAM,EAACkB,SAAS,EAAE,GAAG,EAAE;IAAEpB;EAAO,CAAC,CAAC;EACjE,IAAI,IAAAsB,oBAAW,EAACF,SAAS,CAAC,EAAE,OAAO,WAAW;EAC9C,IAAI,IAAAnB,mBAAU,EAACmB,SAAS,CAAC,EAAE,OAAO,IAAAlB,eAAM,EAACkB,SAAS,EAAE,QAAQ,EAAE;IAAEpB;EAAO,CAAC,CAAC;EAEzE,OAAO,IAAAE,eAAM,EAACkB,SAAS,EAAE,YAAY,EAAE;IAAEpB;EAAO,CAAC,CAAC;AACpD,CAAC;;AAED;AACA;AACA;AAFAP,OAAA,CAAA0B,qBAAA,GAAAA,qBAAA;AAGO,MAAMI,WAAW,GAAIC,KAAa,IAAK;EAC5C,IAAIC,OAAO,GAAGrC,IAAI,CAACG,KAAK,CAACH,IAAI,CAACsC,GAAG,CAAC,CAAC,EAAEF,KAAK,CAAC,GAAG,IAAI,CAAC;EACnD,MAAMG,OAAO,GAAGvC,IAAI,CAACG,KAAK,CAACkC,OAAO,GAAG,EAAE,CAAC;EACxCA,OAAO,GAAGA,OAAO,GAAG,EAAE;EAEtB,MAAMG,EAAE,GAAGC,MAAM,CAACF,OAAO,CAAC,CAACG,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC3C,MAAMC,EAAE,GAAGF,MAAM,CAACJ,OAAO,CAAC,CAACK,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAE3C,OAAO,GAAGF,EAAE,IAAIG,EAAE,EAAE;AACtB,CAAC;;AAED;AACA;AACA;AAFAtC,OAAA,CAAA8B,WAAA,GAAAA,WAAA;AAGO,MAAMS,UAAU,GAAIR,KAAa,IAAK;EAC3C,IAAIC,OAAO,GAAGrC,IAAI,CAACG,KAAK,CAACH,IAAI,CAACsC,GAAG,CAAC,CAAC,EAAEF,KAAK,CAAC,GAAG,IAAI,CAAC;EACnD,MAAMG,OAAO,GAAGvC,IAAI,CAACG,KAAK,CAACkC,OAAO,GAAG,EAAE,CAAC;EACxCA,OAAO,GAAGA,OAAO,GAAG,EAAE;EAEtB,MAAMM,EAAE,GAAGF,MAAM,CAACJ,OAAO,CAAC,CAACK,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAE3C,OAAO,GAAGH,OAAO,IAAII,EAAE,EAAE;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALAtC,OAAA,CAAAuC,UAAA,GAAAA,UAAA;AAMO,MAAMC,mBAAmB,GAAGA,CAACC,UAAkB,EAAEC,aAAsB,KAAK;EACjF,IAAIA,aAAa,IAAID,UAAU,GAAGC,aAAa,EAAE;IAC/C,OAAO,GAAGA,aAAa,WAAW;EACpC,CAAC,MAAM,IAAID,UAAU,KAAK,CAAC,EAAE;IAC3B,OAAO,GAAGA,UAAU,QAAQ;EAC9B,CAAC,MAAM,IAAIA,UAAU,GAAG,CAAC,EAAE;IACzB,OAAO,GAAGA,UAAU,UAAU;EAChC;EACA,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAzC,OAAA,CAAAwC,mBAAA,GAAAA,mBAAA;AAOO,MAAMG,gCAAgC,GAAGA,CAACrC,IAAU,EAAEC,MAAe,KAAa;EACvF,OAAO,IAAAE,eAAM,EAACH,IAAI,EAAE,oBAAoB,EAAE;IAAEC;EAAO,CAAC,CAAC;AACvD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALAP,OAAA,CAAA2C,gCAAA,GAAAA,gCAAA;AAMO,MAAMC,mBAAmB,GAAIC,QAAgB,IAAa;EAC/D,IAAIA,QAAQ,IAAI,CAAC,EAAE;IACjB,OAAO,KAAK;EACd;EACA,MAAMC,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;EAC3C,MAAMC,WAAW,GAAGpD,IAAI,CAACG,KAAK,CAACH,IAAI,CAACqD,KAAK,CAACH,QAAQ,CAAC,GAAGlD,IAAI,CAACqD,KAAK,CAAC,IAAI,CAAC,CAAC;EACvE,OAAO,GAAG,CAACH,QAAQ,GAAGlD,IAAI,CAACsD,GAAG,CAAC,IAAI,EAAEF,WAAW,CAAC,EAAEG,OAAO,CAAC,CAAC,CAAC,IAAIJ,KAAK,CAACC,WAAW,CAAC,EAAE;AACvF,CAAC;AAAC/C,OAAA,CAAA4C,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -5,23 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getGroupChannelTitle = exports.getGroupChannelPreviewTime = exports.getGroupChannelLastMessage = void 0;
7
7
  var _common = require("./common");
8
- const getGroupChannelTitle = function (currentUserId, channel) {
9
- let EMPTY_USERNAME = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '(No name)';
10
- let NO_MEMBERS = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '(No members)';
11
- let DEFAULT_CHANNEL_NAME = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'Group Channel';
8
+ const getGroupChannelTitle = (currentUserId, channel, EMPTY_USERNAME = '(No name)', NO_MEMBERS = '(No members)', DEFAULT_CHANNEL_NAME = 'Group Channel') => {
12
9
  if (channel.name !== DEFAULT_CHANNEL_NAME && channel.name !== '') return channel.name;
13
10
  if (channel.memberCount === 1) return NO_MEMBERS;
14
- return channel.members.filter(_ref => {
15
- let {
16
- userId
17
- } = _ref;
18
- return userId !== currentUserId;
19
- }).map(_ref2 => {
20
- let {
21
- nickname
22
- } = _ref2;
23
- return nickname || EMPTY_USERNAME;
24
- }).join(', ');
11
+ return channel.members.filter(({
12
+ userId
13
+ }) => userId !== currentUserId).map(({
14
+ nickname
15
+ }) => nickname || EMPTY_USERNAME).join(', ');
25
16
  };
26
17
  exports.getGroupChannelTitle = getGroupChannelTitle;
27
18
  const getGroupChannelPreviewTime = (channel, locale) => {
@@ -29,8 +20,7 @@ const getGroupChannelPreviewTime = (channel, locale) => {
29
20
  return (0, _common.getMessagePreviewTime)(((_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.createdAt) || channel.joinedAt * 1000 || channel.createdAt, locale);
30
21
  };
31
22
  exports.getGroupChannelPreviewTime = getGroupChannelPreviewTime;
32
- const getGroupChannelLastMessage = function (channel) {
33
- let EMPTY_MESSAGE = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
23
+ const getGroupChannelLastMessage = (channel, EMPTY_MESSAGE = '') => {
34
24
  const message = channel.lastMessage;
35
25
  if (!message) return EMPTY_MESSAGE;
36
26
  return (0, _common.getMessagePreviewBody)(message, EMPTY_MESSAGE);
@@ -1 +1 @@
1
- {"version":3,"names":["_common","require","getGroupChannelTitle","currentUserId","channel","EMPTY_USERNAME","arguments","length","undefined","NO_MEMBERS","DEFAULT_CHANNEL_NAME","name","memberCount","members","filter","_ref","userId","map","_ref2","nickname","join","exports","getGroupChannelPreviewTime","locale","_channel$lastMessage","getMessagePreviewTime","lastMessage","createdAt","joinedAt","getGroupChannelLastMessage","EMPTY_MESSAGE","message","getMessagePreviewBody"],"sources":["groupChannel.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type { SendbirdGroupChannel } from '../types';\nimport { getMessagePreviewBody, getMessagePreviewTime } from './common';\n\nexport const getGroupChannelTitle = (\n currentUserId: string,\n channel: SendbirdGroupChannel,\n EMPTY_USERNAME = '(No name)',\n NO_MEMBERS = '(No members)',\n DEFAULT_CHANNEL_NAME = 'Group Channel',\n) => {\n if (channel.name !== DEFAULT_CHANNEL_NAME && channel.name !== '') return channel.name;\n if (channel.memberCount === 1) return NO_MEMBERS;\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => nickname || EMPTY_USERNAME)\n .join(', ');\n};\n\nexport const getGroupChannelPreviewTime = (channel: SendbirdGroupChannel, locale?: Locale) => {\n return getMessagePreviewTime(channel.lastMessage?.createdAt || channel.joinedAt * 1000 || channel.createdAt, locale);\n};\n\nexport const getGroupChannelLastMessage = (channel: SendbirdGroupChannel, EMPTY_MESSAGE = '') => {\n const message = channel.lastMessage;\n if (!message) return EMPTY_MESSAGE;\n\n return getMessagePreviewBody(message, EMPTY_MESSAGE);\n};\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,oBAAoB,GAAG,SAAAA,CAClCC,aAAqB,EACrBC,OAA6B,EAI1B;EAAA,IAHHC,cAAc,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,WAAW;EAAA,IAC5BG,UAAU,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,cAAc;EAAA,IAC3BI,oBAAoB,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,eAAe;EAEtC,IAAIF,OAAO,CAACO,IAAI,KAAKD,oBAAoB,IAAIN,OAAO,CAACO,IAAI,KAAK,EAAE,EAAE,OAAOP,OAAO,CAACO,IAAI;EACrF,IAAIP,OAAO,CAACQ,WAAW,KAAK,CAAC,EAAE,OAAOH,UAAU;EAChD,OAAOL,OAAO,CAACS,OAAO,CACnBC,MAAM,CAACC,IAAA;IAAA,IAAC;MAAEC;IAAO,CAAC,GAAAD,IAAA;IAAA,OAAKC,MAAM,KAAKb,aAAa;EAAA,EAAC,CAChDc,GAAG,CAACC,KAAA;IAAA,IAAC;MAAEC;IAAS,CAAC,GAAAD,KAAA;IAAA,OAAKC,QAAQ,IAAId,cAAc;EAAA,EAAC,CACjDe,IAAI,CAAC,IAAI,CAAC;AACf,CAAC;AAACC,OAAA,CAAAnB,oBAAA,GAAAA,oBAAA;AAEK,MAAMoB,0BAA0B,GAAGA,CAAClB,OAA6B,EAAEmB,MAAe,KAAK;EAAA,IAAAC,oBAAA;EAC5F,OAAO,IAAAC,6BAAqB,EAAC,EAAAD,oBAAA,GAAApB,OAAO,CAACsB,WAAW,cAAAF,oBAAA,uBAAnBA,oBAAA,CAAqBG,SAAS,KAAIvB,OAAO,CAACwB,QAAQ,GAAG,IAAI,IAAIxB,OAAO,CAACuB,SAAS,EAAEJ,MAAM,CAAC;AACtH,CAAC;AAACF,OAAA,CAAAC,0BAAA,GAAAA,0BAAA;AAEK,MAAMO,0BAA0B,GAAG,SAAAA,CAACzB,OAA6B,EAAyB;EAAA,IAAvB0B,aAAa,GAAAxB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAC1F,MAAMyB,OAAO,GAAG3B,OAAO,CAACsB,WAAW;EACnC,IAAI,CAACK,OAAO,EAAE,OAAOD,aAAa;EAElC,OAAO,IAAAE,6BAAqB,EAACD,OAAO,EAAED,aAAa,CAAC;AACtD,CAAC;AAACT,OAAA,CAAAQ,0BAAA,GAAAA,0BAAA"}
1
+ {"version":3,"names":["_common","require","getGroupChannelTitle","currentUserId","channel","EMPTY_USERNAME","NO_MEMBERS","DEFAULT_CHANNEL_NAME","name","memberCount","members","filter","userId","map","nickname","join","exports","getGroupChannelPreviewTime","locale","_channel$lastMessage","getMessagePreviewTime","lastMessage","createdAt","joinedAt","getGroupChannelLastMessage","EMPTY_MESSAGE","message","getMessagePreviewBody"],"sources":["groupChannel.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type { SendbirdGroupChannel } from '../types';\nimport { getMessagePreviewBody, getMessagePreviewTime } from './common';\n\nexport const getGroupChannelTitle = (\n currentUserId: string,\n channel: SendbirdGroupChannel,\n EMPTY_USERNAME = '(No name)',\n NO_MEMBERS = '(No members)',\n DEFAULT_CHANNEL_NAME = 'Group Channel',\n) => {\n if (channel.name !== DEFAULT_CHANNEL_NAME && channel.name !== '') return channel.name;\n if (channel.memberCount === 1) return NO_MEMBERS;\n return channel.members\n .filter(({ userId }) => userId !== currentUserId)\n .map(({ nickname }) => nickname || EMPTY_USERNAME)\n .join(', ');\n};\n\nexport const getGroupChannelPreviewTime = (channel: SendbirdGroupChannel, locale?: Locale) => {\n return getMessagePreviewTime(channel.lastMessage?.createdAt || channel.joinedAt * 1000 || channel.createdAt, locale);\n};\n\nexport const getGroupChannelLastMessage = (channel: SendbirdGroupChannel, EMPTY_MESSAGE = '') => {\n const message = channel.lastMessage;\n if (!message) return EMPTY_MESSAGE;\n\n return getMessagePreviewBody(message, EMPTY_MESSAGE);\n};\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,oBAAoB,GAAGA,CAClCC,aAAqB,EACrBC,OAA6B,EAC7BC,cAAc,GAAG,WAAW,EAC5BC,UAAU,GAAG,cAAc,EAC3BC,oBAAoB,GAAG,eAAe,KACnC;EACH,IAAIH,OAAO,CAACI,IAAI,KAAKD,oBAAoB,IAAIH,OAAO,CAACI,IAAI,KAAK,EAAE,EAAE,OAAOJ,OAAO,CAACI,IAAI;EACrF,IAAIJ,OAAO,CAACK,WAAW,KAAK,CAAC,EAAE,OAAOH,UAAU;EAChD,OAAOF,OAAO,CAACM,OAAO,CACnBC,MAAM,CAAC,CAAC;IAAEC;EAAO,CAAC,KAAKA,MAAM,KAAKT,aAAa,CAAC,CAChDU,GAAG,CAAC,CAAC;IAAEC;EAAS,CAAC,KAAKA,QAAQ,IAAIT,cAAc,CAAC,CACjDU,IAAI,CAAC,IAAI,CAAC;AACf,CAAC;AAACC,OAAA,CAAAd,oBAAA,GAAAA,oBAAA;AAEK,MAAMe,0BAA0B,GAAGA,CAACb,OAA6B,EAAEc,MAAe,KAAK;EAAA,IAAAC,oBAAA;EAC5F,OAAO,IAAAC,6BAAqB,EAAC,EAAAD,oBAAA,GAAAf,OAAO,CAACiB,WAAW,cAAAF,oBAAA,uBAAnBA,oBAAA,CAAqBG,SAAS,KAAIlB,OAAO,CAACmB,QAAQ,GAAG,IAAI,IAAInB,OAAO,CAACkB,SAAS,EAAEJ,MAAM,CAAC;AACtH,CAAC;AAACF,OAAA,CAAAC,0BAAA,GAAAA,0BAAA;AAEK,MAAMO,0BAA0B,GAAGA,CAACpB,OAA6B,EAAEqB,aAAa,GAAG,EAAE,KAAK;EAC/F,MAAMC,OAAO,GAAGtB,OAAO,CAACiB,WAAW;EACnC,IAAI,CAACK,OAAO,EAAE,OAAOD,aAAa;EAElC,OAAO,IAAAE,6BAAqB,EAACD,OAAO,EAAED,aAAa,CAAC;AACtD,CAAC;AAACT,OAAA,CAAAQ,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getOpenChannelTitle = exports.getOpenChannelParticipants = void 0;
7
- const getOpenChannelTitle = function (channel) {
8
- let DEFAULT_CHANNEL_NAME = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Open Channel';
7
+ const getOpenChannelTitle = (channel, DEFAULT_CHANNEL_NAME = 'Open Channel') => {
9
8
  const trimmedChannelName = channel.name.trim();
10
9
  if (trimmedChannelName === '') return DEFAULT_CHANNEL_NAME;
11
10
  return trimmedChannelName;