flowboard-react 0.1.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 (90) hide show
  1. package/FlowboardReact.podspec +20 -0
  2. package/LICENSE +20 -0
  3. package/README.md +122 -0
  4. package/android/build.gradle +67 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/java/com/flowboardreact/FlowboardReactModule.kt +15 -0
  7. package/android/src/main/java/com/flowboardreact/FlowboardReactPackage.kt +33 -0
  8. package/ios/FlowboardReact.h +5 -0
  9. package/ios/FlowboardReact.mm +21 -0
  10. package/lib/module/Flowboard.js +167 -0
  11. package/lib/module/Flowboard.js.map +1 -0
  12. package/lib/module/FlowboardProvider.js +52 -0
  13. package/lib/module/FlowboardProvider.js.map +1 -0
  14. package/lib/module/NativeFlowboardReact.js +5 -0
  15. package/lib/module/NativeFlowboardReact.js.map +1 -0
  16. package/lib/module/components/FlowboardFlow.js +389 -0
  17. package/lib/module/components/FlowboardFlow.js.map +1 -0
  18. package/lib/module/components/FlowboardRenderer.js +1684 -0
  19. package/lib/module/components/FlowboardRenderer.js.map +1 -0
  20. package/lib/module/components/widgets/sliderRegistry.js +48 -0
  21. package/lib/module/components/widgets/sliderRegistry.js.map +1 -0
  22. package/lib/module/core/analyticsManager.js +110 -0
  23. package/lib/module/core/analyticsManager.js.map +1 -0
  24. package/lib/module/core/assetPreloader.js +72 -0
  25. package/lib/module/core/assetPreloader.js.map +1 -0
  26. package/lib/module/core/clientContext.js +105 -0
  27. package/lib/module/core/clientContext.js.map +1 -0
  28. package/lib/module/core/fontAwesome.js +110 -0
  29. package/lib/module/core/fontAwesome.js.map +1 -0
  30. package/lib/module/core/onboardingRepository.js +62 -0
  31. package/lib/module/core/onboardingRepository.js.map +1 -0
  32. package/lib/module/core/resolverService.js +58 -0
  33. package/lib/module/core/resolverService.js.map +1 -0
  34. package/lib/module/index.js +5 -0
  35. package/lib/module/index.js.map +1 -0
  36. package/lib/module/package.json +1 -0
  37. package/lib/module/types/flowboard.js +4 -0
  38. package/lib/module/types/flowboard.js.map +1 -0
  39. package/lib/module/types/react-native-vector-icons.d.js +2 -0
  40. package/lib/module/types/react-native-vector-icons.d.js.map +1 -0
  41. package/lib/module/utils/flowboardUtils.js +379 -0
  42. package/lib/module/utils/flowboardUtils.js.map +1 -0
  43. package/lib/typescript/package.json +1 -0
  44. package/lib/typescript/src/Flowboard.d.ts +33 -0
  45. package/lib/typescript/src/Flowboard.d.ts.map +1 -0
  46. package/lib/typescript/src/FlowboardProvider.d.ts +5 -0
  47. package/lib/typescript/src/FlowboardProvider.d.ts.map +1 -0
  48. package/lib/typescript/src/NativeFlowboardReact.d.ts +7 -0
  49. package/lib/typescript/src/NativeFlowboardReact.d.ts.map +1 -0
  50. package/lib/typescript/src/components/FlowboardFlow.d.ts +14 -0
  51. package/lib/typescript/src/components/FlowboardFlow.d.ts.map +1 -0
  52. package/lib/typescript/src/components/FlowboardRenderer.d.ts +31 -0
  53. package/lib/typescript/src/components/FlowboardRenderer.d.ts.map +1 -0
  54. package/lib/typescript/src/components/widgets/sliderRegistry.d.ts +16 -0
  55. package/lib/typescript/src/components/widgets/sliderRegistry.d.ts.map +1 -0
  56. package/lib/typescript/src/core/analyticsManager.d.ts +42 -0
  57. package/lib/typescript/src/core/analyticsManager.d.ts.map +1 -0
  58. package/lib/typescript/src/core/assetPreloader.d.ts +8 -0
  59. package/lib/typescript/src/core/assetPreloader.d.ts.map +1 -0
  60. package/lib/typescript/src/core/clientContext.d.ts +27 -0
  61. package/lib/typescript/src/core/clientContext.d.ts.map +1 -0
  62. package/lib/typescript/src/core/fontAwesome.d.ts +8 -0
  63. package/lib/typescript/src/core/fontAwesome.d.ts.map +1 -0
  64. package/lib/typescript/src/core/onboardingRepository.d.ts +15 -0
  65. package/lib/typescript/src/core/onboardingRepository.d.ts.map +1 -0
  66. package/lib/typescript/src/core/resolverService.d.ts +11 -0
  67. package/lib/typescript/src/core/resolverService.d.ts.map +1 -0
  68. package/lib/typescript/src/index.d.ts +4 -0
  69. package/lib/typescript/src/index.d.ts.map +1 -0
  70. package/lib/typescript/src/types/flowboard.d.ts +34 -0
  71. package/lib/typescript/src/types/flowboard.d.ts.map +1 -0
  72. package/lib/typescript/src/utils/flowboardUtils.d.ts +31 -0
  73. package/lib/typescript/src/utils/flowboardUtils.d.ts.map +1 -0
  74. package/package.json +192 -0
  75. package/src/Flowboard.ts +223 -0
  76. package/src/FlowboardProvider.tsx +60 -0
  77. package/src/NativeFlowboardReact.ts +7 -0
  78. package/src/components/FlowboardFlow.tsx +513 -0
  79. package/src/components/FlowboardRenderer.tsx +1957 -0
  80. package/src/components/widgets/sliderRegistry.tsx +56 -0
  81. package/src/core/analyticsManager.ts +125 -0
  82. package/src/core/assetPreloader.ts +103 -0
  83. package/src/core/clientContext.ts +132 -0
  84. package/src/core/fontAwesome.ts +90 -0
  85. package/src/core/onboardingRepository.ts +79 -0
  86. package/src/core/resolverService.ts +69 -0
  87. package/src/index.tsx +11 -0
  88. package/src/types/flowboard.ts +50 -0
  89. package/src/types/react-native-vector-icons.d.ts +15 -0
  90. package/src/utils/flowboardUtils.ts +400 -0
