@duffel/react-native-components-assistant 0.5.1-canary.4 → 0.5.1-canary.5

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
4
- import { KeyboardAvoidingView, Linking, Modal, Platform, StyleSheet, View } from 'react-native';
3
+ import React, { useEffect, useState } from 'react';
4
+ import { Keyboard, Linking, Modal, Platform, StyleSheet, View } from 'react-native';
5
5
  import { WebView } from 'react-native-webview';
6
6
  import { hasJsonWebTokenFormat } from "./lib/hasJsonWebTokenFormat.js";
7
7
  import { getClientKeyPayload } from "./lib/getClientKeyPayload.js";
@@ -22,6 +22,26 @@ export const DuffelAssistant = ({
22
22
  onNewMessage,
23
23
  ...properties
24
24
  }) => {
25
+ const [androidKeyboardHeight, setAndroidKeyboardHeight] = useState(0);
26
+ useEffect(() => {
27
+ if (Platform.OS !== 'android') {
28
+ return;
29
+ }
30
+ if (!isOpen) {
31
+ setAndroidKeyboardHeight(0);
32
+ return;
33
+ }
34
+ const keyboardDidShowSubscription = Keyboard.addListener('keyboardDidShow', event => {
35
+ setAndroidKeyboardHeight(event.endCoordinates?.height ?? 0);
36
+ });
37
+ const keyboardDidHideSubscription = Keyboard.addListener('keyboardDidHide', () => {
38
+ setAndroidKeyboardHeight(0);
39
+ });
40
+ return () => {
41
+ keyboardDidShowSubscription.remove();
42
+ keyboardDidHideSubscription.remove();
43
+ };
44
+ }, [isOpen]);
25
45
  if (!hasJsonWebTokenFormat(properties.clientKey)) {
26
46
  throw new Error('Duffel Assistant client key format must be a valid JWT.');
27
47
  }
@@ -83,16 +103,14 @@ export const DuffelAssistant = ({
83
103
  visible: isOpen,
84
104
  onRequestClose: () => onClose(),
85
105
  animationType: "slide",
86
- children: /*#__PURE__*/_jsx(KeyboardAvoidingView, {
87
- behavior: 'height',
88
- enabled: true,
89
- style: styles.keyboardAvoidingView,
90
- children: /*#__PURE__*/_jsx(View, {
91
- style: styles.androidContainer,
92
- children: /*#__PURE__*/_jsx(WebView
93
- // Required for Android
94
- , {
95
- injectedJavaScript: `
106
+ children: /*#__PURE__*/_jsx(View, {
107
+ style: [styles.androidContainer, {
108
+ paddingBottom: 15 + androidKeyboardHeight
109
+ }],
110
+ children: /*#__PURE__*/_jsx(WebView
111
+ // Required for Android
112
+ , {
113
+ injectedJavaScript: `
96
114
  postMessage(
97
115
  {
98
116
  type: "duffel-assistant-open",
@@ -101,13 +119,12 @@ export const DuffelAssistant = ({
101
119
  "*",
102
120
  );
103
121
  true;`,
104
- source: {
105
- uri: assistantIframeUrl
106
- },
107
- onMessage: handleMessage,
108
- onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
109
- style: styles.webView
110
- })
122
+ source: {
123
+ uri: assistantIframeUrl
124
+ },
125
+ onMessage: handleMessage,
126
+ onShouldStartLoadWithRequest: handleShouldStartLoadWithRequest,
127
+ style: styles.webView
111
128
  })
112
129
  })
113
130
  });
@@ -136,9 +153,6 @@ export const DuffelAssistant = ({
136
153
  });
137
154
  };
138
155
  const styles = StyleSheet.create({
139
- keyboardAvoidingView: {
140
- flex: 1
141
- },
142
156
  container: {
143
157
  flex: 1,
144
158
  width: '100%',
@@ -150,7 +164,7 @@ const styles = StyleSheet.create({
150
164
  flex: 1,
151
165
  width: '100%',
152
166
  paddingTop: 45,
153
- paddingBottom: 10
167
+ paddingBottom: 15
154
168
  },
155
169
  webView: {
156
170
  flex: 1
@@ -1 +1 @@
1
- {"version":3,"names":["React","KeyboardAvoidingView","Linking","Modal","Platform","StyleSheet","View","WebView","hasJsonWebTokenFormat","getClientKeyPayload","jsx","_jsx","assistantIframeUrl","isHttpUrl","url","test","isAssistantIframeUrl","parsedUrl","URL","origin","pathname","error","DuffelAssistant","isOpen","onClose","onNewMessage","properties","clientKey","Error","clientKeyPayload","clientKeyIncludesResource","order_id","undefined","booking_id","cars_booking_id","issueType","console","warn","context","supportChannels","chat","showMinimiseButton","onMinimise","handleMessage","event","nativeEvent","data","parsedData","JSON","parse","type","userId","resourceId","handleShouldStartLoadWithRequest","request","OS","navigationType","openURL","catch","visible","onRequestClose","animationType","children","behavior","enabled","style","styles","keyboardAvoidingView","androidContainer","injectedJavaScript","stringify","source","uri","onMessage","onShouldStartLoadWithRequest","webView","container","injectedJavaScriptObject","create","flex","width","paddingHorizontal","paddingTop","paddingBottom"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,oBAAoB,EACpBC,OAAO,EACPC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACVC,IAAI,QACC,cAAc;AACrB,SAASC,OAAO,QAAQ,sBAAsB;AAE9C,SAASC,qBAAqB,QAAQ,gCAA6B;AACnE,SAASC,mBAAmB,QAAQ,8BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAIhE,MAAMC,kBAAkB,GAAG,iDAAiD;AAa5E,MAAMC,SAAS,GAAIC,GAAW,IAAK,cAAc,CAACC,IAAI,CAACD,GAAG,CAAC;AAE3D,MAAME,oBAAoB,GAAIF,GAAW,IAAK;EAC5C,IAAI;IACF,MAAMG,SAAS,GAAG,IAAIC,GAAG,CAACJ,GAAG,CAAC;IAE9B,OAAO,GAAGG,SAAS,CAACE,MAAM,GAAGF,SAAS,CAACG,QAAQ,EAAE,KAAKR,kBAAkB;EAC1E,CAAC,CAAC,OAAOS,KAAK,EAAE;IACd,OAAO,KAAK;EACd;AACF,CAAC;AAED,OAAO,MAAMC,eAA+C,GAAGA,CAAC;EAC9DC,MAAM;EACNC,OAAO;EACPC,YAAY;EACZ,GAAGC;AACL,CAAC,KAAK;EACJ,IAAI,CAAClB,qBAAqB,CAACkB,UAAU,CAACC,SAAS,CAAC,EAAE;IAChD,MAAM,IAAIC,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EAEA,MAAMC,gBAAgB,GAAGpB,mBAAmB,CAACiB,UAAU,CAACC,SAAS,CAAC;EAClE,IAAI,CAACE,gBAAgB,EAAE;IACrB,MAAM,IAAID,KAAK,CACb,8EACF,CAAC;EACH;EAEA,MAAME,yBAAyB,GAC7BD,gBAAgB,CAACE,QAAQ,KAAKC,SAAS,IACvCH,gBAAgB,CAACI,UAAU,KAAKD,SAAS,IACzCH,gBAAgB,CAACK,eAAe,KAAKF,SAAS;EAEhD,IAAI,EAAE,SAAS,IAAIH,gBAAgB,CAAC,EAAE;IACpC,MAAM,IAAID,KAAK,CACb,oIACF,CAAC;EACH;EAEA,IAAI,OAAOF,UAAU,CAACS,SAAS,KAAK,WAAW,EAAE;IAC/CC,OAAO,CAACC,IAAI,CACV,4HACF,CAAC;EACH;EAEA,IACE,CAACP,yBAAyB,IAC1B,OAAOJ,UAAU,CAACS,SAAS,KAAK,WAAW,EAC3C;IACAC,OAAO,CAACC,IAAI,CACV,sGACF,CAAC;IACD,OAAOX,UAAU,CAACS,SAAS;EAC7B;EAEA,IAAI,CAACL,yBAAyB,IAAIJ,UAAU,CAACY,OAAO,EAAE;IACpD,MAAM,IAAIV,KAAK,CACb,gFACF,CAAC;EACH;EAEA,IACE,OAAOF,UAAU,CAACa,eAAe,KAAK,WAAW,IACjDb,UAAU,CAACa,eAAe,CAACC,IAAI,KAAK,IAAI,EACxC;IACA,MAAM,IAAIZ,KAAK,CACb,oFACF,CAAC;EACH;EAEA,IACEF,UAAU,CAACe,kBAAkB,IAC7B,OAAOf,UAAU,CAACgB,UAAU,KAAK,UAAU,EAC3C;IACAN,OAAO,CAACC,IAAI,CACV,sLACF,CAAC;EACH;EAEA,MAAMM,aAAa,GAAIC,KAA0B,IAAK;IACpD,IAAIA,KAAK,CAACC,WAAW,CAACC,IAAI,KAAK,wBAAwB,EAAE;MACvDtB,OAAO,CAAC,CAAC;IACX;IAEA,IACE,OAAOE,UAAU,CAACgB,UAAU,KAAK,UAAU,IAC3CE,KAAK,CAACC,WAAW,CAACC,IAAI,KAAK,2BAA2B,EACtD;MACApB,UAAU,CAACgB,UAAU,CAAC,CAAC;IACzB;IAEA,IAAI;MACF,MAAMK,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACL,KAAK,CAACC,WAAW,CAACC,IAAI,CAAC;MAErD,IACEC,UAAU,CAACG,IAAI,KAAK,8BAA8B,IAClD,OAAOH,UAAU,CAACI,MAAM,KAAK,QAAQ,IACrC,OAAOJ,UAAU,CAACK,UAAU,KAAK,QAAQ,IACzC,OAAO3B,YAAY,KAAK,UAAU,EAClC;QACAA,YAAY,CAAC;UACX0B,MAAM,EAAEJ,UAAU,CAACI,MAAM;UACzBC,UAAU,EAAEL,UAAU,CAACK;QACzB,CAAC,CAAC;MACJ;IACF,CAAC,CAAC,OAAO/B,KAAK,EAAE;MACd;IAAA;EAEJ,CAAC;EAED,MAAMgC,gCAAgC,GACpCC,OAA+B,IAC5B;IACH,IAAI,CAACzC,SAAS,CAACyC,OAAO,CAACxC,GAAG,CAAC,IAAIE,oBAAoB,CAACsC,OAAO,CAACxC,GAAG,CAAC,EAAE;MAChE,OAAO,IAAI;IACb;IAEA,IAAIV,QAAQ,CAACmD,EAAE,KAAK,KAAK,IAAID,OAAO,CAACE,cAAc,KAAK,OAAO,EAAE;MAC/D,OAAO,IAAI;IACb;IAEAtD,OAAO,CAACuD,OAAO,CAACH,OAAO,CAACxC,GAAG,CAAC,CAAC4C,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,OAAO,KAAK;EACd,CAAC;EAED,IAAItD,QAAQ,CAACmD,EAAE,KAAK,SAAS,EAAE;IAC7B,oBACE5C,IAAA,CAACR,KAAK;MACJwD,OAAO,EAAEpC,MAAO;MAChBqC,cAAc,EAAEA,CAAA,KAAMpC,OAAO,CAAC,CAAE;MAChCqC,aAAa,EAAC,OAAO;MAAAC,QAAA,eAErBnD,IAAA,CAACV,oBAAoB;QACnB8D,QAAQ,EAAE,QAAS;QACnBC,OAAO,EAAE,IAAK;QACdC,KAAK,EAAEC,MAAM,CAACC,oBAAqB;QAAAL,QAAA,eAEnCnD,IAAA,CAACL,IAAI;UAAC2D,KAAK,EAAEC,MAAM,CAACE,gBAAiB;UAAAN,QAAA,eACnCnD,IAAA,CAACJ;UACC;UAAA;YACA8D,kBAAkB,EAAE;AAClC;AACA;AACA;AACA,8BAA8BrB,IAAI,CAACsB,SAAS,CAAC5C,UAAU,CAAC;AACxD;AACA;AACA;AACA,kBAAmB;YACL6C,MAAM,EAAE;cAAEC,GAAG,EAAE5D;YAAmB,CAAE;YACpC6D,SAAS,EAAE9B,aAAc;YACzB+B,4BAA4B,EAAErB,gCAAiC;YAC/DY,KAAK,EAAEC,MAAM,CAACS;UAAQ,CACvB;QAAC,CACE;MAAC,CACa;IAAC,CAClB,CAAC;EAEZ;EAEA,oBACEhE,IAAA,CAACR,KAAK;IACJwD,OAAO,EAAEpC,MAAO;IAChBqC,cAAc,EAAEA,CAAA,KAAMpC,OAAO,CAAC,CAAE;IAChCqC,aAAa,EAAC,OAAO;IAAAC,QAAA,eAErBnD,IAAA,CAACL,IAAI;MAAC2D,KAAK,EAAEC,MAAM,CAACU,SAAU;MAAAd,QAAA,eAC5BnD,IAAA,CAACJ,OAAO;QACNsE,wBAAwB,EAAEnD;QAC1B;QACA;QACA;QACA;QAAA;QACA6C,MAAM,EAAE;UAAEC,GAAG,EAAE5D;QAAmB,CAAE;QACpC6D,SAAS,EAAE9B,aAAc;QACzB+B,4BAA4B,EAAErB,gCAAiC;QAC/DY,KAAK,EAAEC,MAAM,CAACS;MAAQ,CACvB;IAAC,CACE;EAAC,CACF,CAAC;AAEZ,CAAC;AAED,MAAMT,MAAM,GAAG7D,UAAU,CAACyE,MAAM,CAAC;EAC/BX,oBAAoB,EAAE;IACpBY,IAAI,EAAE;EACR,CAAC;EACDH,SAAS,EAAE;IACTG,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,iBAAiB,EAAE,EAAE;IACrBC,UAAU,EAAE,EAAE;IACdC,aAAa,EAAE;EACjB,CAAC;EACDf,gBAAgB,EAAE;IAChBW,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbE,UAAU,EAAE,EAAE;IACdC,aAAa,EAAE;EACjB,CAAC;EACDR,OAAO,EAAE;IACPI,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","Keyboard","Linking","Modal","Platform","StyleSheet","View","WebView","hasJsonWebTokenFormat","getClientKeyPayload","jsx","_jsx","assistantIframeUrl","isHttpUrl","url","test","isAssistantIframeUrl","parsedUrl","URL","origin","pathname","error","DuffelAssistant","isOpen","onClose","onNewMessage","properties","androidKeyboardHeight","setAndroidKeyboardHeight","OS","keyboardDidShowSubscription","addListener","event","endCoordinates","height","keyboardDidHideSubscription","remove","clientKey","Error","clientKeyPayload","clientKeyIncludesResource","order_id","undefined","booking_id","cars_booking_id","issueType","console","warn","context","supportChannels","chat","showMinimiseButton","onMinimise","handleMessage","nativeEvent","data","parsedData","JSON","parse","type","userId","resourceId","handleShouldStartLoadWithRequest","request","navigationType","openURL","catch","visible","onRequestClose","animationType","children","style","styles","androidContainer","paddingBottom","injectedJavaScript","stringify","source","uri","onMessage","onShouldStartLoadWithRequest","webView","container","injectedJavaScriptObject","create","flex","width","paddingHorizontal","paddingTop"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAE,KAAK,oBAAoB,IAAI,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAInG,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AA2BhE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA2K1D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAUnD,OAAO,EAAE,KAAK,oBAAoB,IAAI,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAInG,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AA2BhE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAyM1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duffel/react-native-components-assistant",
3
- "version": "0.5.1-canary.4",
3
+ "version": "0.5.1-canary.5",
4
4
  "description": "Duffel Assistant component in React Native",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
package/src/index.tsx CHANGED
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import {
3
- KeyboardAvoidingView,
3
+ Keyboard,
4
4
  Linking,
5
5
  Modal,
6
6
  Platform,
@@ -45,6 +45,37 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
45
45
  onNewMessage,
46
46
  ...properties
47
47
  }) => {
48
+ const [androidKeyboardHeight, setAndroidKeyboardHeight] = useState(0);
49
+
50
+ useEffect(() => {
51
+ if (Platform.OS !== 'android') {
52
+ return;
53
+ }
54
+
55
+ if (!isOpen) {
56
+ setAndroidKeyboardHeight(0);
57
+ return;
58
+ }
59
+
60
+ const keyboardDidShowSubscription = Keyboard.addListener(
61
+ 'keyboardDidShow',
62
+ (event) => {
63
+ setAndroidKeyboardHeight(event.endCoordinates?.height ?? 0);
64
+ }
65
+ );
66
+ const keyboardDidHideSubscription = Keyboard.addListener(
67
+ 'keyboardDidHide',
68
+ () => {
69
+ setAndroidKeyboardHeight(0);
70
+ }
71
+ );
72
+
73
+ return () => {
74
+ keyboardDidShowSubscription.remove();
75
+ keyboardDidHideSubscription.remove();
76
+ };
77
+ }, [isOpen]);
78
+
48
79
  if (!hasJsonWebTokenFormat(properties.clientKey)) {
49
80
  throw new Error('Duffel Assistant client key format must be a valid JWT.');
50
81
  }
@@ -161,15 +192,15 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
161
192
  onRequestClose={() => onClose()}
162
193
  animationType="slide"
163
194
  >
164
- <KeyboardAvoidingView
165
- behavior={'height'}
166
- enabled={true}
167
- style={styles.keyboardAvoidingView}
195
+ <View
196
+ style={[
197
+ styles.androidContainer,
198
+ { paddingBottom: 15 + androidKeyboardHeight },
199
+ ]}
168
200
  >
169
- <View style={styles.androidContainer}>
170
- <WebView
171
- // Required for Android
172
- injectedJavaScript={`
201
+ <WebView
202
+ // Required for Android
203
+ injectedJavaScript={`
173
204
  postMessage(
174
205
  {
175
206
  type: "duffel-assistant-open",
@@ -178,13 +209,12 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
178
209
  "*",
179
210
  );
180
211
  true;`}
181
- source={{ uri: assistantIframeUrl }}
182
- onMessage={handleMessage}
183
- onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
184
- style={styles.webView}
185
- />
186
- </View>
187
- </KeyboardAvoidingView>
212
+ source={{ uri: assistantIframeUrl }}
213
+ onMessage={handleMessage}
214
+ onShouldStartLoadWithRequest={handleShouldStartLoadWithRequest}
215
+ style={styles.webView}
216
+ />
217
+ </View>
188
218
  </Modal>
189
219
  );
190
220
  }
@@ -213,9 +243,6 @@ export const DuffelAssistant: React.FC<DuffelAssistantProps> = ({
213
243
  };
214
244
 
215
245
  const styles = StyleSheet.create({
216
- keyboardAvoidingView: {
217
- flex: 1,
218
- },
219
246
  container: {
220
247
  flex: 1,
221
248
  width: '100%',
@@ -227,7 +254,7 @@ const styles = StyleSheet.create({
227
254
  flex: 1,
228
255
  width: '100%',
229
256
  paddingTop: 45,
230
- paddingBottom: 10,
257
+ paddingBottom: 15,
231
258
  },
232
259
  webView: {
233
260
  flex: 1,