@repzo/widget-react-native 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +179 -0
- package/README.md +72 -16
- package/lib/commonjs/api/client.js +113 -0
- package/lib/commonjs/api/client.js.map +1 -1
- package/lib/commonjs/attachments/file-size.js +52 -0
- package/lib/commonjs/attachments/file-size.js.map +1 -0
- package/lib/commonjs/attachments/local-previews.js +40 -0
- package/lib/commonjs/attachments/local-previews.js.map +1 -0
- package/lib/commonjs/attachments/pickers.js +76 -28
- package/lib/commonjs/attachments/pickers.js.map +1 -1
- package/lib/commonjs/i18n.js +24 -3
- package/lib/commonjs/i18n.js.map +1 -1
- package/lib/commonjs/locales.js +13 -3
- package/lib/commonjs/locales.js.map +1 -1
- package/lib/commonjs/state/widget-store.js +486 -63
- package/lib/commonjs/state/widget-store.js.map +1 -1
- package/lib/commonjs/storage.js +3 -1
- package/lib/commonjs/storage.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui/WidgetProvider.js +40 -16
- package/lib/commonjs/ui/WidgetProvider.js.map +1 -1
- package/lib/commonjs/ui/components/AttachmentChips.js +109 -40
- package/lib/commonjs/ui/components/AttachmentChips.js.map +1 -1
- package/lib/commonjs/ui/components/ConversationRow.js +65 -10
- package/lib/commonjs/ui/components/ConversationRow.js.map +1 -1
- package/lib/commonjs/ui/components/ImageViewer.js +231 -25
- package/lib/commonjs/ui/components/ImageViewer.js.map +1 -1
- package/lib/commonjs/ui/components/RatingCard.js +5 -2
- package/lib/commonjs/ui/components/RatingCard.js.map +1 -1
- package/lib/commonjs/ui/components/ZoomableImage.js +58 -10
- package/lib/commonjs/ui/components/ZoomableImage.js.map +1 -1
- package/lib/commonjs/ui/components/icons.js +22 -16
- package/lib/commonjs/ui/components/icons.js.map +1 -1
- package/lib/commonjs/ui/hooks/use-retained-state.js +39 -0
- package/lib/commonjs/ui/hooks/use-retained-state.js.map +1 -0
- package/lib/commonjs/ui/screens/chat/ChatView.js +666 -171
- package/lib/commonjs/ui/screens/chat/ChatView.js.map +1 -1
- package/lib/commonjs/ui/screens/chat/ChatView.styles.js +150 -3
- package/lib/commonjs/ui/screens/chat/ChatView.styles.js.map +1 -1
- package/lib/commonjs/ui/screens/conversations/ConversationsList.js +1 -0
- package/lib/commonjs/ui/screens/conversations/ConversationsList.js.map +1 -1
- package/lib/commonjs/ui/screens/home/HomeView.js +38 -55
- package/lib/commonjs/ui/screens/home/HomeView.js.map +1 -1
- package/lib/commonjs/ui/screens/home/HomeView.styles.js +36 -45
- package/lib/commonjs/ui/screens/home/HomeView.styles.js.map +1 -1
- package/lib/commonjs/ui/styles/theme.js +1 -0
- package/lib/commonjs/ui/styles/theme.js.map +1 -1
- package/lib/commonjs/ui/utils/conversations.js +17 -1
- package/lib/commonjs/ui/utils/conversations.js.map +1 -1
- package/lib/commonjs/ui/utils/html.js +13 -0
- package/lib/commonjs/ui/utils/html.js.map +1 -1
- package/lib/commonjs/ui/utils/image-load-queue.js +114 -0
- package/lib/commonjs/ui/utils/image-load-queue.js.map +1 -0
- package/lib/commonjs/ui/utils/inline-attachments.js +88 -0
- package/lib/commonjs/ui/utils/inline-attachments.js.map +1 -0
- package/lib/module/api/client.js +113 -0
- package/lib/module/api/client.js.map +1 -1
- package/lib/module/attachments/file-size.js +47 -0
- package/lib/module/attachments/file-size.js.map +1 -0
- package/lib/module/attachments/local-previews.js +33 -0
- package/lib/module/attachments/local-previews.js.map +1 -0
- package/lib/module/attachments/pickers.js +74 -27
- package/lib/module/attachments/pickers.js.map +1 -1
- package/lib/module/i18n.js +24 -3
- package/lib/module/i18n.js.map +1 -1
- package/lib/module/locales.js +13 -3
- package/lib/module/locales.js.map +1 -1
- package/lib/module/state/widget-store.js +488 -65
- package/lib/module/state/widget-store.js.map +1 -1
- package/lib/module/storage.js +2 -0
- package/lib/module/storage.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui/WidgetProvider.js +40 -16
- package/lib/module/ui/WidgetProvider.js.map +1 -1
- package/lib/module/ui/components/AttachmentChips.js +111 -42
- package/lib/module/ui/components/AttachmentChips.js.map +1 -1
- package/lib/module/ui/components/ConversationRow.js +65 -10
- package/lib/module/ui/components/ConversationRow.js.map +1 -1
- package/lib/module/ui/components/ImageViewer.js +233 -27
- package/lib/module/ui/components/ImageViewer.js.map +1 -1
- package/lib/module/ui/components/RatingCard.js +5 -2
- package/lib/module/ui/components/RatingCard.js.map +1 -1
- package/lib/module/ui/components/ZoomableImage.js +58 -10
- package/lib/module/ui/components/ZoomableImage.js.map +1 -1
- package/lib/module/ui/components/icons.js +21 -15
- package/lib/module/ui/components/icons.js.map +1 -1
- package/lib/module/ui/hooks/use-retained-state.js +34 -0
- package/lib/module/ui/hooks/use-retained-state.js.map +1 -0
- package/lib/module/ui/screens/chat/ChatView.js +672 -177
- package/lib/module/ui/screens/chat/ChatView.js.map +1 -1
- package/lib/module/ui/screens/chat/ChatView.styles.js +152 -4
- package/lib/module/ui/screens/chat/ChatView.styles.js.map +1 -1
- package/lib/module/ui/screens/conversations/ConversationsList.js +1 -0
- package/lib/module/ui/screens/conversations/ConversationsList.js.map +1 -1
- package/lib/module/ui/screens/home/HomeView.js +40 -57
- package/lib/module/ui/screens/home/HomeView.js.map +1 -1
- package/lib/module/ui/screens/home/HomeView.styles.js +36 -45
- package/lib/module/ui/screens/home/HomeView.styles.js.map +1 -1
- package/lib/module/ui/styles/theme.js +1 -0
- package/lib/module/ui/styles/theme.js.map +1 -1
- package/lib/module/ui/utils/conversations.js +15 -1
- package/lib/module/ui/utils/conversations.js.map +1 -1
- package/lib/module/ui/utils/html.js +12 -0
- package/lib/module/ui/utils/html.js.map +1 -1
- package/lib/module/ui/utils/image-load-queue.js +109 -0
- package/lib/module/ui/utils/image-load-queue.js.map +1 -0
- package/lib/module/ui/utils/inline-attachments.js +85 -0
- package/lib/module/ui/utils/inline-attachments.js.map +1 -0
- package/lib/typescript/commonjs/api/client.d.ts +35 -1
- package/lib/typescript/commonjs/api/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/attachments/file-size.d.ts +15 -0
- package/lib/typescript/commonjs/attachments/file-size.d.ts.map +1 -0
- package/lib/typescript/commonjs/attachments/local-previews.d.ts +14 -0
- package/lib/typescript/commonjs/attachments/local-previews.d.ts.map +1 -0
- package/lib/typescript/commonjs/attachments/pickers.d.ts +35 -10
- package/lib/typescript/commonjs/attachments/pickers.d.ts.map +1 -1
- package/lib/typescript/commonjs/i18n.d.ts +13 -3
- package/lib/typescript/commonjs/i18n.d.ts.map +1 -1
- package/lib/typescript/commonjs/locales.d.ts.map +1 -1
- package/lib/typescript/commonjs/state/widget-store.d.ts +67 -4
- package/lib/typescript/commonjs/state/widget-store.d.ts.map +1 -1
- package/lib/typescript/commonjs/storage.d.ts +2 -0
- package/lib/typescript/commonjs/storage.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +58 -0
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/WidgetProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/AttachmentChips.d.ts +13 -3
- package/lib/typescript/commonjs/ui/components/AttachmentChips.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ConversationRow.d.ts +15 -1
- package/lib/typescript/commonjs/ui/components/ConversationRow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ImageViewer.d.ts +26 -6
- package/lib/typescript/commonjs/ui/components/ImageViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/RatingCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ZoomableImage.d.ts +10 -1
- package/lib/typescript/commonjs/ui/components/ZoomableImage.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/icons.d.ts +2 -1
- package/lib/typescript/commonjs/ui/components/icons.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/use-retained-state.d.ts +11 -0
- package/lib/typescript/commonjs/ui/hooks/use-retained-state.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts +4 -4
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts +154 -2
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts +30 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/conversations/ConversationsList.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/conversations/ConversationsList.types.d.ts +2 -0
- package/lib/typescript/commonjs/ui/screens/conversations/ConversationsList.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/home/HomeView.d.ts +7 -5
- package/lib/typescript/commonjs/ui/screens/home/HomeView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/home/HomeView.styles.d.ts +30 -35
- package/lib/typescript/commonjs/ui/screens/home/HomeView.styles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/home/HomeView.types.d.ts +5 -6
- package/lib/typescript/commonjs/ui/screens/home/HomeView.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/styles/theme.d.ts +2 -0
- package/lib/typescript/commonjs/ui/styles/theme.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/conversations.d.ts +10 -2
- package/lib/typescript/commonjs/ui/utils/conversations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/html.d.ts +5 -0
- package/lib/typescript/commonjs/ui/utils/html.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/image-load-queue.d.ts +44 -0
- package/lib/typescript/commonjs/ui/utils/image-load-queue.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/inline-attachments.d.ts +29 -0
- package/lib/typescript/commonjs/ui/utils/inline-attachments.d.ts.map +1 -0
- package/lib/typescript/module/api/client.d.ts +35 -1
- package/lib/typescript/module/api/client.d.ts.map +1 -1
- package/lib/typescript/module/attachments/file-size.d.ts +15 -0
- package/lib/typescript/module/attachments/file-size.d.ts.map +1 -0
- package/lib/typescript/module/attachments/local-previews.d.ts +14 -0
- package/lib/typescript/module/attachments/local-previews.d.ts.map +1 -0
- package/lib/typescript/module/attachments/pickers.d.ts +35 -10
- package/lib/typescript/module/attachments/pickers.d.ts.map +1 -1
- package/lib/typescript/module/i18n.d.ts +13 -3
- package/lib/typescript/module/i18n.d.ts.map +1 -1
- package/lib/typescript/module/locales.d.ts.map +1 -1
- package/lib/typescript/module/state/widget-store.d.ts +67 -4
- package/lib/typescript/module/state/widget-store.d.ts.map +1 -1
- package/lib/typescript/module/storage.d.ts +2 -0
- package/lib/typescript/module/storage.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +58 -0
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/WidgetProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/AttachmentChips.d.ts +13 -3
- package/lib/typescript/module/ui/components/AttachmentChips.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ConversationRow.d.ts +15 -1
- package/lib/typescript/module/ui/components/ConversationRow.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ImageViewer.d.ts +26 -6
- package/lib/typescript/module/ui/components/ImageViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/RatingCard.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ZoomableImage.d.ts +10 -1
- package/lib/typescript/module/ui/components/ZoomableImage.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/icons.d.ts +2 -1
- package/lib/typescript/module/ui/components/icons.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/use-retained-state.d.ts +11 -0
- package/lib/typescript/module/ui/hooks/use-retained-state.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/chat/ChatView.d.ts +4 -4
- package/lib/typescript/module/ui/screens/chat/ChatView.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts +154 -2
- package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts +30 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/conversations/ConversationsList.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/conversations/ConversationsList.types.d.ts +2 -0
- package/lib/typescript/module/ui/screens/conversations/ConversationsList.types.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/home/HomeView.d.ts +7 -5
- package/lib/typescript/module/ui/screens/home/HomeView.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/home/HomeView.styles.d.ts +30 -35
- package/lib/typescript/module/ui/screens/home/HomeView.styles.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/home/HomeView.types.d.ts +5 -6
- package/lib/typescript/module/ui/screens/home/HomeView.types.d.ts.map +1 -1
- package/lib/typescript/module/ui/styles/theme.d.ts +2 -0
- package/lib/typescript/module/ui/styles/theme.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/conversations.d.ts +10 -2
- package/lib/typescript/module/ui/utils/conversations.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/html.d.ts +5 -0
- package/lib/typescript/module/ui/utils/html.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/image-load-queue.d.ts +44 -0
- package/lib/typescript/module/ui/utils/image-load-queue.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/inline-attachments.d.ts +29 -0
- package/lib/typescript/module/ui/utils/inline-attachments.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/api/client.ts +148 -2
- package/src/attachments/file-size.ts +42 -0
- package/src/attachments/local-previews.ts +32 -0
- package/src/attachments/pickers.ts +90 -30
- package/src/i18n.ts +24 -3
- package/src/locales.ts +13 -3
- package/src/state/widget-store.ts +519 -70
- package/src/storage.ts +2 -0
- package/src/types.ts +58 -0
- package/src/ui/WidgetProvider.tsx +50 -12
- package/src/ui/components/AttachmentChips.tsx +100 -29
- package/src/ui/components/ConversationRow.tsx +90 -9
- package/src/ui/components/ImageViewer.tsx +250 -28
- package/src/ui/components/RatingCard.tsx +5 -2
- package/src/ui/components/ZoomableImage.tsx +58 -5
- package/src/ui/components/icons.tsx +10 -12
- package/src/ui/hooks/use-retained-state.ts +35 -0
- package/src/ui/screens/chat/ChatView.styles.ts +151 -3
- package/src/ui/screens/chat/ChatView.tsx +760 -213
- package/src/ui/screens/chat/ChatView.types.ts +30 -1
- package/src/ui/screens/conversations/ConversationsList.tsx +1 -0
- package/src/ui/screens/conversations/ConversationsList.types.ts +2 -0
- package/src/ui/screens/home/HomeView.styles.ts +36 -45
- package/src/ui/screens/home/HomeView.tsx +54 -70
- package/src/ui/screens/home/HomeView.types.ts +5 -6
- package/src/ui/styles/theme.ts +6 -0
- package/src/ui/utils/conversations.ts +16 -2
- package/src/ui/utils/html.ts +26 -0
- package/src/ui/utils/image-load-queue.ts +108 -0
- package/src/ui/utils/inline-attachments.ts +71 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ImageLoadQueue = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Lets images load a few at a time, highest priority first. The chat runs its
|
|
9
|
+
* large images through it: Android holds a whole download in a memory pool
|
|
10
|
+
* capped at three quarters of the app's heap (192 MB on a 256 MB phone), so
|
|
11
|
+
* several 30–50 MB photos at once overflow it and every one of them fails.
|
|
12
|
+
*
|
|
13
|
+
* No `react-native` import on purpose: it stays testable in plain Node.
|
|
14
|
+
*/
|
|
15
|
+
class ImageLoadQueue {
|
|
16
|
+
// Key → priority, for both: an image paused off screen waits again at its own.
|
|
17
|
+
waiting = new Map();
|
|
18
|
+
loading = new Map();
|
|
19
|
+
done = new Set();
|
|
20
|
+
/** The images on screen; null until the list says, so all of them count. */
|
|
21
|
+
onScreen = null;
|
|
22
|
+
listeners = new Set();
|
|
23
|
+
scheduled = false;
|
|
24
|
+
constructor(concurrency) {
|
|
25
|
+
this.concurrency = concurrency;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Queues a mounted image; the returned cleanup gives up its place. */
|
|
29
|
+
add(key, priority) {
|
|
30
|
+
if (!this.done.has(key) && !this.loading.has(key)) {
|
|
31
|
+
this.waiting.set(key, Number.isFinite(priority) ? priority : 0);
|
|
32
|
+
this.schedule();
|
|
33
|
+
}
|
|
34
|
+
return () => this.remove(key);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Loaded or failed: it keeps showing, and the next image may start. */
|
|
38
|
+
finish(key) {
|
|
39
|
+
this.waiting.delete(key);
|
|
40
|
+
this.done.add(key);
|
|
41
|
+
if (this.loading.delete(key)) this.advance();
|
|
42
|
+
}
|
|
43
|
+
canLoad = key => this.done.has(key) || this.loading.has(key);
|
|
44
|
+
subscribe = listener => {
|
|
45
|
+
this.listeners.add(listener);
|
|
46
|
+
return () => {
|
|
47
|
+
this.listeners.delete(listener);
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The images now on screen. One that scrolls off before it has loaded
|
|
53
|
+
* gives up its place and waits, so it can't hold up the ones in view:
|
|
54
|
+
* Android detaches a row scrolled out of view, and a detached image never
|
|
55
|
+
* finishes loading. Only images on screen are started.
|
|
56
|
+
*/
|
|
57
|
+
setOnScreen(keys) {
|
|
58
|
+
this.onScreen = new Set(keys);
|
|
59
|
+
let paused = false;
|
|
60
|
+
this.loading.forEach((priority, key) => {
|
|
61
|
+
if (this.onScreen.has(key)) return;
|
|
62
|
+
this.loading.delete(key);
|
|
63
|
+
this.waiting.set(key, priority);
|
|
64
|
+
paused = true;
|
|
65
|
+
});
|
|
66
|
+
if (!this.advance() && paused) this.notify();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Scrolled out of the list before it loaded: it queues again if it comes back. */
|
|
70
|
+
remove(key) {
|
|
71
|
+
this.waiting.delete(key);
|
|
72
|
+
if (this.loading.delete(key)) this.advance();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Hands out places once the render that mounted an image is done, so all
|
|
77
|
+
* the images mounted together are queued first, whatever order they
|
|
78
|
+
* mounted in.
|
|
79
|
+
*/
|
|
80
|
+
schedule() {
|
|
81
|
+
if (this.scheduled) return;
|
|
82
|
+
this.scheduled = true;
|
|
83
|
+
Promise.resolve().then(() => {
|
|
84
|
+
this.scheduled = false;
|
|
85
|
+
this.advance();
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Starts what fits; true when anything started (listeners were told). */
|
|
90
|
+
advance() {
|
|
91
|
+
let started = false;
|
|
92
|
+
while (this.loading.size < this.concurrency) {
|
|
93
|
+
let next = null;
|
|
94
|
+
let best = -Infinity;
|
|
95
|
+
this.waiting.forEach((priority, key) => {
|
|
96
|
+
if (priority > best && (!this.onScreen || this.onScreen.has(key))) {
|
|
97
|
+
best = priority;
|
|
98
|
+
next = key;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
if (next === null) break;
|
|
102
|
+
this.waiting.delete(next);
|
|
103
|
+
this.loading.set(next, best);
|
|
104
|
+
started = true;
|
|
105
|
+
}
|
|
106
|
+
if (started) this.notify();
|
|
107
|
+
return started;
|
|
108
|
+
}
|
|
109
|
+
notify() {
|
|
110
|
+
this.listeners.forEach(listener => listener());
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.ImageLoadQueue = ImageLoadQueue;
|
|
114
|
+
//# sourceMappingURL=image-load-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ImageLoadQueue","waiting","Map","loading","done","Set","onScreen","listeners","scheduled","constructor","concurrency","add","key","priority","has","set","Number","isFinite","schedule","remove","finish","delete","advance","canLoad","subscribe","listener","setOnScreen","keys","paused","forEach","notify","Promise","resolve","then","started","size","next","best","Infinity","exports"],"sourceRoot":"../../../../src","sources":["ui/utils/image-load-queue.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.splitInlineAttachments = splitInlineAttachments;
|
|
7
|
+
var _html = require("./html.js");
|
|
8
|
+
/**
|
|
9
|
+
* Agent replies with images between their paragraphs. Workstation marks such
|
|
10
|
+
* images `inline` among the message's attachments and keeps an `<img>` for
|
|
11
|
+
* each in the HTML body, where the teammate put it. Same split as the web
|
|
12
|
+
* Messenger, so both show the text and images in the order they were written.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** Markdown for the bubble to draw, or one attachment. */
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The body and its inline images in order, plus the other attachments
|
|
19
|
+
* (`files`) that show after them. Null when nothing is inline: the bubble then
|
|
20
|
+
* shows the body, followed by every attachment.
|
|
21
|
+
*
|
|
22
|
+
* An `<img>` finds its attachment by the id in its URL. In a body whose
|
|
23
|
+
* images carry no ids, they take the attachments in order instead; in one
|
|
24
|
+
* that does, an image without an id (a logo, an emoji) isn't one of the files
|
|
25
|
+
* and takes nothing. One whose id names no remaining attachment (the same file
|
|
26
|
+
* twice) takes nothing either. Inline attachments with no `<img>` go at the end.
|
|
27
|
+
*/
|
|
28
|
+
function splitInlineAttachments(body, attachments) {
|
|
29
|
+
const inline = (attachments ?? []).filter(isInline);
|
|
30
|
+
if (!body || inline.length === 0) return null;
|
|
31
|
+
const remaining = [...inline];
|
|
32
|
+
const parts = [];
|
|
33
|
+
const pushText = html => {
|
|
34
|
+
const text = (0, _html.htmlToMarkdown)(html);
|
|
35
|
+
if (text) parts.push({
|
|
36
|
+
text
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const image = /<img\b[^>]*?\bsrc=(["'])(.*?)\1[^>]*>/gi;
|
|
40
|
+
const images = [];
|
|
41
|
+
for (let match = image.exec(body); match; match = image.exec(body)) {
|
|
42
|
+
images.push({
|
|
43
|
+
start: match.index,
|
|
44
|
+
end: image.lastIndex,
|
|
45
|
+
id: mediaId(match[2] ?? '')
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const byId = images.some(found => found.id !== null);
|
|
49
|
+
let last = 0;
|
|
50
|
+
for (const {
|
|
51
|
+
start,
|
|
52
|
+
end,
|
|
53
|
+
id
|
|
54
|
+
} of images) {
|
|
55
|
+
// Left in the text, which drops it as it always has.
|
|
56
|
+
if (byId && !id) continue;
|
|
57
|
+
pushText(body.slice(last, start));
|
|
58
|
+
last = end;
|
|
59
|
+
const index = id ? remaining.findIndex(attachment => attachment.id === id) : 0;
|
|
60
|
+
if (index < 0) continue;
|
|
61
|
+
const [attachment] = remaining.splice(index, 1);
|
|
62
|
+
if (attachment) parts.push({
|
|
63
|
+
attachment
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
pushText(body.slice(last));
|
|
67
|
+
remaining.forEach(attachment => parts.push({
|
|
68
|
+
attachment
|
|
69
|
+
}));
|
|
70
|
+
return {
|
|
71
|
+
parts,
|
|
72
|
+
files: (attachments ?? []).filter(attachment => !isInline(attachment))
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Workstation's media URLs carry the attachment's id, as
|
|
78
|
+
* `/api/widget/media/<id>?…` (what replies carry) or `/api/media/<id>/download`.
|
|
79
|
+
*/
|
|
80
|
+
function mediaId(src) {
|
|
81
|
+
return /\/api\/(?:widget\/)?media\/([^/?#"'&]+)/.exec(src)?.[1] ?? null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Only Workstation's agent replies set `inline`, so it isn't on `WidgetAttachment`. */
|
|
85
|
+
function isInline(attachment) {
|
|
86
|
+
return attachment.inline === true;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=inline-attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_html","require","splitInlineAttachments","body","attachments","inline","filter","isInline","length","remaining","parts","pushText","html","text","htmlToMarkdown","push","image","images","match","exec","start","index","end","lastIndex","id","mediaId","byId","some","found","last","slice","findIndex","attachment","splice","forEach","files","src"],"sourceRoot":"../../../../src","sources":["ui/utils/inline-attachments.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/api/client.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* The token itself lives in `SecureStorage`.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import { measureFileSize } from "../attachments/file-size.js";
|
|
13
14
|
import { SecureStorage, TOKEN_KEY } from "../storage.js";
|
|
14
15
|
import { isHttpUrl, urlScheme } from "../ui/utils/safe-url.js";
|
|
15
16
|
|
|
@@ -37,6 +38,49 @@ export class RepzoWidgetError extends Error {
|
|
|
37
38
|
|
|
38
39
|
/** A Send message part asked for on its own, which may share one request with others. */
|
|
39
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Sends a local file as the request body straight from disk and resolves the
|
|
43
|
+
* HTTP status. React Native streams a `{ uri }` body natively; `fetch` would
|
|
44
|
+
* stringify it, so this goes through XMLHttpRequest.
|
|
45
|
+
*/
|
|
46
|
+
function sendFileFromDisk(url, method, headers, file, signal) {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const xhr = new XMLHttpRequest();
|
|
49
|
+
const cancel = () => xhr.abort();
|
|
50
|
+
const settle = finish => {
|
|
51
|
+
signal?.removeEventListener('abort', cancel);
|
|
52
|
+
finish();
|
|
53
|
+
};
|
|
54
|
+
xhr.onload = () => settle(() => resolve(xhr.status));
|
|
55
|
+
xhr.onerror = () => settle(() => reject(new RepzoWidgetError('Network request failed', 0, 'network')));
|
|
56
|
+
xhr.ontimeout = xhr.onerror;
|
|
57
|
+
xhr.onabort = () => settle(() => reject(new RepzoWidgetError('Upload cancelled', 0, 'network')));
|
|
58
|
+
xhr.open(method, url);
|
|
59
|
+
Object.entries(headers).forEach(([name, value]) => xhr.setRequestHeader(name, value));
|
|
60
|
+
// Android refuses a `{ uri }` body without one.
|
|
61
|
+
if (!Object.keys(headers).some(name => name.toLowerCase() === 'content-type')) {
|
|
62
|
+
xhr.setRequestHeader('Content-Type', file.contentType);
|
|
63
|
+
}
|
|
64
|
+
signal?.addEventListener('abort', cancel);
|
|
65
|
+
xhr.send({
|
|
66
|
+
uri: file.uri
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* How long Workstation keeps an upload for a message to name, when its answer
|
|
73
|
+
* has no usable `expiresAt` (deployments without it, or a phone clock that
|
|
74
|
+
* reads it as already past).
|
|
75
|
+
*/
|
|
76
|
+
const UPLOAD_LIFETIME_MS = 60 * 60 * 1000;
|
|
77
|
+
|
|
78
|
+
/** A file in storage, waiting for the message that names it. */
|
|
79
|
+
|
|
80
|
+
function uploadExpiry(expiresAt, now) {
|
|
81
|
+
const at = typeof expiresAt === 'string' ? Date.parse(expiresAt) : typeof expiresAt === 'number' ? expiresAt : NaN;
|
|
82
|
+
return at > now ? at : now + UPLOAD_LIFETIME_MS;
|
|
83
|
+
}
|
|
40
84
|
export class WidgetApiClient {
|
|
41
85
|
baseUrl = '';
|
|
42
86
|
channelAccountId = '';
|
|
@@ -274,6 +318,75 @@ export class WidgetApiClient {
|
|
|
274
318
|
body: data
|
|
275
319
|
});
|
|
276
320
|
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Puts a local file in storage ahead of the message, which then names it by
|
|
324
|
+
* the returned upload token. The target is presigned storage, or a path on
|
|
325
|
+
* the server where its storage can't presign. The upload URL is signed for
|
|
326
|
+
* exactly the size asked for: a `file://` file whose size `expo-file-system`
|
|
327
|
+
* can read streams from disk, anything else is read as a native blob and
|
|
328
|
+
* measured. `signal` cancels the transfer (the visitor removed the file, or
|
|
329
|
+
* left the conversation). Resolves the token and when it expires.
|
|
330
|
+
*/
|
|
331
|
+
async uploadAttachment(file, signal) {
|
|
332
|
+
// A file removed early is never read, nor given a slot in storage.
|
|
333
|
+
const stopIfCancelled = () => {
|
|
334
|
+
if (signal?.aborted) throw new RepzoWidgetError('Upload cancelled', 0, 'network');
|
|
335
|
+
};
|
|
336
|
+
stopIfCancelled();
|
|
337
|
+
// Streaming matters on Android: React Native also copies a blob it reads
|
|
338
|
+
// into a Base64 string for its network inspector, so a file past ~30 MB
|
|
339
|
+
// runs the app out of memory. Only file:// gives an exact Content-Length.
|
|
340
|
+
const streamedSize = urlScheme(file.uri) === 'file:' ? await measureFileSize(file.uri) : null;
|
|
341
|
+
let blob = null;
|
|
342
|
+
if (streamedSize === null) {
|
|
343
|
+
try {
|
|
344
|
+
blob = await (await fetch(file.uri, {
|
|
345
|
+
signal
|
|
346
|
+
})).blob();
|
|
347
|
+
} catch (error) {
|
|
348
|
+
throw new RepzoWidgetError(error instanceof Error ? error.message : 'Could not read the file', 0, 'network');
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
stopIfCancelled();
|
|
352
|
+
const target = await this.request('/api/widget/uploads', {
|
|
353
|
+
method: 'POST',
|
|
354
|
+
body: {
|
|
355
|
+
fileName: file.name,
|
|
356
|
+
contentType: file.contentType,
|
|
357
|
+
size: streamedSize ?? (blob?.size || file.size)
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
// Counted from when the token was issued, not from when the file is up.
|
|
361
|
+
const expiresAt = uploadExpiry(target.expiresAt, Date.now());
|
|
362
|
+
const uploadUrl = this.resolveUrl(target.uploadUrl);
|
|
363
|
+
if (!uploadUrl) throw new RepzoWidgetError('Invalid upload target', 0, 'http');
|
|
364
|
+
stopIfCancelled();
|
|
365
|
+
const method = target.method ?? 'PUT';
|
|
366
|
+
const headers = target.headers ?? {
|
|
367
|
+
'Content-Type': file.contentType
|
|
368
|
+
};
|
|
369
|
+
let status;
|
|
370
|
+
if (blob) {
|
|
371
|
+
try {
|
|
372
|
+
status = (await fetch(uploadUrl, {
|
|
373
|
+
method,
|
|
374
|
+
headers,
|
|
375
|
+
body: blob,
|
|
376
|
+
signal
|
|
377
|
+
})).status;
|
|
378
|
+
} catch (error) {
|
|
379
|
+
throw new RepzoWidgetError(error instanceof Error ? error.message : 'Upload failed', 0, 'network');
|
|
380
|
+
}
|
|
381
|
+
} else {
|
|
382
|
+
status = await sendFileFromDisk(uploadUrl, method, headers, file, signal);
|
|
383
|
+
}
|
|
384
|
+
if (status < 200 || status >= 300) throw new RepzoWidgetError('Upload failed', status, 'http');
|
|
385
|
+
return {
|
|
386
|
+
uploadToken: target.uploadToken,
|
|
387
|
+
expiresAt
|
|
388
|
+
};
|
|
389
|
+
}
|
|
277
390
|
listConversations() {
|
|
278
391
|
return this.request('/api/widget/conversations');
|
|
279
392
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SecureStorage","TOKEN_KEY","isHttpUrl","urlScheme","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","sendPartBatch","configure","replace","getBaseUrl","getChannelAccountId","getToken","getItem","setToken","setItem","clearToken","removeItem","resolveUrl","url","trimmed","trim","resolved","startsWith","request","path","options","sentToken","send","headers","authToken","undefined","Authorization","fetch","method","JSON","stringify","error","response","skipReauth","refreshed","ok","json","catch","getConfig","platform","query","encodeURIComponent","getOutboundMessage","askSendPart","getPost","part","own","Promise","resolve","reject","setTimeout","flushSendParts","push","asks","parts","Array","from","map","ask","answer","length","join","value","then","sendPostInteraction","campaignId","kind","init","params","visitorToken","resumeToken","user","email","phone","userId","user_id","userHash","user_hash","account","id","signedUpAt","signed_up_at","Date","toISOString","trackingVisitorId","sdkVersion","logout","sendMessage","data","listConversations","listMessages","conversationId","cursor","markConversationRead","rateConversation","ratingId","identify","sendTyping","isTyping","trackEvent","registerPushToken","reportPushOpened","deliveryId","removePushToken","auth"],"sourceRoot":"../../../src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["measureFileSize","SecureStorage","TOKEN_KEY","isHttpUrl","urlScheme","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","sendFileFromDisk","url","method","headers","file","signal","Promise","resolve","reject","xhr","XMLHttpRequest","cancel","abort","settle","finish","removeEventListener","onload","onerror","ontimeout","onabort","open","Object","entries","forEach","value","setRequestHeader","keys","some","toLowerCase","contentType","addEventListener","send","uri","UPLOAD_LIFETIME_MS","uploadExpiry","expiresAt","now","at","Date","parse","NaN","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","sendPartBatch","configure","replace","getBaseUrl","getChannelAccountId","getToken","getItem","setToken","setItem","clearToken","removeItem","resolveUrl","trimmed","trim","resolved","startsWith","request","path","options","sentToken","authToken","undefined","Authorization","fetch","JSON","stringify","error","response","skipReauth","refreshed","ok","json","catch","getConfig","platform","query","encodeURIComponent","getOutboundMessage","askSendPart","getPost","part","own","setTimeout","flushSendParts","push","asks","parts","Array","from","map","ask","answer","length","join","then","sendPostInteraction","campaignId","kind","init","params","visitorToken","resumeToken","user","email","phone","userId","user_id","userHash","user_hash","account","id","signedUpAt","signed_up_at","toISOString","trackingVisitorId","sdkVersion","logout","sendMessage","data","uploadAttachment","stopIfCancelled","aborted","streamedSize","blob","target","fileName","size","uploadUrl","uploadToken","listConversations","listMessages","conversationId","cursor","markConversationRead","rateConversation","ratingId","identify","sendTyping","isTyping","trackEvent","registerPushToken","reportPushOpened","deliveryId","removePushToken","auth"],"sourceRoot":"../../../src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Local file sizes from the host's `expo-file-system` (optional, like the
|
|
5
|
+
* pickers): read from the file's metadata, never from its contents. Shared by
|
|
6
|
+
* the pickers and the upload client, so the client doesn't pull in pickers.
|
|
7
|
+
*
|
|
8
|
+
* No `react-native` import on purpose: it stays testable in plain Node.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
let fileSystem = null;
|
|
12
|
+
try {
|
|
13
|
+
fileSystem = require('expo-file-system') ?? null;
|
|
14
|
+
} catch {
|
|
15
|
+
fileSystem = null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** A positive, finite byte count, or null. */
|
|
19
|
+
export function validSize(size) {
|
|
20
|
+
return typeof size === 'number' && Number.isFinite(size) && size > 0 ? size : null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A local file's exact size in bytes, from its metadata without reading it.
|
|
25
|
+
* Null without `expo-file-system`, or when it can't tell.
|
|
26
|
+
*/
|
|
27
|
+
export async function measureFileSize(uri) {
|
|
28
|
+
if (typeof fileSystem?.File === 'function') {
|
|
29
|
+
try {
|
|
30
|
+
const size = validSize(new fileSystem.File(uri).size);
|
|
31
|
+
if (size !== null) return size;
|
|
32
|
+
} catch {
|
|
33
|
+
// Fall through to the next reader.
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (typeof fileSystem?.getInfoAsync === 'function') {
|
|
37
|
+
try {
|
|
38
|
+
return validSize((await fileSystem.getInfoAsync(uri, {
|
|
39
|
+
size: true
|
|
40
|
+
}))?.size);
|
|
41
|
+
} catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=file-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fileSystem","require","validSize","size","Number","isFinite","measureFileSize","uri","File","getInfoAsync"],"sourceRoot":"../../../src","sources":["attachments/file-size.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIA,UAAe,GAAG,IAAI;AAC1B,IAAI;EACFA,UAAU,GAAGC,OAAO,CAAC,kBAAkB,CAAC,IAAI,IAAI;AAClD,CAAC,CAAC,MAAM;EACND,UAAU,GAAG,IAAI;AACnB;;AAEA;AACA,OAAO,SAASE,SAASA,CAACC,IAAa,EAAiB;EACtD,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACF,IAAI,CAAC,IAAIA,IAAI,GAAG,CAAC,GAAGA,IAAI,GAAG,IAAI;AACpF;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeG,eAAeA,CAACC,GAAW,EAA0B;EACzE,IAAI,OAAOP,UAAU,EAAEQ,IAAI,KAAK,UAAU,EAAE;IAC1C,IAAI;MACF,MAAML,IAAI,GAAGD,SAAS,CAAC,IAAIF,UAAU,CAACQ,IAAI,CAACD,GAAG,CAAC,CAACJ,IAAI,CAAC;MACrD,IAAIA,IAAI,KAAK,IAAI,EAAE,OAAOA,IAAI;IAChC,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EACA,IAAI,OAAOH,UAAU,EAAES,YAAY,KAAK,UAAU,EAAE;IAClD,IAAI;MACF,OAAOP,SAAS,CAAC,CAAC,MAAMF,UAAU,CAACS,YAAY,CAACF,GAAG,EAAE;QAAEJ,IAAI,EAAE;MAAK,CAAC,CAAC,GAAGA,IAAI,CAAC;IAC9E,CAAC,CAAC,MAAM;MACN,OAAO,IAAI;IACb;EACF;EACA,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The phone's copy of each file the visitor sent, by the URL of the stored
|
|
5
|
+
* copy that replaced it in the thread. Right after a send the stored copy
|
|
6
|
+
* may not load yet (Workstation can still be storing it), so a photo keeps
|
|
7
|
+
* showing from the phone instead of turning into a file row. Kept in memory
|
|
8
|
+
* only: a later session shows the stored copy.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const MAX_PREVIEWS = 50;
|
|
12
|
+
const previews = new Map();
|
|
13
|
+
export function rememberLocalPreview(storedUrl, localUrl) {
|
|
14
|
+
if (!storedUrl || !localUrl) return;
|
|
15
|
+
previews.delete(storedUrl);
|
|
16
|
+
previews.set(storedUrl, localUrl);
|
|
17
|
+
// Oldest first: a Map iterates in insertion order.
|
|
18
|
+
if (previews.size > MAX_PREVIEWS) previews.delete(previews.keys().next().value);
|
|
19
|
+
}
|
|
20
|
+
export function localPreviewFor(storedUrl) {
|
|
21
|
+
return storedUrl && previews.get(storedUrl) || null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** One that failed to load (the OS cleared the picker's cache): every view moves to the stored copy. */
|
|
25
|
+
export function forgetLocalPreview(storedUrl) {
|
|
26
|
+
previews.delete(storedUrl);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Signing out forgets them: the next visitor on the phone doesn't inherit the paths. */
|
|
30
|
+
export function clearLocalPreviews() {
|
|
31
|
+
previews.clear();
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=local-previews.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MAX_PREVIEWS","previews","Map","rememberLocalPreview","storedUrl","localUrl","delete","set","size","keys","next","value","localPreviewFor","get","forgetLocalPreview","clearLocalPreviews","clear"],"sourceRoot":"../../../src","sources":["attachments/local-previews.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,YAAY,GAAG,EAAE;AACvB,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAE1C,OAAO,SAASC,oBAAoBA,CAACC,SAAiB,EAAEC,QAAgB,EAAQ;EAC9E,IAAI,CAACD,SAAS,IAAI,CAACC,QAAQ,EAAE;EAC7BJ,QAAQ,CAACK,MAAM,CAACF,SAAS,CAAC;EAC1BH,QAAQ,CAACM,GAAG,CAACH,SAAS,EAAEC,QAAQ,CAAC;EACjC;EACA,IAAIJ,QAAQ,CAACO,IAAI,GAAGR,YAAY,EAAEC,QAAQ,CAACK,MAAM,CAACL,QAAQ,CAACQ,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,KAAe,CAAC;AAC3F;AAEA,OAAO,SAASC,eAAeA,CAACR,SAAiB,EAAiB;EAChE,OAAQA,SAAS,IAAIH,QAAQ,CAACY,GAAG,CAACT,SAAS,CAAC,IAAK,IAAI;AACvD;;AAEA;AACA,OAAO,SAASU,kBAAkBA,CAACV,SAAiB,EAAQ;EAC1DH,QAAQ,CAACK,MAAM,CAACF,SAAS,CAAC;AAC5B;;AAEA;AACA,OAAO,SAASW,kBAAkBA,CAAA,EAAS;EACzCd,QAAQ,CAACe,KAAK,CAAC,CAAC;AAClB","ignoreList":[]}
|