@@ -0,0 +1,389 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useMemo, useRef, useState } from 'react';
4
+ import { Alert, Keyboard, Platform, StyleSheet, View } from 'react-native';
5
+ import PagerView from 'react-native-pager-view';
6
+ import { Linking } from 'react-native';
7
+ import InAppReview from 'react-native-in-app-review';
8
+ import { openSettings, PERMISSIONS, request, requestNotifications, RESULTS } from 'react-native-permissions';
9
+ import { AssetPreloader } from "../core/assetPreloader.js";
10
+ import { AnalyticsManager, OnboardingOutcome } from "../core/analyticsManager.js";
11
+ import { OnboardingRepository } from "../core/onboardingRepository.js";
12
+ import FlowboardRenderer from "./FlowboardRenderer.js";
13
+ import { SliderRegistry, SliderRegistryProvider } from "./widgets/sliderRegistry.js";
14
+ import { jsx as _jsx } from "react/jsx-runtime";
15
+ const styles = StyleSheet.create({
16
+ container: {
17
+ flex: 1,
18
+ backgroundColor: 'transparent'
19
+ },
20
+ fullFlex: {
21
+ flex: 1
22
+ }
23
+ });
24
+ export default function FlowboardFlow(props) {
25
+ const {
26
+ data,
27
+ customScreenBuilder,
28
+ customActionBuilder,
29
+ onOnboardEnd,
30
+ onStepChange,
31
+ initialStep = 0,
32
+ initialFormData = {},
33
+ onClose
34
+ } = props;
35
+ const screens = Array.isArray(data.screens) ? data.screens : [];
36
+ const flowId = data.flow_id;
37
+ const repository = useMemo(() => new OnboardingRepository(), []);
38
+ const assetPreloader = useMemo(() => new AssetPreloader(), []);
39
+ const sliderRegistry = useMemo(() => new SliderRegistry(), []);
40
+ const pagerRef = useRef(null);
41
+ const [currentIndex, setCurrentIndex] = useState(() => resolveInitialPage(initialStep, screens.length));
42
+ const [formData, setFormData] = useState({
43
+ ...initialFormData
44
+ });
45
+ const completedRef = useRef(false);
46
+ const flowStartTimeRef = useRef(Date.now());
47
+ useEffect(() => {
48
+ AnalyticsManager.instance.startSession({
49
+ flowData: data
50
+ });
51
+ AnalyticsManager.instance.trackOnboardStarted();
52
+ requestAnimationFrame(() => {
53
+ preloadAssets(currentIndex);
54
+ notifyStepChange(currentIndex);
55
+ });
56
+ return () => {
57
+ if (!completedRef.current) {
58
+ trackCompletion(OnboardingOutcome.dismissed, currentIndex);
59
+ }
60
+ AnalyticsManager.instance.endSession();
61
+ assetPreloader.clear();
62
+ };
63
+ // eslint-disable-next-line react-hooks/exhaustive-deps
64
+ }, []);
65
+ useEffect(() => {
66
+ if (pagerRef.current) {
67
+ pagerRef.current.setPageWithoutAnimation(currentIndex);
68
+ }
69
+ }, [currentIndex]);
70
+ const notifyStepChange = index => {
71
+ if (index < 0 || index >= screens.length) return;
72
+ const screenData = screens[index];
73
+ const pageId = screenData.id ?? 'unknown';
74
+ AnalyticsManager.instance.trackScreenView({
75
+ stepId: pageId,
76
+ stepIndex: index,
77
+ stepName: screenData.name
78
+ });
79
+ if (onStepChange) {
80
+ onStepChange(pageId, index, {
81
+ ...formData
82
+ });
83
+ }
84
+ persistProgress(index);
85
+ preloadAssets(index);
86
+ };
87
+ const persistProgress = index => {
88
+ if (!flowId) return;
89
+ repository.saveProgress({
90
+ flowId,
91
+ stepIndex: index,
92
+ formData: {
93
+ ...formData
94
+ }
95
+ }).catch(() => null);
96
+ };
97
+ const resetStoredProgress = () => {
98
+ repository.clearProgress().catch(() => null);
99
+ };
100
+ const preloadAssets = index => {
101
+ const currentScreen = screens[index];
102
+ if (currentScreen) {
103
+ assetPreloader.preloadScreenAssets(currentScreen).catch(() => null);
104
+ }
105
+ const nextScreen = screens[index + 1];
106
+ if (nextScreen) {
107
+ assetPreloader.preloadScreenAssets(nextScreen).catch(() => null);
108
+ }
109
+ };
110
+ const trackCompletion = (outcome, index) => {
111
+ if (completedRef.current) return;
112
+ completedRef.current = true;
113
+ assetPreloader.clear();
114
+ const duration = Date.now() - flowStartTimeRef.current;
115
+ let finalStepId = 'unknown';
116
+ if (screens[index]) {
117
+ finalStepId = screens[index].id ?? 'unknown';
118
+ } else if (screens[0]) {
119
+ finalStepId = screens[0].id ?? 'unknown';
120
+ }
121
+ AnalyticsManager.instance.trackOnboardEnded({
122
+ outcome,
123
+ totalDurationMs: duration,
124
+ finalStepId
125
+ });
126
+ };
127
+ const createContext = index => ({
128
+ context: null,
129
+ currentIndex: index,
130
+ totalScreens: screens.length,
131
+ formData: {
132
+ ...formData
133
+ },
134
+ screenData: screens[index],
135
+ onNext: () => handleAction('next', index, screens.length),
136
+ onPrevious: () => handleAction('previous', index, screens.length),
137
+ onFinish: () => handleAction('finish', index, screens.length)
138
+ });
139
+ const handleAction = (action, index, totalScreens, dataPayload) => {
140
+ Keyboard.dismiss();
141
+ if (action === 'next') {
142
+ const currentScreen = screens[index];
143
+ const invalidFields = validateScreen(currentScreen, formData);
144
+ if (invalidFields.length > 0) {
145
+ Alert.alert('Validation', 'Please fill in all required fields properly.');
146
+ return;
147
+ }
148
+ if (index < totalScreens - 1) {
149
+ setCurrentIndex(index + 1);
150
+ } else {
151
+ trackCompletion(OnboardingOutcome.completed, index);
152
+ onOnboardEnd?.({
153
+ ...formData
154
+ });
155
+ resetStoredProgress();
156
+ onClose?.();
157
+ }
158
+ return;
159
+ }
160
+ if (action === 'previous') {
161
+ if (index > 0) {
162
+ setCurrentIndex(index - 1);
163
+ }
164
+ return;
165
+ }
166
+ if (action === 'finish') {
167
+ trackCompletion(OnboardingOutcome.completed, index);
168
+ onOnboardEnd?.({
169
+ ...formData
170
+ });
171
+ resetStoredProgress();
172
+ onClose?.();
173
+ return;
174
+ }
175
+ if (action === 'deeplink' || action === 'weblink') {
176
+ handleLinkAction(index, dataPayload);
177
+ return;
178
+ }
179
+ if (action === 'rate_app') {
180
+ handleRateAppAction(index, totalScreens);
181
+ return;
182
+ }
183
+ if (action === 'request_permission') {
184
+ handlePermissionAction(index, totalScreens, dataPayload);
185
+ return;
186
+ }
187
+ const customHandler = customActionBuilder;
188
+ if (!customHandler) return;
189
+ const ctx = createContext(index);
190
+ customHandler(action, ctx, dataPayload);
191
+ };
192
+ const handleLinkAction = async (index, dataPayload) => {
193
+ const screenData = screens[index];
194
+ let url = dataPayload?.url ?? screenData?.url;
195
+ if (!url) return;
196
+ try {
197
+ const canOpen = await Linking.canOpenURL(url);
198
+ if (canOpen) {
199
+ await Linking.openURL(url);
200
+ }
201
+ } catch {
202
+ // ignore
203
+ }
204
+ };
205
+ const handleRateAppAction = async (index, totalScreens) => {
206
+ try {
207
+ if (InAppReview.isAvailable()) {
208
+ InAppReview.RequestInAppReview();
209
+ }
210
+ } catch {
211
+ // ignore
212
+ }
213
+ if (index < totalScreens - 1) {
214
+ setCurrentIndex(index + 1);
215
+ } else {
216
+ trackCompletion(OnboardingOutcome.completed, index);
217
+ onOnboardEnd?.({
218
+ ...formData
219
+ });
220
+ resetStoredProgress();
221
+ onClose?.();
222
+ }
223
+ };
224
+ const handlePermissionAction = async (index, totalScreens, dataPayload) => {
225
+ const permissionKey = String(dataPayload?.actionPermission ?? dataPayload?.permission ?? dataPayload?.permissionType ?? '').trim().toLowerCase();
226
+ if (!permissionKey) {
227
+ Alert.alert('Permission', 'Permission type is missing for this action.');
228
+ return;
229
+ }
230
+ const result = await requestPermission(permissionKey);
231
+ if (result === RESULTS.UNAVAILABLE) {
232
+ Alert.alert('Permission', `${formatPermissionName(permissionKey)} permission is not supported.`);
233
+ return;
234
+ }
235
+ if (result === RESULTS.BLOCKED) {
236
+ Alert.alert('Permission', `${formatPermissionName(permissionKey)} permission is permanently denied. Enable it in Settings.`, [{
237
+ text: 'Cancel',
238
+ style: 'cancel'
239
+ }, {
240
+ text: 'Settings',
241
+ onPress: () => openSettings().catch(() => null)
242
+ }]);
243
+ return;
244
+ }
245
+ if (result === RESULTS.GRANTED || result === RESULTS.LIMITED) {
246
+ handleAction('next', index, totalScreens);
247
+ return;
248
+ }
249
+ Alert.alert('Permission', `${formatPermissionName(permissionKey)} permission is required to continue.`);
250
+ };
251
+ const handleInputChange = (id, value, index) => {
252
+ setFormData(prev => {
253
+ const next = {
254
+ ...prev,
255
+ [id]: value
256
+ };
257
+ return next;
258
+ });
259
+ persistProgress(index);
260
+ };
261
+ return /*#__PURE__*/_jsx(View, {
262
+ style: styles.container,
263
+ children: /*#__PURE__*/_jsx(PagerView, {
264
+ ref: pagerRef,
265
+ style: styles.fullFlex,
266
+ scrollEnabled: false,
267
+ initialPage: currentIndex,
268
+ onPageSelected: event => {
269
+ const nextIndex = event.nativeEvent.position;
270
+ setCurrentIndex(nextIndex);
271
+ notifyStepChange(nextIndex);
272
+ },
273
+ children: screens.map((screen, index) => {
274
+ const screenData = screen;
275
+ const screenType = screenData.type;
276
+ if (screenType === 'custom' && customScreenBuilder) {
277
+ const ctx = createContext(index);
278
+ return /*#__PURE__*/_jsx(View, {
279
+ style: styles.fullFlex,
280
+ children: customScreenBuilder(ctx)
281
+ }, `screen-${index}`);
282
+ }
283
+ return /*#__PURE__*/_jsx(View, {
284
+ style: styles.fullFlex,
285
+ children: /*#__PURE__*/_jsx(SliderRegistryProvider, {
286
+ registry: sliderRegistry,
287
+ children: /*#__PURE__*/_jsx(FlowboardRenderer, {
288
+ screenData: screenData,
289
+ formData: formData,
290
+ onInputChange: (id, value) => handleInputChange(id, value, index),
291
+ onAction: (action, payload) => handleAction(action, index, screens.length, payload),
292
+ currentIndex: index,
293
+ totalScreens: screens.length
294
+ })
295
+ })
296
+ }, `screen-${index}`);
297
+ })
298
+ })
299
+ });
300
+ }
301
+ function resolveInitialPage(desired, total) {
302
+ if (!total) return 0;
303
+ if (desired <= 0) return 0;
304
+ if (desired >= total) return total - 1;
305
+ return desired;
306
+ }
307
+ function validateScreen(screenData, formData) {
308
+ const invalidFields = [];
309
+ const children = Array.isArray(screenData.children) ? screenData.children : [];
310
+ const checkWidget = widget => {
311
+ const id = widget.id;
312
+ const props = widget.properties ?? {};
313
+ const childrenJson = widget.children;
314
+ const childJson = widget.child;
315
+ if (id && props.required === true) {
316
+ const value = formData[id];
317
+ let isValid = true;
318
+ if (value === null || value === undefined) {
319
+ isValid = false;
320
+ } else if (typeof value === 'string' && value.trim() === '') {
321
+ isValid = false;
322
+ } else if (Array.isArray(value) && value.length === 0) {
323
+ isValid = false;
324
+ }
325
+ if (isValid && typeof value === 'string' && props.regex && String(props.regex).length > 0) {
326
+ try {
327
+ const reg = new RegExp(props.regex);
328
+ if (!reg.test(value)) {
329
+ isValid = false;
330
+ }
331
+ } catch {
332
+ // ignore invalid regex
333
+ }
334
+ }
335
+ if (!isValid) invalidFields.push(id);
336
+ }
337
+ if (Array.isArray(childrenJson)) {
338
+ childrenJson.forEach(child => {
339
+ if (child && typeof child === 'object') checkWidget(child);
340
+ });
341
+ }
342
+ if (childJson && typeof childJson === 'object') {
343
+ checkWidget(childJson);
344
+ }
345
+ };
346
+ children.forEach(child => {
347
+ if (child && typeof child === 'object') checkWidget(child);
348
+ });
349
+ return invalidFields;
350
+ }
351
+ async function requestPermission(permissionKey) {
352
+ switch (permissionKey) {
353
+ case 'push_notifications':
354
+ case 'notifications':
355
+ {
356
+ const result = await requestNotifications(['alert', 'sound', 'badge']);
357
+ return result.status;
358
+ }
359
+ case 'contacts':
360
+ return request(PERMISSIONS.IOS.CONTACTS ?? PERMISSIONS.ANDROID.READ_CONTACTS);
361
+ case 'location':
362
+ return request(Platform.select({
363
+ ios: PERMISSIONS.IOS.LOCATION_WHEN_IN_USE,
364
+ android: PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION
365
+ }));
366
+ case 'camera':
367
+ return request(Platform.select({
368
+ ios: PERMISSIONS.IOS.CAMERA,
369
+ android: PERMISSIONS.ANDROID.CAMERA
370
+ }));
371
+ case 'microphone':
372
+ return request(Platform.select({
373
+ ios: PERMISSIONS.IOS.MICROPHONE,
374
+ android: PERMISSIONS.ANDROID.RECORD_AUDIO
375
+ }));
376
+ case 'photos':
377
+ case 'photo_library':
378
+ return request(Platform.select({
379
+ ios: PERMISSIONS.IOS.PHOTO_LIBRARY,
380
+ android: PERMISSIONS.ANDROID.READ_MEDIA_IMAGES ?? PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE
381
+ }));
382
+ default:
383
+ return RESULTS.UNAVAILABLE;
384
+ }
385
+ }
386
+ function formatPermissionName(key) {
387
+ return key.replace(/_/g, ' ').trim().split(' ').filter(Boolean).map(segment => segment.charAt(0).toUpperCase() + segment.slice(1)).join(' ');
388
+ }
389
+ //# sourceMappingURL=FlowboardFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useRef","useState","Alert","Keyboard","Platform","StyleSheet","View","PagerView","Linking","InAppReview","openSettings","PERMISSIONS","request","requestNotifications","RESULTS","AssetPreloader","AnalyticsManager","OnboardingOutcome","OnboardingRepository","FlowboardRenderer","SliderRegistry","SliderRegistryProvider","jsx","_jsx","styles","create","container","flex","backgroundColor","fullFlex","FlowboardFlow","props","data","customScreenBuilder","customActionBuilder","onOnboardEnd","onStepChange","initialStep","initialFormData","onClose","screens","Array","isArray","flowId","flow_id","repository","assetPreloader","sliderRegistry","pagerRef","currentIndex","setCurrentIndex","resolveInitialPage","length","formData","setFormData","completedRef","flowStartTimeRef","Date","now","instance","startSession","flowData","trackOnboardStarted","requestAnimationFrame","preloadAssets","notifyStepChange","current","trackCompletion","dismissed","endSession","clear","setPageWithoutAnimation","index","screenData","pageId","id","trackScreenView","stepId","stepIndex","stepName","name","persistProgress","saveProgress","catch","resetStoredProgress","clearProgress","currentScreen","preloadScreenAssets","nextScreen","outcome","duration","finalStepId","trackOnboardEnded","totalDurationMs","createContext","context","totalScreens","onNext","handleAction","onPrevious","onFinish","action","dataPayload","dismiss","invalidFields","validateScreen","alert","completed","handleLinkAction","handleRateAppAction","handlePermissionAction","customHandler","ctx","url","canOpen","canOpenURL","openURL","isAvailable","RequestInAppReview","permissionKey","String","actionPermission","permission","permissionType","trim","toLowerCase","result","requestPermission","UNAVAILABLE","formatPermissionName","BLOCKED","text","style","onPress","GRANTED","LIMITED","handleInputChange","value","prev","next","children","ref","scrollEnabled","initialPage","onPageSelected","event","nextIndex","nativeEvent","position","map","screen","screenType","type","registry","onInputChange","onAction","payload","desired","total","checkWidget","widget","properties","childrenJson","childJson","child","required","isValid","undefined","regex","reg","RegExp","test","push","forEach","status","IOS","CONTACTS","ANDROID","READ_CONTACTS","select","ios","LOCATION_WHEN_IN_USE","android","ACCESS_FINE_LOCATION","CAMERA","MICROPHONE","RECORD_AUDIO","PHOTO_LIBRARY","READ_MEDIA_IMAGES","READ_EXTERNAL_STORAGE","key","replace","split","filter","Boolean","segment","charAt","toUpperCase","slice","join"],"sourceRoot":"../../../src","sources":["components/FlowboardFlow.tsx"],"mappings":"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","ignoreList":[]}