flowstudio 0.0.14 → 0.0.18

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 (135) hide show
  1. package/README.md +2 -2
  2. package/dist/ai_creator.d.ts +1 -0
  3. package/dist/ai_creator.js +140 -0
  4. package/dist/ai_creator.js.map +1 -0
  5. package/dist/app_analytics.d.ts +1 -0
  6. package/dist/app_analytics.js +81 -0
  7. package/dist/app_analytics.js.map +1 -0
  8. package/dist/app_details.d.ts +1 -0
  9. package/dist/app_details.js +84 -0
  10. package/dist/app_details.js.map +1 -0
  11. package/dist/app_layout.js +11 -0
  12. package/dist/app_layout.js.map +1 -0
  13. package/dist/app_settings.d.ts +1 -0
  14. package/dist/app_settings.js +15 -0
  15. package/dist/app_settings.js.map +1 -0
  16. package/dist/components/combo_box/index.d.ts +1 -0
  17. package/dist/components/combo_box/index.js +118 -33
  18. package/dist/components/combo_box/index.js.map +1 -1
  19. package/dist/components/date_picker/index.d.ts +1 -0
  20. package/dist/components/date_picker/index.js +46 -0
  21. package/dist/components/date_picker/index.js.map +1 -0
  22. package/dist/components/gtable.d.ts +15 -0
  23. package/dist/components/gtable.js +122 -0
  24. package/dist/components/gtable.js.map +1 -0
  25. package/dist/components/mention_input/index.d.ts +1 -0
  26. package/dist/components/mention_input/index.js +125 -0
  27. package/dist/components/mention_input/index.js.map +1 -0
  28. package/dist/components/paginator_table.d.ts +7 -0
  29. package/dist/components/paginator_table.js +38 -0
  30. package/dist/components/paginator_table.js.map +1 -0
  31. package/dist/components/sheet/index.d.ts +1 -1
  32. package/dist/components/sheet/index.js +3 -3
  33. package/dist/components/sheet/index.js.map +1 -1
  34. package/dist/context.d.ts +1 -0
  35. package/dist/context.js +7 -0
  36. package/dist/context.js.map +1 -0
  37. package/dist/envs.d.ts +2 -0
  38. package/dist/envs.js +135 -0
  39. package/dist/envs.js.map +1 -0
  40. package/dist/functions.d.ts +5 -0
  41. package/dist/functions.js +204 -0
  42. package/dist/functions.js.map +1 -0
  43. package/dist/getcode.d.ts +1 -0
  44. package/dist/getcode.js +8 -0
  45. package/dist/getcode.js.map +1 -0
  46. package/dist/home.d.ts +1 -0
  47. package/dist/home.js +47 -0
  48. package/dist/home.js.map +1 -0
  49. package/dist/index.d.ts +2 -2
  50. package/dist/index.js +157 -3
  51. package/dist/index.js.map +1 -1
  52. package/dist/new_project.d.ts +1 -0
  53. package/dist/new_project.js +101 -0
  54. package/dist/new_project.js.map +1 -0
  55. package/dist/node.d.ts +3 -0
  56. package/dist/node.js +219 -0
  57. package/dist/node.js.map +1 -0
  58. package/dist/project_widget.d.ts +1 -0
  59. package/dist/project_widget.js +23 -0
  60. package/dist/project_widget.js.map +1 -0
  61. package/dist/simulator.d.ts +1 -0
  62. package/dist/simulator.js +73 -0
  63. package/dist/simulator.js.map +1 -0
  64. package/dist/studio_pane.d.ts +1 -0
  65. package/dist/studio_pane.js +309 -0
  66. package/dist/studio_pane.js.map +1 -0
  67. package/dist/top_center_panel.d.ts +1 -0
  68. package/dist/top_center_panel.js +9 -0
  69. package/dist/top_center_panel.js.map +1 -0
  70. package/dist/top_left_panel.d.ts +1 -0
  71. package/dist/top_left_panel.js +46 -0
  72. package/dist/top_left_panel.js.map +1 -0
  73. package/dist/top_right_panel.d.ts +1 -0
  74. package/dist/top_right_panel.js +80 -0
  75. package/dist/top_right_panel.js.map +1 -0
  76. package/dist/triggers.d.ts +2 -0
  77. package/dist/triggers.js +156 -0
  78. package/dist/triggers.js.map +1 -0
  79. package/dist/zustand/store.d.ts +465 -285
  80. package/dist/zustand/store.js +33 -37
  81. package/dist/zustand/store.js.map +1 -1
  82. package/package.json +33 -13
  83. package/src/components/date_picker/style.css +204 -0
  84. package/src/components/sheet/style.css +5 -5
  85. package/src/studio.css +19 -0
  86. package/src/styes/date_picker.css +204 -0
  87. package/src/styes/sheet.css +155 -0
  88. package/src/styes/studio.css +19 -0
  89. package/dist/components/app_layout.js +0 -14
  90. package/dist/components/app_layout.js.map +0 -1
  91. package/dist/components/app_settings/data_sources.d.ts +0 -1
  92. package/dist/components/app_settings/data_sources.js +0 -57
  93. package/dist/components/app_settings/data_sources.js.map +0 -1
  94. package/dist/components/app_settings/deploy.d.ts +0 -1
  95. package/dist/components/app_settings/deploy.js +0 -14
  96. package/dist/components/app_settings/deploy.js.map +0 -1
  97. package/dist/components/app_settings/index.d.ts +0 -1
  98. package/dist/components/app_settings/index.js +0 -53
  99. package/dist/components/app_settings/index.js.map +0 -1
  100. package/dist/components/app_settings/service_providers.d.ts +0 -1
  101. package/dist/components/app_settings/service_providers.js +0 -17
  102. package/dist/components/app_settings/service_providers.js.map +0 -1
  103. package/dist/components/app_settings/simulator.d.ts +0 -1
  104. package/dist/components/app_settings/simulator.js +0 -34
  105. package/dist/components/app_settings/simulator.js.map +0 -1
  106. package/dist/components/context.d.ts +0 -1
  107. package/dist/components/context.js +0 -19
  108. package/dist/components/context.js.map +0 -1
  109. package/dist/components/dock_panel.d.ts +0 -2
  110. package/dist/components/dock_panel.js +0 -46
  111. package/dist/components/dock_panel.js.map +0 -1
  112. package/dist/components/end.d.ts +0 -1
  113. package/dist/components/end.js +0 -6
  114. package/dist/components/end.js.map +0 -1
  115. package/dist/components/input.d.ts +0 -1
  116. package/dist/components/input.js +0 -11
  117. package/dist/components/input.js.map +0 -1
  118. package/dist/components/normal.d.ts +0 -1
  119. package/dist/components/normal.js +0 -6
  120. package/dist/components/normal.js.map +0 -1
  121. package/dist/components/start.d.ts +0 -1
  122. package/dist/components/start.js +0 -13
  123. package/dist/components/start.js.map +0 -1
  124. package/dist/components/studio/index.d.ts +0 -1
  125. package/dist/components/studio/index.js +0 -78
  126. package/dist/components/studio/index.js.map +0 -1
  127. package/dist/components/xnode.d.ts +0 -2
  128. package/dist/components/xnode.js +0 -28
  129. package/dist/components/xnode.js.map +0 -1
  130. package/dist/service_providers.json +0 -74
  131. package/dist/styles/sheet.css +0 -155
  132. package/src/styles/combo_box.css +0 -10
  133. package/src/styles/sheet.css +0 -155
  134. /package/dist/{components/app_layout.d.ts → app_layout.d.ts} +0 -0
  135. /package/{dist/styles/combo_box.css → src/components/combo_box/style.css} +0 -0
