stream-chat-react-native-core 4.0.0-beta.8 → 4.0.0-beta.9

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.
@@ -87,7 +87,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
87
87
  var queryType,
88
88
  retryCount,
89
89
  hasUpdatedData,
90
- queryIsStale,
90
+ isQueryStale,
91
91
  currentRequestId,
92
92
  newOptions,
93
93
  channelQueryResponse,
@@ -108,11 +108,9 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
108
108
  return _context.abrupt("return");
109
109
 
110
110
  case 4:
111
- hasUpdatedData = function hasUpdatedData() {
112
- return [JSON.stringify(filtersRef.current) !== JSON.stringify(filters), JSON.stringify(sortRef.current) !== JSON.stringify(sort), activeRequestId.current !== currentRequestId].some(Boolean);
113
- };
111
+ hasUpdatedData = queryType === 'loadChannels' || [JSON.stringify(filtersRef.current) !== JSON.stringify(filters), JSON.stringify(sortRef.current) !== JSON.stringify(sort)].some(Boolean);
114
112
 
115
- queryIsStale = function queryIsStale() {
113
+ isQueryStale = function isQueryStale() {
116
114
  return !isMountedRef || activeRequestId.current !== currentRequestId;
117
115
  };
118
116
 
@@ -130,6 +128,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
130
128
 
131
129
  case 9:
132
130
  filtersRef.current = filters;
131
+ sortRef.current = sort;
133
132
  isQueryingRef.current = true;
134
133
  setError(undefined);
135
134
  activeRequestId.current++;
@@ -139,23 +138,23 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
139
138
  limit: (_options$limit = options == null ? void 0 : options.limit) != null ? _options$limit : _utils.MAX_QUERY_CHANNELS_LIMIT,
140
139
  offset: queryType === 'loadChannels' ? channels.length : 0
141
140
  }, options);
142
- _context.prev = 16;
143
- _context.next = 19;
141
+ _context.prev = 17;
142
+ _context.next = 20;
144
143
  return client.queryChannels(filters, sort, newOptions, {
145
144
  skipInitialization: activeChannels.current
146
145
  });
147
146
 
148
- case 19:
147
+ case 20:
149
148
  channelQueryResponse = _context.sent;
150
149
 
151
- if (!(queryIsStale() || !isMountedRef.current)) {
152
- _context.next = 22;
150
+ if (!(isQueryStale() || !isMountedRef.current)) {
151
+ _context.next = 23;
153
152
  break;
154
153
  }
155
154
 
156
155
  return _context.abrupt("return");
157
156
 
158
- case 22:
157
+ case 23:
159
158
  channelQueryResponse.forEach(function (channel) {
160
159
  return channel.state.setIsUpToDate(true);
161
160
  });
@@ -164,27 +163,27 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
164
163
  setHasNextPage(channelQueryResponse.length >= newOptions.limit);
165
164
  setError(undefined);
166
165
  isQueryingRef.current = false;
167
- _context.next = 43;
166
+ _context.next = 44;
168
167
  break;
169
168
 
170
- case 30:
171
- _context.prev = 30;
172
- _context.t0 = _context["catch"](16);
169
+ case 31:
170
+ _context.prev = 31;
171
+ _context.t0 = _context["catch"](17);
173
172
  isQueryingRef.current = false;
174
- _context.next = 35;
173
+ _context.next = 36;
175
174
  return waitSeconds(2);
176
175
 
177
- case 35:
178
- if (!queryIsStale()) {
179
- _context.next = 37;
176
+ case 36:
177
+ if (!isQueryStale()) {
178
+ _context.next = 38;
180
179
  break;
181
180
  }
182
181
 
183
182
  return _context.abrupt("return");
184
183
 
185
- case 37:
184
+ case 38:
186
185
  if (!(retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current)) {
187
- _context.next = 42;
186
+ _context.next = 43;
188
187
  break;
189
188
  }
190
189
 
@@ -193,18 +192,18 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
193
192
  setError(new Error("Maximum number of retries reached in queryChannels. Last error message is: " + _context.t0));
194
193
  return _context.abrupt("return");
195
194
 
196
- case 42:
195
+ case 43:
197
196
  return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
198
197
 
199
- case 43:
198
+ case 44:
200
199
  setActiveQueryType(null);
201
200
 
202
- case 44:
201
+ case 45:
203
202
  case "end":
204
203
  return _context.stop();
205
204
  }
206
205
  }
207
- }, _callee, null, [[16, 30]]);
206
+ }, _callee, null, [[17, 31]]);
208
207
  }));
209
208
 
