@appsupportkit/support-sdk 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/lib/commonjs/api.js +17 -2
  2. package/lib/commonjs/api.js.map +1 -1
  3. package/lib/commonjs/components/BottomSheet.js +67 -47
  4. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  5. package/lib/commonjs/components/LauncherButton.js +177 -0
  6. package/lib/commonjs/components/LauncherButton.js.map +1 -0
  7. package/lib/commonjs/components/SupportButton.js +168 -190
  8. package/lib/commonjs/components/SupportButton.js.map +1 -1
  9. package/lib/commonjs/components/icons.js +110 -23
  10. package/lib/commonjs/components/icons.js.map +1 -1
  11. package/lib/commonjs/components/primitives.js +191 -44
  12. package/lib/commonjs/components/primitives.js.map +1 -1
  13. package/lib/commonjs/components/screens/ComposeScreen.js +108 -60
  14. package/lib/commonjs/components/screens/ComposeScreen.js.map +1 -1
  15. package/lib/commonjs/components/screens/HomeScreen.js +221 -118
  16. package/lib/commonjs/components/screens/HomeScreen.js.map +1 -1
  17. package/lib/commonjs/components/screens/LanguageScreen.js +150 -0
  18. package/lib/commonjs/components/screens/LanguageScreen.js.map +1 -0
  19. package/lib/commonjs/components/screens/ThreadScreen.js +237 -111
  20. package/lib/commonjs/components/screens/ThreadScreen.js.map +1 -1
  21. package/lib/commonjs/i18n/index.js +101 -0
  22. package/lib/commonjs/i18n/index.js.map +1 -0
  23. package/lib/commonjs/i18n/languages.js +95 -0
  24. package/lib/commonjs/i18n/languages.js.map +1 -0
  25. package/lib/commonjs/i18n/strings/de.js +72 -0
  26. package/lib/commonjs/i18n/strings/de.js.map +1 -0
  27. package/lib/commonjs/i18n/strings/en.js +88 -0
  28. package/lib/commonjs/i18n/strings/en.js.map +1 -0
  29. package/lib/commonjs/i18n/strings/es.js +72 -0
  30. package/lib/commonjs/i18n/strings/es.js.map +1 -0
  31. package/lib/commonjs/i18n/strings/fr.js +72 -0
  32. package/lib/commonjs/i18n/strings/fr.js.map +1 -0
  33. package/lib/commonjs/i18n/strings/hi.js +72 -0
  34. package/lib/commonjs/i18n/strings/hi.js.map +1 -0
  35. package/lib/commonjs/i18n/strings/it.js +72 -0
  36. package/lib/commonjs/i18n/strings/it.js.map +1 -0
  37. package/lib/commonjs/i18n/strings/ja.js +72 -0
  38. package/lib/commonjs/i18n/strings/ja.js.map +1 -0
  39. package/lib/commonjs/i18n/strings/ko.js +72 -0
  40. package/lib/commonjs/i18n/strings/ko.js.map +1 -0
  41. package/lib/commonjs/i18n/strings/nl.js +72 -0
  42. package/lib/commonjs/i18n/strings/nl.js.map +1 -0
  43. package/lib/commonjs/i18n/strings/pl.js +72 -0
  44. package/lib/commonjs/i18n/strings/pl.js.map +1 -0
  45. package/lib/commonjs/i18n/strings/pt.js +72 -0
  46. package/lib/commonjs/i18n/strings/pt.js.map +1 -0
  47. package/lib/commonjs/i18n/strings/ru.js +72 -0
  48. package/lib/commonjs/i18n/strings/ru.js.map +1 -0
  49. package/lib/commonjs/i18n/strings/tr.js +72 -0
  50. package/lib/commonjs/i18n/strings/tr.js.map +1 -0
  51. package/lib/commonjs/i18n/strings/zh.js +72 -0
  52. package/lib/commonjs/i18n/strings/zh.js.map +1 -0
  53. package/lib/commonjs/index.js +31 -0
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/theme.js +136 -17
  56. package/lib/commonjs/theme.js.map +1 -1
  57. package/lib/commonjs/types.js +18 -0
  58. package/lib/commonjs/types.js.map +1 -1
  59. package/lib/commonjs/unread.js +92 -0
  60. package/lib/commonjs/unread.js.map +1 -0
  61. package/lib/commonjs/useSupportThreads.js +296 -0
  62. package/lib/commonjs/useSupportThreads.js.map +1 -0
  63. package/lib/commonjs/utils.js +58 -10
  64. package/lib/commonjs/utils.js.map +1 -1
  65. package/lib/module/api.js +16 -2
  66. package/lib/module/api.js.map +1 -1
  67. package/lib/module/components/BottomSheet.js +68 -48
  68. package/lib/module/components/BottomSheet.js.map +1 -1
  69. package/lib/module/components/LauncherButton.js +172 -0
  70. package/lib/module/components/LauncherButton.js.map +1 -0
  71. package/lib/module/components/SupportButton.js +172 -194
  72. package/lib/module/components/SupportButton.js.map +1 -1
  73. package/lib/module/components/icons.js +107 -22
  74. package/lib/module/components/icons.js.map +1 -1
  75. package/lib/module/components/primitives.js +187 -45
  76. package/lib/module/components/primitives.js.map +1 -1
  77. package/lib/module/components/screens/ComposeScreen.js +114 -64
  78. package/lib/module/components/screens/ComposeScreen.js.map +1 -1
  79. package/lib/module/components/screens/HomeScreen.js +224 -121
  80. package/lib/module/components/screens/HomeScreen.js.map +1 -1
  81. package/lib/module/components/screens/LanguageScreen.js +147 -0
  82. package/lib/module/components/screens/LanguageScreen.js.map +1 -0
  83. package/lib/module/components/screens/ThreadScreen.js +243 -115
  84. package/lib/module/components/screens/ThreadScreen.js.map +1 -1
  85. package/lib/module/i18n/index.js +56 -0
  86. package/lib/module/i18n/index.js.map +1 -0
  87. package/lib/module/i18n/languages.js +88 -0
  88. package/lib/module/i18n/languages.js.map +1 -0
  89. package/lib/module/i18n/strings/de.js +68 -0
  90. package/lib/module/i18n/strings/de.js.map +1 -0
  91. package/lib/module/i18n/strings/en.js +84 -0
  92. package/lib/module/i18n/strings/en.js.map +1 -0
  93. package/lib/module/i18n/strings/es.js +68 -0
  94. package/lib/module/i18n/strings/es.js.map +1 -0
  95. package/lib/module/i18n/strings/fr.js +68 -0
  96. package/lib/module/i18n/strings/fr.js.map +1 -0
  97. package/lib/module/i18n/strings/hi.js +68 -0
  98. package/lib/module/i18n/strings/hi.js.map +1 -0
  99. package/lib/module/i18n/strings/it.js +68 -0
  100. package/lib/module/i18n/strings/it.js.map +1 -0
  101. package/lib/module/i18n/strings/ja.js +68 -0
  102. package/lib/module/i18n/strings/ja.js.map +1 -0
  103. package/lib/module/i18n/strings/ko.js +68 -0
  104. package/lib/module/i18n/strings/ko.js.map +1 -0
  105. package/lib/module/i18n/strings/nl.js +68 -0
  106. package/lib/module/i18n/strings/nl.js.map +1 -0
  107. package/lib/module/i18n/strings/pl.js +68 -0
  108. package/lib/module/i18n/strings/pl.js.map +1 -0
  109. package/lib/module/i18n/strings/pt.js +68 -0
  110. package/lib/module/i18n/strings/pt.js.map +1 -0
  111. package/lib/module/i18n/strings/ru.js +68 -0
  112. package/lib/module/i18n/strings/ru.js.map +1 -0
  113. package/lib/module/i18n/strings/tr.js +68 -0
  114. package/lib/module/i18n/strings/tr.js.map +1 -0
  115. package/lib/module/i18n/strings/zh.js +68 -0
  116. package/lib/module/i18n/strings/zh.js.map +1 -0
  117. package/lib/module/index.js +1 -0
  118. package/lib/module/index.js.map +1 -1
  119. package/lib/module/theme.js +135 -16
  120. package/lib/module/theme.js.map +1 -1
  121. package/lib/module/types.js +18 -0
  122. package/lib/module/types.js.map +1 -1
  123. package/lib/module/unread.js +83 -0
  124. package/lib/module/unread.js.map +1 -0
  125. package/lib/module/useSupportThreads.js +291 -0
  126. package/lib/module/useSupportThreads.js.map +1 -0
  127. package/lib/module/utils.js +55 -10
  128. package/lib/module/utils.js.map +1 -1
  129. package/lib/typescript/api.d.ts +9 -0
  130. package/lib/typescript/api.d.ts.map +1 -1
  131. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  132. package/lib/typescript/components/LauncherButton.d.ts +14 -0
  133. package/lib/typescript/components/LauncherButton.d.ts.map +1 -0
  134. package/lib/typescript/components/SupportButton.d.ts +3 -3
  135. package/lib/typescript/components/SupportButton.d.ts.map +1 -1
  136. package/lib/typescript/components/icons.d.ts +18 -2
  137. package/lib/typescript/components/icons.d.ts.map +1 -1
  138. package/lib/typescript/components/primitives.d.ts +42 -7
  139. package/lib/typescript/components/primitives.d.ts.map +1 -1
  140. package/lib/typescript/components/screens/ComposeScreen.d.ts +3 -1
  141. package/lib/typescript/components/screens/ComposeScreen.d.ts.map +1 -1
  142. package/lib/typescript/components/screens/HomeScreen.d.ts +8 -2
  143. package/lib/typescript/components/screens/HomeScreen.d.ts.map +1 -1
  144. package/lib/typescript/components/screens/LanguageScreen.d.ts +30 -0
  145. package/lib/typescript/components/screens/LanguageScreen.d.ts.map +1 -0
  146. package/lib/typescript/components/screens/ThreadScreen.d.ts +3 -1
  147. package/lib/typescript/components/screens/ThreadScreen.d.ts.map +1 -1
  148. package/lib/typescript/i18n/index.d.ts +15 -0
  149. package/lib/typescript/i18n/index.d.ts.map +1 -0
  150. package/lib/typescript/i18n/languages.d.ts +36 -0
  151. package/lib/typescript/i18n/languages.d.ts.map +1 -0
  152. package/lib/typescript/i18n/strings/de.d.ts +3 -0
  153. package/lib/typescript/i18n/strings/de.d.ts.map +1 -0
  154. package/lib/typescript/i18n/strings/en.d.ts +83 -0
  155. package/lib/typescript/i18n/strings/en.d.ts.map +1 -0
  156. package/lib/typescript/i18n/strings/es.d.ts +3 -0
  157. package/lib/typescript/i18n/strings/es.d.ts.map +1 -0
  158. package/lib/typescript/i18n/strings/fr.d.ts +3 -0
  159. package/lib/typescript/i18n/strings/fr.d.ts.map +1 -0
  160. package/lib/typescript/i18n/strings/hi.d.ts +3 -0
  161. package/lib/typescript/i18n/strings/hi.d.ts.map +1 -0
  162. package/lib/typescript/i18n/strings/it.d.ts +3 -0
  163. package/lib/typescript/i18n/strings/it.d.ts.map +1 -0
  164. package/lib/typescript/i18n/strings/ja.d.ts +3 -0
  165. package/lib/typescript/i18n/strings/ja.d.ts.map +1 -0
  166. package/lib/typescript/i18n/strings/ko.d.ts +3 -0
  167. package/lib/typescript/i18n/strings/ko.d.ts.map +1 -0
  168. package/lib/typescript/i18n/strings/nl.d.ts +3 -0
  169. package/lib/typescript/i18n/strings/nl.d.ts.map +1 -0
  170. package/lib/typescript/i18n/strings/pl.d.ts +3 -0
  171. package/lib/typescript/i18n/strings/pl.d.ts.map +1 -0
  172. package/lib/typescript/i18n/strings/pt.d.ts +3 -0
  173. package/lib/typescript/i18n/strings/pt.d.ts.map +1 -0
  174. package/lib/typescript/i18n/strings/ru.d.ts +3 -0
  175. package/lib/typescript/i18n/strings/ru.d.ts.map +1 -0
  176. package/lib/typescript/i18n/strings/tr.d.ts +3 -0
  177. package/lib/typescript/i18n/strings/tr.d.ts.map +1 -0
  178. package/lib/typescript/i18n/strings/zh.d.ts +3 -0
  179. package/lib/typescript/i18n/strings/zh.d.ts.map +1 -0
  180. package/lib/typescript/index.d.ts +2 -1
  181. package/lib/typescript/index.d.ts.map +1 -1
  182. package/lib/typescript/theme.d.ts +44 -3
  183. package/lib/typescript/theme.d.ts.map +1 -1
  184. package/lib/typescript/types.d.ts +54 -2
  185. package/lib/typescript/types.d.ts.map +1 -1
  186. package/lib/typescript/unread.d.ts +22 -0
  187. package/lib/typescript/unread.d.ts.map +1 -0
  188. package/lib/typescript/useSupportThreads.d.ts +38 -0
  189. package/lib/typescript/useSupportThreads.d.ts.map +1 -0
  190. package/lib/typescript/utils.d.ts +8 -2
  191. package/lib/typescript/utils.d.ts.map +1 -1
  192. package/package.json +3 -3
  193. package/src/api.ts +24 -1
  194. package/src/components/BottomSheet.tsx +61 -43
  195. package/src/components/LauncherButton.tsx +217 -0
  196. package/src/components/SupportButton.tsx +195 -210
  197. package/src/components/icons.tsx +113 -19
  198. package/src/components/primitives.tsx +230 -39
  199. package/src/components/screens/ComposeScreen.tsx +129 -63
  200. package/src/components/screens/HomeScreen.tsx +230 -120
  201. package/src/components/screens/LanguageScreen.tsx +172 -0
  202. package/src/components/screens/ThreadScreen.tsx +319 -122
  203. package/src/i18n/index.ts +81 -0
  204. package/src/i18n/languages.ts +106 -0
  205. package/src/i18n/strings/de.ts +78 -0
  206. package/src/i18n/strings/en.ts +94 -0
  207. package/src/i18n/strings/es.ts +77 -0
  208. package/src/i18n/strings/fr.ts +78 -0
  209. package/src/i18n/strings/hi.ts +77 -0
  210. package/src/i18n/strings/it.ts +77 -0
  211. package/src/i18n/strings/ja.ts +77 -0
  212. package/src/i18n/strings/ko.ts +76 -0
  213. package/src/i18n/strings/nl.ts +77 -0
  214. package/src/i18n/strings/pl.ts +77 -0
  215. package/src/i18n/strings/pt.ts +77 -0
  216. package/src/i18n/strings/ru.ts +77 -0
  217. package/src/i18n/strings/tr.ts +77 -0
  218. package/src/i18n/strings/zh.ts +75 -0
  219. package/src/index.tsx +9 -0
  220. package/src/theme.ts +165 -18
  221. package/src/types.ts +56 -2
  222. package/src/unread.ts +91 -0
  223. package/src/useSupportThreads.ts +392 -0
  224. package/src/utils.ts +48 -10
