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,62 @@
1
+ "use strict";
2
+
3
+ import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ const STORAGE_KEY = 'flowboard_onboarding_json';
5
+ const FETCH_TIME_KEY = 'flowboard_fetch_time';
6
+ const PROGRESS_FLOW_KEY = 'flowboard_progress_flow_id';
7
+ const PROGRESS_STEP_KEY = 'flowboard_progress_step';
8
+ const PROGRESS_FORM_DATA_KEY = 'flowboard_progress_form_data';
9
+ export class OnboardingRepository {
10
+ async saveOnboardingJson(json) {
11
+ await AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(json));
12
+ await AsyncStorage.setItem(FETCH_TIME_KEY, Date.now().toString());
13
+ }
14
+ async getOnboardingJson() {
15
+ const jsonString = await AsyncStorage.getItem(STORAGE_KEY);
16
+ if (!jsonString) return null;
17
+ try {
18
+ return JSON.parse(jsonString);
19
+ } catch {
20
+ await this.clearOnboardingJson();
21
+ return null;
22
+ }
23
+ }
24
+ async clearOnboardingJson() {
25
+ await AsyncStorage.multiRemove([STORAGE_KEY, FETCH_TIME_KEY]);
26
+ }
27
+ async saveProgress(params) {
28
+ await AsyncStorage.setItem(PROGRESS_FLOW_KEY, params.flowId);
29
+ await AsyncStorage.setItem(PROGRESS_STEP_KEY, params.stepIndex.toString());
30
+ await AsyncStorage.setItem(PROGRESS_FORM_DATA_KEY, JSON.stringify(params.formData));
31
+ }
32
+ async getProgressStepForFlow(flowId) {
33
+ const storedFlowId = await AsyncStorage.getItem(PROGRESS_FLOW_KEY);
34
+ if (storedFlowId !== flowId) return null;
35
+ const value = await AsyncStorage.getItem(PROGRESS_STEP_KEY);
36
+ if (!value) return null;
37
+ const parsed = Number(value);
38
+ return Number.isNaN(parsed) ? null : parsed;
39
+ }
40
+ async getProgressFormDataForFlow(flowId) {
41
+ const storedFlowId = await AsyncStorage.getItem(PROGRESS_FLOW_KEY);
42
+ if (storedFlowId !== flowId) return null;
43
+ const jsonString = await AsyncStorage.getItem(PROGRESS_FORM_DATA_KEY);
44
+ if (!jsonString) return null;
45
+ try {
46
+ const decoded = JSON.parse(jsonString);
47
+ if (decoded && typeof decoded === 'object') {
48
+ return {
49
+ ...decoded
50
+ };
51
+ }
52
+ return null;
53
+ } catch {
54
+ await this.clearProgress();
55
+ return null;
56
+ }
57
+ }
58
+ async clearProgress() {
59
+ await AsyncStorage.multiRemove([PROGRESS_FLOW_KEY, PROGRESS_STEP_KEY, PROGRESS_FORM_DATA_KEY]);
60
+ }
61
+ }
62
+ //# sourceMappingURL=onboardingRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AsyncStorage","STORAGE_KEY","FETCH_TIME_KEY","PROGRESS_FLOW_KEY","PROGRESS_STEP_KEY","PROGRESS_FORM_DATA_KEY","OnboardingRepository","saveOnboardingJson","json","setItem","JSON","stringify","Date","now","toString","getOnboardingJson","jsonString","getItem","parse","clearOnboardingJson","multiRemove","saveProgress","params","flowId","stepIndex","formData","getProgressStepForFlow","storedFlowId","value","parsed","Number","isNaN","getProgressFormDataForFlow","decoded","clearProgress"],"sourceRoot":"../../../src","sources":["core/onboardingRepository.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ const DEFAULT_ENDPOINT = 'https://test-638704832888.europe-west1.run.app';
4
+ export class ResolverService {
5
+ constructor(endpoint) {
6
+ this.endpoint = endpoint ?? DEFAULT_ENDPOINT;
7
+ }
8
+ async fetchOnboardingJson(params) {
9
+ const {
10
+ context,
11
+ appId
12
+ } = params;
13
+ const payload = context.toJson();
14
+ payload.appId = appId;
15
+ payload.installId = context.installId;
16
+ payload.bundleId = context.bundleId;
17
+ payload.appVersion = context.appVersion;
18
+ payload.buildNumber = context.buildNumber;
19
+ payload.os = context.os;
20
+ payload.osVersion = context.osVersion;
21
+ payload.deviceType = context.deviceType;
22
+ payload.locale = context.locale;
23
+ payload.country = context.country;
24
+ payload.sdk = {
25
+ name: 'flowboard',
26
+ version: '1.0.0'
27
+ };
28
+ let response;
29
+ try {
30
+ response = await fetch(this.endpoint, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'Content-Type': 'application/json'
34
+ },
35
+ body: JSON.stringify(payload)
36
+ });
37
+ } catch (error) {
38
+ throw new Error(`Failed to connect to resolver: ${String(error)}`);
39
+ }
40
+ if (!response.ok) {
41
+ const body = await response.text();
42
+ throw new Error(`Failed to load onboarding config: ${response.status} ${body}`);
43
+ }
44
+ const body = await response.json();
45
+ const flowId = response.headers.get('x-flowboard-flow-id');
46
+ if (flowId) body.flow_id = flowId;
47
+ const variantId = response.headers.get('x-flowboard-variant-id');
48
+ if (variantId) body.variant_id = variantId;
49
+ const audienceId = response.headers.get('x-flowboard-audience-id');
50
+ if (audienceId) body.audience_id = audienceId;
51
+ const bucket = response.headers.get('x-flowboard-bucket');
52
+ if (bucket) body.bucket = bucket;
53
+ const experimentId = response.headers.get('x-flowboard-experiment-id');
54
+ if (experimentId) body.experiment_id = experimentId;
55
+ return body;
56
+ }
57
+ }
58
+ //# sourceMappingURL=resolverService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_ENDPOINT","ResolverService","constructor","endpoint","fetchOnboardingJson","params","context","appId","payload","toJson","installId","bundleId","appVersion","buildNumber","os","osVersion","deviceType","locale","country","sdk","name","version","response","fetch","method","headers","body","JSON","stringify","error","Error","String","ok","text","status","json","flowId","get","flow_id","variantId","variant_id","audienceId","audience_id","bucket","experimentId","experiment_id"],"sourceRoot":"../../../src","sources":["core/resolverService.ts"],"mappings":";;AAGA,MAAMA,gBAAgB,GAAG,gDAAgD;AAEzE,OAAO,MAAMC,eAAe,CAAC;EAG3BC,WAAWA,CAACC,QAAiB,EAAE;IAC7B,IAAI,CAACA,QAAQ,GAAGA,QAAQ,IAAIH,gBAAgB;EAC9C;EAEA,MAAMI,mBAAmBA,CAACC,MAGzB,EAA0B;IACzB,MAAM;MAAEC,OAAO;MAAEC;IAAM,CAAC,GAAGF,MAAM;IACjC,MAAMG,OAAO,GAAGF,OAAO,CAACG,MAAM,CAAC,CAAC;IAChCD,OAAO,CAACD,KAAK,GAAGA,KAAK;IACrBC,OAAO,CAACE,SAAS,GAAGJ,OAAO,CAACI,SAAS;IACrCF,OAAO,CAACG,QAAQ,GAAGL,OAAO,CAACK,QAAQ;IAEnCH,OAAO,CAACI,UAAU,GAAGN,OAAO,CAACM,UAAU;IACvCJ,OAAO,CAACK,WAAW,GAAGP,OAAO,CAACO,WAAW;IACzCL,OAAO,CAACM,EAAE,GAAGR,OAAO,CAACQ,EAAE;IACvBN,OAAO,CAACO,SAAS,GAAGT,OAAO,CAACS,SAAS;IACrCP,OAAO,CAACQ,UAAU,GAAGV,OAAO,CAACU,UAAU;IACvCR,OAAO,CAACS,MAAM,GAAGX,OAAO,CAACW,MAAM;IAC/BT,OAAO,CAACU,OAAO,GAAGZ,OAAO,CAACY,OAAO;IAEjCV,OAAO,CAACW,GAAG,GAAG;MACZC,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAE;IACX,CAAC;IAED,IAAIC,QAAkB;IACtB,IAAI;MACFA,QAAQ,GAAG,MAAMC,KAAK,CAAC,IAAI,CAACpB,QAAQ,EAAE;QACpCqB,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UAAE,cAAc,EAAE;QAAmB,CAAC;QAC/CC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACpB,OAAO;MAC9B,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOqB,KAAK,EAAE;MACd,MAAM,IAAIC,KAAK,CAAC,kCAAkCC,MAAM,CAACF,KAAK,CAAC,EAAE,CAAC;IACpE;IAEA,IAAI,CAACP,QAAQ,CAACU,EAAE,EAAE;MAChB,MAAMN,IAAI,GAAG,MAAMJ,QAAQ,CAACW,IAAI,CAAC,CAAC;MAClC,MAAM,IAAIH,KAAK,CACb,qCAAqCR,QAAQ,CAACY,MAAM,IAAIR,IAAI,EAC9D,CAAC;IACH;IAEA,MAAMA,IAAI,GAAI,MAAMJ,QAAQ,CAACa,IAAI,CAAC,CAAmB;IAErD,MAAMC,MAAM,GAAGd,QAAQ,CAACG,OAAO,CAACY,GAAG,CAAC,qBAAqB,CAAC;IAC1D,IAAID,MAAM,EAAEV,IAAI,CAACY,OAAO,GAAGF,MAAM;IACjC,MAAMG,SAAS,GAAGjB,QAAQ,CAACG,OAAO,CAACY,GAAG,CAAC,wBAAwB,CAAC;IAChE,IAAIE,SAAS,EAAEb,IAAI,CAACc,UAAU,GAAGD,SAAS;IAC1C,MAAME,UAAU,GAAGnB,QAAQ,CAACG,OAAO,CAACY,GAAG,CAAC,yBAAyB,CAAC;IAClE,IAAII,UAAU,EAAEf,IAAI,CAACgB,WAAW,GAAGD,UAAU;IAC7C,MAAME,MAAM,GAAGrB,QAAQ,CAACG,OAAO,CAACY,GAAG,CAAC,oBAAoB,CAAC;IACzD,IAAIM,MAAM,EAAEjB,IAAI,CAACiB,MAAM,GAAGA,MAAM;IAChC,MAAMC,YAAY,GAAGtB,QAAQ,CAACG,OAAO,CAACY,GAAG,CAAC,2BAA2B,CAAC;IACtE,IAAIO,YAAY,EAAElB,IAAI,CAACmB,aAAa,GAAGD,YAAY;IAEnD,OAAOlB,IAAI;EACb;AACF","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { Flowboard } from "./Flowboard.js";
4
+ export { default as FlowboardProvider } from "./FlowboardProvider.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Flowboard","default","FlowboardProvider"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,OAAO,IAAIC,iBAAiB,QAAQ,wBAAqB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=flowboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/flowboard.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=react-native-vector-icons.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/react-native-vector-icons.d.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+
3
+ import { Parser } from 'expr-eval';
4
+ export const EMPTY_INSETS = {
5
+ top: 0,
6
+ right: 0,
7
+ bottom: 0,
8
+ left: 0
9
+ };
10
+ const parser = new Parser();
11
+ export function parseColor(hex) {
12
+ if (hex === null || hex === undefined) return 'transparent';
13
+ if (typeof hex === 'number' && Number.isFinite(hex)) {
14
+ return argbIntToRgba(hex);
15
+ }
16
+ if (typeof hex !== 'string') return 'transparent';
17
+ const raw = hex.trim();
18
+ if (!raw) return 'transparent';
19
+ if (raw.startsWith('#')) {
20
+ const hexVal = raw.slice(1);
21
+ if (hexVal.length === 6) {
22
+ const r = parseInt(hexVal.slice(0, 2), 16);
23
+ const g = parseInt(hexVal.slice(2, 4), 16);
24
+ const b = parseInt(hexVal.slice(4, 6), 16);
25
+ return `rgba(${r},${g},${b},1)`;
26
+ }
27
+ if (hexVal.length === 8) {
28
+ const a = parseInt(hexVal.slice(0, 2), 16) / 255;
29
+ const r = parseInt(hexVal.slice(2, 4), 16);
30
+ const g = parseInt(hexVal.slice(4, 6), 16);
31
+ const b = parseInt(hexVal.slice(6, 8), 16);
32
+ return `rgba(${r},${g},${b},${clampAlpha(a)})`;
33
+ }
34
+ return 'transparent';
35
+ }
36
+ if (raw.startsWith('0x') || raw.startsWith('0X')) {
37
+ const hexVal = raw.slice(2);
38
+ if (hexVal.length === 8) {
39
+ const a = parseInt(hexVal.slice(0, 2), 16) / 255;
40
+ const r = parseInt(hexVal.slice(2, 4), 16);
41
+ const g = parseInt(hexVal.slice(4, 6), 16);
42
+ const b = parseInt(hexVal.slice(6, 8), 16);
43
+ return `rgba(${r},${g},${b},${clampAlpha(a)})`;
44
+ }
45
+ if (hexVal.length === 6) {
46
+ const r = parseInt(hexVal.slice(0, 2), 16);
47
+ const g = parseInt(hexVal.slice(2, 4), 16);
48
+ const b = parseInt(hexVal.slice(4, 6), 16);
49
+ return `rgba(${r},${g},${b},1)`;
50
+ }
51
+ }
52
+ return 'transparent';
53
+ }
54
+ function clampAlpha(value) {
55
+ if (Number.isNaN(value)) return 1;
56
+ return Math.max(0, Math.min(1, value));
57
+ }
58
+ function argbIntToRgba(value) {
59
+ const hex = value.toString(16).padStart(8, '0');
60
+ const a = parseInt(hex.slice(0, 2), 16) / 255;
61
+ const r = parseInt(hex.slice(2, 4), 16);
62
+ const g = parseInt(hex.slice(4, 6), 16);
63
+ const b = parseInt(hex.slice(6, 8), 16);
64
+ return `rgba(${r},${g},${b},${clampAlpha(a)})`;
65
+ }
66
+ export function parseDimension(value, zeroIsNull = false) {
67
+ if (value === null || value === undefined) return undefined;
68
+ if (typeof value === 'number' && Number.isFinite(value)) {
69
+ if (zeroIsNull && value === 0) return undefined;
70
+ return value;
71
+ }
72
+ if (typeof value === 'string') {
73
+ if (value.toLowerCase() === 'infinity') return Number.POSITIVE_INFINITY;
74
+ const numeric = Number(value);
75
+ if (!Number.isNaN(numeric)) {
76
+ if (zeroIsNull && numeric === 0) return undefined;
77
+ return numeric;
78
+ }
79
+ }
80
+ return undefined;
81
+ }
82
+ export function parseInsets(value) {
83
+ if (typeof value === 'number') {
84
+ return {
85
+ top: value,
86
+ right: value,
87
+ bottom: value,
88
+ left: value
89
+ };
90
+ }
91
+ if (value && typeof value === 'object') {
92
+ if ('horizontal' in value || 'vertical' in value) {
93
+ const horizontal = Number(value.horizontal ?? 0);
94
+ const vertical = Number(value.vertical ?? 0);
95
+ return {
96
+ top: vertical,
97
+ right: horizontal,
98
+ bottom: vertical,
99
+ left: horizontal
100
+ };
101
+ }
102
+ return {
103
+ top: Number(value.top ?? 0),
104
+ right: Number(value.right ?? 0),
105
+ bottom: Number(value.bottom ?? 0),
106
+ left: Number(value.left ?? 0)
107
+ };
108
+ }
109
+ return {
110
+ ...EMPTY_INSETS
111
+ };
112
+ }
113
+ export function insetsToStyle(insets) {
114
+ return {
115
+ paddingTop: insets.top,
116
+ paddingRight: insets.right,
117
+ paddingBottom: insets.bottom,
118
+ paddingLeft: insets.left
119
+ };
120
+ }
121
+ export function formatDate(pattern, date = new Date()) {
122
+ const pad = (value, len = 2) => value.toString().padStart(len, '0');
123
+ const replacements = {
124
+ yyyy: date.getFullYear().toString(),
125
+ yy: date.getFullYear().toString().slice(-2),
126
+ MM: pad(date.getMonth() + 1),
127
+ dd: pad(date.getDate()),
128
+ HH: pad(date.getHours()),
129
+ mm: pad(date.getMinutes()),
130
+ ss: pad(date.getSeconds())
131
+ };
132
+ let output = pattern;
133
+ Object.keys(replacements).forEach(token => {
134
+ output = output.split(token).join(replacements[token]);
135
+ });
136
+ return output;
137
+ }
138
+ export function resolveText(text, formData) {
139
+ const regex = /\{\{(.*?)\}\}/g;
140
+ return text.replace(regex, (_match, content) => {
141
+ const resolved = evaluateExpression(String(content ?? ''), formData);
142
+ return resolved === null || resolved === undefined ? '' : String(resolved);
143
+ });
144
+ }
145
+ export function evaluateExpression(content, formData) {
146
+ let expressionPart = content;
147
+ let defaultValue;
148
+ if (content.includes('|')) {
149
+ const pipeIndex = content.lastIndexOf('|');
150
+ expressionPart = content.substring(0, pipeIndex).trim();
151
+ defaultValue = content.substring(pipeIndex + 1).trim();
152
+ } else {
153
+ expressionPart = content.trim();
154
+ }
155
+ if (!expressionPart) return defaultValue ?? '';
156
+ try {
157
+ if (expressionPart.startsWith('DATE(') && expressionPart.endsWith(')')) {
158
+ const format = expressionPart.substring(5, expressionPart.length - 1);
159
+ return formatDate(format);
160
+ }
161
+ if (/^[a-zA-Z0-9_]+$/.test(expressionPart)) {
162
+ const val = formData[expressionPart];
163
+ return val ?? defaultValue ?? '';
164
+ }
165
+ const context = {
166
+ ...formData
167
+ };
168
+ let usedNumericString = false;
169
+ Object.keys(context).forEach(key => {
170
+ if (typeof context[key] === 'string') {
171
+ const numeric = Number(context[key]);
172
+ if (!Number.isNaN(numeric)) {
173
+ context[key] = numeric;
174
+ usedNumericString = true;
175
+ }
176
+ }
177
+ });
178
+ const expr = parser.parse(expressionPart);
179
+ const result = expr.evaluate(context);
180
+ if (usedNumericString && typeof result === 'number' && Number.isInteger(result)) {
181
+ return result.toFixed(1);
182
+ }
183
+ return result ?? defaultValue ?? '';
184
+ } catch {
185
+ return defaultValue ?? '';
186
+ }
187
+ }
188
+ export function resolveNumericValue(value, formData) {
189
+ if (value === null || value === undefined) return null;
190
+ if (typeof value === 'number' && Number.isFinite(value)) return value;
191
+ if (typeof value === 'string') {
192
+ const trimmed = value.trim();
193
+ if (trimmed.startsWith('{{') && trimmed.endsWith('}}')) {
194
+ const content = trimmed.substring(2, trimmed.length - 2);
195
+ const result = evaluateExpression(content, formData);
196
+ if (typeof result === 'number') return result;
197
+ if (typeof result === 'string') {
198
+ const numeric = Number(result);
199
+ if (!Number.isNaN(numeric)) return numeric;
200
+ }
201
+ return null;
202
+ }
203
+ const numeric = Number(trimmed);
204
+ if (!Number.isNaN(numeric)) return numeric;
205
+ }
206
+ if (typeof value === 'string') return null;
207
+ if (typeof value === 'boolean') return value ? 1 : 0;
208
+ return null;
209
+ }
210
+ export function parseFontWeight(value) {
211
+ if (typeof value === 'number') {
212
+ if (value >= 900) return '900';
213
+ if (value >= 800) return '800';
214
+ if (value >= 700) return '700';
215
+ if (value >= 600) return '600';
216
+ if (value >= 500) return '500';
217
+ if (value >= 400) return '400';
218
+ if (value >= 300) return '300';
219
+ if (value >= 200) return '200';
220
+ if (value >= 100) return '100';
221
+ }
222
+ switch ((value ?? '').toString().toLowerCase()) {
223
+ case 'bold':
224
+ case '700':
225
+ return '700';
226
+ case 'w100':
227
+ case 'thin':
228
+ return '100';
229
+ case 'w200':
230
+ case 'extralight':
231
+ return '200';
232
+ case 'w300':
233
+ case 'light':
234
+ return '300';
235
+ case 'w400':
236
+ case 'regular':
237
+ case 'normal':
238
+ return '400';
239
+ case 'w500':
240
+ case 'medium':
241
+ return '500';
242
+ case 'w600':
243
+ case 'semibold':
244
+ return '600';
245
+ case 'w800':
246
+ case 'extrabold':
247
+ return '800';
248
+ case 'w900':
249
+ case 'black':
250
+ return '900';
251
+ default:
252
+ return '400';
253
+ }
254
+ }
255
+ export function parseTextDecoration(value) {
256
+ switch (value) {
257
+ case 'underline':
258
+ return 'underline';
259
+ case 'lineThrough':
260
+ return 'line-through';
261
+ case 'overline':
262
+ return 'underline';
263
+ default:
264
+ return 'none';
265
+ }
266
+ }
267
+ export function parseTextAlign(value) {
268
+ switch (value) {
269
+ case 'center':
270
+ return 'center';
271
+ case 'right':
272
+ case 'end':
273
+ return 'right';
274
+ case 'left':
275
+ case 'start':
276
+ default:
277
+ return 'left';
278
+ }
279
+ }
280
+ export function parseFlexAlignment(value) {
281
+ switch (value) {
282
+ case 'center':
283
+ return 'center';
284
+ case 'end':
285
+ return 'flex-end';
286
+ case 'spaceBetween':
287
+ return 'space-between';
288
+ case 'spaceAround':
289
+ return 'space-around';
290
+ case 'spaceEvenly':
291
+ return 'space-evenly';
292
+ case 'start':
293
+ default:
294
+ return 'flex-start';
295
+ }
296
+ }
297
+ export function parseCrossAlignment(value) {
298
+ switch (value) {
299
+ case 'center':
300
+ return 'center';
301
+ case 'end':
302
+ return 'flex-end';
303
+ case 'stretch':
304
+ return 'stretch';
305
+ case 'start':
306
+ default:
307
+ return 'flex-start';
308
+ }
309
+ }
310
+ export function parseResizeMode(value) {
311
+ switch (value) {
312
+ case 'contain':
313
+ return 'contain';
314
+ case 'cover':
315
+ return 'cover';
316
+ case 'fill':
317
+ return 'stretch';
318
+ case 'fitWidth':
319
+ case 'fitHeight':
320
+ return 'contain';
321
+ case 'none':
322
+ return 'center';
323
+ case 'scaleDown':
324
+ return 'contain';
325
+ default:
326
+ return 'contain';
327
+ }
328
+ }
329
+ export function parseAlignment(value) {
330
+ switch (value) {
331
+ case 'topCenter':
332
+ return {
333
+ justifyContent: 'flex-start',
334
+ alignItems: 'center'
335
+ };
336
+ case 'bottomCenter':
337
+ return {
338
+ justifyContent: 'flex-end',
339
+ alignItems: 'center'
340
+ };
341
+ case 'centerLeft':
342
+ return {
343
+ justifyContent: 'center',
344
+ alignItems: 'flex-start'
345
+ };
346
+ case 'centerRight':
347
+ return {
348
+ justifyContent: 'center',
349
+ alignItems: 'flex-end'
350
+ };
351
+ case 'center':
352
+ return {
353
+ justifyContent: 'center',
354
+ alignItems: 'center'
355
+ };
356
+ case 'bottomLeft':
357
+ return {
358
+ justifyContent: 'flex-end',
359
+ alignItems: 'flex-start'
360
+ };
361
+ case 'bottomRight':
362
+ return {
363
+ justifyContent: 'flex-end',
364
+ alignItems: 'flex-end'
365
+ };
366
+ case 'topRight':
367
+ return {
368
+ justifyContent: 'flex-start',
369
+ alignItems: 'flex-end'
370
+ };
371
+ case 'topLeft':
372
+ default:
373
+ return {
374
+ justifyContent: 'flex-start',
375
+ alignItems: 'flex-start'
376
+ };
377
+ }
378
+ }
379
+ //# sourceMappingURL=flowboardUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Parser","EMPTY_INSETS","top","right","bottom","left","parser","parseColor","hex","undefined","Number","isFinite","argbIntToRgba","raw","trim","startsWith","hexVal","slice","length","r","parseInt","g","b","a","clampAlpha","value","isNaN","Math","max","min","toString","padStart","parseDimension","zeroIsNull","toLowerCase","POSITIVE_INFINITY","numeric","parseInsets","horizontal","vertical","insetsToStyle","insets","paddingTop","paddingRight","paddingBottom","paddingLeft","formatDate","pattern","date","Date","pad","len","replacements","yyyy","getFullYear","yy","MM","getMonth","dd","getDate","HH","getHours","mm","getMinutes","ss","getSeconds","output","Object","keys","forEach","token","split","join","resolveText","text","formData","regex","replace","_match","content","resolved","evaluateExpression","String","expressionPart","defaultValue","includes","pipeIndex","lastIndexOf","substring","endsWith","format","test","val","context","usedNumericString","key","expr","parse","result","evaluate","isInteger","toFixed","resolveNumericValue","trimmed","parseFontWeight","parseTextDecoration","parseTextAlign","parseFlexAlignment","parseCrossAlignment","parseResizeMode","parseAlignment","justifyContent","alignItems"],"sourceRoot":"../../../src","sources":["utils/flowboardUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,33 @@
1
+ import type { FlowboardData, FlowboardLaunchOptions } from './types/flowboard';
2
+ export type LaunchPayload = {
3
+ data: FlowboardData;
4
+ options: FlowboardLaunchOptions;
5
+ initialStep: number;
6
+ initialFormData: Record<string, any>;
7
+ };
8
+ type LaunchListener = (payload: LaunchPayload) => void;
9
+ export declare class Flowboard {
10
+ private static appId;
11
+ private static bundleId;
12
+ private static debug;
13
+ private static repository;
14
+ private static service;
15
+ private static initPromise;
16
+ private static listeners;
17
+ static subscribe(listener: LaunchListener): () => void;
18
+ static init(params: {
19
+ appId: string;
20
+ bundleId: string;
21
+ debug?: boolean;
22
+ enableAnalytics?: boolean;
23
+ }): Promise<void>;
24
+ static reinit(): Promise<void>;
25
+ static launchOnboarding(options?: FlowboardLaunchOptions): Promise<void>;
26
+ private static initialize;
27
+ private static fetchAndSave;
28
+ private static clearLocalCaches;
29
+ private static emitLaunch;
30
+ private static log;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=Flowboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flowboard.d.ts","sourceRoot":"","sources":["../../../src/Flowboard.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;AAEvD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAC,UAAU,CAA8B;IACvD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAyB;IAC/C,OAAO,CAAC,MAAM,CAAC,WAAW,CAA8B;IACxD,OAAO,CAAC,MAAM,CAAC,SAAS,CAA6B;IAErD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI;WAKzC,IAAI,CAAC,MAAM,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;WAsBJ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;WAOvB,gBAAgB,CAC3B,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC;mBA4FK,UAAU;mBAaV,YAAY;mBAmCZ,gBAAgB;IAOrC,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,OAAO,CAAC,MAAM,CAAC,GAAG;CAKnB"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export default function FlowboardProvider({ children, }: {
3
+ children: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=FlowboardProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowboardProvider.d.ts","sourceRoot":"","sources":["../../../src/FlowboardProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAYnD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CA2CA"}
@@ -0,0 +1,7 @@
1
+ import { type TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ multiply(a: number, b: number): number;
4
+ }
5
+ declare const _default: Spec;
6
+ export default _default;
7
+ //# sourceMappingURL=NativeFlowboardReact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeFlowboardReact.d.ts","sourceRoot":"","sources":["../../../src/NativeFlowboardReact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;;AAED,wBAAwE"}
@@ -0,0 +1,14 @@
1
+ import type { CustomActionBuilder, CustomScreenBuilder, FlowboardData, OnboardingEndCallback, OnStepChangeCallback } from '../types/flowboard';
2
+ type FlowboardFlowProps = {
3
+ data: FlowboardData;
4
+ customScreenBuilder?: CustomScreenBuilder;
5
+ customActionBuilder?: CustomActionBuilder;
6
+ onOnboardEnd?: OnboardingEndCallback;
7
+ onStepChange?: OnStepChangeCallback;
8
+ initialStep?: number;
9
+ initialFormData?: Record<string, any>;
10
+ onClose?: () => void;
11
+ };
12
+ export default function FlowboardFlow(props: FlowboardFlowProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=FlowboardFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowboardFlow.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowboardFlow.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EAEnB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAO5B,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAkV9D"}