210
209
  return function queryChannels() {
@@ -1 +1 @@
1
- {"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","currentRequestId","some","Boolean","queryIsStale","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'reload' | 'refresh' | 'loadChannels';\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>();\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof filters | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData = () =>\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n activeRequestId.current !== currentRequestId,\n ].some(Boolean); // will return true if any element is truthy\n\n const queryIsStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (queryIsStale() || !isMountedRef.current) {\n return;\n }\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'loadChannels'\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (queryIsStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels: activeQueryType === 'reload',\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
1
+ {"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadingChannels","loadingNextPage","refreshing"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AAIA;;AACA;;AACA;;AAGA;;AACA;;AAEA,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,OAAD;AAAA,SAClB,IAAIC,OAAJ,CAAY,UAACC,OAAD,EAAa;AACvBC,IAAAA,UAAU,CAACD,OAAD,EAAUF,OAAO,GAAGI,sBAApB,CAAV;AACD,GAFD,CADkB;AAAA,CAApB;;AAYA,IAAMC,eAAe,GAAG;AACtBC,EAAAA,aAAa,EAAE;AADO,CAAxB;AAIA,IAAMC,qBAAqB,GAAG,CAA9B;AACA,IAAMC,oBAAoB,GAAG,IAA7B;;AAKO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,OAME;AAAA,0BAHpCC,OAGoC;AAAA,MAHpCA,OAGoC,6BAH1B,EAG0B;AAAA,0BAFpCC,OAEoC;AAAA,MAFpCA,OAEoC,6BAF1BN,eAE0B;AAAA,uBADpCO,IACoC;AAAA,MADpCA,IACoC,0BAD7B,EAC6B;;AACpC,wBAAmB,kCAAnB;AAAA,MAAQC,MAAR,mBAAQA,MAAR;;AACA,kBAAgC,qBAAwC,EAAxC,CAAhC;AAAA;AAAA,MAAOC,QAAP;AAAA,MAAiBC,WAAjB;;AACA,MAAMC,cAAc,GAAG,4DAAvB;;AAEA,mBAA0B,sBAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AACA,mBAAsC,qBAAS,IAAT,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AACA,MAAMC,WAAW,GAAG,mBAAOC,IAAI,CAACC,GAAL,EAAP,CAApB;AACA,MAAMC,aAAa,GAAG,mBAAO,KAAP,CAAtB;;AACA,mBAA8C,sBAA9C;AAAA;AAAA,MAAOC,eAAP;AAAA,MAAwBC,kBAAxB;;AACA,MAAMC,YAAY,GAAG,uCAArB;AACA,MAAMC,UAAU,GAAG,mBAA8B,IAA9B,CAAnB;AACA,MAAMC,OAAO,GAAG,mBAA2B,IAA3B,CAAhB;AACA,MAAMC,eAAe,GAAG,mBAAe,CAAf,CAAxB;;AAEA,MAAMC,aAA4B;AAAA,gFAAG;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACnCC,cAAAA,SADmC,2DACZ,cADY;AAEnCC,cAAAA,UAFmC,2DAEtB,CAFsB;;AAAA,oBAI/B,CAACpB,MAAD,IAAW,CAACc,YAAY,CAACO,OAJM;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAM7BC,cAAAA,cAN6B,GAOjCH,SAAS,KAAK,cAAd,IACA,CACEI,IAAI,CAACC,SAAL,CAAeT,UAAU,CAACM,OAA1B,MAAuCE,IAAI,CAACC,SAAL,CAAe3B,OAAf,CADzC,EAEE0B,IAAI,CAACC,SAAL,CAAeR,OAAO,CAACK,OAAvB,MAAoCE,IAAI,CAACC,SAAL,CAAezB,IAAf,CAFtC,EAGE0B,IAHF,CAGOC,OAHP,CARiC;;AAa7BC,cAAAA,YAb6B,GAad,SAAfA,YAAe;AAAA,uBAAM,CAACb,YAAD,IAAiBG,eAAe,CAACI,OAAhB,KAA4BO,gBAAnD;AAAA,eAbc;;AAAA,kBAmB9BN,cAnB8B;AAAA;AAAA;AAAA;;AAAA,oBAoB7BV,eAAe,KAAK,IApBS;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAuBnCG,cAAAA,UAAU,CAACM,OAAX,GAAqBxB,OAArB;AACAmB,cAAAA,OAAO,CAACK,OAAR,GAAkBtB,IAAlB;AACAY,cAAAA,aAAa,CAACU,OAAd,GAAwB,IAAxB;AACAhB,cAAAA,QAAQ,CAACwB,SAAD,CAAR;AACAZ,cAAAA,eAAe,CAACI,OAAhB;AACMO,cAAAA,gBA5B6B,GA4BVX,eAAe,CAACI,OA5BN;AA6BnCR,cAAAA,kBAAkB,CAACM,SAAD,CAAlB;AAEMW,cAAAA,UA/B6B;AAgCjCC,gBAAAA,KAAK,oBAAEjC,OAAF,oBAAEA,OAAO,CAAEiC,KAAX,6BAAoBC,+BAhCQ;AAiCjCC,gBAAAA,MAAM,EAAEd,SAAS,KAAK,cAAd,GAA+BlB,QAAQ,CAACiC,MAAxC,GAAiD;AAjCxB,iBAkC9BpC,OAlC8B;AAAA;AAAA;AAAA,qBAsCEE,MAAM,CAACkB,aAAP,CAAqBrB,OAArB,EAA8BE,IAA9B,EAAoC+B,UAApC,EAAgD;AACjFK,gBAAAA,kBAAkB,EAAEhC,cAAc,CAACkB;AAD8C,eAAhD,CAtCF;;AAAA;AAsC3Be,cAAAA,oBAtC2B;;AAAA,oBA0C7BT,YAAY,MAAM,CAACb,YAAY,CAACO,OA1CH;AAAA;AAAA;AAAA;;AAAA;;AAAA;AA8CjCe,cAAAA,oBAAoB,CAACC,OAArB,CAA6B,UAACC,OAAD;AAAA,uBAAaA,OAAO,CAACC,KAAR,CAAcC,aAAd,CAA4B,IAA5B,CAAb;AAAA,eAA7B;AAEMC,cAAAA,WAhD2B,GAiD/BtB,SAAS,KAAK,cAAd,iDACQlB,QADR,uCACqBmC,oBADrB,KAEIA,oBAnD2B;AAqDjClC,cAAAA,WAAW,CAACuC,WAAD,CAAX;AACAlC,cAAAA,cAAc,CAAC6B,oBAAoB,CAACF,MAArB,IAA+BJ,UAAU,CAACC,KAA3C,CAAd;AACA1B,cAAAA,QAAQ,CAACwB,SAAD,CAAR;AACAlB,cAAAA,aAAa,CAACU,OAAd,GAAwB,KAAxB;AAxDiC;AAAA;;AAAA;AAAA;AAAA;AA0DjCV,cAAAA,aAAa,CAACU,OAAd,GAAwB,KAAxB;AA1DiC;AAAA,qBA2D3BnC,WAAW,CAAC,CAAD,CA3DgB;;AAAA;AAAA,mBA6D7ByC,YAAY,EA7DiB;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,oBAmE7BP,UAAU,KAAK1B,qBAAf,IAAwC,CAACiB,aAAa,CAACU,OAnE1B;AAAA;AAAA;AAAA;;AAoE/BR,cAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACA6B,cAAAA,OAAO,CAACC,IAAR;AACAtC,cAAAA,QAAQ,CACN,IAAIuC,KAAJ,6FADM,CAAR;AAtE+B;;AAAA;AAAA,+CA8E1B1B,aAAa,CAACC,SAAD,EAAYC,UAAU,GAAG,CAAzB,CA9Ea;;AAAA;AAiFnCP,cAAAA,kBAAkB,CAAC,IAAD,CAAlB;;AAjFmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAH;;AAAA,oBAA5BK,aAA4B;AAAA;AAAA;AAAA,KAAlC;;AAoFA,MAAM2B,YAAY,GAAGvC,WAAW,GAAGY,aAAH,GAAmBW,SAAnD;;AAEA,MAAMiB,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,QAAMpC,GAAG,GAAGD,IAAI,CAACC,GAAL,EAAZ;;AAEA,QAAIA,GAAG,GAAGF,WAAW,CAACa,OAAlB,GAA4B1B,oBAA5B,IAAoDS,KAAK,KAAKyB,SAAlE,EAA6E;AAC3E;AACD;;AAEDrB,IAAAA,WAAW,CAACa,OAAZ,GAAsBZ,IAAI,CAACC,GAAL,EAAtB;AACA,WAAOQ,aAAa,CAAC,SAAD,CAApB;AACD,GATD;;AAWA,MAAM6B,UAAU,GAAG,SAAbA,UAAa;AAAA,WAAM7B,aAAa,CAAC,QAAD,CAAnB;AAAA,GAAnB;;AAiBA,MAAM8B,SAAS,GAAG,oBAAQ;AAAA,WAAMzB,IAAI,CAACC,SAAL,CAAe3B,OAAf,CAAN;AAAA,GAAR,EAAuC,CAACA,OAAD,CAAvC,CAAlB;AACA,MAAMoD,OAAO,GAAG,oBAAQ;AAAA,WAAM1B,IAAI,CAACC,SAAL,CAAezB,IAAf,CAAN;AAAA,GAAR,EAAoC,CAACA,IAAD,CAApC,CAAhB;AAEA,wBAAU,YAAM;AACdgD,IAAAA,UAAU;AACX,GAFD,EAEG,CAACC,SAAD,EAAYC,OAAZ,CAFH;AAIA,SAAO;AACLhD,IAAAA,QAAQ,EAARA,QADK;AAELG,IAAAA,KAAK,EAALA,KAFK;AAGLE,IAAAA,WAAW,EAAXA,WAHK;AAIL4C,IAAAA,eAAe,EAAEtC,eAAe,KAAK,QAJhC;AAKLuC,IAAAA,eAAe,EAAEvC,eAAe,KAAK,cALhC;AAMLiC,IAAAA,YAAY,EAAZA,YANK;AAOLO,IAAAA,UAAU,EAAExC,eAAe,KAAK,SAP3B;AAQLkC,IAAAA,WAAW,EAAXA,WARK;AASLC,IAAAA,UAAU,EAAVA,UATK;AAUL7C,IAAAA,WAAW,EAAXA;AAVK,GAAP;AAYD,CA1JM","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'reload' | 'refresh' | 'loadChannels';\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>();\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'loadChannels'\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels: activeQueryType === 'reload',\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
@@ -145,10 +145,6 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
145
145
  myMessageThemeString = _useState2[0],
146
146
  setMyMessageThemeString = _useState2[1];
147
147
 
148
- var _useState3 = (0, _react.useState)(0),
149
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
150
- setReactionListHeight = _useState4[1];
151
-
152
148
  (0, _react.useEffect)(function () {
153
149
  if (myMessageTheme) {
154
150
  setMyMessageThemeString(JSON.stringify(myMessageTheme));
@@ -291,7 +287,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
291
287
  __self: _this,
292
288
  __source: {
293
289
  fileName: _jsxFileName,
294
- lineNumber: 324,
290
+ lineNumber: 323,
295
291
  columnNumber: 5
296
292
  }
297
293
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -299,7 +295,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
299
295
  __self: _this,
300
296
  __source: {
301
297
  fileName: _jsxFileName,
302
- lineNumber: 325,
298
+ lineNumber: 324,
303
299
  columnNumber: 7
304
300
  }
305
301
  }, _react["default"].createElement(_ThemeContext.ThemeProvider, {
@@ -307,7 +303,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
307
303
  __self: _this,
308
304
  __source: {
309
305
  fileName: _jsxFileName,
310
- lineNumber: 326,
306
+ lineNumber: 325,
311
307
  columnNumber: 9
312
308
  }
313
309
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -316,7 +312,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
316
312
  __self: _this,
317
313
  __source: {
318
314
  fileName: _jsxFileName,
319
- lineNumber: 327,
315
+ lineNumber: 326,
320
316
  columnNumber: 11
321
317
  }
322
318
  }, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
@@ -327,7 +323,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
327
323
  __self: _this,
328
324
  __source: {
329
325
  fileName: _jsxFileName,
330
- lineNumber: 331,
326
+ lineNumber: 330,
331
327
  columnNumber: 13
332
328
  }
333
329
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -335,7 +331,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
335
331
  __self: _this,
336
332
  __source: {
337
333
  fileName: _jsxFileName,
338
- lineNumber: 337,
334
+ lineNumber: 336,
339
335
  columnNumber: 15
340
336
  }
341
337
  }, _react["default"].createElement(_reactNative.SafeAreaView, {
@@ -343,7 +339,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
343
339
  __self: _this,
344
340
  __source: {
345
341
  fileName: _jsxFileName,
346
- lineNumber: 338,
342
+ lineNumber: 337,
347
343
  columnNumber: 17
348
344
  }
349
345
  }, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
@@ -358,7 +354,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
358
354
  __self: _this,
359
355
  __source: {
360
356
  fileName: _jsxFileName,
361
- lineNumber: 339,
357
+ lineNumber: 338,
362
358
  columnNumber: 19
363
359
  }
364
360
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -366,7 +362,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
366
362
  __self: _this,
367
363
  __source: {
368
364
  fileName: _jsxFileName,
369
- lineNumber: 347,
365
+ lineNumber: 346,
370
366
  columnNumber: 21
371
367
  }
372
368
  }, message && _react["default"].createElement(_reactNative.View, {
@@ -376,7 +372,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
376
372
  __self: _this,
377
373
  __source: {
378
374
  fileName: _jsxFileName,
379
- lineNumber: 349,
375
+ lineNumber: 348,
380
376
  columnNumber: 25
381
377
  }
382
378
  }, handleReaction && ownCapabilities != null && ownCapabilities.sendReaction ? _react["default"].createElement(OverlayReactionList, {
@@ -384,12 +380,11 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
384
380
  ownReactionTypes: (message == null ? void 0 : (_message$own_reaction = message.own_reactions) == null ? void 0 : _message$own_reaction.map(function (reaction) {
385
381
  return reaction.type;
386
382
  })) || [],
387
- setReactionListHeight: setReactionListHeight,
388
383
  showScreen: showScreen,
389
384
  __self: _this,
390
385
  __source: {
391
386
  fileName: _jsxFileName,
392
- lineNumber: 358,
387
+ lineNumber: 357,
393
388
  columnNumber: 29
394
389
  }
395
390
  }) : null, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -410,7 +405,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
410
405
  __self: _this,
411
406
  __source: {
412
407
  fileName: _jsxFileName,
413
- lineNumber: 367,
408
+ lineNumber: 365,
414
409
  columnNumber: 27
415
410
  }
416
411
  }, alignment === 'left' && MessageAvatar && _react["default"].createElement(MessageAvatar, {
@@ -420,7 +415,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
420
415
  __self: _this,
421
416
  __source: {
422
417
  fileName: _jsxFileName,
423
- lineNumber: 383,
418
+ lineNumber: 381,
424
419
  columnNumber: 31
425
420
  }
426
421
  }), _react["default"].createElement(_reactNative.View, {
@@ -435,7 +430,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
435
430
  __self: _this,
436
431
  __source: {
437
432
  fileName: _jsxFileName,
438
- lineNumber: 385,
433
+ lineNumber: 383,
439
434
  columnNumber: 29
440
435
  }
441
436
  }, messagesContext == null ? void 0 : (_messagesContext$mess = messagesContext.messageContentOrder) == null ? void 0 : _messagesContext$mess.map(function (messageContentType, messageContentOrderIndex) {
@@ -447,7 +442,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
447
442
  __self: _this,
448
443
  __source: {
449
444
  fileName: _jsxFileName,
450
- lineNumber: 428,
445
+ lineNumber: 426,
451
446
  columnNumber: 43
452
447
  }
453
448
  }, _react["default"].createElement(Reply, {
@@ -460,7 +455,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
460
455
  __self: _this,
461
456
  __source: {
462
457
  fileName: _jsxFileName,
463
- lineNumber: 432,
458
+ lineNumber: 430,
464
459
  columnNumber: 45
465
460
  }
466
461
  }));
@@ -473,7 +468,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
473
468
  __self: _this,
474
469
  __source: {
475
470
  fileName: _jsxFileName,
476
- lineNumber: 449,
471
+ lineNumber: 447,
477
472
  columnNumber: 45
478
473
  }
479
474
  });
@@ -487,7 +482,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
487
482
  __self: _this,
488
483
  __source: {
489
484
  fileName: _jsxFileName,
490
- lineNumber: 458,
485
+ lineNumber: 456,
491
486
  columnNumber: 43
492
487
  }
493
488
  });
@@ -504,7 +499,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
504
499
  __self: _this,
505
500
  __source: {
506
501
  fileName: _jsxFileName,
507
- lineNumber: 468,
502
+ lineNumber: 466,
508
503
  columnNumber: 43
509
504
  }
510
505
  });
@@ -520,7 +515,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
520
515
  __self: _this,
521
516
  __source: {
522
517
  fileName: _jsxFileName,
523
- lineNumber: 483,
518
+ lineNumber: 481,
524
519
  columnNumber: 41
525
520
  }
526
521
  });
@@ -533,7 +528,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
533
528
  __self: _this,
534
529
  __source: {
535
530
  fileName: _jsxFileName,
536
- lineNumber: 497,
531
+ lineNumber: 495,
537
532
  columnNumber: 29
538
533
  }
539
534
  })), !!messageReactionTitle && message.latest_reactions && message.latest_reactions.length > 0 ? _react["default"].createElement(OverlayReactions, {
@@ -556,7 +551,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
556
551
  __self: _this,
557
552
  __source: {
558
553
  fileName: _jsxFileName,
559
- lineNumber: 507,
554
+ lineNumber: 505,
560
555
  columnNumber: 29
561
556
  }
562
557
  }) : null))))))))));