@@ -11,8 +11,130 @@ var _utils = require("../../utils");
11
11
  var _icons = require("../icons");
12
12
  var _primitives = require("../primitives");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
+ /** Consecutive messages from one sender inside this window form a group. */const GROUP_WINDOW_MS = 5 * 60 * 1000;
15
+ /** The counter only appears once the limit is actually in play. */
16
+ const COUNTER_VISIBLE_FROM = _types.USER_MESSAGE_MAX - 60;
17
+ function buildRows(messages, unreadCount, strings) {
18
+ // Unread messages are always the newest admin ones, so the divider goes
19
+ // above the Nth-from-last admin message.
20
+ let remaining = unreadCount;
21
+ let firstUnreadId = null;
22
+ for (let i = messages.length - 1; i >= 0 && remaining > 0; i -= 1) {
23
+ const candidate = messages[i];
24
+ if (candidate === undefined || candidate.sender !== 'admin') continue;
25
+ remaining -= 1;
26
+ firstUnreadId = candidate.id;
27
+ }
28
+ return messages.map((message, i) => {
29
+ const previous = i > 0 ? messages[i - 1] ?? null : null;
30
+ const next = i < messages.length - 1 ? messages[i + 1] ?? null : null;
31
+ // Grouped by sender alone. Two replies from two different admins are two
32
+ // messages from "Support" as far as this side is concerned, so breaking
33
+ // the group between them would be a visible seam with no visible cause.
34
+ const withinGroup = (a, b) => a !== null && a.sender === b.sender && Math.abs(Date.parse(b.created_at) - Date.parse(a.created_at)) < GROUP_WINDOW_MS;
35
+ const day = previous === null || !(0, _utils.isSameDay)(previous.created_at, message.created_at) ? (0, _utils.dayLabel)(message.created_at, strings) : null;
36
+ const startsUnread = message.id === firstUnreadId;
37
+ return {
38
+ message,
39
+ // A separator always breaks a group.
40
+ firstInGroup: day !== null || startsUnread || !withinGroup(previous, message),
41
+ lastInGroup: next === null || next.id === firstUnreadId || !(0, _utils.isSameDay)(next.created_at, message.created_at) || !withinGroup(next, message),
42
+ day,
43
+ startsUnread
44
+ };
45
+ });
46
+ }
47
+ function Separator({
48
+ label,
49
+ theme,
50
+ tone = 'muted'
51
+ }) {
52
+ const color = tone === 'accent' ? theme.colors.accent : theme.colors.textTertiary;
53
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
54
+ style: {
55
+ flexDirection: 'row',
56
+ alignItems: 'center',
57
+ gap: 10,
58
+ paddingVertical: 6
59
+ },
60
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
61
+ style: {
62
+ flex: 1,
63
+ height: 1,
64
+ backgroundColor: tone === 'accent' ? theme.colors.accentMuted : theme.colors.border
65
+ }
66
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
67
+ style: {
68
+ fontSize: 11,
69
+ fontWeight: '600',
70
+ letterSpacing: 0.3,
71
+ color
72
+ },
73
+ children: label
74
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
75
+ style: {
76
+ flex: 1,
77
+ height: 1,
78
+ backgroundColor: tone === 'accent' ? theme.colors.accentMuted : theme.colors.border
79
+ }
80
+ })]
81
+ });
82
+ }
83
+ function MessageBubble({
84
+ row,
85
+ theme,
86
+ strings
87
+ }) {
88
+ const {
89
+ message,
90
+ firstInGroup,
91
+ lastInGroup
92
+ } = row;
93
+ const own = message.sender === 'user';
94
+ const round = theme.radii.bubble;
95
+ const tight = theme.radii.bubbleTail;
96
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
97
+ style: {
98
+ maxWidth: '86%',
99
+ alignSelf: own ? 'flex-end' : 'flex-start',
100
+ alignItems: own ? 'flex-end' : 'flex-start',
101
+ marginTop: firstInGroup ? 10 : 2,
102
+ gap: 4
103
+ },
104
+ children: [!own && firstInGroup && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
105
+ style: [_primitives.textStyles.meta(theme), {
106
+ paddingHorizontal: 4
107
+ }],
108
+ children: strings.t('thread.support')
109
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
110
+ style: {
111
+ paddingHorizontal: 14,
112
+ paddingVertical: 10,
113
+ backgroundColor: own ? theme.colors.accent : theme.colors.surface,
114
+ borderWidth: own ? 0 : 1,
115
+ borderColor: theme.colors.border,
116
+ borderTopLeftRadius: own || firstInGroup ? round : tight,
117
+ borderBottomLeftRadius: own || lastInGroup ? round : tight,
118
+ borderTopRightRadius: !own || firstInGroup ? round : tight,
119
+ borderBottomRightRadius: !own || lastInGroup ? round : tight
120
+ },
121
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
122
+ style: [_primitives.textStyles.body(theme), own && {
123
+ color: theme.colors.accentForeground
124
+ }],
125
+ children: message.body
126
+ })
127
+ }), lastInGroup && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
128
+ style: [_primitives.textStyles.meta(theme), {
129
+ paddingHorizontal: 4
130
+ }],
131
+ children: message.translation_pending ? strings.t('thread.translating') : (0, _utils.formatTime)(message.created_at, strings)
132
+ })]
133
+ });
134
+ }
14
135
  function ThreadScreen({
15
136
  theme,
137
+ strings,
16
138
  thread,
17
139
  onBack,
18
140
  onSend
@@ -21,9 +143,14 @@ function ThreadScreen({
21
143
  const [sending, setSending] = (0, _react.useState)(false);
22
144
  const [failedMessage, setFailedMessage] = (0, _react.useState)(null);
23
145
  const scrollRef = (0, _react.useRef)(null);
146
+ // Captured once: opening the thread marks it read within a tick, but the
147
+ // "New" divider should stay put while the user is reading.
148
+ const [unreadOnOpen] = (0, _react.useState)(thread.unread_count);
24
149
  const resolved = thread.status === 'resolved';
25
150
  const trimmed = draft.trim();
26
151
  const valid = trimmed.length >= _types.USER_MESSAGE_MIN && trimmed.length <= _types.USER_MESSAGE_MAX;
152
+ const tooShort = trimmed.length > 0 && trimmed.length < _types.USER_MESSAGE_MIN;
153
+ const rows = (0, _react.useMemo)(() => buildRows(thread.messages, unreadOnOpen, strings), [thread.messages, unreadOnOpen, strings]);
27
154
  (0, _react.useEffect)(() => {
28
155
  scrollRef.current?.scrollToEnd({
29
156
  animated: false
@@ -46,20 +173,17 @@ function ThreadScreen({
46
173
  style: {
47
174
  flexDirection: 'row',
48
175
  alignItems: 'center',
49
- gap: 8,
176
+ gap: 10,
50
177
  paddingHorizontal: 12,
51
- paddingBottom: 10,
178
+ paddingBottom: 12,
52
179
  borderBottomWidth: 1,
53
180
  borderBottomColor: theme.colors.border
54
181
  },
55
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.PressableRow, {
182
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.IconButton, {
56
183
  onPress: onBack,
57
184
  theme: theme,
58
- accessibilityLabel: "Back",
59
- style: {
60
- padding: 6,
61
- borderRadius: theme.radii.control
62
- },
185
+ accessibilityLabel: strings.t('compose.back'),
186
+ size: 32,
63
187
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Chevron, {
64
188
  color: theme.colors.textSecondary,
65
189
  direction: "left",
@@ -67,15 +191,17 @@ function ThreadScreen({
67
191
  })
68
192
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.TypeChipView, {
69
193
  type: thread.type,
70
- theme: theme
194
+ theme: theme,
195
+ strings: strings
71
196
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.StatusIndicator, {
72
197
  status: thread.status,
73
- theme: theme
198
+ theme: theme,
199
+ strings: strings
74
200
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
75
201
  style: [_primitives.textStyles.meta(theme), {
76
202
  marginLeft: 'auto'
77
203
  }],
78
- children: (0, _utils.relativeTime)(thread.created_at)
204
+ children: (0, _utils.relativeTime)(thread.created_at, strings)
79
205
  })]
80
206
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
81
207
  ref: scrollRef,
@@ -83,127 +209,127 @@ function ThreadScreen({
83
209
  flex: 1
84
210
  },
85
211
  contentContainerStyle: {
86
- padding: 16,
87
- gap: 10
212
+ paddingHorizontal: 16,
213
+ paddingVertical: 12
88
214
  },
89
- children: [thread.messages.map(m => {
90
- const own = m.sender === 'user';
91
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
92
- style: {
93
- maxWidth: '85%',
94
- alignSelf: own ? 'flex-end' : 'flex-start',
95
- alignItems: own ? 'flex-end' : 'flex-start',
96
- gap: 3
97
- },
98
- children: [!own && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
99
- style: _primitives.textStyles.meta(theme),
100
- children: m.admin_name ?? 'Support'
101
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
102
- style: {
103
- borderRadius: theme.radii.card,
104
- paddingHorizontal: 12,
105
- paddingVertical: 8,
106
- backgroundColor: own ? theme.colors.accentMuted : theme.colors.surface,
107
- borderWidth: own ? 0 : 1,
108
- borderColor: theme.colors.border
109
- },
110
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
111
- style: _primitives.textStyles.body(theme),
112
- children: m.body
113
- })
114
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
115
- style: _primitives.textStyles.meta(theme),
116
- children: (0, _utils.relativeTime)(m.created_at)
117
- })]
118
- }, m.id);
119
- }), resolved && thread.resolved_at && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
215
+ keyboardShouldPersistTaps: "handled",
216
+ onContentSizeChange: () => scrollRef.current?.scrollToEnd({
217
+ animated: false
218
+ }),
219
+ children: [rows.map(row => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
220
+ children: [row.day !== null && /*#__PURE__*/(0, _jsxRuntime.jsx)(Separator, {
221
+ label: row.day,
222
+ theme: theme
223
+ }), row.startsUnread && /*#__PURE__*/(0, _jsxRuntime.jsx)(Separator, {
224
+ label: strings.t('thread.new'),
225
+ theme: theme,
226
+ tone: "accent"
227
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(MessageBubble, {
228
+ row: row,
229
+ theme: theme,
230
+ strings: strings
231
+ })]
232
+ }, row.message.id)), resolved && thread.resolved_at !== null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
120
233
  style: {
121
- flexDirection: 'row',
122
- alignItems: 'center',
123
- gap: 10,
124
- marginVertical: 6
234
+ marginTop: 16
125
235
  },
126
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
127
- style: {
128
- flex: 1,
129
- height: 1,
130
- backgroundColor: theme.colors.border
131
- }
132
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
133
- style: _primitives.textStyles.meta(theme),
134
- children: ["Resolved by ", thread.resolved_by_name ?? 'support', " \xB7", ' ', (0, _utils.formatDate)(thread.resolved_at)]
135
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
136
- style: {
137
- flex: 1,
138
- height: 1,
139
- backgroundColor: theme.colors.border
140
- }
141
- })]
236
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Separator, {
237
+ label: strings.t('thread.resolvedAt', {
238
+ date: (0, _utils.formatDate)(thread.resolved_at, strings)
239
+ }),
240
+ theme: theme
241
+ })
142
242
  })]
143
243
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
144
244
  style: {
145
245
  borderTopWidth: 1,
146
246
  borderTopColor: theme.colors.border,
147
247
  paddingHorizontal: 16,
148
- paddingTop: 10
248
+ paddingTop: 10,
249
+ paddingBottom: 4
149
250
  },
150
- children: resolved ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
151
- style: [_primitives.textStyles.meta(theme), {
152
- textAlign: 'center',
153
- paddingVertical: 8
154
- }],
155
- children: "This thread is resolved and read-only"
251
+ children: resolved ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
252
+ style: {
253
+ alignItems: 'center',
254
+ paddingVertical: 10,
255
+ borderRadius: theme.radii.control,
256
+ backgroundColor: theme.colors.surface
257
+ },
258
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
259
+ style: _primitives.textStyles.secondary(theme),
260
+ children: strings.t('thread.readOnly')
261
+ })
156
262
  }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
