@planningcenter/chat-react-native 4.4.1-qa-staging.26 → 4.4.1-qa-staging.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/build/components/conversations/conversations.d.ts.map +1 -1
  2. package/build/components/conversations/conversations.js +3 -2
  3. package/build/components/conversations/conversations.js.map +1 -1
  4. package/build/components/display/filter_dropdown.d.ts.map +1 -1
  5. package/build/components/display/filter_dropdown.js +3 -1
  6. package/build/components/display/filter_dropdown.js.map +1 -1
  7. package/build/components/display/index.d.ts +1 -0
  8. package/build/components/display/index.d.ts.map +1 -1
  9. package/build/components/display/index.js +1 -0
  10. package/build/components/display/index.js.map +1 -1
  11. package/build/components/display/popover_menu_view.d.ts +8 -0
  12. package/build/components/display/popover_menu_view.d.ts.map +1 -0
  13. package/build/components/display/popover_menu_view.js +482 -0
  14. package/build/components/display/popover_menu_view.js.map +1 -0
  15. package/build/contexts/conversations_context.d.ts.map +1 -1
  16. package/build/contexts/conversations_context.js +20 -17
  17. package/build/contexts/conversations_context.js.map +1 -1
  18. package/build/hooks/use_clear_conversation_filters.d.ts.map +1 -1
  19. package/build/hooks/use_clear_conversation_filters.js +2 -1
  20. package/build/hooks/use_clear_conversation_filters.js.map +1 -1
  21. package/build/hooks/use_conversations_cache.d.ts +1 -1
  22. package/build/hooks/use_conversations_cache.d.ts.map +1 -1
  23. package/build/hooks/use_conversations_cache.js +64 -55
  24. package/build/hooks/use_conversations_cache.js.map +1 -1
  25. package/build/hooks/use_conversations_jolt_events.js +2 -2
  26. package/build/hooks/use_conversations_jolt_events.js.map +1 -1
  27. package/build/hooks/use_jolt.d.ts.map +1 -1
  28. package/build/hooks/use_jolt.js +37 -9
  29. package/build/hooks/use_jolt.js.map +1 -1
  30. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
  31. package/build/screens/conversation_filters/context/conversation_filter_context.js +8 -4
  32. package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
  33. package/build/screens/conversation_filters/screen_props.d.ts +1 -0
  34. package/build/screens/conversation_filters/screen_props.d.ts.map +1 -1
  35. package/build/screens/conversation_filters/screen_props.js.map +1 -1
  36. package/build/screens/conversations/components/filter_dropdown_list_header_component.d.ts.map +1 -1
  37. package/build/screens/conversations/components/filter_dropdown_list_header_component.js +199 -206
  38. package/build/screens/conversations/components/filter_dropdown_list_header_component.js.map +1 -1
  39. package/build/screens/conversations/conversations_screen.d.ts +1 -0
  40. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  41. package/build/screens/conversations/conversations_screen.js +1 -2
  42. package/build/screens/conversations/conversations_screen.js.map +1 -1
  43. package/build/screens/design_system_screen.d.ts.map +1 -1
  44. package/build/screens/design_system_screen.js +289 -201
  45. package/build/screens/design_system_screen.js.map +1 -1
  46. package/build/utils/native_adapters/menu.d.ts +1 -2
  47. package/build/utils/native_adapters/menu.d.ts.map +1 -1
  48. package/build/utils/native_adapters/menu.js +2 -41
  49. package/build/utils/native_adapters/menu.js.map +1 -1
  50. package/build/utils/request/conversation.d.ts +2 -1
  51. package/build/utils/request/conversation.d.ts.map +1 -1
  52. package/build/utils/request/conversation.js +4 -1
  53. package/build/utils/request/conversation.js.map +1 -1
  54. package/package.json +3 -3
  55. package/src/components/conversations/__tests__/conversations_blank_state.test.tsx +1 -0
  56. package/src/components/conversations/conversations.tsx +12 -2
  57. package/src/components/display/__tests__/filter_dropdown.test.tsx +18 -2
  58. package/src/components/display/__tests__/popover_menu_view.test.tsx +63 -0
  59. package/src/components/display/filter_dropdown.tsx +4 -2
  60. package/src/components/display/index.ts +1 -0
  61. package/src/components/display/popover_menu_view.tsx +239 -0
  62. package/src/contexts/conversations_context.tsx +8 -1
  63. package/src/hooks/__tests__/use_conversations_jolt_events.test.tsx +135 -0
  64. package/src/hooks/__tests__/use_jolt.test.tsx +76 -1
  65. package/src/hooks/use_clear_conversation_filters.ts +1 -0
  66. package/src/hooks/use_conversations_cache.ts +29 -24
  67. package/src/hooks/use_conversations_jolt_events.ts +2 -2
  68. package/src/hooks/use_jolt.ts +26 -2
  69. package/src/screens/conversation_filters/context/conversation_filter_context.tsx +4 -0
  70. package/src/screens/conversation_filters/screen_props.ts +1 -0
  71. package/src/screens/conversations/__tests__/conversations_screen.test.tsx +2 -12
  72. package/src/screens/conversations/components/__tests__/filter_dropdown_list_header_component.test.tsx +57 -38
  73. package/src/screens/conversations/components/filter_dropdown_list_header_component.tsx +25 -27
  74. package/src/screens/conversations/conversations_screen.tsx +2 -2
  75. package/src/screens/design_system_screen.tsx +34 -1
  76. package/src/utils/__tests__/conversation.test.ts +1 -0
  77. package/src/utils/native_adapters/menu.tsx +4 -18
  78. package/src/utils/request/conversation.ts +4 -0
  79. package/src/utils/native_adapters/__tests__/menu.test.tsx +0 -46