@@ -618,7 +613,7 @@ var MessageOverlay = function MessageOverlay(props) {
618
613
  __self: _this,
619
614
  __source: {
620
615
  fileName: _jsxFileName,
621
- lineNumber: 620,
616
+ lineNumber: 618,
622
617
  columnNumber: 5
623
618
  }
624
619
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageOverlay.tsx"],"names":["styles","StyleSheet","create","alignEnd","alignItems","alignStart","center","flexGrow","justifyContent","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","flex","overlayPadding","padding","replyContainer","flexDirection","paddingHorizontal","paddingTop","row","scrollView","Platform","OS","screenHeight","halfScreenHeight","DefaultMessageTextNumberOfLines","MessageOverlayWithContext","props","alignment","ownCapabilities","clientId","files","groupStyles","handleReaction","images","message","messageActions","MessageActionList","DefaultMessageActionList","MessageActionListItem","messageContext","messageReactionTitle","messageTextNumberOfLines","messagesContext","onlyEmojis","otherAttachments","overlay","overlayOpacity","OverlayReactionList","OverlayReactionListDefault","OverlayReactions","DefaultOverlayReactions","OverlayReactionsAvatar","OverlayReactionsAvatarDefault","reset","setOverlay","threadList","visible","isMyMessage","messageReactions","error","isThreadMessage","messageActionProps","theme","myMessageTheme","wrapMessageInTheme","user","id","JSON","stringify","myMessageThemeString","setMyMessageThemeString","setReactionListHeight","modifiedTheme","style","colors","blue_alice","grey_gainsboro","grey_whisper","transparent","white_smoke","messageSimple","content","container","borderRadiusL","borderRadiusS","containerStyle","messageHeight","messageLayout","x","y","messageWidth","offsetY","translateY","scale","showScreen","fadeScreen","show","value","damping","mass","restDisplacementThreshold","restSpeedThreshold","stiffness","velocity","duration","easing","Easing","out","ease","Keyboard","dismiss","onPan","onActive","evt","translationY","Extrapolate","CLAMP","onFinish","finalYPosition","velocityY","onStart","panStyle","transform","showScreenStyle","translateX","groupStyle","toLowerCase","hasThreadReplies","reply_count","Attachment","FileAttachmentGroup","Gallery","MessageAvatar","Reply","absoluteFillObject","state","nativeEvent","State","END","sendReaction","own_reactions","map","reaction","type","layout","layoutHeight","height","layoutWidth","width","showAvatar","backgroundColor","quoted_message","length","borderBottomLeftRadius","borderBottomRightRadius","borderColor","messageContentOrder","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","actions","latest_reactions","image","name","user_id","supportedReactions","areEqual","prevProps","nextProps","prevAlignment","prevMessage","prevMessageReactionTitle","prevVisible","nextAlignment","nextMessage","nextMessageReactionTitle","nextVisible","visibleEqual","alignmentEqual","messageReactionTitleEqual","latestReactionsEqual","Array","isArray","every","index","MemoizedMessageOverlay","React","memo","MessageOverlay","data","componentProps"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Keyboard, Platform, SafeAreaView, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n Easing,\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withDecay,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { MessageActionList as DefaultMessageActionList } from './MessageActionList';\nimport { OverlayReactionList as OverlayReactionListDefault } from './OverlayReactionList';\nimport { OverlayReactionsAvatar as OverlayReactionsAvatarDefault } from './OverlayReactionsAvatar';\n\nimport { MessageProvider } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\n\nimport { MessagesProvider } from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vh, vw } from '../../utils/utils';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\nimport {\n OverlayReactions as DefaultOverlayReactions,\n Reaction,\n} from '../MessageOverlay/OverlayReactions';\nimport type { ReplyProps } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n alignEnd: { alignItems: 'flex-end' },\n alignStart: { alignItems: 'flex-start' },\n center: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n flex: {\n flex: 1,\n },\n overlayPadding: {\n padding: 8,\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n row: { flexDirection: 'row' },\n scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },\n});\n\nconst screenHeight = vh(100);\nconst halfScreenHeight = vh(50);\nconst DefaultMessageTextNumberOfLines = 5;\n\nexport type MessageOverlayPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n | 'reset'\n> &\n Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'overlay' | 'setOverlay'> &\n Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'error'\n | 'isMyMessage'\n | 'isThreadMessage'\n | 'message'\n | 'messageReactions'\n | 'messageTextNumberOfLines'\n | 'overlayOpacity'\n > & {\n showScreen?: Animated.SharedValue<number>;\n visible?: boolean;\n };\n\nconst MessageOverlayWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n ownCapabilities,\n clientId,\n files,\n groupStyles,\n handleReaction,\n images,\n message,\n messageActions,\n MessageActionList = DefaultMessageActionList,\n MessageActionListItem,\n messageContext,\n messageReactionTitle,\n messageTextNumberOfLines = DefaultMessageTextNumberOfLines,\n messagesContext,\n onlyEmojis,\n otherAttachments,\n overlay,\n overlayOpacity,\n OverlayReactionList = OverlayReactionListDefault,\n OverlayReactions = DefaultOverlayReactions,\n OverlayReactionsAvatar = OverlayReactionsAvatarDefault,\n reset,\n setOverlay,\n threadList,\n visible,\n isMyMessage,\n messageReactions,\n error,\n isThreadMessage,\n } = props;\n\n const messageActionProps = {\n error,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n };\n\n const { theme } = useTheme();\n\n const myMessageTheme = messagesContext?.myMessageTheme;\n const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;\n\n const [myMessageThemeString, setMyMessageThemeString] = useState(JSON.stringify(myMessageTheme));\n const [, setReactionListHeight] = useState(0);\n\n useEffect(() => {\n if (myMessageTheme) {\n setMyMessageThemeString(JSON.stringify(myMessageTheme));\n }\n }, [myMessageTheme]);\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageThemeString, theme],\n );\n\n const {\n colors: { blue_alice, grey_gainsboro, grey_whisper, transparent, white_smoke },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS },\n containerInner,\n replyContainer,\n },\n },\n overlay: { container: containerStyle, padding: overlayPadding },\n } = wrapMessageInTheme ? modifiedTheme : theme;\n\n const messageHeight = useSharedValue(0);\n const messageLayout = useSharedValue({ x: 0, y: 0 });\n const messageWidth = useSharedValue(0);\n\n const offsetY = useSharedValue(0);\n const translateY = useSharedValue(0);\n const scale = useSharedValue(1);\n\n const showScreen = useSharedValue(0);\n const fadeScreen = (show: boolean) => {\n 'worklet';\n if (show) {\n offsetY.value = 0;\n translateY.value = 0;\n scale.value = 1;\n }\n showScreen.value = show\n ? withSpring(1, {\n damping: 600,\n mass: 0.5,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n stiffness: 200,\n velocity: 32,\n })\n : withTiming(\n 0,\n {\n duration: 150,\n easing: Easing.out(Easing.ease),\n },\n () => {\n if (!show) {\n runOnJS(reset)();\n }\n },\n );\n };\n\n useEffect(() => {\n if (visible) {\n Keyboard.dismiss();\n }\n fadeScreen(!!visible);\n }, [visible]);\n\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({\n onActive: (evt) => {\n translateY.value = offsetY.value + evt.translationY;\n overlayOpacity.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.75],\n Extrapolate.CLAMP,\n );\n scale.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.85],\n Extrapolate.CLAMP,\n );\n },\n onFinish: (evt) => {\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n if (finalYPosition > halfScreenHeight && translateY.value > 0) {\n cancelAnimation(translateY);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n runOnJS(setOverlay)('none');\n },\n );\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(screenHeight, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n } else {\n translateY.value = withTiming(0);\n scale.value = withTiming(1);\n overlayOpacity.value = withTiming(1);\n }\n },\n onStart: () => {\n cancelAnimation(translateY);\n offsetY.value = translateY.value;\n },\n });\n\n const panStyle = useAnimatedStyle<ViewStyle>(() => ({\n transform: [\n {\n translateY: translateY.value,\n },\n {\n scale: scale.value,\n },\n ],\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [messageHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [alignment === 'left' ? -messageWidth.value / 2 : messageWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [alignment],\n );\n\n const groupStyle = `${alignment}_${(groupStyles?.[0] || 'bottom').toLowerCase()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n const { Attachment, FileAttachmentGroup, Gallery, MessageAvatar, Reply } = messagesContext || {};\n\n return (\n <MessagesProvider value={messagesContext}>\n <MessageProvider value={messageContext}>\n <ThemeProvider mergedStyle={wrapMessageInTheme ? modifiedTheme : theme}>\n <Animated.View\n pointerEvents={visible ? 'auto' : 'none'}\n style={[StyleSheet.absoluteFillObject, containerStyle]}\n >\n <PanGestureHandler\n enabled={overlay === 'message'}\n maxPointers={1}\n minDist={10}\n onGestureEvent={onPan}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject]}>\n <SafeAreaView style={styles.flex}>\n <TapGestureHandler\n maxDist={32}\n onHandlerStateChange={({ nativeEvent: { state } }) => {\n if (state === State.END) {\n setOverlay('none');\n }\n }}\n >\n <Animated.View style={[styles.flex, panStyle]}>\n {message && (\n <View\n style={[\n styles.center,\n styles.overlayPadding,\n { padding: overlayPadding },\n alignment === 'left' ? styles.alignStart : styles.alignEnd,\n ]}\n >\n {handleReaction && ownCapabilities?.sendReaction ? (\n <OverlayReactionList\n messageLayout={messageLayout}\n ownReactionTypes={\n message?.own_reactions?.map((reaction) => reaction.type) || []\n }\n setReactionListHeight={setReactionListHeight}\n showScreen={showScreen}\n />\n ) : null}\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height: layoutHeight, width: layoutWidth, x, y },\n },\n }) => {\n messageLayout.value = {\n x: alignment === 'left' ? x + layoutWidth : x,\n y,\n };\n messageWidth.value = layoutWidth;\n messageHeight.value = layoutHeight;\n }}\n style={[styles.alignEnd, styles.row, showScreenStyle]}\n >\n {alignment === 'left' && MessageAvatar && (\n <MessageAvatar {...{ alignment, message, showAvatar: true }} />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor:\n onlyEmojis && !message.quoted_message\n ? transparent\n : otherAttachments?.length\n ? otherAttachments[0].type === 'giphy'\n ? !message.quoted_message\n ? transparent\n : grey_gainsboro\n : blue_alice\n : alignment === 'left'\n ? white_smoke\n : grey_gainsboro,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' ||\n groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' ||\n groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: grey_whisper,\n },\n (onlyEmojis && !message.quoted_message) || otherAttachments?.length\n ? { borderWidth: 0 }\n : {},\n containerInner,\n ]}\n >\n {messagesContext?.messageContentOrder?.map(\n (messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message &&\n Reply && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply\n quotedMessage={\n message.quoted_message as ReplyProps<StreamChatGenerics>['quotedMessage']\n }\n styles={{\n messageContainer: {\n maxWidth: vw(60),\n },\n }}\n />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments?.map(\n (attachment, attachmentIndex) =>\n Attachment && (\n <Attachment\n attachment={attachment}\n key={`${message.id}-${attachmentIndex}`}\n />\n ),\n );\n case 'files':\n return (\n FileAttachmentGroup && (\n <FileAttachmentGroup\n files={files}\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n )\n );\n case 'gallery':\n return (\n Gallery && (\n <Gallery\n alignment={alignment}\n groupStyles={groupStyles}\n hasThreadReplies={!!message?.reply_count}\n images={images}\n key={`gallery_${messageContentOrderIndex}`}\n message={message}\n threadList={threadList}\n />\n )\n );\n case 'text':\n default:\n return otherAttachments?.length &&\n otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n message={message}\n messageOverlay\n messageTextNumberOfLines={messageTextNumberOfLines}\n onlyEmojis={onlyEmojis}\n />\n );\n }\n },\n )}\n </View>\n </Animated.View>\n {messageActions && (\n <MessageActionList\n MessageActionListItem={MessageActionListItem}\n showScreen={showScreen}\n {...messageActionProps}\n message={message}\n />\n )}\n {!!messageReactionTitle &&\n message.latest_reactions &&\n message.latest_reactions.length > 0 ? (\n <OverlayReactions\n alignment={alignment}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n reactions={\n message.latest_reactions.map((reaction) => ({\n alignment:\n clientId && clientId === reaction.user?.id ? 'right' : 'left',\n id: reaction?.user?.id || '',\n image: reaction?.user?.image,\n name: reaction?.user?.name || reaction.user_id || '',\n type: reaction.type,\n })) as Reaction[]\n }\n showScreen={showScreen}\n supportedReactions={messagesContext?.supportedReactions}\n title={messageReactionTitle}\n />\n ) : null}\n </View>\n )}\n </Animated.View>\n </TapGestureHandler>\n </SafeAreaView>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </ThemeProvider>\n </MessageProvider>\n </MessagesProvider>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n nextProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n message: prevMessage,\n messageReactionTitle: prevMessageReactionTitle,\n visible: prevVisible,\n } = prevProps;\n const {\n alignment: nextAlignment,\n message: nextMessage,\n messageReactionTitle: nextMessageReactionTitle,\n visible: nextVisible,\n } = nextProps;\n\n const visibleEqual = prevVisible === nextVisible;\n if (!visibleEqual) return false;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;\n if (!messageReactionTitleEqual) 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 MemoizedMessageOverlay = React.memo(\n MessageOverlayWithContext,\n areEqual,\n) as typeof MessageOverlayWithContext;\n\nexport type MessageOverlayProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> &\n Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> &\n Pick<\n MessageOverlayPropsWithContext<StreamChatGenerics>,\n 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'\n >;\n\n/**\n * MessageOverlay - A high level component which implements all the logic required for a message overlay\n */\nexport const MessageOverlay = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayProps<StreamChatGenerics>,\n) => {\n const {\n data,\n MessageActionList,\n MessageActionListItem,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n reset,\n } = useMessageOverlayContext<StreamChatGenerics>();\n const { overlay, setOverlay } = useOverlayContext();\n\n const componentProps = {\n MessageActionList: props.MessageActionList || MessageActionList,\n MessageActionListItem: props.MessageActionListItem || MessageActionListItem,\n OverlayReactionList:\n props.OverlayReactionList || OverlayReactionList || data?.OverlayReactionList,\n OverlayReactions: props.OverlayReactions || OverlayReactions,\n OverlayReactionsAvatar: props.OverlayReactionsAvatar || OverlayReactionsAvatar,\n };\n\n return (\n <MemoizedMessageOverlay\n {...{\n overlay,\n reset,\n setOverlay,\n }}\n {...componentProps}\n {...(data || {})}\n {...props}\n />\n );\n};\n"]}
1
+ {"version":3,"sources":["MessageOverlay.tsx"],"names":["styles","StyleSheet","create","alignEnd","alignItems","alignStart","center","flexGrow","justifyContent","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","flex","overlayPadding","padding","replyContainer","flexDirection","paddingHorizontal","paddingTop","row","scrollView","Platform","OS","screenHeight","halfScreenHeight","DefaultMessageTextNumberOfLines","MessageOverlayWithContext","props","alignment","ownCapabilities","clientId","files","groupStyles","handleReaction","images","message","messageActions","MessageActionList","DefaultMessageActionList","MessageActionListItem","messageContext","messageReactionTitle","messageTextNumberOfLines","messagesContext","onlyEmojis","otherAttachments","overlay","overlayOpacity","OverlayReactionList","OverlayReactionListDefault","OverlayReactions","DefaultOverlayReactions","OverlayReactionsAvatar","OverlayReactionsAvatarDefault","reset","setOverlay","threadList","visible","isMyMessage","messageReactions","error","isThreadMessage","messageActionProps","theme","myMessageTheme","wrapMessageInTheme","user","id","JSON","stringify","myMessageThemeString","setMyMessageThemeString","modifiedTheme","style","colors","blue_alice","grey_gainsboro","grey_whisper","transparent","white_smoke","messageSimple","content","container","borderRadiusL","borderRadiusS","containerStyle","messageHeight","messageLayout","x","y","messageWidth","offsetY","translateY","scale","showScreen","fadeScreen","show","value","damping","mass","restDisplacementThreshold","restSpeedThreshold","stiffness","velocity","duration","easing","Easing","out","ease","Keyboard","dismiss","onPan","onActive","evt","translationY","Extrapolate","CLAMP","onFinish","finalYPosition","velocityY","onStart","panStyle","transform","showScreenStyle","translateX","groupStyle","toLowerCase","hasThreadReplies","reply_count","Attachment","FileAttachmentGroup","Gallery","MessageAvatar","Reply","absoluteFillObject","state","nativeEvent","State","END","sendReaction","own_reactions","map","reaction","type","layout","layoutHeight","height","layoutWidth","width","showAvatar","backgroundColor","quoted_message","length","borderBottomLeftRadius","borderBottomRightRadius","borderColor","messageContentOrder","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","actions","latest_reactions","image","name","user_id","supportedReactions","areEqual","prevProps","nextProps","prevAlignment","prevMessage","prevMessageReactionTitle","prevVisible","nextAlignment","nextMessage","nextMessageReactionTitle","nextVisible","visibleEqual","alignmentEqual","messageReactionTitleEqual","latestReactionsEqual","Array","isArray","every","index","MemoizedMessageOverlay","React","memo","MessageOverlay","data","componentProps"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAMA;;AAcA;;AACA;;AACA;;AAEA;;AACA;;AAMA;;AACA;;AAKA;;AAGA;;AACA;;AACA;;;;;;;;;AAMA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,QAAQ,EAAE;AAAEC,IAAAA,UAAU,EAAE;AAAd,GADqB;AAE/BC,EAAAA,UAAU,EAAE;AAAED,IAAAA,UAAU,EAAE;AAAd,GAFmB;AAG/BE,EAAAA,MAAM,EAAE;AACNC,IAAAA,QAAQ,EAAE,CADJ;AAENC,IAAAA,cAAc,EAAE;AAFV,GAHuB;AAO/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,mBAAmB,EAAE,EADP;AAEdC,IAAAA,oBAAoB,EAAE,EAFR;AAGdC,IAAAA,WAAW,EAAE,CAHC;AAIdC,IAAAA,QAAQ,EAAE;AAJI,GAPe;AAa/BC,EAAAA,IAAI,EAAE;AACJA,IAAAA,IAAI,EAAE;AADF,GAbyB;AAgB/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,OAAO,EAAE;AADK,GAhBe;AAmB/BC,EAAAA,cAAc,EAAE;AACdC,IAAAA,aAAa,EAAE,KADD;AAEdC,IAAAA,iBAAiB,EAAE,CAFL;AAGdC,IAAAA,UAAU,EAAE;AAHE,GAnBe;AAwB/BC,EAAAA,GAAG,EAAE;AAAEH,IAAAA,aAAa,EAAE;AAAjB,GAxB0B;AAyB/BI,EAAAA,UAAU,EAAE;AAAET,IAAAA,QAAQ,EAAEU,sBAASC,EAAT,KAAgB,KAAhB,GAAwB,SAAxB,GAAoC;AAAhD;AAzBmB,CAAlB,CAAf;;AA4BA,IAAMC,YAAY,GAAG,eAAG,GAAH,CAArB;AACA,IAAMC,gBAAgB,GAAG,eAAG,EAAH,CAAzB;AACA,IAAMC,+BAA+B,GAAG,CAAxC;;AA6BA,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B,CAGhCC,KAHgC,EAI7B;AAAA;;AACH,MACEC,SADF,GA+BID,KA/BJ,CACEC,SADF;AAAA,MAEEC,eAFF,GA+BIF,KA/BJ,CAEEE,eAFF;AAAA,MAGEC,QAHF,GA+BIH,KA/BJ,CAGEG,QAHF;AAAA,MAIEC,KAJF,GA+BIJ,KA/BJ,CAIEI,KAJF;AAAA,MAKEC,WALF,GA+BIL,KA/BJ,CAKEK,WALF;AAAA,MAMEC,cANF,GA+BIN,KA/BJ,CAMEM,cANF;AAAA,MAOEC,MAPF,GA+BIP,KA/BJ,CAOEO,MAPF;AAAA,MAQEC,OARF,GA+BIR,KA/BJ,CAQEQ,OARF;AAAA,MASEC,cATF,GA+BIT,KA/BJ,CASES,cATF;AAAA,8BA+BIT,KA/BJ,CAUEU,iBAVF;AAAA,MAUEA,iBAVF,sCAUsBC,oCAVtB;AAAA,MAWEC,qBAXF,GA+BIZ,KA/BJ,CAWEY,qBAXF;AAAA,MAYEC,cAZF,GA+BIb,KA/BJ,CAYEa,cAZF;AAAA,MAaEC,oBAbF,GA+BId,KA/BJ,CAaEc,oBAbF;AAAA,8BA+BId,KA/BJ,CAcEe,wBAdF;AAAA,MAcEA,wBAdF,sCAc6BjB,+BAd7B;AAAA,MAeEkB,eAfF,GA+BIhB,KA/BJ,CAeEgB,eAfF;AAAA,MAgBEC,UAhBF,GA+BIjB,KA/BJ,CAgBEiB,UAhBF;AAAA,MAiBEC,gBAjBF,GA+BIlB,KA/BJ,CAiBEkB,gBAjBF;AAAA,MAkBEC,OAlBF,GA+BInB,KA/BJ,CAkBEmB,OAlBF;AAAA,MAmBEC,cAnBF,GA+BIpB,KA/BJ,CAmBEoB,cAnBF;AAAA,8BA+BIpB,KA/BJ,CAoBEqB,mBApBF;AAAA,MAoBEA,mBApBF,sCAoBwBC,wCApBxB;AAAA,+BA+BItB,KA/BJ,CAqBEuB,gBArBF;AAAA,MAqBEA,gBArBF,uCAqBqBC,kCArBrB;AAAA,+BA+BIxB,KA/BJ,CAsBEyB,sBAtBF;AAAA,MAsBEA,sBAtBF,uCAsB2BC,8CAtB3B;AAAA,MAuBEC,KAvBF,GA+BI3B,KA/BJ,CAuBE2B,KAvBF;AAAA,MAwBEC,UAxBF,GA+BI5B,KA/BJ,CAwBE4B,UAxBF;AAAA,MAyBEC,UAzBF,GA+BI7B,KA/BJ,CAyBE6B,UAzBF;AAAA,MA0BEC,OA1BF,GA+BI9B,KA/BJ,CA0BE8B,OA1BF;AAAA,MA2BEC,WA3BF,GA+BI/B,KA/BJ,CA2BE+B,WA3BF;AAAA,MA4BEC,gBA5BF,GA+BIhC,KA/BJ,CA4BEgC,gBA5BF;AAAA,MA6BEC,KA7BF,GA+BIjC,KA/BJ,CA6BEiC,KA7BF;AAAA,MA8BEC,eA9BF,GA+BIlC,KA/BJ,CA8BEkC,eA9BF;AAiCA,MAAMC,kBAAkB,GAAG;AACzBF,IAAAA,KAAK,EAALA,KADyB;AAEzBF,IAAAA,WAAW,EAAXA,WAFyB;AAGzBG,IAAAA,eAAe,EAAfA,eAHyB;AAIzB1B,IAAAA,OAAO,EAAPA,OAJyB;AAKzBwB,IAAAA,gBAAgB,EAAhBA;AALyB,GAA3B;;AAQA,kBAAkB,6BAAlB;AAAA,MAAQI,KAAR,aAAQA,KAAR;;AAEA,MAAMC,cAAc,GAAGrB,eAAH,oBAAGA,eAAe,CAAEqB,cAAxC;AACA,MAAMC,kBAAkB,GAAGnC,QAAQ,MAAKK,OAAL,qCAAKA,OAAO,CAAE+B,IAAd,qBAAK,cAAeC,EAApB,CAAR,IAAkC,CAAC,CAACH,cAA/D;;AAEA,kBAAwD,qBAASI,IAAI,CAACC,SAAL,CAAeL,cAAf,CAAT,CAAxD;AAAA;AAAA,MAAOM,oBAAP;AAAA,MAA6BC,uBAA7B;;AAEA,wBAAU,YAAM;AACd,QAAIP,cAAJ,EAAoB;AAClBO,MAAAA,uBAAuB,CAACH,IAAI,CAACC,SAAL,CAAeL,cAAf,CAAD,CAAvB;AACD;AACF,GAJD,EAIG,CAACA,cAAD,CAJH;AAMA,MAAMQ,aAAa,GAAG,oBACpB;AAAA,WAAM,+BAAY;AAAEC,MAAAA,KAAK,EAAET,cAAT;AAAyBD,MAAAA,KAAK,EAALA;AAAzB,KAAZ,CAAN;AAAA,GADoB,EAEpB,CAACO,oBAAD,EAAuBP,KAAvB,CAFoB,CAAtB;;AAKA,aAUIE,kBAAkB,GAAGO,aAAH,GAAmBT,KAVzC;AAAA,yBACEW,MADF;AAAA,MACYC,UADZ,eACYA,UADZ;AAAA,MACwBC,cADxB,eACwBA,cADxB;AAAA,MACwCC,YADxC,eACwCA,YADxC;AAAA,MACsDC,WADtD,eACsDA,WADtD;AAAA,MACmEC,WADnE,eACmEA,WADnE;AAAA,mCAEEC,aAFF,CAGIC,OAHJ;AAAA,qDAIMC,SAJN;AAAA,MAImBC,aAJnB,0BAImBA,aAJnB;AAAA,MAIkCC,aAJlC,0BAIkCA,aAJlC;AAAA,MAKM7E,cALN,yBAKMA,cALN;AAAA,MAMMQ,cANN,yBAMMA,cANN;AAAA,0BASE+B,OATF;AAAA,MASwBuC,cATxB,gBASaH,SATb;AAAA,MASiDrE,cATjD,gBASwCC,OATxC;;AAYA,MAAMwE,aAAa,GAAG,2CAAe,CAAf,CAAtB;AACA,MAAMC,aAAa,GAAG,2CAAe;AAAEC,IAAAA,CAAC,EAAE,CAAL;AAAQC,IAAAA,CAAC,EAAE;AAAX,GAAf,CAAtB;AACA,MAAMC,YAAY,GAAG,2CAAe,CAAf,CAArB;AAEA,MAAMC,OAAO,GAAG,2CAAe,CAAf,CAAhB;AACA,MAAMC,UAAU,GAAG,2CAAe,CAAf,CAAnB;AACA,MAAMC,KAAK,GAAG,2CAAe,CAAf,CAAd;AAEA,MAAMC,UAAU,GAAG,2CAAe,CAAf,CAAnB;;AACA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,IAAD,EAAmB;AACpC;;AACA,QAAIA,IAAJ,EAAU;AACRL,MAAAA,OAAO,CAACM,KAAR,GAAgB,CAAhB;AACAL,MAAAA,UAAU,CAACK,KAAX,GAAmB,CAAnB;AACAJ,MAAAA,KAAK,CAACI,KAAN,GAAc,CAAd;AACD;;AACDH,IAAAA,UAAU,CAACG,KAAX,GAAmBD,IAAI,GACnB,uCAAW,CAAX,EAAc;AACZE,MAAAA,OAAO,EAAE,GADG;AAEZC,MAAAA,IAAI,EAAE,GAFM;AAGZC,MAAAA,yBAAyB,EAAE,IAHf;AAIZC,MAAAA,kBAAkB,EAAE,IAJR;AAKZC,MAAAA,SAAS,EAAE,GALC;AAMZC,MAAAA,QAAQ,EAAE;AANE,KAAd,CADmB,GASnB,uCACE,CADF,EAEE;AACEC,MAAAA,QAAQ,EAAE,GADZ;AAEEC,MAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFV,KAFF,EAME,YAAM;AACJ,UAAI,CAACZ,IAAL,EAAW;AACT,4CAAQ1C,KAAR;AACD;AACF,KAVH,CATJ;AAqBD,GA5BD;;AA8BA,wBAAU,YAAM;AACd,QAAIG,OAAJ,EAAa;AACXoD,4BAASC,OAAT;AACD;;AACDf,IAAAA,UAAU,CAAC,CAAC,CAACtC,OAAH,CAAV;AACD,GALD,EAKG,CAACA,OAAD,CALH;AAOA,MAAMsD,KAAK,GAAG,sDAAyD;AACrEC,IAAAA,QAAQ,EAAE,kBAACC,GAAD,EAAS;AACjBrB,MAAAA,UAAU,CAACK,KAAX,GAAmBN,OAAO,CAACM,KAAR,GAAgBgB,GAAG,CAACC,YAAvC;AACAnE,MAAAA,cAAc,CAACkD,KAAf,GAAuB,wCACrBL,UAAU,CAACK,KADU,EAErB,CAAC,CAAD,EAAIzE,gBAAJ,CAFqB,EAGrB,CAAC,CAAD,EAAI,IAAJ,CAHqB,EAIrB2F,mCAAYC,KAJS,CAAvB;AAMAvB,MAAAA,KAAK,CAACI,KAAN,GAAc,wCACZL,UAAU,CAACK,KADC,EAEZ,CAAC,CAAD,EAAIzE,gBAAJ,CAFY,EAGZ,CAAC,CAAD,EAAI,IAAJ,CAHY,EAIZ2F,mCAAYC,KAJA,CAAd;AAMD,KAfoE;AAgBrEC,IAAAA,QAAQ,EAAE,kBAACJ,GAAD,EAAS;AACjB,UAAMK,cAAc,GAAGL,GAAG,CAACC,YAAJ,GAAmBD,GAAG,CAACM,SAAJ,GAAgB,GAA1D;;AAEA,UAAID,cAAc,GAAG9F,gBAAjB,IAAqCoE,UAAU,CAACK,KAAX,GAAmB,CAA5D,EAA+D;AAC7D,oDAAgBL,UAAhB;AACA7C,QAAAA,cAAc,CAACkD,KAAf,GAAuB,uCACrB,CADqB,EAErB;AACEO,UAAAA,QAAQ,EAAE,GADZ;AAEEC,UAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFV,SAFqB,EAMrB,YAAM;AACJ,8CAAQrD,UAAR,EAAoB,MAApB;AACD,SARoB,CAAvB;AAUAqC,QAAAA,UAAU,CAACK,KAAX,GACEgB,GAAG,CAACM,SAAJ,GAAgB,IAAhB,GACI,sCAAU;AACRhB,UAAAA,QAAQ,EAAEU,GAAG,CAACM;AADN,SAAV,CADJ,GAII,uCAAWhG,YAAX,EAAyB;AACvBiF,UAAAA,QAAQ,EAAE,GADa;AAEvBC,UAAAA,MAAM,EAAEC,8BAAOC,GAAP,CAAWD,8BAAOE,IAAlB;AAFe,SAAzB,CALN;AASD,OArBD,MAqBO;AACLhB,QAAAA,UAAU,CAACK,KAAX,GAAmB,uCAAW,CAAX,CAAnB;AACAJ,QAAAA,KAAK,CAACI,KAAN,GAAc,uCAAW,CAAX,CAAd;AACAlD,QAAAA,cAAc,CAACkD,KAAf,GAAuB,uCAAW,CAAX,CAAvB;AACD;AACF,KA7CoE;AA8CrEuB,IAAAA,OAAO,EAAE,mBAAM;AACb,kDAAgB5B,UAAhB;AACAD,MAAAA,OAAO,CAACM,KAAR,GAAgBL,UAAU,CAACK,KAA3B;AACD;AAjDoE,GAAzD,CAAd;AAoDA,MAAMwB,QAAQ,GAAG,6CAA4B;AAAA,WAAO;AAClDC,MAAAA,SAAS,EAAE,CACT;AACE9B,QAAAA,UAAU,EAAEA,UAAU,CAACK;AADzB,OADS,EAIT;AACEJ,QAAAA,KAAK,EAAEA,KAAK,CAACI;AADf,OAJS;AADuC,KAAP;AAAA,GAA5B,CAAjB;AAWA,MAAM0B,eAAe,GAAG,6CACtB;AAAA,WAAO;AACLD,MAAAA,SAAS,EAAE,CACT;AACE9B,QAAAA,UAAU,EAAE,wCAAYE,UAAU,CAACG,KAAvB,EAA8B,CAAC,CAAD,EAAI,CAAJ,CAA9B,EAAsC,CAACX,aAAa,CAACW,KAAd,GAAsB,CAAvB,EAA0B,CAA1B,CAAtC;AADd,OADS,EAIT;AACE2B,QAAAA,UAAU,EAAE,wCACV9B,UAAU,CAACG,KADD,EAEV,CAAC,CAAD,EAAI,CAAJ,CAFU,EAGV,CAACrE,SAAS,KAAK,MAAd,GAAuB,CAAC8D,YAAY,CAACO,KAAd,GAAsB,CAA7C,GAAiDP,YAAY,CAACO,KAAb,GAAqB,CAAvE,EAA0E,CAA1E,CAHU;AADd,OAJS,EAWT;AACEJ,QAAAA,KAAK,EAAEC,UAAU,CAACG;AADpB,OAXS;AADN,KAAP;AAAA,GADsB,EAkBtB,CAACrE,SAAD,CAlBsB,CAAxB;AAqBA,MAAMiG,UAAU,GAAMjG,SAAN,SAAmB,CAAC,CAAAI,WAAW,QAAX,YAAAA,WAAW,CAAG,CAAH,CAAX,KAAoB,QAArB,EAA+B8F,WAA/B,EAAnC;AAEA,MAAMC,gBAAgB,GAAG,CAAC,EAAC5F,OAAD,YAACA,OAAO,CAAE6F,WAAV,CAA1B;;AAEA,cAA2ErF,eAAe,IAAI,EAA9F;AAAA,MAAQsF,UAAR,SAAQA,UAAR;AAAA,MAAoBC,mBAApB,SAAoBA,mBAApB;AAAA,MAAyCC,OAAzC,SAAyCA,OAAzC;AAAA,MAAkDC,aAAlD,SAAkDA,aAAlD;AAAA,MAAiEC,KAAjE,SAAiEA,KAAjE;;AAEA,SACE,gCAAC,iCAAD;AAAkB,IAAA,KAAK,EAAE1F,eAAzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,+BAAD;AAAiB,IAAA,KAAK,EAAEH,cAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,WAAW,EAAEyB,kBAAkB,GAAGO,aAAH,GAAmBT,KAAjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,iCAAD,CAAU,IAAV;AACE,IAAA,aAAa,EAAEN,OAAO,GAAG,MAAH,GAAY,MADpC;AAEE,IAAA,KAAK,EAAE,CAAC1D,wBAAWuI,kBAAZ,EAAgCjD,cAAhC,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIE,gCAAC,4CAAD;AACE,IAAA,OAAO,EAAEvC,OAAO,KAAK,SADvB;AAEE,IAAA,WAAW,EAAE,CAFf;AAGE,IAAA,OAAO,EAAE,EAHX;AAIE,IAAA,cAAc,EAAEiE,KAJlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAME,gCAAC,iCAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAAChH,wBAAWuI,kBAAZ,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,yBAAD;AAAc,IAAA,KAAK,EAAExI,MAAM,CAACc,IAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,4CAAD;AACE,IAAA,OAAO,EAAE,EADX;AAEE,IAAA,oBAAoB,EAAE,qCAAgC;AAAA,UAAd2H,KAAc,SAA7BC,WAA6B,CAAdD,KAAc;;AACpD,UAAIA,KAAK,KAAKE,iCAAMC,GAApB,EAAyB;AACvBnF,QAAAA,UAAU,CAAC,MAAD,CAAV;AACD;AACF,KANH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQE,gCAAC,iCAAD,CAAU,IAAV;AAAe,IAAA,KAAK,EAAE,CAACzD,MAAM,CAACc,IAAR,EAAc6G,QAAd,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGtF,OAAO,IACN,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLrC,MAAM,CAACM,MADF,EAELN,MAAM,CAACe,cAFF,EAGL;AAAEC,MAAAA,OAAO,EAAED;AAAX,KAHK,EAILe,SAAS,KAAK,MAAd,GAAuB9B,MAAM,CAACK,UAA9B,GAA2CL,MAAM,CAACG,QAJ7C,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAQGgC,cAAc,IAAIJ,eAAJ,YAAIA,eAAe,CAAE8G,YAAnC,GACC,gCAAC,mBAAD;AACE,IAAA,aAAa,EAAEpD,aADjB;AAEE,IAAA,gBAAgB,EACd,CAAApD,OAAO,QAAP,qCAAAA,OAAO,CAAEyG,aAAT,2CAAwBC,GAAxB,CAA4B,UAACC,QAAD;AAAA,aAAcA,QAAQ,CAACC,IAAvB;AAAA,KAA5B,MAA4D,EAHhE;AAKE,IAAA,UAAU,EAAEjD,UALd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADD,GAQG,IAhBN,EAiBE,gCAAC,iCAAD,CAAU,IAAV;AACE,IAAA,QAAQ,EAAE,yBAIJ;AAAA,wCAHJ0C,WAGI,CAFFQ,MAEE;AAAA,UAFgBC,YAEhB,yBAFQC,MAER;AAAA,UAFqCC,WAErC,yBAF8BC,KAE9B;AAAA,UAFkD5D,CAElD,yBAFkDA,CAElD;AAAA,UAFqDC,CAErD,yBAFqDA,CAErD;AACJF,MAAAA,aAAa,CAACU,KAAd,GAAsB;AACpBT,QAAAA,CAAC,EAAE5D,SAAS,KAAK,MAAd,GAAuB4D,CAAC,GAAG2D,WAA3B,GAAyC3D,CADxB;AAEpBC,QAAAA,CAAC,EAADA;AAFoB,OAAtB;AAIAC,MAAAA,YAAY,CAACO,KAAb,GAAqBkD,WAArB;AACA7D,MAAAA,aAAa,CAACW,KAAd,GAAsBgD,YAAtB;AACD,KAZH;AAaE,IAAA,KAAK,EAAE,CAACnJ,MAAM,CAACG,QAAR,EAAkBH,MAAM,CAACqB,GAAzB,EAA8BwG,eAA9B,CAbT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAeG/F,SAAS,KAAK,MAAd,IAAwBwG,aAAxB,IACC,gCAAC,aAAD;AAAqBxG,IAAAA,SAAS,EAATA,SAArB;AAAgCO,IAAAA,OAAO,EAAPA,OAAhC;AAAyCkH,IAAAA,UAAU,EAAE,IAArD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAhBJ,EAkBE,gCAAC,iBAAD;AACE,IAAA,KAAK,EAAE,CACLvJ,MAAM,CAACS,cADF,EAEL;AACE+I,MAAAA,eAAe,EACb1G,UAAU,IAAI,CAACT,OAAO,CAACoH,cAAvB,GACIzE,WADJ,GAEIjC,gBAAgB,QAAhB,IAAAA,gBAAgB,CAAE2G,MAAlB,GACA3G,gBAAgB,CAAC,CAAD,CAAhB,CAAoBkG,IAApB,KAA6B,OAA7B,GACE,CAAC5G,OAAO,CAACoH,cAAT,GACEzE,WADF,GAEEF,cAHJ,GAIED,UALF,GAMA/C,SAAS,KAAK,MAAd,GACAmD,WADA,GAEAH,cAZR;AAaE6E,MAAAA,sBAAsB,EACpB,CAAC5B,UAAU,KAAK,aAAf,IACCA,UAAU,KAAK,aADjB,MAEC,CAACE,gBAAD,IAAqBvE,UAFtB,IAGI4B,aAHJ,GAIID,aAlBR;AAmBEuE,MAAAA,uBAAuB,EACrB,CAAC7B,UAAU,KAAK,cAAf,IACCA,UAAU,KAAK,cADjB,MAEC,CAACE,gBAAD,IAAqBvE,UAFtB,IAGI4B,aAHJ,GAIID,aAxBR;AAyBEwE,MAAAA,WAAW,EAAE9E;AAzBf,KAFK,EA6BJjC,UAAU,IAAI,CAACT,OAAO,CAACoH,cAAxB,IAA2C1G,gBAA3C,YAA2CA,gBAAgB,CAAE2G,MAA7D,GACI;AAAE9I,MAAAA,WAAW,EAAE;AAAf,KADJ,GAEI,EA/BC,EAgCLH,cAhCK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAoCGoC,eApCH,6CAoCGA,eAAe,CAAEiH,mBApCpB,qBAoCG,sBAAsCf,GAAtC,CACC,UAACgB,kBAAD,EAAqBC,wBAArB,EAAkD;AAChD,YAAQD,kBAAR;AACE,WAAK,cAAL;AACE,eACE1H,OAAO,CAACoH,cAAR,IACAlB,KADA,IAEE,gCAAC,iBAAD;AACE,UAAA,GAAG,oBAAkByB,wBADvB;AAEE,UAAA,KAAK,EAAE,CAAChK,MAAM,CAACiB,cAAR,EAAwBA,cAAxB,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAIE,gCAAC,KAAD;AACE,UAAA,aAAa,EACXoB,OAAO,CAACoH,cAFZ;AAIE,UAAA,MAAM,EAAE;AACNQ,YAAAA,gBAAgB,EAAE;AAChBC,cAAAA,QAAQ,EAAE,eAAG,EAAH;AADM;AADZ,WAJV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAJF,CAHJ;;AAoBF,WAAK,aAAL;AACE,eAAOnH,gBAAP,oBAAOA,gBAAgB,CAAEgG,GAAlB,CACL,UAACoB,UAAD,EAAaC,eAAb;AAAA,iBACEjC,UAAU,IACR,gCAAC,UAAD;AACE,YAAA,UAAU,EAAEgC,UADd;AAEE,YAAA,GAAG,EAAK9H,OAAO,CAACgC,EAAb,SAAmB+F,eAFxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAFJ;AAAA,SADK,CAAP;;AASF,WAAK,OAAL;AACE,eACEhC,mBAAmB,IACjB,gCAAC,mBAAD;AACE,UAAA,KAAK,EAAEnG,KADT;AAEE,UAAA,GAAG,6BAA2B+H,wBAFhC;AAGE,UAAA,SAAS,EAAE3H,OAAO,CAACgC,EAHrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAFJ;;AASF,WAAK,SAAL;AACE,eACEgE,OAAO,IACL,gCAAC,OAAD;AACE,UAAA,SAAS,EAAEvG,SADb;AAEE,UAAA,WAAW,EAAEI,WAFf;AAGE,UAAA,gBAAgB,EAAE,CAAC,EAACG,OAAD,YAACA,OAAO,CAAE6F,WAAV,CAHrB;AAIE,UAAA,MAAM,EAAE9F,MAJV;AAKE,UAAA,GAAG,eAAa4H,wBALlB;AAME,UAAA,OAAO,EAAE3H,OANX;AAOE,UAAA,UAAU,EAAEqB,UAPd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAFJ;;AAaF,WAAK,MAAL;AACA;AACE,eAAOX,gBAAgB,QAAhB,IAAAA,gBAAgB,CAAE2G,MAAlB,IACL3G,gBAAgB,CAAC,CAAD,CAAhB,CAAoBsH,OADf,GACyB,IADzB,GAEL,gCAAC,0CAAD;AACE,UAAA,GAAG,8BAA4BL,wBADjC;AAEE,UAAA,OAAO,EAAE3H,OAFX;AAGE,UAAA,cAAc,MAHhB;AAIE,UAAA,wBAAwB,EAAEO,wBAJ5B;AAKE,UAAA,UAAU,EAAEE,UALd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAFF;AA1DJ;AAqED,GAvEF,CApCH,CAlBF,CAjBF,EAkJGR,cAAc,IACb,gCAAC,iBAAD;AACE,IAAA,qBAAqB,EAAEG,qBADzB;AAEE,IAAA,UAAU,EAAEuD;AAFd,KAGMhC,kBAHN;AAIE,IAAA,OAAO,EAAE3B,OAJX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAnJJ,EA0JG,CAAC,CAACM,oBAAF,IACDN,OAAO,CAACiI,gBADP,IAEDjI,OAAO,CAACiI,gBAAR,CAAyBZ,MAAzB,GAAkC,CAFjC,GAGC,gCAAC,gBAAD;AACE,IAAA,SAAS,EAAE5H,SADb;AAEE,IAAA,sBAAsB,EAAEwB,sBAF1B;AAGE,IAAA,SAAS,EACPjB,OAAO,CAACiI,gBAAR,CAAyBvB,GAAzB,CAA6B,UAACC,QAAD;AAAA;;AAAA,aAAe;AAC1ClH,QAAAA,SAAS,EACPE,QAAQ,IAAIA,QAAQ,wBAAKgH,QAAQ,CAAC5E,IAAd,qBAAK,eAAeC,EAApB,CAApB,GAA6C,OAA7C,GAAuD,MAFf;AAG1CA,QAAAA,EAAE,EAAE,CAAA2E,QAAQ,QAAR,+BAAAA,QAAQ,CAAE5E,IAAV,qCAAgBC,EAAhB,KAAsB,EAHgB;AAI1CkG,QAAAA,KAAK,EAAEvB,QAAF,uCAAEA,QAAQ,CAAE5E,IAAZ,qBAAE,gBAAgBmG,KAJmB;AAK1CC,QAAAA,IAAI,EAAE,CAAAxB,QAAQ,QAAR,+BAAAA,QAAQ,CAAE5E,IAAV,qCAAgBoG,IAAhB,KAAwBxB,QAAQ,CAACyB,OAAjC,IAA4C,EALR;AAM1CxB,QAAAA,IAAI,EAAED,QAAQ,CAACC;AAN2B,OAAf;AAAA,KAA7B,CAJJ;AAaE,IAAA,UAAU,EAAEjD,UAbd;AAcE,IAAA,kBAAkB,EAAEnD,eAAF,oBAAEA,eAAe,CAAE6H,kBAdvC;AAeE,IAAA,KAAK,EAAE/H,oBAfT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAHD,GAoBG,IA9KN,CAFJ,CARF,CADF,CADF,CANF,CAJF,CADF,CADF,CADF,CADF;AAqND,CAzaD;;AA2aA,IAAMgI,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MACaC,aADb,GAKIF,SALJ,CACE9I,SADF;AAAA,MAEWiJ,WAFX,GAKIH,SALJ,CAEEvI,OAFF;AAAA,MAGwB2I,wBAHxB,GAKIJ,SALJ,CAGEjI,oBAHF;AAAA,MAIWsI,WAJX,GAKIL,SALJ,CAIEjH,OAJF;AAMA,MACauH,aADb,GAKIL,SALJ,CACE/I,SADF;AAAA,MAEWqJ,WAFX,GAKIN,SALJ,CAEExI,OAFF;AAAA,MAGwB+I,wBAHxB,GAKIP,SALJ,CAGElI,oBAHF;AAAA,MAIW0I,WAJX,GAKIR,SALJ,CAIElH,OAJF;AAOA,MAAM2H,YAAY,GAAGL,WAAW,KAAKI,WAArC;AACA,MAAI,CAACC,YAAL,EAAmB,OAAO,KAAP;AAEnB,MAAMC,cAAc,GAAGT,aAAa,KAAKI,aAAzC;AACA,MAAI,CAACK,cAAL,EAAqB,OAAO,KAAP;AAErB,MAAMC,yBAAyB,GAAGR,wBAAwB,KAAKI,wBAA/D;AACA,MAAI,CAACI,yBAAL,EAAgC,OAAO,KAAP;AAEhC,MAAMC,oBAAoB,GACxBC,KAAK,CAACC,OAAN,CAAcZ,WAAd,oBAAcA,WAAW,CAAET,gBAA3B,KAAgDoB,KAAK,CAACC,OAAN,CAAcR,WAAd,oBAAcA,WAAW,CAAEb,gBAA3B,CAAhD,GACI,CAAAS,WAAW,QAAX,YAAAA,WAAW,CAAET,gBAAb,CAA8BZ,MAA9B,OAAyCyB,WAAzC,oBAAyCA,WAAW,CAAEb,gBAAb,CAA8BZ,MAAvE,MACAqB,WADA,oBACAA,WAAW,CAAET,gBAAb,CAA8BsB,KAA9B,CACE,iBAAWC,KAAX;AAAA;;AAAA,QAAG5C,IAAH,SAAGA,IAAH;AAAA,WAAqBA,IAAI,MAAKkC,WAAL,6CAAKA,WAAW,CAAEb,gBAAlB,qBAAK,sBAAgCuB,KAAhC,EAAuC5C,IAA5C,CAAzB;AAAA,GADF,CADA,CADJ,GAKI,CAAA8B,WAAW,QAAX,YAAAA,WAAW,CAAET,gBAAb,OAAkCa,WAAlC,oBAAkCA,WAAW,CAAEb,gBAA/C,CANN;AAOA,MAAI,CAACmB,oBAAL,EAA2B,OAAO,KAAP;AAE3B,SAAO,IAAP;AACD,CApCD;;AAsCA,IAAMK,sBAAsB,GAAGC,kBAAMC,IAAN,CAC7BpK,yBAD6B,EAE7B+I,QAF6B,CAA/B;;AAiBO,IAAMsB,cAAc,GAAG,SAAjBA,cAAiB,CAG5BpK,KAH4B,EAIzB;AACH,8BAQI,sDARJ;AAAA,MACEqK,IADF,yBACEA,IADF;AAAA,MAEE3J,iBAFF,yBAEEA,iBAFF;AAAA,MAGEE,qBAHF,yBAGEA,qBAHF;AAAA,MAIES,mBAJF,yBAIEA,mBAJF;AAAA,MAKEE,gBALF,yBAKEA,gBALF;AAAA,MAMEE,sBANF,yBAMEA,sBANF;AAAA,MAOEE,KAPF,yBAOEA,KAPF;;AASA,2BAAgC,wCAAhC;AAAA,MAAQR,OAAR,sBAAQA,OAAR;AAAA,MAAiBS,UAAjB,sBAAiBA,UAAjB;;AAEA,MAAM0I,cAAc,GAAG;AACrB5J,IAAAA,iBAAiB,EAAEV,KAAK,CAACU,iBAAN,IAA2BA,iBADzB;AAErBE,IAAAA,qBAAqB,EAAEZ,KAAK,CAACY,qBAAN,IAA+BA,qBAFjC;AAGrBS,IAAAA,mBAAmB,EACjBrB,KAAK,CAACqB,mBAAN,IAA6BA,mBAA7B,KAAoDgJ,IAApD,oBAAoDA,IAAI,CAAEhJ,mBAA1D,CAJmB;AAKrBE,IAAAA,gBAAgB,EAAEvB,KAAK,CAACuB,gBAAN,IAA0BA,gBALvB;AAMrBE,IAAAA,sBAAsB,EAAEzB,KAAK,CAACyB,sBAAN,IAAgCA;AANnC,GAAvB;AASA,SACE,gCAAC,sBAAD;AAEIN,IAAAA,OAAO,EAAPA,OAFJ;AAGIQ,IAAAA,KAAK,EAALA,KAHJ;AAIIC,IAAAA,UAAU,EAAVA;AAJJ,KAMM0I,cANN,EAOOD,IAAI,IAAI,EAPf,EAQMrK,KARN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAYD,CArCM","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { Keyboard, Platform, SafeAreaView, StyleSheet, View, ViewStyle } from 'react-native';\nimport {\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n State,\n TapGestureHandler,\n} from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n Easing,\n Extrapolate,\n interpolate,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withDecay,\n withSpring,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { MessageActionList as DefaultMessageActionList } from './MessageActionList';\nimport { OverlayReactionList as OverlayReactionListDefault } from './OverlayReactionList';\nimport { OverlayReactionsAvatar as OverlayReactionsAvatarDefault } from './OverlayReactionsAvatar';\n\nimport { MessageProvider } from '../../contexts/messageContext/MessageContext';\nimport {\n MessageOverlayContextValue,\n MessageOverlayData,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\n\nimport { MessagesProvider } from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n OverlayProviderProps,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { mergeThemes, ThemeProvider, useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { vh, vw } from '../../utils/utils';\nimport { MessageTextContainer } from '../Message/MessageSimple/MessageTextContainer';\nimport {\n OverlayReactions as DefaultOverlayReactions,\n Reaction,\n} from '../MessageOverlay/OverlayReactions';\nimport type { ReplyProps } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n alignEnd: { alignItems: 'flex-end' },\n alignStart: { alignItems: 'flex-start' },\n center: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n flex: {\n flex: 1,\n },\n overlayPadding: {\n padding: 8,\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n row: { flexDirection: 'row' },\n scrollView: { overflow: Platform.OS === 'ios' ? 'visible' : 'scroll' },\n});\n\nconst screenHeight = vh(100);\nconst halfScreenHeight = vh(50);\nconst DefaultMessageTextNumberOfLines = 5;\n\nexport type MessageOverlayPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageOverlayContextValue<StreamChatGenerics>,\n | 'MessageActionList'\n | 'MessageActionListItem'\n | 'OverlayReactionList'\n | 'OverlayReactions'\n | 'OverlayReactionsAvatar'\n | 'reset'\n> &\n Omit<MessageOverlayData<StreamChatGenerics>, 'supportedReactions'> &\n Pick<OverlayContextValue, 'overlay' | 'setOverlay'> &\n Pick<\n OverlayProviderProps<StreamChatGenerics>,\n | 'error'\n | 'isMyMessage'\n | 'isThreadMessage'\n | 'message'\n | 'messageReactions'\n | 'messageTextNumberOfLines'\n | 'overlayOpacity'\n > & {\n showScreen?: Animated.SharedValue<number>;\n visible?: boolean;\n };\n\nconst MessageOverlayWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment,\n ownCapabilities,\n clientId,\n files,\n groupStyles,\n handleReaction,\n images,\n message,\n messageActions,\n MessageActionList = DefaultMessageActionList,\n MessageActionListItem,\n messageContext,\n messageReactionTitle,\n messageTextNumberOfLines = DefaultMessageTextNumberOfLines,\n messagesContext,\n onlyEmojis,\n otherAttachments,\n overlay,\n overlayOpacity,\n OverlayReactionList = OverlayReactionListDefault,\n OverlayReactions = DefaultOverlayReactions,\n OverlayReactionsAvatar = OverlayReactionsAvatarDefault,\n reset,\n setOverlay,\n threadList,\n visible,\n isMyMessage,\n messageReactions,\n error,\n isThreadMessage,\n } = props;\n\n const messageActionProps = {\n error,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n };\n\n const { theme } = useTheme();\n\n const myMessageTheme = messagesContext?.myMessageTheme;\n const wrapMessageInTheme = clientId === message?.user?.id && !!myMessageTheme;\n\n const [myMessageThemeString, setMyMessageThemeString] = useState(JSON.stringify(myMessageTheme));\n\n useEffect(() => {\n if (myMessageTheme) {\n setMyMessageThemeString(JSON.stringify(myMessageTheme));\n }\n }, [myMessageTheme]);\n\n const modifiedTheme = useMemo(\n () => mergeThemes({ style: myMessageTheme, theme }),\n [myMessageThemeString, theme],\n );\n\n const {\n colors: { blue_alice, grey_gainsboro, grey_whisper, transparent, white_smoke },\n messageSimple: {\n content: {\n container: { borderRadiusL, borderRadiusS },\n containerInner,\n replyContainer,\n },\n },\n overlay: { container: containerStyle, padding: overlayPadding },\n } = wrapMessageInTheme ? modifiedTheme : theme;\n\n const messageHeight = useSharedValue(0);\n const messageLayout = useSharedValue({ x: 0, y: 0 });\n const messageWidth = useSharedValue(0);\n\n const offsetY = useSharedValue(0);\n const translateY = useSharedValue(0);\n const scale = useSharedValue(1);\n\n const showScreen = useSharedValue(0);\n const fadeScreen = (show: boolean) => {\n 'worklet';\n if (show) {\n offsetY.value = 0;\n translateY.value = 0;\n scale.value = 1;\n }\n showScreen.value = show\n ? withSpring(1, {\n damping: 600,\n mass: 0.5,\n restDisplacementThreshold: 0.01,\n restSpeedThreshold: 0.01,\n stiffness: 200,\n velocity: 32,\n })\n : withTiming(\n 0,\n {\n duration: 150,\n easing: Easing.out(Easing.ease),\n },\n () => {\n if (!show) {\n runOnJS(reset)();\n }\n },\n );\n };\n\n useEffect(() => {\n if (visible) {\n Keyboard.dismiss();\n }\n fadeScreen(!!visible);\n }, [visible]);\n\n const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>({\n onActive: (evt) => {\n translateY.value = offsetY.value + evt.translationY;\n overlayOpacity.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.75],\n Extrapolate.CLAMP,\n );\n scale.value = interpolate(\n translateY.value,\n [0, halfScreenHeight],\n [1, 0.85],\n Extrapolate.CLAMP,\n );\n },\n onFinish: (evt) => {\n const finalYPosition = evt.translationY + evt.velocityY * 0.1;\n\n if (finalYPosition > halfScreenHeight && translateY.value > 0) {\n cancelAnimation(translateY);\n overlayOpacity.value = withTiming(\n 0,\n {\n duration: 200,\n easing: Easing.out(Easing.ease),\n },\n () => {\n runOnJS(setOverlay)('none');\n },\n );\n translateY.value =\n evt.velocityY > 1000\n ? withDecay({\n velocity: evt.velocityY,\n })\n : withTiming(screenHeight, {\n duration: 200,\n easing: Easing.out(Easing.ease),\n });\n } else {\n translateY.value = withTiming(0);\n scale.value = withTiming(1);\n overlayOpacity.value = withTiming(1);\n }\n },\n onStart: () => {\n cancelAnimation(translateY);\n offsetY.value = translateY.value;\n },\n });\n\n const panStyle = useAnimatedStyle<ViewStyle>(() => ({\n transform: [\n {\n translateY: translateY.value,\n },\n {\n scale: scale.value,\n },\n ],\n }));\n\n const showScreenStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n translateY: interpolate(showScreen.value, [0, 1], [messageHeight.value / 2, 0]),\n },\n {\n translateX: interpolate(\n showScreen.value,\n [0, 1],\n [alignment === 'left' ? -messageWidth.value / 2 : messageWidth.value / 2, 0],\n ),\n },\n {\n scale: showScreen.value,\n },\n ],\n }),\n [alignment],\n );\n\n const groupStyle = `${alignment}_${(groupStyles?.[0] || 'bottom').toLowerCase()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n const { Attachment, FileAttachmentGroup, Gallery, MessageAvatar, Reply } = messagesContext || {};\n\n return (\n <MessagesProvider value={messagesContext}>\n <MessageProvider value={messageContext}>\n <ThemeProvider mergedStyle={wrapMessageInTheme ? modifiedTheme : theme}>\n <Animated.View\n pointerEvents={visible ? 'auto' : 'none'}\n style={[StyleSheet.absoluteFillObject, containerStyle]}\n >\n <PanGestureHandler\n enabled={overlay === 'message'}\n maxPointers={1}\n minDist={10}\n onGestureEvent={onPan}\n >\n <Animated.View style={[StyleSheet.absoluteFillObject]}>\n <SafeAreaView style={styles.flex}>\n <TapGestureHandler\n maxDist={32}\n onHandlerStateChange={({ nativeEvent: { state } }) => {\n if (state === State.END) {\n setOverlay('none');\n }\n }}\n >\n <Animated.View style={[styles.flex, panStyle]}>\n {message && (\n <View\n style={[\n styles.center,\n styles.overlayPadding,\n { padding: overlayPadding },\n alignment === 'left' ? styles.alignStart : styles.alignEnd,\n ]}\n >\n {handleReaction && ownCapabilities?.sendReaction ? (\n <OverlayReactionList\n messageLayout={messageLayout}\n ownReactionTypes={\n message?.own_reactions?.map((reaction) => reaction.type) || []\n }\n showScreen={showScreen}\n />\n ) : null}\n <Animated.View\n onLayout={({\n nativeEvent: {\n layout: { height: layoutHeight, width: layoutWidth, x, y },\n },\n }) => {\n messageLayout.value = {\n x: alignment === 'left' ? x + layoutWidth : x,\n y,\n };\n messageWidth.value = layoutWidth;\n messageHeight.value = layoutHeight;\n }}\n style={[styles.alignEnd, styles.row, showScreenStyle]}\n >\n {alignment === 'left' && MessageAvatar && (\n <MessageAvatar {...{ alignment, message, showAvatar: true }} />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor:\n onlyEmojis && !message.quoted_message\n ? transparent\n : otherAttachments?.length\n ? otherAttachments[0].type === 'giphy'\n ? !message.quoted_message\n ? transparent\n : grey_gainsboro\n : blue_alice\n : alignment === 'left'\n ? white_smoke\n : grey_gainsboro,\n borderBottomLeftRadius:\n (groupStyle === 'left_bottom' ||\n groupStyle === 'left_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderBottomRightRadius:\n (groupStyle === 'right_bottom' ||\n groupStyle === 'right_single') &&\n (!hasThreadReplies || threadList)\n ? borderRadiusS\n : borderRadiusL,\n borderColor: grey_whisper,\n },\n (onlyEmojis && !message.quoted_message) || otherAttachments?.length\n ? { borderWidth: 0 }\n : {},\n containerInner,\n ]}\n >\n {messagesContext?.messageContentOrder?.map(\n (messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message &&\n Reply && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply\n quotedMessage={\n message.quoted_message as ReplyProps<StreamChatGenerics>['quotedMessage']\n }\n styles={{\n messageContainer: {\n maxWidth: vw(60),\n },\n }}\n />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments?.map(\n (attachment, attachmentIndex) =>\n Attachment && (\n <Attachment\n attachment={attachment}\n key={`${message.id}-${attachmentIndex}`}\n />\n ),\n );\n case 'files':\n return (\n FileAttachmentGroup && (\n <FileAttachmentGroup\n files={files}\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n )\n );\n case 'gallery':\n return (\n Gallery && (\n <Gallery\n alignment={alignment}\n groupStyles={groupStyles}\n hasThreadReplies={!!message?.reply_count}\n images={images}\n key={`gallery_${messageContentOrderIndex}`}\n message={message}\n threadList={threadList}\n />\n )\n );\n case 'text':\n default:\n return otherAttachments?.length &&\n otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n message={message}\n messageOverlay\n messageTextNumberOfLines={messageTextNumberOfLines}\n onlyEmojis={onlyEmojis}\n />\n );\n }\n },\n )}\n </View>\n </Animated.View>\n {messageActions && (\n <MessageActionList\n MessageActionListItem={MessageActionListItem}\n showScreen={showScreen}\n {...messageActionProps}\n message={message}\n />\n )}\n {!!messageReactionTitle &&\n message.latest_reactions &&\n message.latest_reactions.length > 0 ? (\n <OverlayReactions\n alignment={alignment}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n reactions={\n message.latest_reactions.map((reaction) => ({\n alignment:\n clientId && clientId === reaction.user?.id ? 'right' : 'left',\n id: reaction?.user?.id || '',\n image: reaction?.user?.image,\n name: reaction?.user?.name || reaction.user_id || '',\n type: reaction.type,\n })) as Reaction[]\n }\n showScreen={showScreen}\n supportedReactions={messagesContext?.supportedReactions}\n title={messageReactionTitle}\n />\n ) : null}\n </View>\n )}\n </Animated.View>\n </TapGestureHandler>\n </SafeAreaView>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </ThemeProvider>\n </MessageProvider>\n </MessagesProvider>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n nextProps: MessageOverlayPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n alignment: prevAlignment,\n message: prevMessage,\n messageReactionTitle: prevMessageReactionTitle,\n visible: prevVisible,\n } = prevProps;\n const {\n alignment: nextAlignment,\n message: nextMessage,\n messageReactionTitle: nextMessageReactionTitle,\n visible: nextVisible,\n } = nextProps;\n\n const visibleEqual = prevVisible === nextVisible;\n if (!visibleEqual) return false;\n\n const alignmentEqual = prevAlignment === nextAlignment;\n if (!alignmentEqual) return false;\n\n const messageReactionTitleEqual = prevMessageReactionTitle === nextMessageReactionTitle;\n if (!messageReactionTitleEqual) 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 MemoizedMessageOverlay = React.memo(\n MessageOverlayWithContext,\n areEqual,\n) as typeof MessageOverlayWithContext;\n\nexport type MessageOverlayProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'>> &\n Pick<MessageOverlayPropsWithContext<StreamChatGenerics>, 'overlayOpacity'> &\n Pick<\n MessageOverlayPropsWithContext<StreamChatGenerics>,\n 'isMyMessage' | 'error' | 'isThreadMessage' | 'message' | 'messageReactions'\n >;\n\n/**\n * MessageOverlay - A high level component which implements all the logic required for a message overlay\n */\nexport const MessageOverlay = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageOverlayProps<StreamChatGenerics>,\n) => {\n const {\n data,\n MessageActionList,\n MessageActionListItem,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n reset,\n } = useMessageOverlayContext<StreamChatGenerics>();\n const { overlay, setOverlay } = useOverlayContext();\n\n const componentProps = {\n MessageActionList: props.MessageActionList || MessageActionList,\n MessageActionListItem: props.MessageActionListItem || MessageActionListItem,\n OverlayReactionList:\n props.OverlayReactionList || OverlayReactionList || data?.OverlayReactionList,\n OverlayReactions: props.OverlayReactions || OverlayReactions,\n OverlayReactionsAvatar: props.OverlayReactionsAvatar || OverlayReactionsAvatar,\n };\n\n return (\n <MemoizedMessageOverlay\n {...{\n overlay,\n reset,\n setOverlay,\n }}\n {...componentProps}\n {...(data || {})}\n {...props}\n />\n );\n};\n"]}