157
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
158
- value: draft,
159
- onChangeText: v => {
160
- setDraft(v);
161
- setFailedMessage(null);
162
- },
163
- multiline: true,
164
- placeholder: "Reply",
165
- placeholderTextColor: theme.colors.textTertiary,
263
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
166
264
  style: {
167
- minHeight: 60,
168
- maxHeight: 120,
169
- borderWidth: 1,
170
- borderColor: theme.colors.border,
171
- borderRadius: theme.radii.control,
172
- backgroundColor: theme.colors.surface,
173
- color: theme.colors.textPrimary,
174
- fontSize: 14,
175
- lineHeight: 20,
176
- padding: 10,
177
- textAlignVertical: 'top'
178
- }
179
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
265
+ flexDirection: 'row',
266
+ alignItems: 'flex-end',
267
+ gap: 10
268
+ },
269
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
270
+ value: draft,
271
+ onChangeText: v => {
272
+ setDraft(v);
273
+ setFailedMessage(null);
274
+ },
275
+ multiline: true,
276
+ editable: !sending,
277
+ placeholder: strings.t('thread.placeholder'),
278
+ placeholderTextColor: theme.colors.textTertiary,
279
+ style: {
280
+ flex: 1,
281
+ minHeight: 44,
282
+ maxHeight: 120,
283
+ borderWidth: 1,
284
+ borderColor: theme.colors.border,
285
+ borderRadius: theme.radii.cardLg,
286
+ backgroundColor: theme.colors.surface,
287
+ color: theme.colors.textPrimary,
288
+ fontSize: 15,
289
+ lineHeight: 20,
290
+ paddingHorizontal: 14,
291
+ paddingTop: 12,
292
+ paddingBottom: 12,
293
+ textAlignVertical: 'top'
294
+ }
295
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.IconButton, {
296
+ onPress: handleSend,
297
+ theme: theme,
298
+ tone: "accent",
299
+ size: 44,
300
+ disabled: !valid || sending,
301
+ accessibilityLabel: strings.t(sending ? 'thread.sendingA11y' : 'thread.sendA11y'),
302
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.ArrowUpIcon, {
303
+ color: theme.colors.accentForeground,
304
+ size: 19
305
+ })
306
+ })]
307
+ }), (tooShort || draft.length >= COUNTER_VISIBLE_FROM || failedMessage !== null) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
180
308
  style: {
181
309
  flexDirection: 'row',
182
310
  alignItems: 'center',
183
- gap: 12,
184
- paddingVertical: 8
311
+ gap: 10,
312
+ paddingTop: 8,
313
+ paddingHorizontal: 4
185
314
  },