@@ -0,0 +1,482 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { clamp } from 'lodash';
3
+ import React, { useRef, useState } from 'react';
4
+ import { Modal, Pressable, ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native';
5
+ import { useChatContext } from '../../contexts/chat_context';
6
+ import { useCreateAndroidRippleColor, useFontScale, useTheme } from '../../hooks';
7
+ import { platformPressedOpacityStyle } from '../../utils';
8
+ import { tokens } from '../../vendor/tapestry/tokens';
9
+ import { Icon } from './icon';
10
+ import { Text } from './text';
11
+
12
+ // =================================
13
+ // ====== Constants ================
14
+ // =================================
15
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
16
+ const MENU_WIDTH = 240;
17
+ const MENU_OFFSET = 4;
18
+ const SCREEN_MARGIN = 16;
19
+ const CLOSED_ANCHOR = {
20
+ x: 0,
21
+ y: 0,
22
+ width: 0,
23
+ height: 0
24
+ };
25
+
26
+ // =================================
27
+ // ====== Rows =====================
28
+ // =================================
29
+
30
+ const actionId = action => action.id ?? action.title;
31
+ const visibleActions = actions => actions.filter(action => !action.attributes?.hidden);
32
+
33
+ // Lays the actions out the way the native menus draw them: an inline section's
34
+ // subactions sit at the top level, divided from neighboring rows by a separator.
35
+ const buildRows = actions => {
36
+ const rows = [];
37
+ const pushSeparator = () => {
38
+ if (rows.length > 0 && rows[rows.length - 1].kind !== 'separator') {
39
+ rows.push({
40
+ kind: 'separator'
41
+ });
42
+ }
43
+ };
44
+ visibleActions(actions).forEach((action, index, visible) => {
45
+ if (action.displayInline && action.subactions) {
46
+ pushSeparator();
47
+ visibleActions(action.subactions).forEach(subaction => rows.push({
48
+ kind: 'action',
49
+ action: subaction
50
+ }));
51
+ if (index < visible.length - 1) pushSeparator();
52
+ } else {
53
+ rows.push({
54
+ kind: 'action',
55
+ action
56
+ });
57
+ }
58
+ });
59
+ return rows;
60
+ };
61
+
62
+ // =================================
63
+ // ====== Component ================
64
+ // =================================
65
+
66
+ /**
67
+ * A JS-only `MenuView` for hosts that cannot supply a native menu. Wraps the
68
+ * trigger in a pressable and opens a popover of the actions under it, or above
69
+ * it when the trigger sits in the lower half of the window.
70
+ */
71
+ export function PopoverMenuView(t0) {
72
+ const $ = _c(51);
73
+ const {
74
+ actions,
75
+ onPressAction,
76
+ onOpenMenu,
77
+ onCloseMenu,
78
+ style,
79
+ testID,
80
+ children
81
+ } = t0;
82
+ const triggerRef = useRef(null);
83
+ const [expanded, setExpanded] = useState(false);
84
+ const [anchor, setAnchor] = useState(CLOSED_ANCHOR);
85
+ const {
86
+ edgeToEdge: t1
87
+ } = useChatContext();
88
+ const edgeToEdge = t1 === undefined ? true : t1;
89
+ const {
90
+ width: windowWidth,
91
+ height: windowHeight
92
+ } = useWindowDimensions();
93
+ const fontScale = useFontScale();
94
+ const styles = useStyles();
95
+ let t2;
96
+ if ($[0] !== onOpenMenu) {
97
+ t2 = () => {
98
+ triggerRef.current?.measureInWindow((x, y, width, height) => {
99
+ setAnchor({
100
+ x,
101
+ y,
102
+ width,
103
+ height
104
+ });
105
+ });
106
+ setExpanded(true);
107
+ onOpenMenu?.();
108
+ };
109
+ $[0] = onOpenMenu;
110
+ $[1] = t2;
111
+ } else {
112
+ t2 = $[1];
113
+ }
114
+ const open = t2;
115
+ let t3;
116
+ if ($[2] !== onCloseMenu) {
117
+ t3 = () => {
118
+ setExpanded(false);
119
+ onCloseMenu?.();
120
+ };
121
+ $[2] = onCloseMenu;
122
+ $[3] = t3;
123
+ } else {
124
+ t3 = $[3];
125
+ }
126
+ const close = t3;
127
+ let t4;
128
+ if ($[4] !== close || $[5] !== onPressAction) {
129
+ t4 = action => {
130
+ onPressAction?.({
131
+ nativeEvent: {
132
+ event: actionId(action)
133
+ }
134
+ });
135
+ close();
136
+ };
137
+ $[4] = close;
138
+ $[5] = onPressAction;
139
+ $[6] = t4;
140
+ } else {
141
+ t4 = $[6];
142
+ }
143
+ const handlePress = t4;
144
+ const menuWidth = clamp(MENU_WIDTH * fontScale, MENU_WIDTH, windowWidth - SCREEN_MARGIN * 2);
145
+ const anchorBottom = anchor.y + anchor.height;
146
+ const opensUpward = anchor.y + anchor.height / 2 > windowHeight / 2;
147
+ const t5 = anchor.x;
148
+ const t6 = Math.max(SCREEN_MARGIN, windowWidth - menuWidth - SCREEN_MARGIN);
149
+ let t7;
150
+ if ($[7] !== anchor.x || $[8] !== t6) {
151
+ t7 = clamp(t5, SCREEN_MARGIN, t6);
152
+ $[7] = anchor.x;
153
+ $[8] = t6;
154
+ $[9] = t7;
155
+ } else {
156
+ t7 = $[9];
157
+ }
158
+ let t8;
159
+ if ($[10] !== anchor.y || $[11] !== anchorBottom || $[12] !== opensUpward || $[13] !== windowHeight) {
160
+ t8 = opensUpward ? {
161
+ bottom: windowHeight - anchor.y + MENU_OFFSET,
162
+ maxHeight: anchor.y - MENU_OFFSET - SCREEN_MARGIN
163
+ } : {
164
+ top: anchorBottom + MENU_OFFSET,
165
+ maxHeight: windowHeight - anchorBottom - MENU_OFFSET - SCREEN_MARGIN
166
+ };
167
+ $[10] = anchor.y;
168
+ $[11] = anchorBottom;
169
+ $[12] = opensUpward;
170
+ $[13] = windowHeight;
171
+ $[14] = t8;
172
+ } else {
173
+ t8 = $[14];
174
+ }
175
+ let t9;
176
+ if ($[15] !== menuWidth || $[16] !== t7 || $[17] !== t8) {
177
+ t9 = {
178
+ width: menuWidth,
179
+ left: t7,
180
+ ...t8
181
+ };
182
+ $[15] = menuWidth;
183
+ $[16] = t7;
184
+ $[17] = t8;
185
+ $[18] = t9;
186
+ } else {
187
+ t9 = $[18];
188
+ }
189
+ const menuPosition = t9;
190
+ let t10;
191
+ if ($[19] !== children || $[20] !== open || $[21] !== style || $[22] !== testID) {
192
+ t10 = /*#__PURE__*/_jsx(Pressable, {
193
+ ref: triggerRef,
194
+ style: style,
195
+ testID: testID,
196
+ onPress: open,
197
+ accessible: false,
198
+ children: children
199
+ });
200
+ $[19] = children;
201
+ $[20] = open;
202
+ $[21] = style;
203
+ $[22] = testID;
204
+ $[23] = t10;
205
+ } else {
206
+ t10 = $[23];
207
+ }
208
+ let t11;
209
+ if ($[24] !== close || $[25] !== styles.scrim) {
210
+ t11 = /*#__PURE__*/_jsx(Pressable, {
211
+ style: styles.scrim,
212
+ onPress: close,
213
+ accessibilityRole: "button",
214
+ accessibilityLabel: "Close menu"
215
+ });
216
+ $[24] = close;
217
+ $[25] = styles.scrim;
218
+ $[26] = t11;
219
+ } else {
220
+ t11 = $[26];
221
+ }
222
+ let t12;
223
+ if ($[27] !== menuPosition || $[28] !== styles.menu) {
224
+ t12 = [styles.menu, menuPosition];
225
+ $[27] = menuPosition;
226
+ $[28] = styles.menu;
227
+ $[29] = t12;
228
+ } else {
229
+ t12 = $[29];
230
+ }
231
+ let t13;
232
+ if ($[30] !== actions || $[31] !== handlePress || $[32] !== styles.separator) {
233
+ let t14;
234
+ if ($[34] !== handlePress || $[35] !== styles.separator) {
235
+ t14 = (row, index) => row.kind === "separator" ? /*#__PURE__*/_jsx(View, {
236
+ style: styles.separator
237
+ }, index) : /*#__PURE__*/_jsx(PopoverMenuItem, {
238
+ action: row.action,
239
+ onPress: () => handlePress(row.action)
240
+ }, index);
241
+ $[34] = handlePress;
242
+ $[35] = styles.separator;
243
+ $[36] = t14;
244
+ } else {
245
+ t14 = $[36];
246
+ }
247
+ t13 = buildRows(actions).map(t14);
248
+ $[30] = actions;
249
+ $[31] = handlePress;
250
+ $[32] = styles.separator;
251
+ $[33] = t13;
252
+ } else {
253
+ t13 = $[33];
254
+ }
255
+ let t14;
256
+ if ($[37] !== t13) {
257
+ t14 = /*#__PURE__*/_jsx(ScrollView, {
258
+ bounces: false,
259
+ children: t13
260
+ });
261
+ $[37] = t13;
262
+ $[38] = t14;
263
+ } else {
264
+ t14 = $[38];
265
+ }
266
+ let t15;
267
+ if ($[39] !== t12 || $[40] !== t14) {
268
+ t15 = /*#__PURE__*/_jsx(View, {
269
+ style: t12,
270
+ accessibilityRole: "menu",
271
+ children: t14
272
+ });
273
+ $[39] = t12;
274
+ $[40] = t14;
275
+ $[41] = t15;
276
+ } else {
277
+ t15 = $[41];
278
+ }
279
+ let t16;
280
+ if ($[42] !== close || $[43] !== edgeToEdge || $[44] !== expanded || $[45] !== t11 || $[46] !== t15) {
281
+ t16 = /*#__PURE__*/_jsxs(Modal, {
282
+ visible: expanded,
283
+ transparent: true,
284
+ animationType: "fade",
285
+ statusBarTranslucent: edgeToEdge,
286
+ navigationBarTranslucent: edgeToEdge,
287
+ onRequestClose: close,
288
+ children: [t11, t15]
289
+ });
290
+ $[42] = close;
291
+ $[43] = edgeToEdge;
292
+ $[44] = expanded;
293
+ $[45] = t11;
294
+ $[46] = t15;
295
+ $[47] = t16;
296
+ } else {
297
+ t16 = $[47];
298
+ }
299
+ let t17;
300
+ if ($[48] !== t10 || $[49] !== t16) {
301
+ t17 = /*#__PURE__*/_jsxs(_Fragment, {
302
+ children: [t10, t16]
303
+ });
304
+ $[48] = t10;
305
+ $[49] = t16;
306
+ $[50] = t17;
307
+ } else {
308
+ t17 = $[50];
309
+ }
310
+ return t17;
311
+ }
312
+ function PopoverMenuItem(t0) {
313
+ const $ = _c(25);
314
+ const {
315
+ action,
316
+ onPress
317
+ } = t0;
318
+ const styles = useStyles();
319
+ const {
320
+ colors
321
+ } = useTheme();
322
+ let t1;
323
+ if ($[0] !== colors.fillColorNeutral050Base) {
324
+ t1 = {
325
+ color: colors.fillColorNeutral050Base
326
+ };
327
+ $[0] = colors.fillColorNeutral050Base;
328
+ $[1] = t1;
329
+ } else {
330
+ t1 = $[1];
331
+ }
332
+ const androidRippleColor = useCreateAndroidRippleColor(t1);
333
+ const selected = action.state === "on";
334
+ const disabled = action.attributes?.disabled === true;
335
+ let t2;
336
+ if ($[2] !== disabled || $[3] !== styles.item || $[4] !== styles.itemDisabled) {
337
+ t2 = t3 => {
338
+ const {
339
+ pressed
340
+ } = t3;
341
+ return [styles.item, pressed && platformPressedOpacityStyle, disabled && styles.itemDisabled];
342
+ };
343
+ $[2] = disabled;
344
+ $[3] = styles.item;
345
+ $[4] = styles.itemDisabled;
346
+ $[5] = t2;
347
+ } else {
348
+ t2 = $[5];
349
+ }
350
+ let t3;
351
+ if ($[6] !== disabled || $[7] !== selected) {
352
+ t3 = {
353
+ selected,
354
+ disabled
355
+ };
356
+ $[6] = disabled;
357
+ $[7] = selected;
358
+ $[8] = t3;
359
+ } else {
360
+ t3 = $[8];
361
+ }
362
+ let t4;
363
+ if ($[9] !== androidRippleColor) {
364
+ t4 = {
365
+ color: androidRippleColor,
366
+ borderless: false,
367
+ foreground: true
368
+ };
369
+ $[9] = androidRippleColor;
370
+ $[10] = t4;
371
+ } else {
372
+ t4 = $[10];
373
+ }
374
+ let t5;
375
+ if ($[11] !== action.title || $[12] !== styles.itemLabel) {
376
+ t5 = /*#__PURE__*/_jsx(Text, {
377
+ style: styles.itemLabel,
378
+ children: action.title
379
+ });
380
+ $[11] = action.title;
381
+ $[12] = styles.itemLabel;
382
+ $[13] = t5;
383
+ } else {
384
+ t5 = $[13];
385
+ }
386
+ let t6;
387
+ if ($[14] !== selected || $[15] !== styles.itemCheck) {
388
+ t6 = selected && /*#__PURE__*/_jsx(Icon, {
389
+ name: "general.check",
390
+ style: styles.itemCheck,
391
+ accessibilityElementsHidden: true
392
+ });
393
+ $[14] = selected;
394
+ $[15] = styles.itemCheck;
395
+ $[16] = t6;
396
+ } else {
397
+ t6 = $[16];
398
+ }
399
+ let t7;
400
+ if ($[17] !== disabled || $[18] !== onPress || $[19] !== t2 || $[20] !== t3 || $[21] !== t4 || $[22] !== t5 || $[23] !== t6) {
401
+ t7 = /*#__PURE__*/_jsxs(Pressable, {
402
+ style: t2,
403
+ onPress: onPress,
404
+ disabled: disabled,
405
+ accessibilityRole: "menuitem",
406
+ accessibilityState: t3,
407
+ android_ripple: t4,
408
+ children: [t5, t6]
409
+ });
410
+ $[17] = disabled;
411
+ $[18] = onPress;
412
+ $[19] = t2;
413
+ $[20] = t3;
414
+ $[21] = t4;
415
+ $[22] = t5;
416
+ $[23] = t6;
417
+ $[24] = t7;
418
+ } else {
419
+ t7 = $[24];
420
+ }
421
+ return t7;
422
+ }
423
+
424
+ // =================================
425
+ // ====== Styles ===================
426
+ // =================================
427
+
428
+ const useStyles = () => {
429
+ const $ = _c(4);
430
+ const {
431
+ colors
432
+ } = useTheme();
433
+ let t0;
434
+ if ($[0] !== colors.fillColorNeutral050Base || $[1] !== colors.fillColorNeutral100Inverted || $[2] !== colors.interaction) {
435
+ t0 = StyleSheet.create({
436
+ scrim: {
437
+ ...StyleSheet.absoluteFill
438
+ },
439
+ menu: {
440
+ position: "absolute",
441
+ paddingVertical: 4,
442
+ borderRadius: 8,
443
+ borderWidth: StyleSheet.hairlineWidth,
444
+ borderColor: colors.fillColorNeutral050Base,
445
+ backgroundColor: colors.fillColorNeutral100Inverted,
446
+ boxShadow: "0px 4px 12px rgba(0, 0, 0, 0.15)",
447
+ elevation: 4,
448
+ overflow: "hidden"
449
+ },
450
+ item: {
451
+ flexDirection: "row",
452
+ alignItems: "center",
453
+ gap: 12,
454
+ paddingHorizontal: 16,
455
+ paddingVertical: 12
456
+ },
457
+ itemDisabled: {
458
+ opacity: 0.4
459
+ },
460
+ itemLabel: {
461
+ flex: 1
462
+ },
463
+ itemCheck: {
464
+ fontSize: tokens.fontSizeSm,
465
+ color: colors.interaction
466
+ },
467
+ separator: {
468
+ height: StyleSheet.hairlineWidth,
469
+ marginVertical: 4,
470
+ backgroundColor: colors.fillColorNeutral050Base
471
+ }
472
+ });
473
+ $[0] = colors.fillColorNeutral050Base;
474
+ $[1] = colors.fillColorNeutral100Inverted;
475
+ $[2] = colors.interaction;
476
+ $[3] = t0;
477
+ } else {
478
+ t0 = $[3];
479
+ }
480
+ return t0;
481
+ };
482
+ //# sourceMappingURL=popover_menu_view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover_menu_view.js","names":["clamp","React","useRef","useState","Modal","Pressable","ScrollView","StyleSheet","useWindowDimensions","View","useChatContext","useCreateAndroidRippleColor","useFontScale","useTheme","platformPressedOpacityStyle","tokens","Icon","Text","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MENU_WIDTH","MENU_OFFSET","SCREEN_MARGIN","CLOSED_ANCHOR","x","y","width","height","actionId","action","id","title","visibleActions","actions","filter","attributes","hidden","buildRows","rows","pushSeparator","length","kind","push","forEach","index","visible","displayInline","subactions","subaction","PopoverMenuView","t0","$","_c","onPressAction","onOpenMenu","onCloseMenu","style","testID","children","triggerRef","expanded","setExpanded","anchor","setAnchor","edgeToEdge","t1","undefined","windowWidth","windowHeight","fontScale","styles","useStyles","t2","current","measureInWindow","open","t3","close","t4","nativeEvent","event","handlePress","menuWidth","anchorBottom","opensUpward","t5","t6","Math","max","t7","t8","bottom","maxHeight","top","t9","left","menuPosition","t10","accessible","t11","scrim","accessibilityRole","accessibilityLabel","t12","menu","t13","separator","t14","row","PopoverMenuItem","onPress","map","bounces","t15","t16","transparent","animationType","t17","colors","fillColorNeutral050Base","color","androidRippleColor","selected","state","disabled","item","itemDisabled","pressed","borderless","foreground","itemLabel","itemCheck","name","accessibilityElementsHidden","accessibilityState","android_ripple","fillColorNeutral100Inverted","interaction","create","absoluteFill","position","paddingVertical","borderRadius","borderWidth","hairlineWidth","borderColor","backgroundColor","boxShadow","elevation","overflow","flexDirection","alignItems","gap","paddingHorizontal","opacity","flex","fontSize","fontSizeSm","marginVertical"],"sources":["../../../src/components/display/popover_menu_view.tsx"],"sourcesContent":["import { clamp } from 'lodash'\nimport React, { useRef, useState } from 'react'\nimport { Modal, Pressable, ScrollView, StyleSheet, useWindowDimensions, View } from 'react-native'\nimport { useChatContext } from '../../contexts/chat_context'\nimport { useCreateAndroidRippleColor, useFontScale, useTheme } from '../../hooks'\nimport { MenuAction, MenuViewProps, platformPressedOpacityStyle } from '../../utils'\nimport { tokens } from '../../vendor/tapestry/tokens'\nimport { Icon } from './icon'\nimport { Text } from './text'\n\n// =================================\n// ====== Constants ================\n// =================================\n\nconst MENU_WIDTH = 240\nconst MENU_OFFSET = 4\nconst SCREEN_MARGIN = 16\n\nconst CLOSED_ANCHOR = { x: 0, y: 0, width: 0, height: 0 }\n\n// =================================\n// ====== Rows =====================\n// =================================\n\ntype Row = { kind: 'action'; action: MenuAction } | { kind: 'separator' }\n\nconst actionId = (action: MenuAction) => action.id ?? action.title\n\nconst visibleActions = (actions: MenuAction[]) =>\n actions.filter(action => !action.attributes?.hidden)\n\n// Lays the actions out the way the native menus draw them: an inline section's\n// subactions sit at the top level, divided from neighboring rows by a separator.\nconst buildRows = (actions: MenuAction[]): Row[] => {\n const rows: Row[] = []\n const pushSeparator = () => {\n if (rows.length > 0 && rows[rows.length - 1].kind !== 'separator') {\n rows.push({ kind: 'separator' })\n }\n }\n\n visibleActions(actions).forEach((action, index, visible) => {\n if (action.displayInline && action.subactions) {\n pushSeparator()\n visibleActions(action.subactions).forEach(subaction =>\n rows.push({ kind: 'action', action: subaction })\n )\n if (index < visible.length - 1) pushSeparator()\n } else {\n rows.push({ kind: 'action', action })\n }\n })\n\n return rows\n}\n\n// =================================\n// ====== Component ================\n// =================================\n\n/**\n * A JS-only `MenuView` for hosts that cannot supply a native menu. Wraps the\n * trigger in a pressable and opens a popover of the actions under it, or above\n * it when the trigger sits in the lower half of the window.\n */\nexport function PopoverMenuView({\n actions,\n onPressAction,\n onOpenMenu,\n onCloseMenu,\n style,\n testID,\n children,\n}: MenuViewProps) {\n const triggerRef = useRef<View>(null)\n const [expanded, setExpanded] = useState(false)\n const [anchor, setAnchor] = useState(CLOSED_ANCHOR)\n const { edgeToEdge = true } = useChatContext()\n const { width: windowWidth, height: windowHeight } = useWindowDimensions()\n const fontScale = useFontScale()\n const styles = useStyles()\n\n const open = () => {\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setAnchor({ x, y, width, height })\n })\n setExpanded(true)\n onOpenMenu?.()\n }\n\n const close = () => {\n setExpanded(false)\n onCloseMenu?.()\n }\n\n const handlePress = (action: MenuAction) => {\n onPressAction?.({ nativeEvent: { event: actionId(action) } })\n close()\n }\n\n const menuWidth = clamp(MENU_WIDTH * fontScale, MENU_WIDTH, windowWidth - SCREEN_MARGIN * 2)\n const anchorBottom = anchor.y + anchor.height\n const opensUpward = anchor.y + anchor.height / 2 > windowHeight / 2\n const menuPosition = {\n width: menuWidth,\n left: clamp(\n anchor.x,\n SCREEN_MARGIN,\n Math.max(SCREEN_MARGIN, windowWidth - menuWidth - SCREEN_MARGIN)\n ),\n ...(opensUpward\n ? {\n bottom: windowHeight - anchor.y + MENU_OFFSET,\n maxHeight: anchor.y - MENU_OFFSET - SCREEN_MARGIN,\n }\n : {\n top: anchorBottom + MENU_OFFSET,\n maxHeight: windowHeight - anchorBottom - MENU_OFFSET - SCREEN_MARGIN,\n }),\n }\n\n return (\n <>\n <Pressable ref={triggerRef} style={style} testID={testID} onPress={open} accessible={false}>\n {children}\n </Pressable>\n <Modal\n visible={expanded}\n transparent\n animationType=\"fade\"\n statusBarTranslucent={edgeToEdge}\n navigationBarTranslucent={edgeToEdge}\n onRequestClose={close}\n >\n <Pressable\n style={styles.scrim}\n onPress={close}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Close menu\"\n />\n <View style={[styles.menu, menuPosition]} accessibilityRole=\"menu\">\n <ScrollView bounces={false}>\n {buildRows(actions).map((row, index) =>\n row.kind === 'separator' ? (\n <View key={index} style={styles.separator} />\n ) : (\n <PopoverMenuItem\n key={index}\n action={row.action}\n onPress={() => handlePress(row.action)}\n />\n )\n )}\n </ScrollView>\n </View>\n </Modal>\n </>\n )\n}\n\ninterface PopoverMenuItemProps {\n action: MenuAction\n onPress: () => void\n}\n\nfunction PopoverMenuItem({ action, onPress }: PopoverMenuItemProps) {\n const styles = useStyles()\n const { colors } = useTheme()\n const androidRippleColor = useCreateAndroidRippleColor({ color: colors.fillColorNeutral050Base })\n const selected = action.state === 'on'\n const disabled = action.attributes?.disabled === true\n\n return (\n <Pressable\n style={({ pressed }) => [\n styles.item,\n pressed && platformPressedOpacityStyle,\n disabled && styles.itemDisabled,\n ]}\n onPress={onPress}\n disabled={disabled}\n accessibilityRole=\"menuitem\"\n accessibilityState={{ selected, disabled }}\n android_ripple={{ color: androidRippleColor, borderless: false, foreground: true }}\n >\n <Text style={styles.itemLabel}>{action.title}</Text>\n {selected && (\n <Icon name=\"general.check\" style={styles.itemCheck} accessibilityElementsHidden />\n )}\n </Pressable>\n )\n}\n\n// =================================\n// ====== Styles ===================\n// =================================\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n scrim: {\n ...StyleSheet.absoluteFill,\n },\n menu: {\n position: 'absolute',\n paddingVertical: 4,\n borderRadius: 8,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: colors.fillColorNeutral050Base,\n backgroundColor: colors.fillColorNeutral100Inverted,\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15)',\n elevation: 4,\n overflow: 'hidden',\n },\n item: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 12,\n paddingHorizontal: 16,\n paddingVertical: 12,\n },\n itemDisabled: {\n opacity: 0.4,\n },\n itemLabel: {\n flex: 1,\n },\n itemCheck: {\n fontSize: tokens.fontSizeSm,\n color: colors.interaction,\n },\n separator: {\n height: StyleSheet.hairlineWidth,\n marginVertical: 4,\n backgroundColor: colors.fillColorNeutral050Base,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"conversations_context.d.ts","sourceRoot":"","sources":["../../src/contexts/conversations_context.tsx"],"names":[],"mappings":"AAKA,OAAc,EAAiB,iBAAiB,EAAiC,MAAM,OAAO,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAoB,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AAIxF,UAAU,yBAA0B,SAAQ,qBAAqB;IAC/D,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAsBD,eAAO,MAAM,4BAA4B,GAAI,6CAI1C,iBAAiB,CAAC;IACnB,IAAI,EAAE,yBAAyB,CAAA;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B,CAAC,4CAyBD,CAAA;AAaD,eAAO,MAAM,uBAAuB,iCAAyC,CAAA"}
1
+ {"version":3,"file":"conversations_context.d.ts","sourceRoot":"","sources":["../../src/contexts/conversations_context.tsx"],"names":[],"mappings":"AAKA,OAAc,EAAiB,iBAAiB,EAAiC,MAAM,OAAO,CAAA;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAoB,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AAIxF,UAAU,yBAA0B,SAAQ,qBAAqB;IAC/D,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAsBD,eAAO,MAAM,4BAA4B,GAAI,6CAI1C,iBAAiB,CAAC;IACnB,IAAI,EAAE,yBAAyB,CAAA;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B,CAAC,4CAgCD,CAAA;AAaD,eAAO,MAAM,uBAAuB,iCAAyC,CAAA"}
@@ -21,7 +21,7 @@ const ConversationsContext = createContext({
21
21
  ...defaultQueryValue
22
22
  });
23
23
  export const ConversationsContextProvider = t0 => {
24
- const $ = _c(14);
24
+ const $ = _c(15);
25
25
  const {
26
26
  children,
27
27
  args: t1,
@@ -41,52 +41,55 @@ export const ConversationsContextProvider = t0 => {
41
41
  chat_group_graph_id,
42
42
  group_source_app_name,
43
43
  show_direct_messages,
44
- show_archived
44
+ show_archived,
45
+ show_unread
45
46
  } = args;
46
47
  let t3;
47
- if ($[2] !== chat_group_graph_id || $[3] !== group_source_app_name || $[4] !== show_archived || $[5] !== show_direct_messages) {
48
+ if ($[2] !== chat_group_graph_id || $[3] !== group_source_app_name || $[4] !== show_archived || $[5] !== show_direct_messages || $[6] !== show_unread) {
48
49
  t3 = {
49
50
  chat_group_graph_id,
50
51
  group_source_app_name,
51
52
  show_direct_messages,
52
- show_archived
53
+ show_archived,
54
+ show_unread
53
55
  };
54
56
  $[2] = chat_group_graph_id;
55
57
  $[3] = group_source_app_name;
56
58
  $[4] = show_archived;
57
59
  $[5] = show_direct_messages;
58
- $[6] = t3;
60
+ $[6] = show_unread;
61
+ $[7] = t3;
59
62
  } else {
60
- t3 = $[6];
63
+ t3 = $[7];
61
64
  }
62
65
  const query = useConversations(t3, paginatorOptions);
63
66
  let t4;
64
- if ($[7] !== activeConversationId || $[8] !== args || $[9] !== query) {
67
+ if ($[8] !== activeConversationId || $[9] !== args || $[10] !== query) {
65
68
  t4 = {
66
69
  args,
67
70
  activeConversationId,
68
71
  setActiveConversationId,
69
72
  ...query
70
73
  };
71
- $[7] = activeConversationId;
72
- $[8] = args;
73
- $[9] = query;
74
- $[10] = t4;
74
+ $[8] = activeConversationId;
75
+ $[9] = args;
76
+ $[10] = query;
77
+ $[11] = t4;
75
78
  } else {
76
- t4 = $[10];
79
+ t4 = $[11];
77
80
  }
78
81
  const value = t4;
79
82
  let t5;
80
- if ($[11] !== children || $[12] !== value) {
83
+ if ($[12] !== children || $[13] !== value) {
81
84
  t5 = /*#__PURE__*/_jsx(ConversationsContext.Provider, {
82
85
  value: value,
83
86
  children: children
84
87
  });
85
- $[11] = children;
86
- $[12] = value;
87
- $[13] = t5;
88
+ $[12] = children;
89
+ $[13] = value;
90
+ $[14] = t5;
88
91
  } else {
89
- t5 = $[13];
92
+ t5 = $[14];
90
93
  }
91
94
  return t5;
92
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"conversations_context.js","names":["React","createContext","useContext","useMemo","useState","useConversations","jsx","_jsx","defaultQueryValue","conversations","refetch","Promise","resolve","error","isError","isLoading","fetchNextPage","hasNextPage","isFetching","isFetched","isRefetching","ConversationsContext","args","activeConversationId","undefined","setActiveConversationId","ConversationsContextProvider","t0","$","_c","children","t1","opts","paginatorOptions","t2","chat_group_graph_id","group_source_app_name","show_direct_messages","show_archived","t3","query","t4","value","t5","Provider","_options","Error","useConversationsContext"],"sources":["../../src/contexts/conversations_context.tsx"],"sourcesContent":["import {\n FetchNextPageOptions,\n InfiniteQueryObserverResult,\n InfiniteData,\n} from '@tanstack/react-query'\nimport React, { createContext, PropsWithChildren, useContext, useMemo, useState } from 'react'\nimport { ApiGetQueryOptions } from '../hooks'\nimport { useConversations, UseConversationsValue } from '../hooks/use_conversations'\nimport { ConversationFiltersParams } from '../screens/conversation_filters/screen_props'\nimport { ApiCollection, ConversationResource } from '../types'\nimport { ResponseError } from '../utils/response_error'\n\ninterface ConversationsContextValue extends UseConversationsValue {\n activeConversationId?: number\n setActiveConversationId: (_id: number) => void\n args: ConversationFiltersParams\n}\n\nconst defaultQueryValue: UseConversationsValue = {\n conversations: [],\n refetch: () => Promise.resolve(null),\n error: null,\n isError: false,\n isLoading: true,\n fetchNextPage,\n hasNextPage: false,\n isFetching: false,\n isFetched: false,\n isRefetching: false,\n}\n\nconst ConversationsContext = createContext<ConversationsContextValue>({\n args: {},\n activeConversationId: undefined,\n setActiveConversationId: () => {},\n ...defaultQueryValue,\n})\n\nexport const ConversationsContextProvider = ({\n children,\n args = {},\n opts: paginatorOptions,\n}: PropsWithChildren<{\n args: ConversationFiltersParams\n opts?: ApiGetQueryOptions\n}>) => {\n const [activeConversationId, setActiveConversationId] = useState<number | undefined>()\n const { chat_group_graph_id, group_source_app_name, show_direct_messages, show_archived } = args\n\n const query = useConversations(\n {\n chat_group_graph_id,\n group_source_app_name,\n show_direct_messages,\n show_archived,\n },\n paginatorOptions\n )\n\n const value = useMemo(\n () => ({\n args,\n activeConversationId,\n setActiveConversationId,\n ...query,\n }),\n [args, activeConversationId, query]\n )\n\n return <ConversationsContext.Provider value={value}>{children}</ConversationsContext.Provider>\n}\n\nfunction fetchNextPage(\n _options?: FetchNextPageOptions\n): Promise<\n InfiniteQueryObserverResult<\n InfiniteData<ApiCollection<ConversationResource>, unknown>,\n ResponseError\n >\n> {\n throw new Error('Function not implemented.')\n}\n\nexport const useConversationsContext = () => useContext(ConversationsContext)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"conversations_context.js","names":["React","createContext","useContext","useMemo","useState","useConversations","jsx","_jsx","defaultQueryValue","conversations","refetch","Promise","resolve","error","isError","isLoading","fetchNextPage","hasNextPage","isFetching","isFetched","isRefetching","ConversationsContext","args","activeConversationId","undefined","setActiveConversationId","ConversationsContextProvider","t0","$","_c","children","t1","opts","paginatorOptions","t2","chat_group_graph_id","group_source_app_name","show_direct_messages","show_archived","show_unread","t3","query","t4","value","t5","Provider","_options","Error","useConversationsContext"],"sources":["../../src/contexts/conversations_context.tsx"],"sourcesContent":["import {\n FetchNextPageOptions,\n InfiniteQueryObserverResult,\n InfiniteData,\n} from '@tanstack/react-query'\nimport React, { createContext, PropsWithChildren, useContext, useMemo, useState } from 'react'\nimport { ApiGetQueryOptions } from '../hooks'\nimport { useConversations, UseConversationsValue } from '../hooks/use_conversations'\nimport { ConversationFiltersParams } from '../screens/conversation_filters/screen_props'\nimport { ApiCollection, ConversationResource } from '../types'\nimport { ResponseError } from '../utils/response_error'\n\ninterface ConversationsContextValue extends UseConversationsValue {\n activeConversationId?: number\n setActiveConversationId: (_id: number) => void\n args: ConversationFiltersParams\n}\n\nconst defaultQueryValue: UseConversationsValue = {\n conversations: [],\n refetch: () => Promise.resolve(null),\n error: null,\n isError: false,\n isLoading: true,\n fetchNextPage,\n hasNextPage: false,\n isFetching: false,\n isFetched: false,\n isRefetching: false,\n}\n\nconst ConversationsContext = createContext<ConversationsContextValue>({\n args: {},\n activeConversationId: undefined,\n setActiveConversationId: () => {},\n ...defaultQueryValue,\n})\n\nexport const ConversationsContextProvider = ({\n children,\n args = {},\n opts: paginatorOptions,\n}: PropsWithChildren<{\n args: ConversationFiltersParams\n opts?: ApiGetQueryOptions\n}>) => {\n const [activeConversationId, setActiveConversationId] = useState<number | undefined>()\n const {\n chat_group_graph_id,\n group_source_app_name,\n show_direct_messages,\n show_archived,\n show_unread,\n } = args\n\n const query = useConversations(\n {\n chat_group_graph_id,\n group_source_app_name,\n show_direct_messages,\n show_archived,\n show_unread,\n },\n paginatorOptions\n )\n\n const value = useMemo(\n () => ({\n args,\n activeConversationId,\n setActiveConversationId,\n ...query,\n }),\n [args, activeConversationId, query]\n )\n\n return <ConversationsContext.Provider value={value}>{children}</ConversationsContext.Provider>\n}\n\nfunction fetchNextPage(\n _options?: FetchNextPageOptions\n): Promise<\n InfiniteQueryObserverResult<\n InfiniteData<ApiCollection<ConversationResource>, unknown>,\n ResponseError\n >\n> {\n throw new Error('Function not implemented.')\n}\n\nexport const useConversationsContext = () => useContext(ConversationsContext)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"use_clear_conversation_filters.d.ts","sourceRoot":"","sources":["../../src/hooks/use_clear_conversation_filters.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,eAY1C"}
1
+ {"version":3,"file":"use_clear_conversation_filters.d.ts","sourceRoot":"","sources":["../../src/hooks/use_clear_conversation_filters.ts"],"names":[],"mappings":"AAGA,wBAAgB,2BAA2B,eAa1C"}
@@ -12,7 +12,8 @@ export function useClearConversationFilters() {
12
12
  chat_group_graph_id: undefined,
13
13
  group_source_app_name: undefined,
14
14
  show_direct_messages: undefined,
15
- show_archived: undefined
15
+ show_archived: undefined,
16
+ show_unread: undefined
16
17
  });
17
18
  };
18
19
  $[0] = navigation;
@@ -1 +1 @@
1
- {"version":3,"file":"use_clear_conversation_filters.js","names":["useNavigation","useCallback","useClearConversationFilters","$","_c","navigation","t0","setParams","title","undefined","chat_group_graph_id","group_source_app_name","show_direct_messages","show_archived"],"sources":["../../src/hooks/use_clear_conversation_filters.ts"],"sourcesContent":["import { useNavigation } from '@react-navigation/native'\nimport { useCallback } from 'react'\n\nexport function useClearConversationFilters() {\n const navigation = useNavigation()\n\n return useCallback(() => {\n navigation.setParams({\n title: undefined,\n chat_group_graph_id: undefined,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n })\n }, [navigation])\n}\n"],"mappings":";AAAA,SAASA,aAAa,QAAQ,0BAA0B;AACxD,SAASC,WAAW,QAAQ,OAAO;AAEnC,OAAO,SAAAC,4BAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACL,MAAAC,UAAA,GAAmBL,aAAa,CAAC,CAAC;EAAA,IAAAM,EAAA;EAAA,IAAAH,CAAA,QAAAE,UAAA;IAEfC,EAAA,GAAAA,CAAA;MACjBD,UAAU,CAAAE,SAAU,CAAC;QAAAC,KAAA,EACZC,SAAS;QAAAC,mBAAA,EACKD,SAAS;QAAAE,qBAAA,EACPF,SAAS;QAAAG,oBAAA,EACVH,SAAS;QAAAI,aAAA,EAChBJ;MACjB,CAAC,CAAC;IAAA,CACH;IAAAN,CAAA,MAAAE,UAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAA,OARMG,EAQS;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"use_clear_conversation_filters.js","names":["useNavigation","useCallback","useClearConversationFilters","$","_c","navigation","t0","setParams","title","undefined","chat_group_graph_id","group_source_app_name","show_direct_messages","show_archived","show_unread"],"sources":["../../src/hooks/use_clear_conversation_filters.ts"],"sourcesContent":["import { useNavigation } from '@react-navigation/native'\nimport { useCallback } from 'react'\n\nexport function useClearConversationFilters() {\n const navigation = useNavigation()\n\n return useCallback(() => {\n navigation.setParams({\n title: undefined,\n chat_group_graph_id: undefined,\n group_source_app_name: undefined,\n show_direct_messages: undefined,\n show_archived: undefined,\n show_unread: undefined,\n })\n }, [navigation])\n}\n"],"mappings":";AAAA,SAASA,aAAa,QAAQ,0BAA0B;AACxD,SAASC,WAAW,QAAQ,OAAO;AAEnC,OAAO,SAAAC,4BAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACL,MAAAC,UAAA,GAAmBL,aAAa,CAAC,CAAC;EAAA,IAAAM,EAAA;EAAA,IAAAH,CAAA,QAAAE,UAAA;IAEfC,EAAA,GAAAA,CAAA;MACjBD,UAAU,CAAAE,SAAU,CAAC;QAAAC,KAAA,EACZC,SAAS;QAAAC,mBAAA,EACKD,SAAS;QAAAE,qBAAA,EACPF,SAAS;QAAAG,oBAAA,EACVH,SAAS;QAAAI,aAAA,EAChBJ,SAAS;QAAAK,WAAA,EACXL;MACf,CAAC,CAAC;IAAA,CACH;IAAAN,CAAA,MAAAE,UAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAA,OATMG,EASS;AAAA","ignoreList":[]}