stream-chat-react-native-core 5.3.1-beta.1 → 5.3.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js +1 -1
- package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +8 -7
- package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +3 -2
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +1 -1
- package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/ReactionList.js +8 -7
- package/lib/module/components/Message/MessageSimple/ReactionList.js.map +1 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js +3 -2
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +1 -1
- package/src/components/Attachment/__tests__/Gallery.test.js +6 -6
- package/src/components/Attachment/utils/buildGallery/buildGallery.ts +1 -1
- package/src/components/Message/MessageSimple/ReactionList.tsx +8 -10
- package/src/components/Message/hooks/useCreateMessageContext.ts +5 -5
- package/src/version.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["buildGallery.ts"],"names":["buildGallery","images","sizeConfig","length","image","grid","slice","invertedDirections"],"mappings":";;;;;AAEA;;AACA;;AACA;;AAEA;;AAsBO,SAASA,YAAT,OAQyB;AAAA,MAL9BC,MAK8B,QAL9BA,MAK8B;AAAA,MAJ9BC,UAI8B,QAJ9BA,UAI8B;;AAC9B,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BC,MAAAA,KAAK,EAAEH,MAAM,CAAC,CAAD,CADkB;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,sDAAwB;AAC7BF,MAAAA,MAAM,EAANA,MAD6B;AAE7BC,MAAAA,UAAU,EAAVA;AAF6B,KAAxB,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BF,MAAAA,MAAM,EAANA,MAD+B;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAWD,SAAO,4CAAmB;AACxBG,IAAAA,IAAI,EAAE,CACJ,CAAC,CAAD,EAAI,CAAJ,CADI,EAEJ,CAAC,CAAD,EAAI,CAAJ,CAFI,CADkB;AAKxBJ,IAAAA,MAAM,EAAEA,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAhB,CALgB;AAMxBC,IAAAA,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"sources":["buildGallery.ts"],"names":["buildGallery","images","sizeConfig","length","image","grid","slice","invertedDirections"],"mappings":";;;;;AAEA;;AACA;;AACA;;AAEA;;AAsBO,SAASA,YAAT,OAQyB;AAAA,MAL9BC,MAK8B,QAL9BA,MAK8B;AAAA,MAJ9BC,UAI8B,QAJ9BA,UAI8B;;AAC9B,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BC,MAAAA,KAAK,EAAEH,MAAM,CAAC,CAAD,CADkB;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,sDAAwB;AAC7BF,MAAAA,MAAM,EAANA,MAD6B;AAE7BC,MAAAA,UAAU,EAAVA;AAF6B,KAAxB,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BF,MAAAA,MAAM,EAANA,MAD+B;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAWD,SAAO,4CAAmB;AACxBG,IAAAA,IAAI,EAAE,CACJ,CAAC,CAAD,EAAI,CAAJ,CADI,EAEJ,CAAC,CAAD,EAAI,CAAJ,CAFI,CADkB;AAKxBJ,IAAAA,MAAM,EAAEA,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAhB,CALgB;AAMxBC,IAAAA,kBAAkB,EAAE,IANI;AAOxBL,IAAAA,UAAU,EAAVA;AAPwB,GAAnB,CAAP;AASD","sourcesContent":["import type { Attachment } from 'stream-chat';\n\nimport { buildGalleryOfSingleImage } from './buildGalleryOfSingleImage';\nimport { buildGalleryOfThreeImages } from './buildGalleryOfThreeImages';\nimport { buildGalleryOfTwoImages } from './buildGalleryOfTwoImages';\n\nimport { buildThumbnailGrid } from './buildThumbnailGrid';\n\nimport type { GallerySizeAndThumbnailGrid, GallerySizeConfig } from './types';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\n\n/**\n * Builds and returns a gallery of optimized images to be rendered on UI.\n * This function take a object parameter with following properties:\n *\n * @param {Attachment[]} images - Array of image attachments\n * @param {GallerySizeConfig} sizeConfig - Theme config for the gallery\n *\n * The returned object contains following properties:\n *\n * - height {number[]} - Height of the gallery\n * - width {number[]} - Width of the gallery\n * - thumbnailGrid {number[][]} - Grid of thumbnail images\n * - invertedDirections {boolean} - Whether to invert the direction of the grid. By default grid is rendered with column as primary direction and row as secondary direction.\n *\n * @return {GallerySizeAndThumbnailGrid}\n */\nexport function buildGallery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n images,\n sizeConfig,\n}: {\n images: Attachment<StreamChatGenerics>[];\n sizeConfig: GallerySizeConfig;\n}): GallerySizeAndThumbnailGrid {\n if (images.length === 1) {\n return buildGalleryOfSingleImage({\n image: images[0],\n sizeConfig,\n });\n }\n\n if (images.length === 2) {\n return buildGalleryOfTwoImages({\n images,\n sizeConfig,\n });\n }\n\n if (images.length === 3) {\n return buildGalleryOfThreeImages({\n images,\n sizeConfig,\n });\n }\n\n /**\n * -----------\n * | | |\n * | | |\n * -----------\n * | | |\n * | | |\n * -----------\n */\n return buildThumbnailGrid({\n grid: [\n [1, 1],\n [1, 1],\n ],\n images: images.slice(0, 4),\n invertedDirections: true,\n sizeConfig,\n });\n}\n"]}
|
|
@@ -349,11 +349,9 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
349
349
|
var areEqual = function areEqual(prevProps, nextProps) {
|
|
350
350
|
var prevMessage = prevProps.message,
|
|
351
351
|
prevMessageContentWidth = prevProps.messageContentWidth,
|
|
352
|
-
prevReactions = prevProps.reactions,
|
|
353
352
|
prevTargetedMessage = prevProps.targetedMessage;
|
|
354
353
|
var nextMessage = nextProps.message,
|
|
355
354
|
nextMessageContentWidth = nextProps.messageContentWidth,
|
|
356
|
-
nextReactions = nextProps.reactions,
|
|
357
355
|
nextTargetedMessage = nextProps.targetedMessage;
|
|
358
356
|
var messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;
|
|
359
357
|
if (!messageContentWidthEqual) return false;
|
|
@@ -361,10 +359,13 @@ var areEqual = function areEqual(prevProps, nextProps) {
|
|
|
361
359
|
if (!messagePinnedEqual) return false;
|
|
362
360
|
var targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;
|
|
363
361
|
if (!targetedMessageEqual) return false;
|
|
364
|
-
var
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
362
|
+
var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref2, index) {
|
|
363
|
+
var _nextMessage$latest_r;
|
|
364
|
+
|
|
365
|
+
var type = _ref2.type;
|
|
366
|
+
return type === ((_nextMessage$latest_r = nextMessage.latest_reactions) == null ? void 0 : _nextMessage$latest_r[index].type);
|
|
367
|
+
}) : prevMessage.latest_reactions === nextMessage.latest_reactions;
|
|
368
|
+
if (!latestReactionsEqual) return false;
|
|
368
369
|
return true;
|
|
369
370
|
};
|
|
370
371
|
|
|
@@ -400,7 +401,7 @@ var ReactionList = function ReactionList(props) {
|
|
|
400
401
|
__self: _this,
|
|
401
402
|
__source: {
|
|
402
403
|
fileName: _jsxFileName,
|
|
403
|
-
lineNumber:
|
|
404
|
+
lineNumber: 348,
|
|
404
405
|
columnNumber: 5
|
|
405
406
|
}
|
|
406
407
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevReactions","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextReactions","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","reactionsEqual","every","latestReaction","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAKA;;AAIA;;AAEA;;;;;;;;;AAMA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,SAAS,EAAE;AACTC,IAAAA,IAAI,EAAE,CADG;AAETC,IAAAA,QAAQ,EAAE,UAFD;AAGTC,IAAAA,GAAG,EAAE;AAHI,GADoB;AAM/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,UAAU,EAAE,QADE;AAEdC,IAAAA,aAAa,EAAE,KAFD;AAGdC,IAAAA,cAAc,EAAE,cAHF;AAIdL,IAAAA,QAAQ,EAAE;AAJI,GANe;AAY/BM,EAAAA,wBAAwB,EAAE;AACxBN,IAAAA,QAAQ,EAAE;AADc;AAZK,CAAlB,CAAf;;AAsBA,IAAMO,IAML,GAAG,SANEA,IAMF,OAAyD;AAAA;;AAAA,MAAtDC,QAAsD,QAAtDA,QAAsD;AAAA,MAA5CC,IAA4C,QAA5CA,IAA4C;AAAA,MAAtCC,KAAsC,QAAtCA,KAAsC;AAAA,MAA/BC,kBAA+B,QAA/BA,kBAA+B;AAAA,MAAXC,IAAW,QAAXA,IAAW;AAC3D,MAAMC,YAAY,GAChB,0BAAAF,kBAAkB,CAACG,IAAnB,CAAwB,UAACC,QAAD;AAAA,WAAcA,QAAQ,CAACH,IAAT,KAAkBA,IAAhC;AAAA,GAAxB,4CAA+DL,IAA/D,KAAuES,gBADzE;AAGA,SACE,gCAAC,iBAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,YAAD;AAAc,IAAA,MAAM,EAAEP,IAAtB;AAA4B,IAAA,QAAQ,EAAED,QAAtC;AAAgD,IAAA,KAAK,EAAEE,KAAvD;AAA8D,IAAA,KAAK,EAAED,IAArE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CADF;AAKD,CAfD;;AAwCA,IAAMQ,uBAAuB,GAAG,SAA1BA,uBAA0B,CAG9BC,KAH8B,EAI3B;AACH,MACEC,SADF,GAiBID,KAjBJ,CACEC,SADF;AAAA,MAEQC,QAFR,GAiBIF,KAjBJ,CAEEG,IAFF;AAAA,MAGEC,OAHF,GAiBIJ,KAjBJ,CAGEI,OAHF;AAAA,MAIEC,mBAJF,GAiBIL,KAjBJ,CAIEK,mBAJF;AAAA,MAKEC,YALF,GAiBIN,KAjBJ,CAKEM,WALF;AAAA,MAMEC,QANF,GAiBIP,KAjBJ,CAMEO,OANF;AAAA,MAOEC,UAPF,GAiBIR,KAjBJ,CAOEQ,SAPF;AAAA,MAQEC,YARF,GAiBIT,KAjBJ,CAQES,YARF;AAAA,MASUC,UATV,GAiBIV,KAjBJ,CASEW,MATF;AAAA,MAUEC,SAVF,GAiBIZ,KAjBJ,CAUEY,SAVF;AAAA,MAWgBC,gBAXhB,GAiBIb,KAjBJ,CAWEc,YAXF;AAAA,MAYEC,kBAZF,GAiBIf,KAjBJ,CAYEe,kBAZF;AAAA,MAaUC,UAbV,GAiBIhB,KAjBJ,CAaEiB,MAbF;AAAA,MAccC,cAdd,GAiBIlB,KAjBJ,CAcEmB,UAdF;AAAA,MAeE1B,kBAfF,GAiBIO,KAjBJ,CAeEP,kBAfF;AAAA,MAgBE2B,eAhBF,GAiBIpB,KAjBJ,CAgBEoB,eAhBF;;AAmBA,kBAyBI,6BAzBJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAGMC,WAHN,yBAGMA,WAHN;AAAA,MAIMC,IAJN,yBAIMA,IAJN;AAAA,MAKMC,cALN,yBAKMA,cALN;AAAA,MAMMC,YANN,yBAMMA,YANN;AAAA,MAOMC,yBAPN,yBAOMA,yBAPN;AAAA,MAQMC,KARN,yBAQMA,KARN;AAAA,MASMC,UATN,yBASMA,UATN;AAAA,8CAWIC,aAXJ;AAAA,qDAYMC,aAZN;AAAA,MAYuBC,SAZvB,0BAYuBA,SAZvB;AAAA,MAYkCC,MAZlC,0BAYkCA,MAZlC;AAAA,qDAaMC,YAbN;AAAA,MAcQtD,SAdR,0BAcQA,SAdR;AAAA,MAeQuD,UAfR,0BAeQA,UAfR;AAAA,MAgBgBC,WAhBhB,0BAgBQzB,MAhBR;AAAA,MAiBQ3B,cAjBR,0BAiBQA,cAjBR;AAAA,MAkBQI,wBAlBR,0BAkBQA,wBAlBR;AAAA,MAmBsBiD,iBAnBtB,0BAmBQvB,YAnBR;AAAA,MAoBoBwB,eApBpB,0BAoBQnB,UApBR;AAAA,MAuBIoB,aAvBJ,mBAuBIA,aAvBJ;;AA2BA,MAAMC,KAAK,GAAG,wCAAsBA,KAApC;AAEA,MAAMC,sBAAsB,GAAGhD,kBAAkB,CAACiD,GAAnB,CAC7B,UAACC,iBAAD;AAAA,WAAuBA,iBAAiB,CAACjD,IAAzC;AAAA,GAD6B,CAA/B;AAGA,MAAMkD,qBAAqB,GAAGhC,SAAS,CAACiC,IAAV,CAAe,UAAChD,QAAD;AAAA,WAC3C4C,sBAAsB,CAACK,QAAvB,CAAgCjD,QAAQ,CAACH,IAAzC,CAD2C;AAAA,GAAf,CAA9B;;AAIA,MAAI,CAACkD,qBAAD,IAA0BvC,mBAAmB,KAAK,CAAtD,EAAyD;AACvD,WAAO,IAAP;AACD;;AAED,MAAM0C,aAAa,GAAG9C,SAAS,KAAK,MAApC;AACA,MAAME,IAAI,GAAGD,QAAQ,IAAI6C,aAAZ,GAA4BtB,cAA5B,GAA6CC,YAA1D;AACA,MAAMf,MAAM,GAAGD,UAAU,IAAI0B,WAA7B;AACA,MAAMtB,YAAY,GAAGD,gBAAgB,IAAIwB,iBAAzC;AACA,MAAMW,WAAW,GAAG5C,OAAO,CAAC6C,MAAR,IAAkB7B,eAAe,KAAKhB,OAAO,CAAC8C,EAAlE;AACA,MAAMjC,MAAM,GAAGD,UAAU,KAAKgC,WAAW,GAAGrB,yBAAH,GAA+BE,UAA/C,CAAzB;AACA,MAAMV,UAAU,GAAGD,cAAc,IAAIoB,eAArC;AAEA,MAAMa,EAAE,GAAGJ,aAAa,GACpB1C,mBAAmB,IAClB+C,MAAM,CAACpB,SAAS,CAACqB,WAAX,CAAN,IAAiC,CADf,CAAnB,IAECD,MAAM,CAACnB,MAAM,CAACO,KAAR,CAAN,IAAwB,CAFzB,IAGA7B,MAAM,GAAG,GAJW,GAKpB6B,KAAK,GAAGD,aAAa,GAAG,CAAxB,GAA4BlC,mBALhC;AAMA,MAAMiD,EAAE,GAAGH,EAAE,GAAGxC,MAAM,GAAG,CAAT,IAAcoC,aAAa,GAAG,CAAH,GAAO,CAAC,CAAnC,CAAhB;AACA,MAAMQ,EAAE,GAAGzC,YAAY,GAAGH,MAAM,GAAG,CAAnC;AACA,MAAM6C,EAAE,GAAG1C,YAAY,GAAGH,MAA1B;AAEA,MAAM8C,eAAe,GAAGH,EAAE,GAAIxC,YAAY,GAAGF,SAAS,CAAC8C,MAA1B,GAAoC,CAAzC,GAA6CnB,aAArE;AACA,MAAMoB,gBAAgB,GACpBL,EAAE,GAAGnC,UAAL,GAAmBL,YAAY,GAAGF,SAAS,CAAC8C,MAA1B,GAAoC,CAAtD,GAA0DlB,KAAK,GAAGD,aAAa,GAAG,CADpF;AAEA,MAAM1D,IAAI,GACR+B,SAAS,CAAC8C,MAAV,KAAqB,CAArB,GACIP,EAAE,IAAIJ,aAAa,GAAG,CAACpC,MAAJ,GAAaA,MAAM,GAAGG,YAAvC,CADN,GAEI,CAAC2C,eAAD,GACAlB,aADA,GAEA,CAACoB,gBAAD,GACAnB,KAAK,GAAGD,aAAa,GAAG,CAAxB,GAA4BzB,YAAY,GAAGF,SAAS,CAAC8C,MAArD,GAA8DvC,UAD9D,GAEAmC,EAAE,GAAIxC,YAAY,GAAGF,SAAS,CAAC8C,MAA1B,GAAoC,CAAzC,GAA6CvC,UAPnD;AASA,SACE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACL1C,MAAM,CAACG,SADF,EAEL;AACEgF,MAAAA,MAAM,EAAE9C,YAAY,GAAGH,MAAM,GAAG,CADlC;AAEE6B,MAAAA,KAAK,EAALA;AAFF,KAFK,EAML5D,SANK,CADT;AASE,IAAA,MAAM,EAAC,eATT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAWGgC,SAAS,CAAC8C,MAAV,GACC,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAAChF,wBAAWmF,YAAZ,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,0BAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAEV,EAAZ;AAAgB,IAAA,EAAE,EAAEI,EAApB;AAAwB,IAAA,IAAI,EAAEtC,MAA9B;AAAsC,IAAA,CAAC,EAAEN,MAAM,GAAGQ,UAAU,GAAG,CAA/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAEE,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAEmC,EAAZ;AAAgB,IAAA,EAAE,EAAEE,EAApB;AAAwB,IAAA,IAAI,EAAEvC,MAA9B;AAAsC,IAAA,CAAC,EAAEN,MAAM,GAAG,CAAT,GAAaQ,UAAU,GAAG,CAAnE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAFF,EAGE,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAEgC,EAAZ;AAAgB,IAAA,EAAE,EAAEI,EAApB;AAAwB,IAAA,IAAI,EAAEpD,IAA9B;AAAoC,IAAA,CAAC,EAAEQ,MAAM,GAAGQ,UAAhD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAHF,EAIE,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAEmC,EAAZ;AAAgB,IAAA,EAAE,EAAEE,EAApB;AAAwB,IAAA,IAAI,EAAErD,IAA9B;AAAoC,IAAA,CAAC,EAAEQ,MAAM,GAAG,CAAT,GAAaQ,UAApD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJF,EAKE,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAEgC,EAAZ;AAAgB,IAAA,EAAE,EAAEI,EAApB;AAAwB,IAAA,IAAI,EAAER,aAAa,GAAG5C,IAAH,GAAUyB,KAArD;AAA4D,IAAA,CAAC,EAAEjB,MAA/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IALF,EAME,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAE2C,EAAZ;AAAgB,IAAA,EAAE,EAAEE,EAApB;AAAwB,IAAA,IAAI,EAAET,aAAa,GAAG5C,IAAH,GAAUyB,KAArD;AAA4D,IAAA,CAAC,EAAEjB,MAAM,GAAG,CAAxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IANF,CADF,EASE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLlC,MAAM,CAACW,wBADF,EAEL;AACE0E,MAAAA,eAAe,EAAEf,aAAa,GAAG5C,IAAH,GAAUyB,KAD1C;AAEEmC,MAAAA,WAAW,EAAE5D,IAFf;AAGE6D,MAAAA,YAAY,EAAElD,YAHhB;AAIEmD,MAAAA,WAAW,EAAE9C,UAJf;AAKEyC,MAAAA,MAAM,EAAE9C,YALV;AAMEjC,MAAAA,IAAI,EAAJA,IANF;AAOE2D,MAAAA,KAAK,EAAE1B,YAAY,GAAGF,SAAS,CAAC8C;AAPlC,KAFK,EAWLtE,wBAXK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IATF,EAwBE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACV,wBAAWmF,YAAZ,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,0BAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,sBAAD;AAAQ,IAAA,EAAE,EAAEP,EAAZ;AAAgB,IAAA,EAAE,EAAEE,EAApB;AAAwB,IAAA,IAAI,EAAET,aAAa,GAAG5C,IAAH,GAAUyB,KAArD;AAA4D,IAAA,CAAC,EAAEjB,MAAM,GAAG,CAAxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CADF,CAxBF,EA6BE,gCAAC,6BAAD;AACE,IAAA,QAAQ,EAAEF,YADZ;AAEE,IAAA,WAAW,EAAE,qBAACyD,KAAD,EAAW;AACtB,UAAI5D,YAAJ,EAAiB;AACfA,QAAAA,YAAW,CAAC;AACV6D,UAAAA,OAAO,EAAE,cADC;AAEVD,UAAAA,KAAK,EAALA;AAFU,SAAD,CAAX;AAID;AACF,KATH;AAUE,IAAA,OAAO,EAAE,iBAACA,KAAD,EAAW;AAClB,UAAI3D,QAAJ,EAAa;AACXA,QAAAA,QAAO,CAAC;AACN6D,UAAAA,cAAc,EAAE;AAAA,mBAAMrD,kBAAkB,CAAC,IAAD,CAAxB;AAAA,WADV;AAENoD,UAAAA,OAAO,EAAE,cAFH;AAGND,UAAAA,KAAK,EAALA;AAHM,SAAD,CAAP;AAKD;AACF,KAlBH;AAmBE,IAAA,SAAS,EAAE,mBAACA,KAAD,EAAW;AACpB,UAAI1D,UAAJ,EAAe;AACbA,QAAAA,UAAS,CAAC;AACR4D,UAAAA,cAAc,EAAE;AAAA,mBAAMrD,kBAAkB,CAAC,IAAD,CAAxB;AAAA,WADR;AAERoD,UAAAA,OAAO,EAAE,cAFD;AAGRD,UAAAA,KAAK,EAALA;AAHQ,SAAD,CAAT;AAKD;AACF,KA3BH;AA4BE,IAAA,KAAK,EAAE,CACLzF,MAAM,CAACO,cADF,EAEL;AACE8E,MAAAA,eAAe,EAAEf,aAAa,GAAG5C,IAAH,GAAUyB,KAD1C;AAEEoC,MAAAA,YAAY,EAAElD,YAAY,GAAGK,UAAU,GAAG,CAF5C;AAGEyC,MAAAA,MAAM,EAAE9C,YAAY,GAAGK,UAAU,GAAG,CAHtC;AAIEtC,MAAAA,IAAI,EAAEA,IAAI,GAAGsC,UAJf;AAKEpC,MAAAA,GAAG,EAAEoC,UALP;AAMEqB,MAAAA,KAAK,EAAE1B,YAAY,GAAGF,SAAS,CAAC8C,MAAzB,GAAkCvC,UAAU,GAAG;AANxD,KAFK,EAULnC,cAVK,CA5BT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAyCG4B,SAAS,CAAC8B,GAAV,CAAc,UAAC7C,QAAD;AAAA,WACb,gCAAC,IAAD;AACE,MAAA,GAAG,EAAEA,QAAQ,CAACH,IADhB;AAEE,MAAA,QAAQ,EAAEG,QAAQ,CAACwE,GAAT,GAAe9C,WAAf,GAA6BC,IAFzC;AAGE,MAAA,IAAI,EAAEV,YAAY,GAAG,CAHvB;AAIE,MAAA,KAAK,EAAEqB,UAJT;AAKE,MAAA,kBAAkB,EAAE1C,kBALtB;AAME,MAAA,IAAI,EAAEI,QAAQ,CAACH,IANjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADa;AAAA,GAAd,CAzCH,CA7BF,CADD,GAmFG,IA9FN,CADF;AAkGD,CAhMD;;AAkMA,IAAM4E,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MACWC,WADX,GAKIF,SALJ,CACEnE,OADF;AAAA,MAEuBsE,uBAFvB,GAKIH,SALJ,CAEElE,mBAFF;AAAA,MAGasE,aAHb,GAKIJ,SALJ,CAGE3D,SAHF;AAAA,MAImBgE,mBAJnB,GAKIL,SALJ,CAIEnD,eAJF;AAMA,MACWyD,WADX,GAKIL,SALJ,CACEpE,OADF;AAAA,MAEuB0E,uBAFvB,GAKIN,SALJ,CAEEnE,mBAFF;AAAA,MAGa0E,aAHb,GAKIP,SALJ,CAGE5D,SAHF;AAAA,MAImBoE,mBAJnB,GAKIR,SALJ,CAIEpD,eAJF;AAOA,MAAM6D,wBAAwB,GAAGP,uBAAuB,KAAKI,uBAA7D;AACA,MAAI,CAACG,wBAAL,EAA+B,OAAO,KAAP;AAE/B,MAAMC,kBAAkB,GAAGT,WAAW,CAACxB,MAAZ,KAAuB4B,WAAW,CAAC5B,MAA9D;AAEA,MAAI,CAACiC,kBAAL,EAAyB,OAAO,KAAP;AAEzB,MAAMC,oBAAoB,GAAGP,mBAAmB,KAAKI,mBAArD;AAEA,MAAI,CAACG,oBAAL,EAA2B,OAAO,KAAP;AAE3B,MAAMC,cAAc,GAClBT,aAAa,CAACjB,MAAd,KAAyBqB,aAAa,CAACrB,MAAvC,IACAiB,aAAa,CAACU,KAAd,CACE,UAACC,cAAD,EAAiBC,KAAjB;AAAA,WACER,aAAa,CAACQ,KAAD,CAAb,CAAqBlB,GAArB,KAA6BiB,cAAc,CAACjB,GAA5C,IACAU,aAAa,CAACQ,KAAD,CAAb,CAAqB7F,IAArB,KAA8B4F,cAAc,CAAC5F,IAF/C;AAAA,GADF,CAFF;AAOA,MAAI,CAAC0F,cAAL,EAAqB,OAAO,KAAP;AAErB,SAAO,IAAP;AACD,CAtCD;;AAwCA,IAAMI,oBAAoB,GAAGC,kBAAMC,IAAN,CAC3B3F,uBAD2B,EAE3BuE,QAF2B,CAA7B;;AAaO,IAAMqB,YAAY,GAAG,SAAfA,YAAe,CAG1B3F,KAH0B,EAIvB;AACH,2BASI,wCATJ;AAAA,MACEC,SADF,sBACEA,SADF;AAAA,MAEEG,OAFF,sBAEEA,OAFF;AAAA,MAGEE,WAHF,sBAGEA,WAHF;AAAA,MAIEC,OAJF,sBAIEA,OAJF;AAAA,MAKEC,SALF,sBAKEA,SALF;AAAA,MAMEC,YANF,sBAMEA,YANF;AAAA,MAOEG,SAPF,sBAOEA,SAPF;AAAA,MAQEG,kBARF,sBAQEA,kBARF;;AAUA,4BAAgD,0CAAhD;AAAA,MAAQtB,kBAAR,uBAAQA,kBAAR;AAAA,MAA4B2B,eAA5B,uBAA4BA,eAA5B;;AAEA,SACE,gCAAC,oBAAD;AAEInB,IAAAA,SAAS,EAATA,SAFJ;AAGIG,IAAAA,OAAO,EAAPA,OAHJ;AAIIE,IAAAA,WAAW,EAAXA,WAJJ;AAKIC,IAAAA,OAAO,EAAPA,OALJ;AAMIC,IAAAA,SAAS,EAATA,SANJ;AAOIC,IAAAA,YAAY,EAAZA,YAPJ;AAQIG,IAAAA,SAAS,EAATA,SARJ;AASIG,IAAAA,kBAAkB,EAAlBA,kBATJ;AAUItB,IAAAA,kBAAkB,EAAlBA,kBAVJ;AAWI2B,IAAAA,eAAe,EAAfA;AAXJ,KAaMpB,KAbN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAiBD,CAlCM","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n reactions: prevReactions,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n reactions: nextReactions,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const reactionsEqual =\n prevReactions.length === nextReactions.length &&\n prevReactions.every(\n (latestReaction, index) =>\n nextReactions[index].own === latestReaction.own &&\n nextReactions[index].type === latestReaction.type,\n );\n if (!reactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<StreamChatGenerics>();\n const { supportedReactions, targetedMessage } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","latestReactionsEqual","Array","isArray","latest_reactions","every","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<StreamChatGenerics>();\n const { supportedReactions, targetedMessage } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
@@ -55,8 +55,9 @@ var useCreateMessageContext = function useCreateMessageContext(_ref) {
|
|
|
55
55
|
var latestReactions = message.latest_reactions ? message.latest_reactions : undefined;
|
|
56
56
|
var readBy = (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.readBy;
|
|
57
57
|
var messageValue = "" + (latestReactions ? latestReactions.map(function (_ref3) {
|
|
58
|
-
var type = _ref3.type
|
|
59
|
-
|
|
58
|
+
var type = _ref3.type,
|
|
59
|
+
user = _ref3.user;
|
|
60
|
+
return "" + type + (user == null ? void 0 : user.id);
|
|
60
61
|
}).join() : '') + message.updated_at + message.deleted_at + readBy + message.status + message.type + message.text + message.reply_count;
|
|
61
62
|
var membersValue = JSON.stringify(members);
|
|
62
63
|
var quotedMessageDeletedValue = (_message$quoted_messa = message.quoted_message) == null ? void 0 : _message$quoted_messa.deleted_at;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useCreateMessageContext.ts"],"names":["useCreateMessageContext","actionsEnabled","alignment","channel","disabled","files","goToMessage","groupStyles","handleAction","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleToggleReaction","hasReactions","images","isMyMessage","lastGroupMessage","lastReceivedId","members","message","messageContentOrder","onLongPress","onlyEmojis","onOpenThread","onPress","onPressIn","otherAttachments","preventPress","reactions","showAvatar","showMessageOverlay","showMessageStatus","threadList","videos","groupStylesLength","length","reactionsValue","map","own","type","join","latestReactions","latest_reactions","undefined","readBy","messageValue","updated_at","deleted_at","status","text","reply_count","membersValue","JSON","stringify","quotedMessageDeletedValue","quoted_message","messageContext"],"mappings":";;;;;AAAA;;AAIA;;AAEO,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,OAuCQ;AAAA;;AAAA,MApC7CC,cAoC6C,QApC7CA,cAoC6C;AAAA,MAnC7CC,SAmC6C,QAnC7CA,SAmC6C;AAAA,MAlC7CC,OAkC6C,QAlC7CA,OAkC6C;AAAA,MAjC7CC,QAiC6C,QAjC7CA,QAiC6C;AAAA,MAhC7CC,KAgC6C,QAhC7CA,KAgC6C;AAAA,MA/B7CC,WA+B6C,QA/B7CA,WA+B6C;AAAA,MA9B7CC,WA8B6C,QA9B7CA,WA8B6C;AAAA,MA7B7CC,YA6B6C,QA7B7CA,YA6B6C;AAAA,MA5B7CC,mBA4B6C,QA5B7CA,mBA4B6C;AAAA,MA3B7CC,iBA2B6C,QA3B7CA,iBA2B6C;AAAA,MA1B7CC,wBA0B6C,QA1B7CA,wBA0B6C;AAAA,MAzB7CC,mBAyB6C,QAzB7CA,mBAyB6C;AAAA,MAxB7CC,mBAwB6C,QAxB7CA,mBAwB6C;AAAA,MAvB7CC,oBAuB6C,QAvB7CA,oBAuB6C;AAAA,MAtB7CC,oBAsB6C,QAtB7CA,oBAsB6C;AAAA,MArB7CC,YAqB6C,QArB7CA,YAqB6C;AAAA,MApB7CC,MAoB6C,QApB7CA,MAoB6C;AAAA,MAnB7CC,WAmB6C,QAnB7CA,WAmB6C;AAAA,MAlB7CC,gBAkB6C,QAlB7CA,gBAkB6C;AAAA,MAjB7CC,cAiB6C,QAjB7CA,cAiB6C;AAAA,MAhB7CC,OAgB6C,QAhB7CA,OAgB6C;AAAA,MAf7CC,OAe6C,QAf7CA,OAe6C;AAAA,MAd7CC,mBAc6C,QAd7CA,mBAc6C;AAAA,MAb7CC,WAa6C,QAb7CA,WAa6C;AAAA,MAZ7CC,UAY6C,QAZ7CA,UAY6C;AAAA,MAX7CC,YAW6C,QAX7CA,YAW6C;AAAA,MAV7CC,OAU6C,QAV7CA,OAU6C;AAAA,MAT7CC,SAS6C,QAT7CA,SAS6C;AAAA,MAR7CC,gBAQ6C,QAR7CA,gBAQ6C;AAAA,MAP7CC,YAO6C,QAP7CA,YAO6C;AAAA,MAN7CC,SAM6C,QAN7CA,SAM6C;AAAA,MAL7CC,UAK6C,QAL7CA,UAK6C;AAAA,MAJ7CC,kBAI6C,QAJ7CA,kBAI6C;AAAA,MAH7CC,iBAG6C,QAH7CA,iBAG6C;AAAA,MAF7CC,UAE6C,QAF7CA,UAE6C;AAAA,MAD7CC,MAC6C,QAD7CA,MAC6C;AAC7C,MAAMC,iBAAiB,GAAG9B,WAAW,CAAC+B,MAAtC;AACA,MAAMC,cAAc,GAAGR,SAAS,CAACS,GAAV,CAAc;AAAA,QAAGC,GAAH,SAAGA,GAAH;AAAA,QAAQC,IAAR,SAAQA,IAAR;AAAA,gBAAsBD,GAAtB,GAA4BC,IAA5B;AAAA,GAAd,EAAkDC,IAAlD,EAAvB;AACA,MAAMC,eAAe,GAAGtB,OAAO,CAACuB,gBAAR,GAA2BvB,OAAO,CAACuB,gBAAnC,GAAsDC,SAA9E;AACA,MAAMC,MAAM,GAAG,+DAA0CzB,OAA1C,KAAsDA,OAAO,CAACyB,MAA7E;AACA,MAAMC,YAAY,
|
|
1
|
+
{"version":3,"sources":["useCreateMessageContext.ts"],"names":["useCreateMessageContext","actionsEnabled","alignment","channel","disabled","files","goToMessage","groupStyles","handleAction","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleToggleReaction","hasReactions","images","isMyMessage","lastGroupMessage","lastReceivedId","members","message","messageContentOrder","onLongPress","onlyEmojis","onOpenThread","onPress","onPressIn","otherAttachments","preventPress","reactions","showAvatar","showMessageOverlay","showMessageStatus","threadList","videos","groupStylesLength","length","reactionsValue","map","own","type","join","latestReactions","latest_reactions","undefined","readBy","messageValue","user","id","updated_at","deleted_at","status","text","reply_count","membersValue","JSON","stringify","quotedMessageDeletedValue","quoted_message","messageContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { isMessageWithStylesReadByAndDateSeparator } from '../../MessageList/hooks/useMessageList';\n\nexport const useCreateMessageContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onOpenThread,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus,\n threadList,\n videos,\n}: MessageContextValue<StreamChatGenerics>) => {\n const groupStylesLength = groupStyles.length;\n const reactionsValue = reactions.map(({ own, type }) => `${own}${type}`).join();\n const latestReactions = message.latest_reactions ? message.latest_reactions : undefined;\n const readBy = isMessageWithStylesReadByAndDateSeparator(message) && message.readBy;\n const messageValue = `${\n latestReactions ? latestReactions.map(({ type, user }) => `${type}${user?.id}`).join() : ''\n }${message.updated_at}${message.deleted_at}${readBy}${message.status}${message.type}${\n message.text\n }${message.reply_count}`;\n const membersValue = JSON.stringify(members);\n\n const quotedMessageDeletedValue = message.quoted_message?.deleted_at;\n\n const messageContext: MessageContextValue<StreamChatGenerics> = useMemo(\n () => ({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onOpenThread,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus,\n threadList,\n videos,\n }),\n [\n actionsEnabled,\n quotedMessageDeletedValue,\n alignment,\n disabled,\n goToMessage,\n groupStylesLength,\n hasReactions,\n lastGroupMessage,\n lastReceivedId,\n membersValue,\n messageValue,\n reactionsValue,\n showAvatar,\n showMessageStatus,\n threadList,\n ],\n );\n\n return messageContext;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["buildGallery.ts"],"names":["buildGallery","images","sizeConfig","length","image","grid","slice","invertedDirections"],"mappings":";;;;;AAEA;;AACA;;AACA;;AAEA;;AAsBO,SAASA,YAAT,OAQyB;AAAA,MAL9BC,MAK8B,QAL9BA,MAK8B;AAAA,MAJ9BC,UAI8B,QAJ9BA,UAI8B;;AAC9B,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BC,MAAAA,KAAK,EAAEH,MAAM,CAAC,CAAD,CADkB;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,sDAAwB;AAC7BF,MAAAA,MAAM,EAANA,MAD6B;AAE7BC,MAAAA,UAAU,EAAVA;AAF6B,KAAxB,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BF,MAAAA,MAAM,EAANA,MAD+B;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAWD,SAAO,4CAAmB;AACxBG,IAAAA,IAAI,EAAE,CACJ,CAAC,CAAD,EAAI,CAAJ,CADI,EAEJ,CAAC,CAAD,EAAI,CAAJ,CAFI,CADkB;AAKxBJ,IAAAA,MAAM,EAAEA,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAhB,CALgB;AAMxBC,IAAAA,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"sources":["buildGallery.ts"],"names":["buildGallery","images","sizeConfig","length","image","grid","slice","invertedDirections"],"mappings":";;;;;AAEA;;AACA;;AACA;;AAEA;;AAsBO,SAASA,YAAT,OAQyB;AAAA,MAL9BC,MAK8B,QAL9BA,MAK8B;AAAA,MAJ9BC,UAI8B,QAJ9BA,UAI8B;;AAC9B,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BC,MAAAA,KAAK,EAAEH,MAAM,CAAC,CAAD,CADkB;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,sDAAwB;AAC7BF,MAAAA,MAAM,EAANA,MAD6B;AAE7BC,MAAAA,UAAU,EAAVA;AAF6B,KAAxB,CAAP;AAID;;AAED,MAAID,MAAM,CAACE,MAAP,KAAkB,CAAtB,EAAyB;AACvB,WAAO,0DAA0B;AAC/BF,MAAAA,MAAM,EAANA,MAD+B;AAE/BC,MAAAA,UAAU,EAAVA;AAF+B,KAA1B,CAAP;AAID;;AAWD,SAAO,4CAAmB;AACxBG,IAAAA,IAAI,EAAE,CACJ,CAAC,CAAD,EAAI,CAAJ,CADI,EAEJ,CAAC,CAAD,EAAI,CAAJ,CAFI,CADkB;AAKxBJ,IAAAA,MAAM,EAAEA,MAAM,CAACK,KAAP,CAAa,CAAb,EAAgB,CAAhB,CALgB;AAMxBC,IAAAA,kBAAkB,EAAE,IANI;AAOxBL,IAAAA,UAAU,EAAVA;AAPwB,GAAnB,CAAP;AASD","sourcesContent":["import type { Attachment } from 'stream-chat';\n\nimport { buildGalleryOfSingleImage } from './buildGalleryOfSingleImage';\nimport { buildGalleryOfThreeImages } from './buildGalleryOfThreeImages';\nimport { buildGalleryOfTwoImages } from './buildGalleryOfTwoImages';\n\nimport { buildThumbnailGrid } from './buildThumbnailGrid';\n\nimport type { GallerySizeAndThumbnailGrid, GallerySizeConfig } from './types';\n\nimport type { DefaultStreamChatGenerics } from '../../../../types/types';\n\n/**\n * Builds and returns a gallery of optimized images to be rendered on UI.\n * This function take a object parameter with following properties:\n *\n * @param {Attachment[]} images - Array of image attachments\n * @param {GallerySizeConfig} sizeConfig - Theme config for the gallery\n *\n * The returned object contains following properties:\n *\n * - height {number[]} - Height of the gallery\n * - width {number[]} - Width of the gallery\n * - thumbnailGrid {number[][]} - Grid of thumbnail images\n * - invertedDirections {boolean} - Whether to invert the direction of the grid. By default grid is rendered with column as primary direction and row as secondary direction.\n *\n * @return {GallerySizeAndThumbnailGrid}\n */\nexport function buildGallery<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n images,\n sizeConfig,\n}: {\n images: Attachment<StreamChatGenerics>[];\n sizeConfig: GallerySizeConfig;\n}): GallerySizeAndThumbnailGrid {\n if (images.length === 1) {\n return buildGalleryOfSingleImage({\n image: images[0],\n sizeConfig,\n });\n }\n\n if (images.length === 2) {\n return buildGalleryOfTwoImages({\n images,\n sizeConfig,\n });\n }\n\n if (images.length === 3) {\n return buildGalleryOfThreeImages({\n images,\n sizeConfig,\n });\n }\n\n /**\n * -----------\n * | | |\n * | | |\n * -----------\n * | | |\n * | | |\n * -----------\n */\n return buildThumbnailGrid({\n grid: [\n [1, 1],\n [1, 1],\n ],\n images: images.slice(0, 4),\n invertedDirections: true,\n sizeConfig,\n });\n}\n"]}
|
|
@@ -349,11 +349,9 @@ var ReactionListWithContext = function ReactionListWithContext(props) {
|
|
|
349
349
|
var areEqual = function areEqual(prevProps, nextProps) {
|
|
350
350
|
var prevMessage = prevProps.message,
|
|
351
351
|
prevMessageContentWidth = prevProps.messageContentWidth,
|
|
352
|
-
prevReactions = prevProps.reactions,
|
|
353
352
|
prevTargetedMessage = prevProps.targetedMessage;
|
|
354
353
|
var nextMessage = nextProps.message,
|
|
355
354
|
nextMessageContentWidth = nextProps.messageContentWidth,
|
|
356
|
-
nextReactions = nextProps.reactions,
|
|
357
355
|
nextTargetedMessage = nextProps.targetedMessage;
|
|
358
356
|
var messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;
|
|
359
357
|
if (!messageContentWidthEqual) return false;
|
|
@@ -361,10 +359,13 @@ var areEqual = function areEqual(prevProps, nextProps) {
|
|
|
361
359
|
if (!messagePinnedEqual) return false;
|
|
362
360
|
var targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;
|
|
363
361
|
if (!targetedMessageEqual) return false;
|
|
364
|
-
var
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
362
|
+
var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref2, index) {
|
|
363
|
+
var _nextMessage$latest_r;
|
|
364
|
+
|
|
365
|
+
var type = _ref2.type;
|
|
366
|
+
return type === ((_nextMessage$latest_r = nextMessage.latest_reactions) == null ? void 0 : _nextMessage$latest_r[index].type);
|
|
367
|
+
}) : prevMessage.latest_reactions === nextMessage.latest_reactions;
|
|
368
|
+
if (!latestReactionsEqual) return false;
|
|
368
369
|
return true;
|
|
369
370
|
};
|
|
370
371
|
|
|
@@ -400,7 +401,7 @@ var ReactionList = function ReactionList(props) {
|
|
|
400
401
|
__self: _this,
|
|
401
402
|
__source: {
|
|
402
403
|
fileName: _jsxFileName,
|
|
403
|
-
lineNumber:
|
|
404
|
+
lineNumber: 348,
|
|
404
405
|
columnNumber: 5
|
|
405
406
|
}
|
|
406
407
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevReactions","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextReactions","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","reactionsEqual","every","latestReaction","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n reactions: prevReactions,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n reactions: nextReactions,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const reactionsEqual =\n prevReactions.length === nextReactions.length &&\n prevReactions.every(\n (latestReaction, index) =>\n nextReactions[index].own === latestReaction.own &&\n nextReactions[index].type === latestReaction.type,\n );\n if (!reactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<StreamChatGenerics>();\n const { supportedReactions, targetedMessage } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["ReactionList.tsx"],"names":["styles","StyleSheet","create","container","left","position","top","reactionBubble","alignItems","flexDirection","justifyContent","reactionBubbleBackground","Icon","pathFill","size","style","supportedReactions","type","ReactionIcon","find","reaction","Unknown","ReactionListWithContext","props","alignment","propFill","fill","message","messageContentWidth","onLongPress","onPress","onPressIn","preventPress","propRadius","radius","reactions","propReactionSize","reactionSize","showMessageOverlay","propStroke","stroke","propStrokeSize","strokeSize","targetedMessage","theme","colors","accent_blue","grey","grey_gainsboro","grey_whisper","targetedMessageBackground","white","white_snow","messageSimple","avatarWrapper","leftAlign","spacer","reactionList","middleIcon","themeRadius","themeReactionSize","themeStrokeSize","screenPadding","width","supportedReactionTypes","map","supportedReaction","hasSupportedReactions","some","includes","alignmentLeft","highlighted","pinned","id","x1","Number","marginRight","x2","y1","y2","insideLeftBound","length","insideRightBound","height","absoluteFill","backgroundColor","borderColor","borderRadius","borderWidth","event","emitter","defaultHandler","own","areEqual","prevProps","nextProps","prevMessage","prevMessageContentWidth","prevTargetedMessage","nextMessage","nextMessageContentWidth","nextTargetedMessage","messageContentWidthEqual","messagePinnedEqual","targetedMessageEqual","latestReactionsEqual","Array","isArray","latest_reactions","every","index","MemoizedReactionList","React","memo","ReactionList"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, TouchableOpacity, useWindowDimensions, View } from 'react-native';\n\nimport Svg, { Circle } from 'react-native-svg';\n\nimport {\n MessageContextValue,\n Reactions,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Unknown } from '../../../icons/Unknown';\n\nimport type { IconProps } from '../../../icons/utils/base';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { ReactionData } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n container: {\n left: 0,\n position: 'absolute',\n top: 0,\n },\n reactionBubble: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'space-evenly',\n position: 'absolute',\n },\n reactionBubbleBackground: {\n position: 'absolute',\n },\n});\n\nexport type MessageReactions = {\n reactions: Reactions;\n supportedReactions?: ReactionData[];\n};\n\nconst Icon: React.FC<\n Pick<IconProps, 'pathFill' | 'style'> & {\n size: number;\n supportedReactions: ReactionData[];\n type: string;\n }\n> = ({ pathFill, size, style, supportedReactions, type }) => {\n const ReactionIcon =\n supportedReactions.find((reaction) => reaction.type === type)?.Icon || Unknown;\n\n return (\n <View>\n <ReactionIcon height={size} pathFill={pathFill} style={style} width={size} />\n </View>\n );\n};\n\nexport type ReactionListPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'message'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'reactions'\n | 'showMessageOverlay'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'targetedMessage'> & {\n messageContentWidth: number;\n supportedReactions: ReactionData[];\n fill?: string;\n radius?: number; // not recommended to change this\n reactionSize?: number;\n stroke?: string;\n strokeSize?: number; // not recommended to change this\n };\n\nconst ReactionListWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n fill: propFill,\n message,\n messageContentWidth,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n radius: propRadius,\n reactions,\n reactionSize: propReactionSize,\n showMessageOverlay,\n stroke: propStroke,\n strokeSize: propStrokeSize,\n supportedReactions,\n targetedMessage,\n } = props;\n\n const {\n theme: {\n colors: {\n accent_blue,\n grey,\n grey_gainsboro,\n grey_whisper,\n targetedMessageBackground,\n white,\n white_snow,\n },\n messageSimple: {\n avatarWrapper: { leftAlign, spacer },\n reactionList: {\n container,\n middleIcon,\n radius: themeRadius,\n reactionBubble,\n reactionBubbleBackground,\n reactionSize: themeReactionSize,\n strokeSize: themeStrokeSize,\n },\n },\n screenPadding,\n },\n } = useTheme();\n\n const width = useWindowDimensions().width;\n\n const supportedReactionTypes = supportedReactions.map(\n (supportedReaction) => supportedReaction.type,\n );\n const hasSupportedReactions = reactions.some((reaction) =>\n supportedReactionTypes.includes(reaction.type),\n );\n\n if (!hasSupportedReactions || messageContentWidth === 0) {\n return null;\n }\n\n const alignmentLeft = alignment === 'left';\n const fill = propFill || alignmentLeft ? grey_gainsboro : grey_whisper;\n const radius = propRadius || themeRadius;\n const reactionSize = propReactionSize || themeReactionSize;\n const highlighted = message.pinned || targetedMessage === message.id;\n const stroke = propStroke || (highlighted ? targetedMessageBackground : white_snow);\n const strokeSize = propStrokeSize || themeStrokeSize;\n\n const x1 = alignmentLeft\n ? messageContentWidth +\n (Number(leftAlign.marginRight) || 0) +\n (Number(spacer.width) || 0) -\n radius * 0.5\n : width - screenPadding * 2 - messageContentWidth;\n const x2 = x1 + radius * 2 * (alignmentLeft ? 1 : -1);\n const y1 = reactionSize + radius * 2;\n const y2 = reactionSize - radius;\n\n const insideLeftBound = x2 - (reactionSize * reactions.length) / 2 > screenPadding;\n const insideRightBound =\n x2 + strokeSize + (reactionSize * reactions.length) / 2 < width - screenPadding * 2;\n const left =\n reactions.length === 1\n ? x1 + (alignmentLeft ? -radius : radius - reactionSize)\n : !insideLeftBound\n ? screenPadding\n : !insideRightBound\n ? width - screenPadding * 2 - reactionSize * reactions.length - strokeSize\n : x2 - (reactionSize * reactions.length) / 2 - strokeSize;\n\n return (\n <View\n style={[\n styles.container,\n {\n height: reactionSize + radius * 5,\n width,\n },\n container,\n ]}\n testID='reaction-list'\n >\n {reactions.length ? (\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x1} cy={y1} fill={stroke} r={radius + strokeSize * 3} />\n <Circle cx={x2} cy={y2} fill={stroke} r={radius * 2 + strokeSize * 3} />\n <Circle cx={x1} cy={y1} fill={fill} r={radius + strokeSize} />\n <Circle cx={x2} cy={y2} fill={fill} r={radius * 2 + strokeSize} />\n <Circle cx={x1} cy={y1} fill={alignmentLeft ? fill : white} r={radius} />\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n <View\n style={[\n styles.reactionBubbleBackground,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderColor: fill,\n borderRadius: reactionSize,\n borderWidth: strokeSize,\n height: reactionSize,\n left,\n width: reactionSize * reactions.length,\n },\n reactionBubbleBackground,\n ]}\n />\n <View style={[StyleSheet.absoluteFill]}>\n <Svg>\n <Circle cx={x2} cy={y2} fill={alignmentLeft ? fill : white} r={radius * 2} />\n </Svg>\n </View>\n <TouchableOpacity\n disabled={preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: () => showMessageOverlay(true),\n emitter: 'reactionList',\n event,\n });\n }\n }}\n style={[\n styles.reactionBubble,\n {\n backgroundColor: alignmentLeft ? fill : white,\n borderRadius: reactionSize - strokeSize * 2,\n height: reactionSize - strokeSize * 2,\n left: left + strokeSize,\n top: strokeSize,\n width: reactionSize * reactions.length - strokeSize * 2,\n },\n reactionBubble,\n ]}\n >\n {reactions.map((reaction) => (\n <Icon\n key={reaction.type}\n pathFill={reaction.own ? accent_blue : grey}\n size={reactionSize / 2}\n style={middleIcon}\n supportedReactions={supportedReactions}\n type={reaction.type}\n />\n ))}\n </TouchableOpacity>\n </View>\n ) : null}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ReactionListPropsWithContext<StreamChatGenerics>,\n nextProps: ReactionListPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n message: prevMessage,\n messageContentWidth: prevMessageContentWidth,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n message: nextMessage,\n messageContentWidth: nextMessageContentWidth,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const messageContentWidthEqual = prevMessageContentWidth === nextMessageContentWidth;\n if (!messageContentWidthEqual) return false;\n\n const messagePinnedEqual = prevMessage.pinned === nextMessage.pinned;\n\n if (!messagePinnedEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n\n if (!targetedMessageEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n return true;\n};\n\nconst MemoizedReactionList = React.memo(\n ReactionListWithContext,\n areEqual,\n) as typeof ReactionListWithContext;\n\nexport type ReactionListProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>> &\n Pick<ReactionListPropsWithContext<StreamChatGenerics>, 'messageContentWidth'>;\n\n/**\n * ReactionList - A high level component which implements all the logic required for a message reaction list\n */\nexport const ReactionList = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ReactionListProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n } = useMessageContext<StreamChatGenerics>();\n const { supportedReactions, targetedMessage } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedReactionList\n {...{\n alignment,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n reactions,\n showMessageOverlay,\n supportedReactions,\n targetedMessage,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
@@ -55,8 +55,9 @@ var useCreateMessageContext = function useCreateMessageContext(_ref) {
|
|
|
55
55
|
var latestReactions = message.latest_reactions ? message.latest_reactions : undefined;
|
|
56
56
|
var readBy = (0, _useMessageList.isMessageWithStylesReadByAndDateSeparator)(message) && message.readBy;
|
|
57
57
|
var messageValue = "" + (latestReactions ? latestReactions.map(function (_ref3) {
|
|
58
|
-
var type = _ref3.type
|
|
59
|
-
|
|
58
|
+
var type = _ref3.type,
|
|
59
|
+
user = _ref3.user;
|
|
60
|
+
return "" + type + (user == null ? void 0 : user.id);
|
|
60
61
|
}).join() : '') + message.updated_at + message.deleted_at + readBy + message.status + message.type + message.text + message.reply_count;
|
|
61
62
|
var membersValue = JSON.stringify(members);
|
|
62
63
|
var quotedMessageDeletedValue = (_message$quoted_messa = message.quoted_message) == null ? void 0 : _message$quoted_messa.deleted_at;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useCreateMessageContext.ts"],"names":["useCreateMessageContext","actionsEnabled","alignment","channel","disabled","files","goToMessage","groupStyles","handleAction","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleToggleReaction","hasReactions","images","isMyMessage","lastGroupMessage","lastReceivedId","members","message","messageContentOrder","onLongPress","onlyEmojis","onOpenThread","onPress","onPressIn","otherAttachments","preventPress","reactions","showAvatar","showMessageOverlay","showMessageStatus","threadList","videos","groupStylesLength","length","reactionsValue","map","own","type","join","latestReactions","latest_reactions","undefined","readBy","messageValue","updated_at","deleted_at","status","text","reply_count","membersValue","JSON","stringify","quotedMessageDeletedValue","quoted_message","messageContext"],"mappings":";;;;;AAAA;;AAIA;;AAEO,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,OAuCQ;AAAA;;AAAA,MApC7CC,cAoC6C,QApC7CA,cAoC6C;AAAA,MAnC7CC,SAmC6C,QAnC7CA,SAmC6C;AAAA,MAlC7CC,OAkC6C,QAlC7CA,OAkC6C;AAAA,MAjC7CC,QAiC6C,QAjC7CA,QAiC6C;AAAA,MAhC7CC,KAgC6C,QAhC7CA,KAgC6C;AAAA,MA/B7CC,WA+B6C,QA/B7CA,WA+B6C;AAAA,MA9B7CC,WA8B6C,QA9B7CA,WA8B6C;AAAA,MA7B7CC,YA6B6C,QA7B7CA,YA6B6C;AAAA,MA5B7CC,mBA4B6C,QA5B7CA,mBA4B6C;AAAA,MA3B7CC,iBA2B6C,QA3B7CA,iBA2B6C;AAAA,MA1B7CC,wBA0B6C,QA1B7CA,wBA0B6C;AAAA,MAzB7CC,mBAyB6C,QAzB7CA,mBAyB6C;AAAA,MAxB7CC,mBAwB6C,QAxB7CA,mBAwB6C;AAAA,MAvB7CC,oBAuB6C,QAvB7CA,oBAuB6C;AAAA,MAtB7CC,oBAsB6C,QAtB7CA,oBAsB6C;AAAA,MArB7CC,YAqB6C,QArB7CA,YAqB6C;AAAA,MApB7CC,MAoB6C,QApB7CA,MAoB6C;AAAA,MAnB7CC,WAmB6C,QAnB7CA,WAmB6C;AAAA,MAlB7CC,gBAkB6C,QAlB7CA,gBAkB6C;AAAA,MAjB7CC,cAiB6C,QAjB7CA,cAiB6C;AAAA,MAhB7CC,OAgB6C,QAhB7CA,OAgB6C;AAAA,MAf7CC,OAe6C,QAf7CA,OAe6C;AAAA,MAd7CC,mBAc6C,QAd7CA,mBAc6C;AAAA,MAb7CC,WAa6C,QAb7CA,WAa6C;AAAA,MAZ7CC,UAY6C,QAZ7CA,UAY6C;AAAA,MAX7CC,YAW6C,QAX7CA,YAW6C;AAAA,MAV7CC,OAU6C,QAV7CA,OAU6C;AAAA,MAT7CC,SAS6C,QAT7CA,SAS6C;AAAA,MAR7CC,gBAQ6C,QAR7CA,gBAQ6C;AAAA,MAP7CC,YAO6C,QAP7CA,YAO6C;AAAA,MAN7CC,SAM6C,QAN7CA,SAM6C;AAAA,MAL7CC,UAK6C,QAL7CA,UAK6C;AAAA,MAJ7CC,kBAI6C,QAJ7CA,kBAI6C;AAAA,MAH7CC,iBAG6C,QAH7CA,iBAG6C;AAAA,MAF7CC,UAE6C,QAF7CA,UAE6C;AAAA,MAD7CC,MAC6C,QAD7CA,MAC6C;AAC7C,MAAMC,iBAAiB,GAAG9B,WAAW,CAAC+B,MAAtC;AACA,MAAMC,cAAc,GAAGR,SAAS,CAACS,GAAV,CAAc;AAAA,QAAGC,GAAH,SAAGA,GAAH;AAAA,QAAQC,IAAR,SAAQA,IAAR;AAAA,gBAAsBD,GAAtB,GAA4BC,IAA5B;AAAA,GAAd,EAAkDC,IAAlD,EAAvB;AACA,MAAMC,eAAe,GAAGtB,OAAO,CAACuB,gBAAR,GAA2BvB,OAAO,CAACuB,gBAAnC,GAAsDC,SAA9E;AACA,MAAMC,MAAM,GAAG,+DAA0CzB,OAA1C,KAAsDA,OAAO,CAACyB,MAA7E;AACA,MAAMC,YAAY,
|
|
1
|
+
{"version":3,"sources":["useCreateMessageContext.ts"],"names":["useCreateMessageContext","actionsEnabled","alignment","channel","disabled","files","goToMessage","groupStyles","handleAction","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleToggleReaction","hasReactions","images","isMyMessage","lastGroupMessage","lastReceivedId","members","message","messageContentOrder","onLongPress","onlyEmojis","onOpenThread","onPress","onPressIn","otherAttachments","preventPress","reactions","showAvatar","showMessageOverlay","showMessageStatus","threadList","videos","groupStylesLength","length","reactionsValue","map","own","type","join","latestReactions","latest_reactions","undefined","readBy","messageValue","user","id","updated_at","deleted_at","status","text","reply_count","membersValue","JSON","stringify","quotedMessageDeletedValue","quoted_message","messageContext"],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { isMessageWithStylesReadByAndDateSeparator } from '../../MessageList/hooks/useMessageList';\n\nexport const useCreateMessageContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onOpenThread,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus,\n threadList,\n videos,\n}: MessageContextValue<StreamChatGenerics>) => {\n const groupStylesLength = groupStyles.length;\n const reactionsValue = reactions.map(({ own, type }) => `${own}${type}`).join();\n const latestReactions = message.latest_reactions ? message.latest_reactions : undefined;\n const readBy = isMessageWithStylesReadByAndDateSeparator(message) && message.readBy;\n const messageValue = `${\n latestReactions ? latestReactions.map(({ type, user }) => `${type}${user?.id}`).join() : ''\n }${message.updated_at}${message.deleted_at}${readBy}${message.status}${message.type}${\n message.text\n }${message.reply_count}`;\n const membersValue = JSON.stringify(members);\n\n const quotedMessageDeletedValue = message.quoted_message?.deleted_at;\n\n const messageContext: MessageContextValue<StreamChatGenerics> = useMemo(\n () => ({\n actionsEnabled,\n alignment,\n channel,\n disabled,\n files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onOpenThread,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n reactions,\n showAvatar,\n showMessageOverlay,\n showMessageStatus,\n threadList,\n videos,\n }),\n [\n actionsEnabled,\n quotedMessageDeletedValue,\n alignment,\n disabled,\n goToMessage,\n groupStylesLength,\n hasReactions,\n lastGroupMessage,\n lastReceivedId,\n membersValue,\n messageValue,\n reactionsValue,\n showAvatar,\n showMessageStatus,\n threadList,\n ],\n );\n\n return messageContext;\n};\n"]}
|
package/lib/module/version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "5.3.
|
|
4
|
+
"version": "5.3.2-beta.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -248,13 +248,13 @@ describe('Gallery', () => {
|
|
|
248
248
|
const { queryAllByTestId } = render(component);
|
|
249
249
|
|
|
250
250
|
await waitFor(() => {
|
|
251
|
-
expect(queryAllByTestId('gallery-
|
|
252
|
-
expect(queryAllByTestId('gallery-
|
|
251
|
+
expect(queryAllByTestId('gallery-row-0').length).toBe(1);
|
|
252
|
+
expect(queryAllByTestId('gallery-row-1').length).toBe(1);
|
|
253
253
|
|
|
254
|
-
expect(queryAllByTestId('gallery-
|
|
255
|
-
expect(queryAllByTestId('gallery-
|
|
256
|
-
expect(queryAllByTestId('gallery-
|
|
257
|
-
expect(queryAllByTestId('gallery-
|
|
254
|
+
expect(queryAllByTestId('gallery-row-0-item-0').length).toBe(1);
|
|
255
|
+
expect(queryAllByTestId('gallery-row-0-item-1').length).toBe(1);
|
|
256
|
+
expect(queryAllByTestId('gallery-row-1-item-0').length).toBe(1);
|
|
257
|
+
expect(queryAllByTestId('gallery-row-1-item-1').length).toBe(1);
|
|
258
258
|
});
|
|
259
259
|
});
|
|
260
260
|
|
|
@@ -283,13 +283,11 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
283
283
|
const {
|
|
284
284
|
message: prevMessage,
|
|
285
285
|
messageContentWidth: prevMessageContentWidth,
|
|
286
|
-
reactions: prevReactions,
|
|
287
286
|
targetedMessage: prevTargetedMessage,
|
|
288
287
|
} = prevProps;
|
|
289
288
|
const {
|
|
290
289
|
message: nextMessage,
|
|
291
290
|
messageContentWidth: nextMessageContentWidth,
|
|
292
|
-
reactions: nextReactions,
|
|
293
291
|
targetedMessage: nextTargetedMessage,
|
|
294
292
|
} = nextProps;
|
|
295
293
|
|
|
@@ -304,14 +302,14 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
304
302
|
|
|
305
303
|
if (!targetedMessageEqual) return false;
|
|
306
304
|
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
if (!
|
|
305
|
+
const latestReactionsEqual =
|
|
306
|
+
Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)
|
|
307
|
+
? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&
|
|
308
|
+
prevMessage.latest_reactions.every(
|
|
309
|
+
({ type }, index) => type === nextMessage.latest_reactions?.[index].type,
|
|
310
|
+
)
|
|
311
|
+
: prevMessage.latest_reactions === nextMessage.latest_reactions;
|
|
312
|
+
if (!latestReactionsEqual) return false;
|
|
315
313
|
|
|
316
314
|
return true;
|
|
317
315
|
};
|
|
@@ -48,11 +48,11 @@ export const useCreateMessageContext = <
|
|
|
48
48
|
const reactionsValue = reactions.map(({ own, type }) => `${own}${type}`).join();
|
|
49
49
|
const latestReactions = message.latest_reactions ? message.latest_reactions : undefined;
|
|
50
50
|
const readBy = isMessageWithStylesReadByAndDateSeparator(message) && message.readBy;
|
|
51
|
-
const messageValue = `${
|
|
52
|
-
|
|
53
|
-
}${message.deleted_at}${readBy}${message.status}${message.type}${
|
|
54
|
-
message.
|
|
55
|
-
}`;
|
|
51
|
+
const messageValue = `${
|
|
52
|
+
latestReactions ? latestReactions.map(({ type, user }) => `${type}${user?.id}`).join() : ''
|
|
53
|
+
}${message.updated_at}${message.deleted_at}${readBy}${message.status}${message.type}${
|
|
54
|
+
message.text
|
|
55
|
+
}${message.reply_count}`;
|
|
56
56
|
const membersValue = JSON.stringify(members);
|
|
57
57
|
|
|
58
58
|
const quotedMessageDeletedValue = message.quoted_message?.deleted_at;
|
package/src/version.json
CHANGED