186
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
187
- style: [_primitives.textStyles.meta(theme), draft.length > _types.USER_MESSAGE_MAX && {
188
- color: theme.colors.statusDanger
189
- }],
190
- children: [draft.length, "/", _types.USER_MESSAGE_MAX]
191
- }), failedMessage !== null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
315
+ children: [failedMessage !== null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
192
316
  style: {
193
- fontSize: 11,
317
+ fontSize: 12,
194
318
  color: theme.colors.statusDanger
195
319
  },
196
320
  children: failedMessage
197
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
198
- style: {
199
- marginLeft: 'auto'
200
- },
201
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.PrimaryButton, {
202
- label: sending ? 'Sending…' : 'Send',
203
- onPress: handleSend,
204
- disabled: !valid || sending,
205
- theme: theme
321
+ }) : tooShort ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
322
+ style: _primitives.textStyles.meta(theme),
323
+ children: strings.t('compose.minChars', {
324
+ count: _types.USER_MESSAGE_MIN
206
325
  })
326
+ }) : null, draft.length >= COUNTER_VISIBLE_FROM && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
327
+ style: [_primitives.textStyles.meta(theme), {
328
+ marginLeft: 'auto'
329
+ }, draft.length > _types.USER_MESSAGE_MAX && {
330
+ color: theme.colors.statusDanger
331
+ }],
332
+ children: [draft.length, "/", _types.USER_MESSAGE_MAX]
207
333
  })]
208
334
  })]