package/README.md CHANGED
@@ -21,11 +21,11 @@ The flow diagram builder is engineered to meet the rigorous demands of enterpris
21
21
 
22
22
  Built on a microservices architecture, the platform effortlessly scales to handle millions of concurrent interactions—whether for massive USSD campaigns, real-time chatbot conversations, or large-scale voting systems. Dynamic load balancing and auto-scaling ensure consistent performance under peak traffic, while distributed caching (via Redis or similar) minimizes latency. The system also supports multi-region deployments with data synchronization, enabling global enterprises to serve users with low-latency responses. For data-heavy use cases, batch processing and event-driven workflows (using Kafka or AWS EventBridge) allow asynchronous handling of analytics and payments, ensuring no bottlenecks even during surges. This scalability extends to integrations, with webhook-driven APIs and web sockets enabling real-time updates across third-party platforms like CRM systems (Salesforce, HubSpot) or payment gateways (Stripe, PayPal).
23
23
 
24
- - Visit our [Site](https://flowstudio.vercel.app) to learn more.
24
+ - Visit our [Site](https://flowstudio-docs.vercel.app) to learn more.
25
25
 
26
26
  ## Documentation
27
27
 
28
- Visit [https://flowstudio.vercel.app/docs](https://flowstudio.vercel.app/docs) to view the full documentation.
28
+ Visit [https://flowstudio-docs.vercel.app/docs](https://flowstudio-docs.vercel.app/docs) to view the full documentation.
29
29
 
30
30
  ## Contributing
31
31
 
@@ -0,0 +1 @@
1
+ export default function AICreator({ projectId }: any): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,140 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { yupResolver } from "@hookform/resolvers/yup";
3
+ import { Button, Card, Flex, TextField, Text, Spinner, Popover, Tooltip } from "@radix-ui/themes";
4
+ import { useForm } from "react-hook-form";
5
+ import * as Form from "@radix-ui/react-form";
6
+ import { useMemo, useState } from "react";
7
+ import * as Yup from "yup";
8
+ import parse from 'html-react-parser';
9
+ import { SendHorizonalIcon } from "lucide-react";
10
+ import { useReactFlow } from "@xyflow/react";
11
+ import GNode from './node';
12
+ export default function AICreator({ projectId }) {
13
+ var _a, _b;
14
+ const [deploymentType, setDeploymentType] = useState('draft');
15
+ const [userType, setUserType] = useState('normal');
16
+ const [flowMessage, setFlowMessage] = useState('');
17
+ const [refreshing, setRefreshing] = useState(false);
18
+ // const [description, setDescription] = useState('');
19
+ const [isGenerating, setIsGenerating] = useState(false);
20
+ const { setEdges, setNodes } = useReactFlow();
21
+ const nodeTypes = useMemo(() => ({ gNode: GNode }), []);
22
+ // const aiEndpoint = ``
23
+ // const NODE_TYPES = ''
24
+ const AI_API_KEY = '';
25
+ async function generateFlowFromDescription(description) {
26
+ const prompt = `
27
+ Convert this flow description into nodes and edges:
28
+ "${description}"
29
+
30
+ Available node types: ${JSON.stringify(nodeTypes)}
31
+ Respond with JSON format: {nodes: [], edges: []}
32
+ `;
33
+ const response = await fetch('https://api.openai.com/v1/chat/completions', {
34
+ method: 'POST',
35
+ headers: {
36
+ 'Content-Type': 'application/json',
37
+ 'Authorization': `Bearer ${AI_API_KEY}`
38
+ },
39
+ body: JSON.stringify({
40
+ model: "gpt-4",
41
+ messages: [{ role: "user", content: prompt }],
42
+ temperature: 0.7
43
+ })
44
+ });
45
+ return parseAIResponse(await response.json());
46
+ }
47
+ const ussdFormSchema = Yup.object().shape({
48
+ query: Yup.string().required('required')
49
+ });
50
+ const { register: registerInput, handleSubmit: handleFormSubmit, getValues: getUssdValues, setValue: setUssdValue, setFocus, reset: resetForm, formState: { errors, isSubmitting }, } = useForm({
51
+ resolver: yupResolver(ussdFormSchema),
52
+ defaultValues: {}
53
+ });
54
+ const handleSubmit = async (data) => {
55
+ setIsGenerating(true);
56
+ try {
57
+ const flow = await generateFlowFromDescription(data.query);
58
+ // Update your ReactFlow instance with the new nodes/edges
59
+ setNodes(flow.nodes);
60
+ setEdges(flow.edges);
61
+ }
62
+ finally {
63
+ setIsGenerating(false);
64
+ }
65
+ };
66
+ function parseAIResponse(apiResponse, existingNodes = []) {
67
+ var _a, _b;
68
+ try {
69
+ const content = (_b = (_a = apiResponse.choices[0]) === null || _a === void 0 ? void 0 : _a.message) === null || _b === void 0 ? void 0 : _b.content;
70
+ if (!content)
71
+ throw new Error('Empty AI response');
72
+ const parsed = JSON.parse(content);
73
+ // Validate nodes
74
+ if (!Array.isArray(parsed.nodes)) {
75
+ throw new Error('Nodes must be an array');
76
+ }
77
+ // Calculate positions to avoid overlap
78
+ const existingXPositions = existingNodes.map((n) => n.position.x);
79
+ const maxX = existingXPositions.length > 0 ? Math.max(...existingXPositions) : 0;
80
+ const startX = maxX + 200; // Start new nodes to the right
81
+ // Process nodes
82
+ const nodes = parsed.nodes.map((node, index) => {
83
+ if (!node.id)
84
+ throw new Error('Node missing ID');
85
+ return {
86
+ id: String(node.id),
87
+ type: validateNodeType(node.type), // Ensure type is valid
88
+ data: {
89
+ label: node.label || `Step ${index + 1}`,
90
+ ...(node.data || {}) // Preserve additional data
91
+ },
92
+ position: node.position || {
93
+ x: startX + (index * 200),
94
+ y: (index % 3) * 100 // Stagger vertically
95
+ },
96
+ ...(node.style && { style: node.style })
97
+ };
98
+ });
99
+ // Process edges
100
+ const edges = (parsed.edges || []).map((edge, index) => {
101
+ if (!edge.source || !edge.target) {
102
+ throw new Error('Edge missing source or target');
103
+ }
104
+ return {
105
+ id: edge.id || `edge-${edge.source}-${edge.target}-${index}`,
106
+ source: String(edge.source),
107
+ target: String(edge.target),
108
+ label: edge.label || '',
109
+ type: edge.type || 'default',
110
+ ...(edge.animated && { animated: true })
111
+ };
112
+ });
113
+ return { nodes, edges };
114
+ }
115
+ catch (error) {
116
+ console.log('AI Response Parsing Error:', error);
117
+ // Fallback UI that shows the error to the user
118
+ return {
119
+ nodes: [{
120
+ id: 'error-node',
121
+ type: 'error',
122
+ data: {
123
+ label: 'Error Generating Flow',
124
+ error: error === null || error === void 0 ? void 0 : error.message
125
+ },
126
+ position: { x: 0, y: 0 }
127
+ }],
128
+ edges: [],
129
+ error: error.message
130
+ };
131
+ }
132
+ }
133
+ // Helper function to validate node types
134
+ function validateNodeType(type) {
135
+ const validTypes = ['input', 'output', 'default', 'custom']; // Add your types
136
+ return validTypes.includes(type) ? type : 'default';
137
+ }
138
+ return (_jsxs(Popover.Root, { children: [_jsx(Tooltip, { content: 'AI Mode - Coming Soon', side: 'right', children: _jsx(Popover.Trigger, { children: _jsx(Button, { disabled: true, size: '1', highContrast: true, children: "AI" }) }) }), _jsx(Popover.Content, { side: 'right', sideOffset: 10, children: _jsxs(Flex, { direction: 'column', gap: '3', children: [_jsx(Flex, { justify: 'between', children: _jsx(Text, { weight: 'bold', children: "AI App Designer" }) }), _jsx(Card, { style: { height: 'auto', minHeight: '200px', width: '100%', maxWidth: '300px' }, children: _jsx(Text, { wrap: 'wrap', color: 'gray', size: '1', children: parse(flowMessage) || 'No message' }) }), _jsx(Form.Root, { onSubmit: handleFormSubmit(handleSubmit), noValidate: true, children: _jsxs(Form.Field, { name: 'query', serverInvalid: errors.query != null, children: [_jsx(TextField.Root, { type: "text", ...registerInput('query'), id: "query", autoComplete: "off", placeholder: 'Ask AI anything', autoFocus: true, children: _jsx(TextField.Slot, { side: 'right', pr: '1', children: _jsxs(Button, { size: '1', highContrast: true, disabled: true, type: "submit", children: [_jsx(Spinner, { loading: isSubmitting }), !isSubmitting && _jsx(SendHorizonalIcon, { size: '15' })] }) }) }), ((_a = errors.query) === null || _a === void 0 ? void 0 : _a.message) && _jsx(Form.Message, { children: (_b = errors.query) === null || _b === void 0 ? void 0 : _b.message })] }) })] }) })] }));
139
+ }
140
+ //# sourceMappingURL=ai_creator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai_creator.js","sourceRoot":"","sources":["../src/ai_creator.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function AppAnalytics({ api_key, project }: any): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,81 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Badge, Card, Flex, Grid, SegmentedControl, Text } from "@radix-ui/themes";
4
+ import { useConfigStore } from "./zustand/store";
5
+ import { useState } from "react";
6
+ import GTable from "./components/gtable";
7
+ import moment from "moment";
8
+ import Sheet from "./components/sheet";
9
+ import { useQuery } from "@tanstack/react-query";
10
+ export default function AppAnalytics({ api_key, project }) {
11
+ var _a, _b, _c, _d;
12
+ const { openReports, setOpenReports } = useConfigStore();
13
+ const [getReportType, setReportType] = useState('dashboard');
14
+ const { data: sessions, status: sessionsStatus, refetch: sessionsRefetch } = useQuery({ queryKey: [`project_${project === null || project === void 0 ? void 0 : project.identifier}_sessions`, project === null || project === void 0 ? void 0 : project.identifier], queryFn: async () => {
15
+ const res = await fetch(`${process.env.BACKEND_ENDPOINT}/sessions?project=${project === null || project === void 0 ? void 0 : project.identifier}&ordering=-created`, { headers: { "X-API-KEY": `${api_key}` } });
16
+ return res === null || res === void 0 ? void 0 : res.json();
17
+ }, ...{ enabled: !!(project === null || project === void 0 ? void 0 : project.identifier) } });
18
+ return (_jsx(Sheet, { open: openReports, setOpen: setOpenReports, title: "Analytics", showCloseBtn: true, side: "right", maxWidth: '850px', children: _jsxs(Flex, { direction: 'column', flexGrow: '1', gap: '3', p: '3', width: '100%', style: {}, children: [_jsx(Flex, { justify: 'between', children: _jsxs(SegmentedControl.Root, { defaultValue: getReportType, variant: 'classic', size: '1', children: [_jsx(SegmentedControl.Item, { onClick: () => setReportType('dashboard'), value: "dashboard", children: "Dashboard" }), _jsx(SegmentedControl.Item, { onClick: () => setReportType('data'), value: "data", children: "Data" }), _jsx(SegmentedControl.Item, { onClick: () => setReportType('logs'), value: "logs", children: "Logs" })] }) }), getReportType == 'dashboard' &&
19
+ _jsx(Flex, { direction: 'column', children: _jsxs(Grid, { columns: { initial: '2', sm: '3', md: '4' }, gap: '5', children: [_jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Sessions:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: ((_a = sessions === null || sessions === void 0 ? void 0 : sessions.results) === null || _a === void 0 ? void 0 : _a.length) || 0 })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Count of all user interactions with the flow app." }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Sess. Duration:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Average time users spend per session" }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Active Sess.:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Users currently interacting with your app live." }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Completion Rate:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Percentage of users who complete the entire flow." }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Retention Rate:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Percentage of returning users over time." }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Drop-Off Rate:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Drop-off rates measured at each node in the flow." }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Time per Step:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Average duration users spend on specific flow steps." }) })] }) }), _jsx(Card, { children: _jsxs(Flex, { direction: 'column', gap: '2', children: [_jsxs(Flex, { justify: 'between', children: [" ", _jsx(Text, { size: '2', children: "Popular:" }), " ", _jsx(Text, { size: '1', weight: 'bold', children: "0" })] }), _jsx(Text, { color: 'gray', size: '1', children: _jsx("i", { children: "Most frequented routes through your app\u2019s logic." }) })] }) })] }) }), getReportType == 'data' &&
20
+ _jsx(GTable, { status: sessionsStatus, columns: [
21
+ { Header: 'Phone Number', accessor: 'msisdn' },
22
+ ...(((_c = (_b = project === null || project === void 0 ? void 0 : project.flow) === null || _b === void 0 ? void 0 : _b.nodes) === null || _c === void 0 ? void 0 : _c.map((val) => {
23
+ var _a;
24
+ return ({
25
+ Header: _jsx(Flex, { gap: '2', children: (_a = val === null || val === void 0 ? void 0 : val.data) === null || _a === void 0 ? void 0 : _a.label }),
26
+ accessor: val === null || val === void 0 ? void 0 : val.id,
27
+ });
28
+ })) || [])
29
+ ],
30
+ // columns={
31
+ // project?.flow?.nodes?.map((val: any) => ({
32
+ // Header: <Flex gap={'2'}>[] {val?.data?.label}</Flex>,
33
+ // accessor: val?.id,
34
+ // })) || []}
35
+ data: ((_d = sessions === null || sessions === void 0 ? void 0 : sessions.results) === null || _d === void 0 ? void 0 : _d.filter((session, index, self) => index === self.findIndex((s) => s.session_id === session.session_id)).map((session) => {
36
+ var _a, _b;
37
+ const updatedSession = { ...session };
38
+ (_b = (_a = project === null || project === void 0 ? void 0 : project.flow) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.forEach((node) => {
39
+ var _a, _b, _c, _d, _e;
40
+ const matchingSession = (_a = sessions === null || sessions === void 0 ? void 0 : sessions.results) === null || _a === void 0 ? void 0 : _a.find((s) => s.session_id === session.session_id && s.node_id === (node === null || node === void 0 ? void 0 : node.id));
41
+ updatedSession[node === null || node === void 0 ? void 0 : node.id] = (matchingSession === null || matchingSession === void 0 ? void 0 : matchingSession.input_value) ? (_jsxs(Flex, { gap: '2', children: [_jsx(Badge, { color: 'teal', children: matchingSession.input_id }), _jsx(Text, { children: (_e = (_d = (_c = (_b = node === null || node === void 0 ? void 0 : node.data) === null || _b === void 0 ? void 0 : _b.response) === null || _c === void 0 ? void 0 : _c.inputs) === null || _d === void 0 ? void 0 : _d.find((nd) => `${nd.id}` === matchingSession.input_id)) === null || _e === void 0 ? void 0 : _e.text })] })) : null;
42
+ });
43
+ return updatedSession;
44
+ })) || [],
45
+ // data={sessions?.results?.filter((session: any, index: number, self: any[]) => index === self.findIndex((s) => s.session_id === session.session_id))}
46
+ // project?.flow?.nodes?.map((val:any, ind:any)=>(<Flex key={ind}><Badge>{val?.input_id}</Badge> {val?.input_value}</Flex>))
47
+ search: { hint: `${'Search Data'}`, items: ['mode', 'input_id', 'input_value', 'node_id', 'created'] }, topRightBtns: _jsx(Flex, { gap: '3' }), showDownload: true }), getReportType == 'logs' &&
48
+ _jsx(GTable, { status: sessionsStatus, data: (sessions === null || sessions === void 0 ? void 0 : sessions.results) || [], columns: [
49
+ {
50
+ Header: '#', sticky: 'left',
51
+ Cell: (cell) => ([cell.row.index + 1])
52
+ },
53
+ {
54
+ Header: 'Phone Number',
55
+ accessor: 'msisdn'
56
+ },
57
+ {
58
+ Header: 'Mode',
59
+ accessor: 'mode'
60
+ },
61
+ {
62
+ Header: 'Node / Stage',
63
+ Cell: ({ value, row, original }) => {
64
+ var _a, _b, _c, _d;
65
+ return (_jsx(_Fragment, { children: (_d = (_c = (_b = (_a = project === null || project === void 0 ? void 0 : project.flow) === null || _a === void 0 ? void 0 : _a.nodes) === null || _b === void 0 ? void 0 : _b.find((node) => { var _a; return (node === null || node === void 0 ? void 0 : node.id) === ((_a = row.original) === null || _a === void 0 ? void 0 : _a.node_id); })) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.label }));
66
+ }
67
+ },
68
+ {
69
+ Header: 'Input Id',
70
+ accessor: 'input_id'
71
+ },
72
+ {
73
+ Header: 'Input Value',
74
+ accessor: 'input_value'
75
+ },
76
+ {
77
+ Header: 'Date', accessor: (d) => (moment(d.created).local().format("Do MMM YYYY hh:mm a"))
78
+ }
79
+ ], search: { hint: `${'Search Logs'}`, items: ['mode', 'input_id', 'input_value', 'node_id', 'created'] }, topRightBtns: _jsx(Flex, { gap: '3' }), showDownload: true }), getReportType == 'analytics' && _jsx(_Fragment, { children: _jsx(Card, { style: { '--card-border-radius': '0' } }) })] }) }));
80
+ }
81
+ //# sourceMappingURL=app_analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_analytics.js","sourceRoot":"","sources":["../src/app_analytics.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function AppDetails({ api_key, project, projectsRefetch }: any): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,84 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button, Callout, Flex, Popover, Separator, Spinner, Switch, Text, TextArea, TextField } from "@radix-ui/themes";
4
+ import * as Yup from "yup";
5
+ import { yupResolver } from "@hookform/resolvers/yup";
6
+ import { Controller, useForm } from "react-hook-form";
7
+ import * as Form from "@radix-ui/react-form";
8
+ import { BsTrash } from "react-icons/bs";
9
+ import { useEffect, useState } from "react";
10
+ import { useConfigStore } from "./zustand/store";
11
+ import { InfoCircledIcon } from "@radix-ui/react-icons";
12
+ export default function AppDetails({ api_key, project, projectsRefetch }) {
13
+ var _a, _b, _c, _d;
14
+ const { openedProjects, setOpenedProjects, setActiveTab, setOpenSettings } = useConfigStore();
15
+ const [deleting, setDeleting] = useState(false);
16
+ const formSchema = Yup.object().shape({
17
+ name: Yup.string().required('required'),
18
+ description: Yup.string(),
19
+ active: Yup.boolean()
20
+ });
21
+ const { control, register, handleSubmit: handleFormSubmit, getValues, setValue, reset, watch, formState: { errors, isSubmitting }, } = useForm({
22
+ resolver: yupResolver(formSchema),
23
+ });
24
+ const handleSubmit = async (data) => {
25
+ try {
26
+ const post_data = JSON.stringify({
27
+ name: data.name,
28
+ description: data.description,
29
+ active: data.active
30
+ });
31
+ const response = await fetch(`${process.env.BACKEND_ENDPOINT}/projects/${project === null || project === void 0 ? void 0 : project.identifier}`, {
32
+ method: "PATCH", headers: {
33
+ "X-API-KEY": `${api_key}`,
34
+ "Content-Type": "application/json",
35
+ }, body: post_data
36
+ });
37
+ if (await response.ok) {
38
+ projectsRefetch();
39
+ // toast.success("Question posted successfully");
40
+ // reset();
41
+ // refetchQuestions();
42
+ }
43
+ else {
44
+ // toast.error("Failed to post question");
45
+ }
46
+ }
47
+ catch (e) {
48
+ console.log(e);
49
+ }
50
+ };
51
+ useEffect(() => {
52
+ if (project) {
53
+ reset(project);
54
+ }
55
+ }, [project]);
56
+ const deleteProject = async (identifier) => {
57
+ try {
58
+ setDeleting(true);
59
+ const post_data = null;
60
+ const response = await fetch(`${process.env.BACKEND_ENDPOINT}/projects/${identifier}`, { method: 'DELETE', headers: { "X-API-KEY": `${api_key}`, "Content-Type": "application/json" }, body: post_data });
61
+ if (await response.ok) {
62
+ projectsRefetch();
63
+ // const data = await response.json()
64
+ setOpenedProjects(openedProjects.filter((prj) => prj.identifier !== identifier));
65
+ setActiveTab('home');
66
+ setDeleting(false);
67
+ setOpenSettings(false);
68
+ // toast.success("Env Deleted Successfully")
69
+ }
70
+ else {
71
+ alert('not ok');
72
+ // toast.error(JSON.stringify(data))
73
+ }
74
+ setDeleting(false);
75
+ }
76
+ catch (e) {
77
+ console.log('Project Error: ' + e);
78
+ setDeleting(false);
79
+ }
80
+ };
81
+ return (_jsx(Flex, { height: '100%', direction: 'column', gap: '3', children: _jsx(Form.Root, { onSubmit: handleFormSubmit(handleSubmit), noValidate: true, children: _jsxs(Flex, { direction: 'column', gap: '4', children: [_jsxs(Form.Field, { name: "name", serverInvalid: errors.name != null, children: [_jsx(TextField.Root, { type: "text", autoComplete: "off", placeholder: "Flow App Name", ...register("name") }), ((_a = errors.name) === null || _a === void 0 ? void 0 : _a.message) && (_jsx(Form.Message, { children: (_b = errors.name) === null || _b === void 0 ? void 0 : _b.message }))] }), _jsxs(Form.Field, { name: "description", serverInvalid: errors.description != null, children: [_jsx(TextArea, { placeholder: "Description", ...register("description"), rows: 5 }), ((_c = errors.description) === null || _c === void 0 ? void 0 : _c.message) && (_jsx(Form.Message, { children: (_d = errors.description) === null || _d === void 0 ? void 0 : _d.message }))] }), !watch('active') &&
82
+ _jsxs(Callout.Root, { size: '1', color: 'yellow', children: [_jsx(Callout.Icon, { children: _jsx(InfoCircledIcon, {}) }), _jsx(Callout.Text, { children: "Deactivated Apps are unable to process hits from users." })] }), _jsxs(Flex, { justify: 'between', gap: '3', children: [_jsx(Controller, { name: "active", control: control, render: ({ field }) => (_jsx("label", { htmlFor: "active", children: _jsxs(Flex, { gap: '2', children: [_jsx(Switch, { checked: field.value, onCheckedChange: (checked) => { field.onChange(checked); }, highContrast: true, size: '1', id: 'active' }), " ", _jsx(Text, { color: 'gray', size: '2', children: watch('active') ? 'Deactivate' : 'Activate' })] }) })) }), _jsxs(Flex, { gap: '3', children: [_jsxs(Button, { type: 'submit', highContrast: true, size: '2', disabled: isSubmitting, children: [_jsx(Spinner, { loading: isSubmitting }), " ", isSubmitting ? 'Updating' : 'Update'] }), _jsxs(Popover.Root, { children: [_jsx(Popover.Trigger, { children: _jsx(Button, { "aria-label": 'Delete Project', color: "red", variant: 'surface', size: '2', children: _jsx(BsTrash, {}) }) }), _jsxs(Popover.Content, { align: 'end', maxWidth: '250px', size: '1', children: [_jsx(Text, { size: '1', color: 'gray', children: "Are you sure you want to Delete this Project" }), _jsx(Separator, { my: '3', size: '4' }), _jsxs(Flex, { justify: 'end', gap: '3', mt: '3', children: [_jsx(Popover.Close, { children: _jsx(Button, { variant: 'soft', color: 'gray', size: '1', children: "Cancel" }) }), _jsxs(Button, { color: 'red', type: 'button', size: '1', disabled: deleting, onClick: () => { deleteProject(project === null || project === void 0 ? void 0 : project.identifier); }, children: [_jsx(Spinner, { loading: deleting }), " ", deleting ? 'Deleting' : 'Delete'] })] })] })] })] })] })] }) }) }));
83
+ }
84
+ //# sourceMappingURL=app_details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_details.js","sourceRoot":"","sources":["../src/app_details.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Theme } from '@radix-ui/themes';
3
+ import '@radix-ui/themes/styles.css';
4
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
5
+ import '@xyflow/react/dist/style.css';
6
+ import { ReactFlowProvider } from '@xyflow/react';
7
+ export default function AppLayout({ theme = 'inherit', accent = 'gray', children }) {
8
+ const queryClient = new QueryClient();
9
+ return (_jsx(Theme, { appearance: theme, accentColor: accent, panelBackground: 'solid', style: { height: '100%', minHeight: '100%' }, children: _jsx(QueryClientProvider, { client: queryClient, children: _jsx(ReactFlowProvider, { children: children }) }) }));
10
+ }
11
+ //# sourceMappingURL=app_layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_layout.js","sourceRoot":"","sources":["../src/app_layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAC,KAAK,GAAC,SAAS,EAAE,MAAM,GAAC,MAAM,EAAE,QAAQ,EAAK;IAC5E,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,OAAO,CACH,KAAC,KAAK,IAAC,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,MAAM,EAAE,YAChH,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACpC,KAAC,iBAAiB,cAErB,QAAQ,GAEW,GACE,GAClB,CACX,CAAA;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ export default function AppSettings({ api_key, project, projectsRefetch, providers, provider, triggers, triggersRefetch, functions, functionsRefetch, envs, envsRefetch }: any): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Flex, Tabs } from "@radix-ui/themes";
4
+ import { useConfigStore } from "./zustand/store";
5
+ import Triggers from "./triggers";
6
+ import Functions from "./functions";
7
+ import Envs from "./envs";
8
+ import AppDetails from "./app_details";
9
+ import GetCode from "./getcode";
10
+ import Sheet from "./components/sheet";
11
+ export default function AppSettings({ api_key, project, projectsRefetch, providers, provider, triggers, triggersRefetch, functions, functionsRefetch, envs, envsRefetch }) {
12
+ const { appTheme, openSettings, setOpenSettings } = useConfigStore();
13
+ return (_jsx(Sheet, { open: openSettings, setOpen: setOpenSettings, title: "App Settings", showCloseBtn: true, side: "right", maxWidth: '550px', children: _jsx(Flex, { direction: 'column', flexGrow: '1', px: '3', width: '100%', style: {}, children: _jsxs(Tabs.Root, { defaultValue: "details", style: { width: '100%' }, children: [_jsxs(Tabs.List, { size: { initial: '1', md: '2' }, children: [_jsx(Tabs.Trigger, { value: "details", children: "Details" }), _jsx(Tabs.Trigger, { value: "triggers", children: "Triggers" }), _jsx(Tabs.Trigger, { value: "functions", children: "Functions" }), _jsx(Tabs.Trigger, { value: "envs", children: "Envs" }), _jsx(Tabs.Trigger, { value: "getcode", children: "Get Code" })] }), _jsx(Tabs.Content, { value: 'details', children: _jsx(Flex, { direction: 'column', gap: '3', px: '2', py: '4', children: _jsx(AppDetails, { api_key: api_key, project: project, projectsRefetch: projectsRefetch }) }) }), _jsx(Tabs.Content, { value: 'triggers', children: _jsx(Flex, { direction: 'column', gap: '3', px: '2', py: '4', children: _jsx(Triggers, { api_key: api_key, project: project, triggers: triggers, triggersRefetch: triggersRefetch, providers: providers, provider: provider }) }) }), _jsx(Tabs.Content, { value: 'functions', children: _jsx(Flex, { direction: 'column', gap: '3', px: '2', py: '4', children: _jsx(Functions, { api_key: api_key, project: project, functions: functions, functionsRefetch: functionsRefetch, envs: envs }) }) }), _jsx(Tabs.Content, { value: 'envs', children: _jsx(Flex, { direction: 'column', gap: '3', px: '2', py: '4', children: _jsx(Envs, { api_key: api_key, project: project, envs: envs, envsRefetch: envsRefetch }) }) }), _jsx(Tabs.Content, { value: 'getcode', children: _jsx(Flex, { direction: 'column', gap: '3', px: '2', py: '4', children: _jsx(GetCode, { api_key: api_key, project: project }) }) })] }) }) }));
14
+ }
15
+ //# sourceMappingURL=app_settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_settings.js","sourceRoot":"","sources":["../src/app_settings.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAqB,IAAI,EAAuD,IAAI,EAA6B,MAAM,kBAAkB,CAAC;AAGjJ,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,UAAU,MAAM,eAAe,CAAC;AAGvC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,MAAM,oBAAoB,CAAC;AAGvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAM;IAC1K,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,cAAc,EAAE,CAAC;IAIrE,OAAO,CACL,KAAC,KAAK,IACN,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,IAAI,EAClB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,OAAO,YAIb,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAEzE,MAAC,IAAI,CAAC,IAAI,IAAC,YAAY,EAAC,SAAS,EAAC,KAAK,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC,aACrD,MAAC,IAAI,CAAC,IAAI,IAAC,IAAI,EAAE,EAAC,OAAO,EAAC,GAAG,EAAE,EAAE,EAAC,GAAG,EAAC,aACpC,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAC,SAAS,wBAAuB,EACpD,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAC,UAAU,yBAAwB,EACtD,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAC,WAAW,0BAAyB,EACxD,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAC,MAAM,qBAAoB,EAC9C,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAC,SAAS,yBAAwB,IAC3C,EACZ,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAE,SAAS,YAC5B,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,YACnD,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,GAAI,GAC/E,GACM,EACf,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAE,UAAU,YAC7B,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,YACnD,KAAC,QAAQ,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAI,GAC3I,GACM,EACf,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAE,WAAW,YAC9B,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,YACnD,KAAC,SAAS,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,GAAI,GAClH,GACM,EACf,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAE,MAAM,YACzB,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,YACnD,KAAC,IAAI,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,GAAI,GAC7E,GACM,EACf,KAAC,IAAI,CAAC,OAAO,IAAC,KAAK,EAAE,SAAS,YAC5B,KAAC,IAAI,IAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,YACnD,KAAC,OAAO,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,GAC1C,GACM,IACL,GACN,GAIN,CACP,CAAA;AACH,CAAC"}
@@ -1 +1,2 @@
1
+ import "./style.css";
1
2
  export default function ComboBox({ type, value, onValueChange, placeholder, items, noItemsText, isMulti, width, ...rest }: any): import("react/jsx-runtime").JSX.Element;