209
335
  })
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_types","_utils","_icons","_primitives","_jsxRuntime","ThreadScreen","theme","thread","onBack","onSend","draft","setDraft","useState","sending","setSending","failedMessage","setFailedMessage","scrollRef","useRef","resolved","status","trimmed","trim","valid","length","USER_MESSAGE_MIN","USER_MESSAGE_MAX","useEffect","current","scrollToEnd","animated","messages","handleSend","errorMessage","jsxs","KeyboardAvoidingView","style","flex","behavior","Platform","OS","undefined","children","View","flexDirection","alignItems","gap","paddingHorizontal","paddingBottom","borderBottomWidth","borderBottomColor","colors","border","jsx","PressableRow","onPress","accessibilityLabel","padding","borderRadius","radii","control","Chevron","color","textSecondary","direction","size","TypeChipView","type","StatusIndicator","Text","textStyles","meta","marginLeft","relativeTime","created_at","ScrollView","ref","contentContainerStyle","map","m","own","sender","maxWidth","alignSelf","admin_name","card","paddingVertical","backgroundColor","accentMuted","surface","borderWidth","borderColor","body","id","resolved_at","marginVertical","height","resolved_by_name","formatDate","borderTopWidth","borderTopColor","paddingTop","textAlign","Fragment","TextInput","value","onChangeText","v","multiline","placeholder","placeholderTextColor","textTertiary","minHeight","maxHeight","textPrimary","fontSize","lineHeight","textAlignVertical","statusDanger","PrimaryButton","label","disabled"],"sourceRoot":"../../../../src","sources":["components/screens/ThreadScreen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_types","_utils","_icons","_primitives","_jsxRuntime","GROUP_WINDOW_MS","COUNTER_VISIBLE_FROM","USER_MESSAGE_MAX","buildRows","messages","unreadCount","strings","remaining","firstUnreadId","i","length","candidate","undefined","sender","id","map","message","previous","next","withinGroup","a","b","Math","abs","Date","parse","created_at","day","isSameDay","dayLabel","startsUnread","firstInGroup","lastInGroup","Separator","label","theme","tone","color","colors","accent","textTertiary","jsxs","View","style","flexDirection","alignItems","gap","paddingVertical","children","jsx","flex","height","backgroundColor","accentMuted","border","Text","fontSize","fontWeight","letterSpacing","MessageBubble","row","own","round","radii","bubble","tight","bubbleTail","maxWidth","alignSelf","marginTop","textStyles","meta","paddingHorizontal","t","surface","borderWidth","borderColor","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","body","accentForeground","translation_pending","formatTime","ThreadScreen","thread","onBack","onSend","draft","setDraft","useState","sending","setSending","failedMessage","setFailedMessage","scrollRef","useRef","unreadOnOpen","unread_count","resolved","status","trimmed","trim","valid","USER_MESSAGE_MIN","tooShort","rows","useMemo","useEffect","current","scrollToEnd","animated","handleSend","errorMessage","KeyboardAvoidingView","behavior","Platform","OS","paddingBottom","borderBottomWidth","borderBottomColor","IconButton","onPress","accessibilityLabel","size","Chevron","textSecondary","direction","TypeChipView","type","StatusIndicator","marginLeft","relativeTime","ScrollView","ref","contentContainerStyle","keyboardShouldPersistTaps","onContentSizeChange","resolved_at","date","formatDate","borderTopWidth","borderTopColor","paddingTop","borderRadius","control","secondary","Fragment","TextInput","value","onChangeText","v","multiline","editable","placeholder","placeholderTextColor","minHeight","maxHeight","cardLg","textPrimary","lineHeight","textAlignVertical","disabled","ArrowUpIcon","statusDanger","count"],"sourceRoot":"../../../../src","sources":["components/screens/ThreadScreen.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAWA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAKuB,IAAAM,WAAA,GAAAN,OAAA;AAEvB,4EACA,MAAMO,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI;AACrC;AACA,MAAMC,oBAAoB,GAAGC,uBAAgB,GAAG,EAAE;AAYlD,SAASC,SAASA,CAChBC,QAAyB,EACzBC,WAAmB,EACnBC,OAAmB,EACZ;EACP;EACA;EACA,IAAIC,SAAS,GAAGF,WAAW;EAC3B,IAAIG,aAA4B,GAAG,IAAI;EACvC,KAAK,IAAIC,CAAC,GAAGL,QAAQ,CAACM,MAAM,GAAG,CAAC,EAAED,CAAC,IAAI,CAAC,IAAIF,SAAS,GAAG,CAAC,EAAEE,CAAC,IAAI,CAAC,EAAE;IACjE,MAAME,SAAS,GAAGP,QAAQ,CAACK,CAAC,CAAC;IAC7B,IAAIE,SAAS,KAAKC,SAAS,IAAID,SAAS,CAACE,MAAM,KAAK,OAAO,EAAE;IAC7DN,SAAS,IAAI,CAAC;IACdC,aAAa,GAAGG,SAAS,CAACG,EAAE;EAC9B;EAEA,OAAOV,QAAQ,CAACW,GAAG,CAAC,CAACC,OAAO,EAAEP,CAAC,KAAK;IAClC,MAAMQ,QAAQ,GAAGR,CAAC,GAAG,CAAC,GAAIL,QAAQ,CAACK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAI,IAAI;IACzD,MAAMS,IAAI,GAAGT,CAAC,GAAGL,QAAQ,CAACM,MAAM,GAAG,CAAC,GAAIN,QAAQ,CAACK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAI,IAAI;IACvE;IACA;IACA;IACA,MAAMU,WAAW,GAAGA,CAACC,CAAuB,EAAEC,CAAgB,KAC5DD,CAAC,KAAK,IAAI,IACVA,CAAC,CAACP,MAAM,KAAKQ,CAAC,CAACR,MAAM,IACrBS,IAAI,CAACC,GAAG,CAACC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAACK,UAAU,CAAC,GAAGF,IAAI,CAACC,KAAK,CAACL,CAAC,CAACM,UAAU,CAAC,CAAC,GAC3D1B,eAAe;IAEnB,MAAM2B,GAAG,GACPV,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAAW,gBAAS,EAACX,QAAQ,CAACS,UAAU,EAAEV,OAAO,CAACU,UAAU,CAAC,GACpE,IAAAG,eAAQ,EAACb,OAAO,CAACU,UAAU,EAAEpB,OAAO,CAAC,GACrC,IAAI;IACV,MAAMwB,YAAY,GAAGd,OAAO,CAACF,EAAE,KAAKN,aAAa;IAEjD,OAAO;MACLQ,OAAO;MACP;MACAe,YAAY,EAAEJ,GAAG,KAAK,IAAI,IAAIG,YAAY,IAAI,CAACX,WAAW,CAACF,QAAQ,EAAED,OAAO,CAAC;MAC7EgB,WAAW,EACTd,IAAI,KAAK,IAAI,IACbA,IAAI,CAACJ,EAAE,KAAKN,aAAa,IACzB,CAAC,IAAAoB,gBAAS,EAACV,IAAI,CAACQ,UAAU,EAAEV,OAAO,CAACU,UAAU,CAAC,IAC/C,CAACP,WAAW,CAACD,IAAI,EAAEF,OAAO,CAAC;MAC7BW,GAAG;MACHG;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,SAASG,SAASA,CAAC;EACjBC,KAAK;EACLC,KAAK;EACLC,IAAI,GAAG;AAKT,CAAC,EAAE;EACD,MAAMC,KAAK,GACTD,IAAI,KAAK,QAAQ,GAAGD,KAAK,CAACG,MAAM,CAACC,MAAM,GAAGJ,KAAK,CAACG,MAAM,CAACE,YAAY;EACrE,oBACE,IAAAzC,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAgD,IAAI;IACHC,KAAK,EAAE;MACLC,aAAa,EAAE,KAAK;MACpBC,UAAU,EAAE,QAAQ;MACpBC,GAAG,EAAE,EAAE;MACPC,eAAe,EAAE;IACnB,CAAE;IAAAC,QAAA,gBAEF,IAAAjD,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAAgD,IAAI;MACHC,KAAK,EAAE;QACLO,IAAI,EAAE,CAAC;QACPC,MAAM,EAAE,CAAC;QACTC,eAAe,EACbhB,IAAI,KAAK,QAAQ,GAAGD,KAAK,CAACG,MAAM,CAACe,WAAW,GAAGlB,KAAK,CAACG,MAAM,CAACgB;MAChE;IAAE,CACH,CAAC,eACF,IAAAvD,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;MACHZ,KAAK,EAAE;QACLa,QAAQ,EAAE,EAAE;QACZC,UAAU,EAAE,KAAK;QACjBC,aAAa,EAAE,GAAG;QAClBrB;MACF,CAAE;MAAAW,QAAA,EAEDd;IAAK,CACF,CAAC,eACP,IAAAnC,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAAgD,IAAI;MACHC,KAAK,EAAE;QACLO,IAAI,EAAE,CAAC;QACPC,MAAM,EAAE,CAAC;QACTC,eAAe,EACbhB,IAAI,KAAK,QAAQ,GAAGD,KAAK,CAACG,MAAM,CAACe,WAAW,GAAGlB,KAAK,CAACG,MAAM,CAACgB;MAChE;IAAE,CACH,CAAC;EAAA,CACE,CAAC;AAEX;AAEA,SAASK,aAAaA,CAAC;EACrBC,GAAG;EACHzB,KAAK;EACL7B;AAKF,CAAC,EAAE;EACD,MAAM;IAAEU,OAAO;IAAEe,YAAY;IAAEC;EAAY,CAAC,GAAG4B,GAAG;EAClD,MAAMC,GAAG,GAAG7C,OAAO,CAACH,MAAM,KAAK,MAAM;EACrC,MAAMiD,KAAK,GAAG3B,KAAK,CAAC4B,KAAK,CAACC,MAAM;EAChC,MAAMC,KAAK,GAAG9B,KAAK,CAAC4B,KAAK,CAACG,UAAU;EAEpC,oBACE,IAAAnE,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAgD,IAAI;IACHC,KAAK,EAAE;MACLwB,QAAQ,EAAE,KAAK;MACfC,SAAS,EAAEP,GAAG,GAAG,UAAU,GAAG,YAAY;MAC1ChB,UAAU,EAAEgB,GAAG,GAAG,UAAU,GAAG,YAAY;MAC3CQ,SAAS,EAAEtC,YAAY,GAAG,EAAE,GAAG,CAAC;MAChCe,GAAG,EAAE;IACP,CAAE;IAAAE,QAAA,GAED,CAACa,GAAG,IAAI9B,YAAY,iBACnB,IAAAhC,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;MAACZ,KAAK,EAAE,CAAC2B,sBAAU,CAACC,IAAI,CAACpC,KAAK,CAAC,EAAE;QAAEqC,iBAAiB,EAAE;MAAE,CAAC,CAAE;MAAAxB,QAAA,EAC7D1C,OAAO,CAACmE,CAAC,CAAC,gBAAgB;IAAC,CACxB,CACP,eACD,IAAA1E,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAAgD,IAAI;MACHC,KAAK,EAAE;QACL6B,iBAAiB,EAAE,EAAE;QACrBzB,eAAe,EAAE,EAAE;QACnBK,eAAe,EAAES,GAAG,GAAG1B,KAAK,CAACG,MAAM,CAACC,MAAM,GAAGJ,KAAK,CAACG,MAAM,CAACoC,OAAO;QACjEC,WAAW,EAAEd,GAAG,GAAG,CAAC,GAAG,CAAC;QACxBe,WAAW,EAAEzC,KAAK,CAACG,MAAM,CAACgB,MAAM;QAChCuB,mBAAmB,EAAEhB,GAAG,IAAI9B,YAAY,GAAG+B,KAAK,GAAGG,KAAK;QACxDa,sBAAsB,EAAEjB,GAAG,IAAI7B,WAAW,GAAG8B,KAAK,GAAGG,KAAK;QAC1Dc,oBAAoB,EAAE,CAAClB,GAAG,IAAI9B,YAAY,GAAG+B,KAAK,GAAGG,KAAK;QAC1De,uBAAuB,EAAE,CAACnB,GAAG,IAAI7B,WAAW,GAAG8B,KAAK,GAAGG;MACzD,CAAE;MAAAjB,QAAA,eAEF,IAAAjD,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;QACHZ,KAAK,EAAE,CACL2B,sBAAU,CAACW,IAAI,CAAC9C,KAAK,CAAC,EACtB0B,GAAG,IAAI;UAAExB,KAAK,EAAEF,KAAK,CAACG,MAAM,CAAC4C;QAAiB,CAAC,CAC/C;QAAAlC,QAAA,EAEDhC,OAAO,CAACiE;MAAI,CACT;IAAC,CACH,CAAC,EACNjD,WAAW,iBACV,IAAAjC,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;MAACZ,KAAK,EAAE,CAAC2B,sBAAU,CAACC,IAAI,CAACpC,KAAK,CAAC,EAAE;QAAEqC,iBAAiB,EAAE;MAAE,CAAC,CAAE;MAAAxB,QAAA,EAG7DhC,OAAO,CAACmE,mBAAmB,GACxB7E,OAAO,CAACmE,CAAC,CAAC,oBAAoB,CAAC,GAC/B,IAAAW,iBAAU,EAACpE,OAAO,CAACU,UAAU,EAAEpB,OAAO;IAAC,CACvC,CACP;EAAA,CACG,CAAC;AAEX;AAEO,SAAS+E,YAAYA,CAAC;EAC3BlD,KAAK;EACL7B,OAAO;EACPgF,MAAM;EACNC,MAAM;EACNC;AAQF,CAAC,EAAE;EACD,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAC,EAAE,CAAC;EACtC,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAACG,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAJ,eAAQ,EAAgB,IAAI,CAAC;EACvE,MAAMK,SAAS,GAAG,IAAAC,aAAM,EAAa,IAAI,CAAC;EAC1C;EACA;EACA,MAAM,CAACC,YAAY,CAAC,GAAG,IAAAP,eAAQ,EAACL,MAAM,CAACa,YAAY,CAAC;EAEpD,MAAMC,QAAQ,GAAGd,MAAM,CAACe,MAAM,KAAK,UAAU;EAC7C,MAAMC,OAAO,GAAGb,KAAK,CAACc,IAAI,CAAC,CAAC;EAC5B,MAAMC,KAAK,GACTF,OAAO,CAAC5F,MAAM,IAAI+F,uBAAgB,IAAIH,OAAO,CAAC5F,MAAM,IAAIR,uBAAgB;EAC1E,MAAMwG,QAAQ,GAAGJ,OAAO,CAAC5F,MAAM,GAAG,CAAC,IAAI4F,OAAO,CAAC5F,MAAM,GAAG+F,uBAAgB;EAExE,MAAME,IAAI,GAAG,IAAAC,cAAO,EAClB,MAAMzG,SAAS,CAACmF,MAAM,CAAClF,QAAQ,EAAE8F,YAAY,EAAE5F,OAAO,CAAC,EACvD,CAACgF,MAAM,CAAClF,QAAQ,EAAE8F,YAAY,EAAE5F,OAAO,CACzC,CAAC;EAED,IAAAuG,gBAAS,EAAC,MAAM;IACdb,SAAS,CAACc,OAAO,EAAEC,WAAW,CAAC;MAAEC,QAAQ,EAAE;IAAM,CAAC,CAAC;EACrD,CAAC,EAAE,CAAC1B,MAAM,CAAClF,QAAQ,CAACM,MAAM,CAAC,CAAC;EAE5B,eAAeuG,UAAUA,CAAA,EAAG;IAC1B,IAAI,CAACT,KAAK,IAAIZ,OAAO,IAAIQ,QAAQ,EAAE;IACnCP,UAAU,CAAC,IAAI,CAAC;IAChBE,gBAAgB,CAAC,IAAI,CAAC;IACtB,MAAMmB,YAAY,GAAG,MAAM1B,MAAM,CAACc,OAAO,CAAC;IAC1CT,UAAU,CAAC,KAAK,CAAC;IACjB,IAAIqB,YAAY,KAAK,IAAI,EAAExB,QAAQ,CAAC,EAAE,CAAC,CAAC,KACnCK,gBAAgB,CAACmB,YAAY,CAAC;EACrC;EAEA,oBACE,IAAAnH,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAyH,oBAAoB;IACnBxE,KAAK,EAAE;MAAEO,IAAI,EAAE;IAAE,CAAE;IACnBkE,QAAQ,EAAEC,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,SAAS,GAAG1G,SAAU;IAAAoC,QAAA,gBAGxD,IAAAjD,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAgD,IAAI;MACHC,KAAK,EAAE;QACLC,aAAa,EAAE,KAAK;QACpBC,UAAU,EAAE,QAAQ;QACpBC,GAAG,EAAE,EAAE;QACP0B,iBAAiB,EAAE,EAAE;QACrB+C,aAAa,EAAE,EAAE;QACjBC,iBAAiB,EAAE,CAAC;QACpBC,iBAAiB,EAAEtF,KAAK,CAACG,MAAM,CAACgB;MAClC,CAAE;MAAAN,QAAA,gBAEF,IAAAjD,WAAA,CAAAkD,GAAA,EAACnD,WAAA,CAAA4H,UAAU;QACTC,OAAO,EAAEpC,MAAO;QAChBpD,KAAK,EAAEA,KAAM;QACbyF,kBAAkB,EAAEtH,OAAO,CAACmE,CAAC,CAAC,cAAc,CAAE;QAC9CoD,IAAI,EAAE,EAAG;QAAA7E,QAAA,eAET,IAAAjD,WAAA,CAAAkD,GAAA,EAACpD,MAAA,CAAAiI,OAAO;UAACzF,KAAK,EAAEF,KAAK,CAACG,MAAM,CAACyF,aAAc;UAACC,SAAS,EAAC,MAAM;UAACH,IAAI,EAAE;QAAG,CAAE;MAAC,CAC/D,CAAC,eACb,IAAA9H,WAAA,CAAAkD,GAAA,EAACnD,WAAA,CAAAmI,YAAY;QAACC,IAAI,EAAE5C,MAAM,CAAC4C,IAAK;QAAC/F,KAAK,EAAEA,KAAM;QAAC7B,OAAO,EAAEA;MAAQ,CAAE,CAAC,eACnE,IAAAP,WAAA,CAAAkD,GAAA,EAACnD,WAAA,CAAAqI,eAAe;QAAC9B,MAAM,EAAEf,MAAM,CAACe,MAAO;QAAClE,KAAK,EAAEA,KAAM;QAAC7B,OAAO,EAAEA;MAAQ,CAAE,CAAC,eAC1E,IAAAP,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;QAACZ,KAAK,EAAE,CAAC2B,sBAAU,CAACC,IAAI,CAACpC,KAAK,CAAC,EAAE;UAAEiG,UAAU,EAAE;QAAO,CAAC,CAAE;QAAApF,QAAA,EAC3D,IAAAqF,mBAAY,EAAC/C,MAAM,CAAC5D,UAAU,EAAEpB,OAAO;MAAC,CACrC,CAAC;IAAA,CACH,CAAC,eAGP,IAAAP,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAA4I,UAAU;MACTC,GAAG,EAAEvC,SAAU;MACfrD,KAAK,EAAE;QAAEO,IAAI,EAAE;MAAE,CAAE;MACnBsF,qBAAqB,EAAE;QAAEhE,iBAAiB,EAAE,EAAE;QAAEzB,eAAe,EAAE;MAAG,CAAE;MACtE0F,yBAAyB,EAAC,SAAS;MACnCC,mBAAmB,EAAEA,CAAA,KACnB1C,SAAS,CAACc,OAAO,EAAEC,WAAW,CAAC;QAAEC,QAAQ,EAAE;MAAM,CAAC,CACnD;MAAAhE,QAAA,GAEA2D,IAAI,CAAC5F,GAAG,CAAE6C,GAAG,iBACZ,IAAA7D,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAgD,IAAI;QAAAM,QAAA,GACFY,GAAG,CAACjC,GAAG,KAAK,IAAI,iBAAI,IAAA5B,WAAA,CAAAkD,GAAA,EAAChB,SAAS;UAACC,KAAK,EAAE0B,GAAG,CAACjC,GAAI;UAACQ,KAAK,EAAEA;QAAM,CAAE,CAAC,EAC/DyB,GAAG,CAAC9B,YAAY,iBACf,IAAA/B,WAAA,CAAAkD,GAAA,EAAChB,SAAS;UACRC,KAAK,EAAE5B,OAAO,CAACmE,CAAC,CAAC,YAAY,CAAE;UAC/BtC,KAAK,EAAEA,KAAM;UACbC,IAAI,EAAC;QAAQ,CACd,CACF,eACD,IAAArC,WAAA,CAAAkD,GAAA,EAACU,aAAa;UAACC,GAAG,EAAEA,GAAI;UAACzB,KAAK,EAAEA,KAAM;UAAC7B,OAAO,EAAEA;QAAQ,CAAE,CAAC;MAAA,GATlDsD,GAAG,CAAC5C,OAAO,CAACF,EAUjB,CACP,CAAC,EAEDsF,QAAQ,IAAId,MAAM,CAACqD,WAAW,KAAK,IAAI,iBACtC,IAAA5I,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAAgD,IAAI;QAACC,KAAK,EAAE;UAAE0B,SAAS,EAAE;QAAG,CAAE;QAAArB,QAAA,eAC7B,IAAAjD,WAAA,CAAAkD,GAAA,EAAChB,SAAS;UACRC,KAAK,EAAE5B,OAAO,CAACmE,CAAC,CAAC,mBAAmB,EAAE;YACpCmE,IAAI,EAAE,IAAAC,iBAAU,EAACvD,MAAM,CAACqD,WAAW,EAAErI,OAAO;UAC9C,CAAC,CAAE;UACH6B,KAAK,EAAEA;QAAM,CACd;MAAC,CACE,CACP;IAAA,CACS,CAAC,eAGb,IAAApC,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAAgD,IAAI;MACHC,KAAK,EAAE;QACLmG,cAAc,EAAE,CAAC;QACjBC,cAAc,EAAE5G,KAAK,CAACG,MAAM,CAACgB,MAAM;QACnCkB,iBAAiB,EAAE,EAAE;QACrBwE,UAAU,EAAE,EAAE;QACdzB,aAAa,EAAE;MACjB,CAAE;MAAAvE,QAAA,EAEDoD,QAAQ,gBACP,IAAArG,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAAgD,IAAI;QACHC,KAAK,EAAE;UACLE,UAAU,EAAE,QAAQ;UACpBE,eAAe,EAAE,EAAE;UACnBkG,YAAY,EAAE9G,KAAK,CAAC4B,KAAK,CAACmF,OAAO;UACjC9F,eAAe,EAAEjB,KAAK,CAACG,MAAM,CAACoC;QAChC,CAAE;QAAA1B,QAAA,eAEF,IAAAjD,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;UAACZ,KAAK,EAAE2B,sBAAU,CAAC6E,SAAS,CAAChH,KAAK,CAAE;UAAAa,QAAA,EACtC1C,OAAO,CAACmE,CAAC,CAAC,iBAAiB;QAAC,CACzB;MAAC,CACH,CAAC,gBAEP,IAAA1E,WAAA,CAAA0C,IAAA,EAAA1C,WAAA,CAAAqJ,QAAA;QAAApG,QAAA,gBACE,IAAAjD,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAgD,IAAI;UAACC,KAAK,EAAE;YAAEC,aAAa,EAAE,KAAK;YAAEC,UAAU,EAAE,UAAU;YAAEC,GAAG,EAAE;UAAG,CAAE;UAAAE,QAAA,gBACrE,IAAAjD,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA2J,SAAS;YACRC,KAAK,EAAE7D,KAAM;YACb8D,YAAY,EAAGC,CAAC,IAAK;cACnB9D,QAAQ,CAAC8D,CAAC,CAAC;cACXzD,gBAAgB,CAAC,IAAI,CAAC;YACxB,CAAE;YACF0D,SAAS;YACTC,QAAQ,EAAE,CAAC9D,OAAQ;YACnB+D,WAAW,EAAErJ,OAAO,CAACmE,CAAC,CAAC,oBAAoB,CAAE;YAC7CmF,oBAAoB,EAAEzH,KAAK,CAACG,MAAM,CAACE,YAAa;YAChDG,KAAK,EAAE;cACLO,IAAI,EAAE,CAAC;cACP2G,SAAS,EAAE,EAAE;cACbC,SAAS,EAAE,GAAG;cACdnF,WAAW,EAAE,CAAC;cACdC,WAAW,EAAEzC,KAAK,CAACG,MAAM,CAACgB,MAAM;cAChC2F,YAAY,EAAE9G,KAAK,CAAC4B,KAAK,CAACgG,MAAM;cAChC3G,eAAe,EAAEjB,KAAK,CAACG,MAAM,CAACoC,OAAO;cACrCrC,KAAK,EAAEF,KAAK,CAACG,MAAM,CAAC0H,WAAW;cAC/BxG,QAAQ,EAAE,EAAE;cACZyG,UAAU,EAAE,EAAE;cACdzF,iBAAiB,EAAE,EAAE;cACrBwE,UAAU,EAAE,EAAE;cACdzB,aAAa,EAAE,EAAE;cACjB2C,iBAAiB,EAAE;YACrB;UAAE,CACH,CAAC,eACF,IAAAnK,WAAA,CAAAkD,GAAA,EAACnD,WAAA,CAAA4H,UAAU;YACTC,OAAO,EAAEV,UAAW;YACpB9E,KAAK,EAAEA,KAAM;YACbC,IAAI,EAAC,QAAQ;YACbyF,IAAI,EAAE,EAAG;YACTsC,QAAQ,EAAE,CAAC3D,KAAK,IAAIZ,OAAQ;YAC5BgC,kBAAkB,EAAEtH,OAAO,CAACmE,CAAC,CAC3BmB,OAAO,GAAG,oBAAoB,GAAG,iBACnC,CAAE;YAAA5C,QAAA,eAEF,IAAAjD,WAAA,CAAAkD,GAAA,EAACpD,MAAA,CAAAuK,WAAW;cAAC/H,KAAK,EAAEF,KAAK,CAACG,MAAM,CAAC4C,gBAAiB;cAAC2C,IAAI,EAAE;YAAG,CAAE;UAAC,CACrD,CAAC;QAAA,CACT,CAAC,EAEN,CAACnB,QAAQ,IACRjB,KAAK,CAAC/E,MAAM,IAAIT,oBAAoB,IACpC6F,aAAa,KAAK,IAAI,kBACtB,IAAA/F,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAAgD,IAAI;UACHC,KAAK,EAAE;YACLC,aAAa,EAAE,KAAK;YACpBC,UAAU,EAAE,QAAQ;YACpBC,GAAG,EAAE,EAAE;YACPkG,UAAU,EAAE,CAAC;YACbxE,iBAAiB,EAAE;UACrB,CAAE;UAAAxB,QAAA,GAED8C,aAAa,KAAK,IAAI,gBACrB,IAAA/F,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;YAACZ,KAAK,EAAE;cAAEa,QAAQ,EAAE,EAAE;cAAEnB,KAAK,EAAEF,KAAK,CAACG,MAAM,CAAC+H;YAAa,CAAE;YAAArH,QAAA,EAC7D8C;UAAa,CACV,CAAC,GACLY,QAAQ,gBACV,IAAA3G,WAAA,CAAAkD,GAAA,EAACvD,YAAA,CAAA6D,IAAI;YAACZ,KAAK,EAAE2B,sBAAU,CAACC,IAAI,CAACpC,KAAK,CAAE;YAAAa,QAAA,EACjC1C,OAAO,CAACmE,CAAC,CAAC,kBAAkB,EAAE;cAAE6F,KAAK,EAAE7D;YAAiB,CAAC;UAAC,CACvD,CAAC,GACL,IAAI,EACPhB,KAAK,CAAC/E,MAAM,IAAIT,oBAAoB,iBACnC,IAAAF,WAAA,CAAA0C,IAAA,EAAC/C,YAAA,CAAA6D,IAAI;YACHZ,KAAK,EAAE,CACL2B,sBAAU,CAACC,IAAI,CAACpC,KAAK,CAAC,EACtB;cAAEiG,UAAU,EAAE;YAAO,CAAC,EACtB3C,KAAK,CAAC/E,MAAM,GAAGR,uBAAgB,IAAI;cACjCmC,KAAK,EAAEF,KAAK,CAACG,MAAM,CAAC+H;YACtB,CAAC,CACD;YAAArH,QAAA,GAEDyC,KAAK,CAAC/E,MAAM,EAAC,GAAC,EAACR,uBAAgB;UAAA,CAC5B,CACP;QAAA,CACG,CACP;MAAA,CACD;IACH,CACG,CAAC;EAAA,CACa,CAAC;AAE3B","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DEFAULT_LANGUAGE", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _languages.DEFAULT_LANGUAGE;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "LANGUAGE_LABELS", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _languages.LANGUAGE_LABELS;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "SUPPORTED_LANGUAGES", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _languages.SUPPORTED_LANGUAGES;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "asLanguage", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _languages.asLanguage;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "baseLanguage", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _languages.baseLanguage;
34
+ }
35
+ });
36
+ exports.createTranslator = createTranslator;
37
+ Object.defineProperty(exports, "deviceLanguage", {
38
+ enumerable: true,
39
+ get: function () {
40
+ return _languages.deviceLanguage;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "isSupportedLanguage", {
44
+ enumerable: true,
45
+ get: function () {
46
+ return _languages.isSupportedLanguage;
47
+ }
48
+ });
49
+ var _languages = require("./languages");
50
+ var _en = require("./strings/en");
51
+ var _de = require("./strings/de");
52
+ var _es = require("./strings/es");
53
+ var _fr = require("./strings/fr");
54
+ var _hi = require("./strings/hi");
55
+ var _it = require("./strings/it");
56
+ var _ja = require("./strings/ja");
57
+ var _ko = require("./strings/ko");
58
+ var _nl = require("./strings/nl");
59
+ var _pl = require("./strings/pl");
60
+ var _pt = require("./strings/pt");
61
+ var _ru = require("./strings/ru");
62
+ var _tr = require("./strings/tr");
63
+ var _zh = require("./strings/zh");
64
+ // UI copy, in the user's language.
65
+ //
66
+ // Message bodies are translated by the backend at write time; the sheet's own
67
+ // chrome is not — it is a fixed set of strings that never changes, so it ships
68
+ // as a bundled table. A model call to render the word "Send" would be absurd,
69
+ // and it would also mean the SDK couldn't draw its own UI offline.
70
+
71
+ const TABLES = {
72
+ en: _en.en,
73
+ es: _es.es,
74
+ fr: _fr.fr,
75
+ de: _de.de,
76
+ nl: _nl.nl,
77
+ pt: _pt.pt,
78
+ it: _it.it,
79
+ pl: _pl.pl,
80
+ tr: _tr.tr,
81
+ ru: _ru.ru,
82
+ ja: _ja.ja,
83
+ ko: _ko.ko,
84
+ zh: _zh.zh,
85
+ hi: _hi.hi
86
+ };
87
+
88
+ /** Fills `{name}` placeholders. Unknown tokens are left alone, not blanked. */
89
+ function format(template, vars) {
90
+ if (!vars) return template;
91
+ return template.replace(/\{(\w+)\}/g, (match, key) => key in vars ? String(vars[key]) : match);
92
+ }
93
+ function createTranslator(language) {
94
+ const table = TABLES[language] ?? TABLES[_languages.DEFAULT_LANGUAGE];
95
+ return {
96
+ language,
97
+ locale: language,
98
+ t: (key, vars) => format(table[key] ?? _en.en[key], vars)
99
+ };
100
+ }
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_languages","require","_en","_de","_es","_fr","_hi","_it","_ja","_ko","_nl","_pl","_pt","_ru","_tr","_zh","TABLES","en","es","fr","de","nl","pt","it","pl","tr","ru","ja","ko","zh","hi","format","template","vars","replace","match","key","String","createTranslator","language","table","DEFAULT_LANGUAGE","locale","t"],"sourceRoot":"../../../src","sources":["i18n/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,GAAA,GAAAD,OAAA;AACA,IAAAE,GAAA,GAAAF,OAAA;AACA,IAAAG,GAAA,GAAAH,OAAA;AACA,IAAAI,GAAA,GAAAJ,OAAA;AACA,IAAAK,GAAA,GAAAL,OAAA;AACA,IAAAM,GAAA,GAAAN,OAAA;AACA,IAAAO,GAAA,GAAAP,OAAA;AACA,IAAAQ,GAAA,GAAAR,OAAA;AACA,IAAAS,GAAA,GAAAT,OAAA;AACA,IAAAU,GAAA,GAAAV,OAAA;AACA,IAAAW,GAAA,GAAAX,OAAA;AACA,IAAAY,GAAA,GAAAZ,OAAA;AACA,IAAAa,GAAA,GAAAb,OAAA;AACA,IAAAc,GAAA,GAAAd,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;;AAkBA,MAAMe,MAAqC,GAAG;EAC5CC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA,MAAE;EACFC,EAAE,EAAFA;AACF,CAAC;;AAED;AACA,SAASC,MAAMA,CACbC,QAAgB,EAChBC,IAAsC,EAC9B;EACR,IAAI,CAACA,IAAI,EAAE,OAAOD,QAAQ;EAC1B,OAAOA,QAAQ,CAACE,OAAO,CAAC,YAAY,EAAE,CAACC,KAAK,EAAEC,GAAW,KACvDA,GAAG,IAAIH,IAAI,GAAGI,MAAM,CAACJ,IAAI,CAACG,GAAG,CAAC,CAAC,GAAGD,KACpC,CAAC;AACH;AAYO,SAASG,gBAAgBA,CAACC,QAAkB,EAAc;EAC/D,MAAMC,KAAK,GAAGxB,MAAM,CAACuB,QAAQ,CAAC,IAAIvB,MAAM,CAACyB,2BAAgB,CAAC;EAC1D,OAAO;IACLF,QAAQ;IACRG,MAAM,EAAEH,QAAQ;IAChBI,CAAC,EAAEA,CAACP,GAAG,EAAEH,IAAI,KAAKF,MAAM,CAACS,KAAK,CAACJ,GAAG,CAAC,IAAInB,MAAE,CAACmB,GAAG,CAAC,EAAEH,IAAI;EACtD,CAAC;AACH","ignoreList":[]}