@optimizely/ocp-local-env 1.0.0-beta.9 → 1.0.1

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 (185) hide show
  1. package/README.md +18 -133
  2. package/dist/package.json +15 -9
  3. package/dist/public/bundle.fa87c838198caf8c051a.js +3 -0
  4. package/dist/public/{bundle.82dc5d29fffb9f205051.js.LICENSE.txt → bundle.fa87c838198caf8c051a.js.LICENSE.txt} +3 -3
  5. package/dist/public/bundle.fa87c838198caf8c051a.js.map +1 -0
  6. package/dist/public/index.html +1 -1
  7. package/dist/src/cli.js +2 -2
  8. package/dist/src/cli.js.map +1 -1
  9. package/dist/src/executor/FunctionExecutor.js +8 -5
  10. package/dist/src/executor/FunctionExecutor.js.map +1 -1
  11. package/dist/src/executor/JobExecutor.js +0 -17
  12. package/dist/src/executor/JobExecutor.js.map +1 -1
  13. package/dist/src/executor/LifecycleExecutor.js +11 -2
  14. package/dist/src/executor/LifecycleExecutor.js.map +1 -1
  15. package/dist/src/executor/watcher.d.ts +6 -0
  16. package/dist/src/executor/watcher.js +45 -0
  17. package/dist/src/executor/watcher.js.map +1 -1
  18. package/dist/src/local_engine/LocalJobApi.d.ts +31 -2
  19. package/dist/src/local_engine/LocalJobApi.js +42 -17
  20. package/dist/src/local_engine/LocalJobApi.js.map +1 -1
  21. package/dist/src/local_engine/LocalNotifier.d.ts +3 -2
  22. package/dist/src/local_engine/LocalNotifier.js +7 -0
  23. package/dist/src/local_engine/LocalNotifier.js.map +1 -1
  24. package/dist/src/local_engine/LocalSourceApi.d.ts +40 -0
  25. package/dist/src/local_engine/LocalSourceApi.js +69 -0
  26. package/dist/src/local_engine/LocalSourceApi.js.map +1 -0
  27. package/dist/src/local_engine/local-engine-child-base.d.ts +0 -12
  28. package/dist/src/local_engine/local-engine-child-base.js +0 -127
  29. package/dist/src/local_engine/local-engine-child-base.js.map +1 -1
  30. package/dist/src/local_engine/local-engine-client.d.ts +19 -29
  31. package/dist/src/local_engine/local-engine-client.js +45 -94
  32. package/dist/src/local_engine/local-engine-client.js.map +1 -1
  33. package/dist/src/local_engine/local-engine-types.d.ts +13 -50
  34. package/dist/src/local_engine/local-engine-unified.d.ts +6 -13
  35. package/dist/src/local_engine/local-engine-unified.js +108 -222
  36. package/dist/src/local_engine/local-engine-unified.js.map +1 -1
  37. package/dist/src/local_engine/localSDKConfig.d.ts +6 -0
  38. package/dist/src/local_engine/localSDKConfig.js +66 -1
  39. package/dist/src/local_engine/localSDKConfig.js.map +1 -1
  40. package/dist/src/local_engine/storage/BaseKVStoreWrapper.d.ts +1 -2
  41. package/dist/src/local_engine/storage/BaseKVStoreWrapper.js.map +1 -1
  42. package/dist/src/local_engine/storage/LocalConfigStore.d.ts +7 -13
  43. package/dist/src/local_engine/storage/LocalConfigStore.js +9 -31
  44. package/dist/src/local_engine/storage/LocalConfigStore.js.map +1 -1
  45. package/dist/src/local_engine/storage/LocalKVStore.d.ts +4 -0
  46. package/dist/src/local_engine/storage/LocalKVStore.js +23 -0
  47. package/dist/src/local_engine/storage/LocalKVStore.js.map +1 -1
  48. package/dist/src/local_engine/storage/SourceDataStore.d.ts +16 -14
  49. package/dist/src/local_engine/storage/SourceDataStore.js +57 -57
  50. package/dist/src/local_engine/storage/SourceDataStore.js.map +1 -1
  51. package/dist/src/local_engine/utils.d.ts +2 -0
  52. package/dist/src/local_engine/utils.js +4 -2
  53. package/dist/src/local_engine/utils.js.map +1 -1
  54. package/dist/src/server/api/deploy.d.ts +20 -0
  55. package/dist/src/server/api/deploy.js +399 -0
  56. package/dist/src/server/api/deploy.js.map +1 -0
  57. package/dist/src/server/api/destinations.js +1 -1
  58. package/dist/src/server/api/destinations.js.map +1 -1
  59. package/dist/src/server/api/env.d.ts +2 -0
  60. package/dist/src/server/api/env.js +28 -0
  61. package/dist/src/server/api/env.js.map +1 -0
  62. package/dist/src/server/api/functions.js +13 -12
  63. package/dist/src/server/api/functions.js.map +1 -1
  64. package/dist/src/server/api/opalTools.d.ts +4 -0
  65. package/dist/src/server/api/opalTools.js +81 -0
  66. package/dist/src/server/api/opalTools.js.map +1 -0
  67. package/dist/src/server/api/schema.d.ts +6 -0
  68. package/dist/src/server/api/schema.js +95 -0
  69. package/dist/src/server/api/schema.js.map +1 -0
  70. package/dist/src/server/api/sources.d.ts +1 -2
  71. package/dist/src/server/api/sources.js +16 -275
  72. package/dist/src/server/api/sources.js.map +1 -1
  73. package/dist/src/server/api/v1.js +63 -55
  74. package/dist/src/server/api/v1.js.map +1 -1
  75. package/dist/src/server/api.d.ts +4 -0
  76. package/dist/src/server/api.js +131 -9
  77. package/dist/src/server/api.js.map +1 -1
  78. package/dist/src/server/app-discovery.js +37 -4
  79. package/dist/src/server/app-discovery.js.map +1 -1
  80. package/dist/src/server/app-env.d.ts +21 -0
  81. package/dist/src/server/app-env.js +122 -0
  82. package/dist/src/server/app-env.js.map +1 -0
  83. package/dist/src/server/browserFocus.d.ts +5 -0
  84. package/dist/src/server/browserFocus.js +39 -0
  85. package/dist/src/server/browserFocus.js.map +1 -0
  86. package/dist/src/server/config.d.ts +3 -0
  87. package/dist/src/server/config.js +7 -0
  88. package/dist/src/server/config.js.map +1 -1
  89. package/dist/src/server/mockDataGenerator.d.ts +1 -2
  90. package/dist/src/server/mockDataGenerator.js +77 -35
  91. package/dist/src/server/mockDataGenerator.js.map +1 -1
  92. package/dist/src/server/mockToolDataGenerator.d.ts +12 -0
  93. package/dist/src/server/mockToolDataGenerator.js +393 -0
  94. package/dist/src/server/mockToolDataGenerator.js.map +1 -0
  95. package/dist/src/server.js +152 -168
  96. package/dist/src/server.js.map +1 -1
  97. package/dist/src/types/app.d.ts +1 -3
  98. package/dist/src/types/app.js.map +1 -1
  99. package/dist/src/ui/components/App.js +303 -47
  100. package/dist/src/ui/components/App.js.map +1 -1
  101. package/dist/src/ui/components/DeployModal.d.ts +16 -0
  102. package/dist/src/ui/components/DeployModal.js +75 -0
  103. package/dist/src/ui/components/DeployModal.js.map +1 -0
  104. package/dist/src/ui/components/DestinationBatchEditor.d.ts +9 -1
  105. package/dist/src/ui/components/DestinationBatchEditor.js +12 -4
  106. package/dist/src/ui/components/DestinationBatchEditor.js.map +1 -1
  107. package/dist/src/ui/components/DestinationsView.js +5 -1
  108. package/dist/src/ui/components/DestinationsView.js.map +1 -1
  109. package/dist/src/ui/components/EntityNotAvailable.d.ts +15 -0
  110. package/dist/src/ui/components/EntityNotAvailable.js +27 -0
  111. package/dist/src/ui/components/EntityNotAvailable.js.map +1 -0
  112. package/dist/src/ui/components/EnvViewer.d.ts +8 -0
  113. package/dist/src/ui/components/EnvViewer.js +35 -0
  114. package/dist/src/ui/components/EnvViewer.js.map +1 -0
  115. package/dist/src/ui/components/FunctionsView.d.ts +2 -6
  116. package/dist/src/ui/components/FunctionsView.js +52 -75
  117. package/dist/src/ui/components/FunctionsView.js.map +1 -1
  118. package/dist/src/ui/components/JobsView.js +4 -4
  119. package/dist/src/ui/components/JobsView.js.map +1 -1
  120. package/dist/src/ui/components/KVStoreViewer.js +5 -5
  121. package/dist/src/ui/components/KVStoreViewer.js.map +1 -1
  122. package/dist/src/ui/components/KeyValueEditor.d.ts +15 -0
  123. package/dist/src/ui/components/KeyValueEditor.js +12 -0
  124. package/dist/src/ui/components/KeyValueEditor.js.map +1 -0
  125. package/dist/src/ui/components/NotificationViewer.d.ts +2 -11
  126. package/dist/src/ui/components/NotificationViewer.js +69 -15
  127. package/dist/src/ui/components/NotificationViewer.js.map +1 -1
  128. package/dist/src/ui/components/OdpSchemaView.d.ts +3 -0
  129. package/dist/src/ui/components/OdpSchemaView.js +58 -0
  130. package/dist/src/ui/components/OdpSchemaView.js.map +1 -0
  131. package/dist/src/ui/components/OpalToolsView.d.ts +9 -0
  132. package/dist/src/ui/components/OpalToolsView.js +399 -0
  133. package/dist/src/ui/components/OpalToolsView.js.map +1 -0
  134. package/dist/src/ui/components/ResponseViewer.d.ts +39 -0
  135. package/dist/src/ui/components/ResponseViewer.js +43 -0
  136. package/dist/src/ui/components/ResponseViewer.js.map +1 -0
  137. package/dist/src/ui/components/SecretsStoreViewer.js +3 -2
  138. package/dist/src/ui/components/SecretsStoreViewer.js.map +1 -1
  139. package/dist/src/ui/components/SettingsStoreViewer.js +3 -2
  140. package/dist/src/ui/components/SettingsStoreViewer.js.map +1 -1
  141. package/dist/src/ui/components/SourceEmittedDataPanel.d.ts +8 -0
  142. package/dist/src/ui/components/SourceEmittedDataPanel.js +103 -0
  143. package/dist/src/ui/components/SourceEmittedDataPanel.js.map +1 -0
  144. package/dist/src/ui/components/SourcesView.js +4 -8
  145. package/dist/src/ui/components/SourcesView.js.map +1 -1
  146. package/dist/src/ui/components/StoreViewer.js +2 -1
  147. package/dist/src/ui/components/StoreViewer.js.map +1 -1
  148. package/dist/src/ui/components/TabbedConsole.d.ts +11 -0
  149. package/dist/src/ui/components/TabbedConsole.js +134 -44
  150. package/dist/src/ui/components/TabbedConsole.js.map +1 -1
  151. package/dist/src/ui/components/ToolSettingsView.d.ts +7 -0
  152. package/dist/src/ui/components/ToolSettingsView.js +25 -0
  153. package/dist/src/ui/components/ToolSettingsView.js.map +1 -0
  154. package/dist/src/ui/components/common/EyeIcon.js +2 -1
  155. package/dist/src/ui/components/common/EyeIcon.js.map +1 -1
  156. package/dist/src/ui/hooks/useKeyValuePairs.d.ts +52 -0
  157. package/dist/src/ui/hooks/useKeyValuePairs.js +66 -0
  158. package/dist/src/ui/hooks/useKeyValuePairs.js.map +1 -0
  159. package/dist/src/ui/store/formStateSlice.d.ts +19 -2
  160. package/dist/src/ui/store/formStateSlice.js +69 -4
  161. package/dist/src/ui/store/formStateSlice.js.map +1 -1
  162. package/dist/src/ui/types/common.d.ts +33 -0
  163. package/dist/src/ui/types/common.js +6 -0
  164. package/dist/src/ui/types/common.js.map +1 -0
  165. package/package.json +15 -9
  166. package/dist/public/bundle.82dc5d29fffb9f205051.js +0 -3
  167. package/dist/public/bundle.82dc5d29fffb9f205051.js.map +0 -1
  168. package/dist/src/executor/SourceExecutor.d.ts +0 -32
  169. package/dist/src/executor/SourceExecutor.js +0 -163
  170. package/dist/src/executor/SourceExecutor.js.map +0 -1
  171. package/dist/src/local_engine/storage/SourceJobExecutionStore.d.ts +0 -25
  172. package/dist/src/local_engine/storage/SourceJobExecutionStore.js +0 -61
  173. package/dist/src/local_engine/storage/SourceJobExecutionStore.js.map +0 -1
  174. package/dist/src/ui/components/SourceDataViewer.d.ts +0 -8
  175. package/dist/src/ui/components/SourceDataViewer.js +0 -84
  176. package/dist/src/ui/components/SourceDataViewer.js.map +0 -1
  177. package/dist/src/ui/components/SourceJobsSection.d.ts +0 -8
  178. package/dist/src/ui/components/SourceJobsSection.js +0 -99
  179. package/dist/src/ui/components/SourceJobsSection.js.map +0 -1
  180. package/dist/src/ui/components/SourceLifecycleSection.d.ts +0 -7
  181. package/dist/src/ui/components/SourceLifecycleSection.js +0 -58
  182. package/dist/src/ui/components/SourceLifecycleSection.js.map +0 -1
  183. package/dist/src/ui/components/SourceWebhookEditor.d.ts +0 -8
  184. package/dist/src/ui/components/SourceWebhookEditor.js +0 -181
  185. package/dist/src/ui/components/SourceWebhookEditor.js.map +0 -1
@@ -6,8 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
8
8
  const StoreViewer_1 = __importDefault(require("./StoreViewer"));
9
+ const NotificationViewer_1 = __importDefault(require("./NotificationViewer"));
10
+ const EnvViewer_1 = __importDefault(require("./EnvViewer"));
11
+ const SourceEmittedDataPanel_1 = require("./SourceEmittedDataPanel");
9
12
  const useQueryParams_1 = require("../hooks/useQueryParams");
10
- const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, notificationCount = 0 }) => {
13
+ const axiom_icons_1 = require("@optimizely/axiom-icons");
14
+ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, notificationCount = 0, hasSources = false, sourceDataVersion = 0, sourceDataTotalEmitted = 0, notificationVersion = 0, envVersion = 0, deployLogs = [], deployVersion = 0, deployStatus }) => {
11
15
  const { getParam, setParam } = (0, useQueryParams_1.useQueryParams)();
12
16
  // Derive activeTab from URL, default to 'console'
13
17
  const activeTab = getParam('console') || 'console';
@@ -21,15 +25,27 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
21
25
  const stored = localStorage.getItem('consoleHeight');
22
26
  return stored ? parseInt(stored, 10) : 200;
23
27
  });
28
+ const [sourceDataCount, setSourceDataCount] = (0, react_1.useState)(0);
29
+ // Track which inactive tabs have unseen updates
30
+ const [unseenTabs, setUnseenTabs] = (0, react_1.useState)(new Set());
24
31
  const [logFilter, setLogFilter] = (0, react_1.useState)('app');
25
32
  const [categoryFilter, setCategoryFilter] = (0, react_1.useState)('all');
26
33
  const [levelFilter, setLevelFilter] = (0, react_1.useState)('all');
34
+ const [isDragging, setIsDragging] = (0, react_1.useState)(false);
35
+ const panelRef = (0, react_1.useRef)(null);
27
36
  const dragStateRef = (0, react_1.useRef)({
28
- isMouseDown: false,
29
- isDragging: false,
30
37
  startY: 0,
31
38
  startHeight: 200
32
39
  });
40
+ const cleanupRef = (0, react_1.useRef)(null);
41
+ // Cleanup drag listeners on unmount
42
+ (0, react_1.useEffect)(() => {
43
+ return () => {
44
+ if (cleanupRef.current) {
45
+ cleanupRef.current();
46
+ }
47
+ };
48
+ }, []);
33
49
  // Log categories organized by source type
34
50
  const APP_CATEGORIES = [
35
51
  'function',
@@ -47,6 +63,55 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
47
63
  'ipc',
48
64
  'process'
49
65
  ];
66
+ // Update source data badge count from SSE-provided totalEmitted (no extra fetch needed)
67
+ (0, react_1.useEffect)(() => {
68
+ if (!hasSources)
69
+ return;
70
+ setSourceDataCount(sourceDataTotalEmitted);
71
+ }, [sourceDataTotalEmitted, hasSources]);
72
+ // Mark source data tab as unseen when new data arrives while tab is inactive
73
+ const prevSourceDataVersion = (0, react_1.useRef)(sourceDataVersion);
74
+ (0, react_1.useEffect)(() => {
75
+ if (sourceDataVersion > prevSourceDataVersion.current && activeTab !== 'sourceData') {
76
+ setUnseenTabs(prev => new Set(prev).add('sourceData'));
77
+ }
78
+ prevSourceDataVersion.current = sourceDataVersion;
79
+ }, [sourceDataVersion, activeTab]);
80
+ // Mark notifications tab as unseen when new notification arrives while tab is inactive
81
+ const prevNotificationVersion = (0, react_1.useRef)(notificationVersion);
82
+ (0, react_1.useEffect)(() => {
83
+ if (notificationVersion > prevNotificationVersion.current && activeTab !== 'notifications') {
84
+ setUnseenTabs(prev => new Set(prev).add('notifications'));
85
+ }
86
+ prevNotificationVersion.current = notificationVersion;
87
+ }, [notificationVersion, activeTab]);
88
+ // Mark env tab as unseen when env changes while tab is inactive
89
+ const prevEnvVersion = (0, react_1.useRef)(envVersion);
90
+ (0, react_1.useEffect)(() => {
91
+ if (envVersion > prevEnvVersion.current && activeTab !== 'env') {
92
+ setUnseenTabs(prev => new Set(prev).add('env'));
93
+ }
94
+ prevEnvVersion.current = envVersion;
95
+ }, [envVersion, activeTab]);
96
+ // Mark console tab as unseen when new log entries arrive while tab is inactive.
97
+ // We track the last log ID rather than array length because the logs array is
98
+ // capped at 50 entries — length stops increasing once the cap is reached.
99
+ const prevLastLogId = (0, react_1.useRef)(logs.length > 0 ? logs[logs.length - 1].id : null);
100
+ (0, react_1.useEffect)(() => {
101
+ const lastId = logs.length > 0 ? logs[logs.length - 1].id : null;
102
+ if (lastId !== null && lastId !== prevLastLogId.current && activeTab !== 'console') {
103
+ setUnseenTabs(prev => new Set(prev).add('console'));
104
+ }
105
+ prevLastLogId.current = lastId;
106
+ }, [logs, activeTab]);
107
+ // Mark deploy tab as unseen when new deploy logs arrive while tab is inactive
108
+ const prevDeployVersion = (0, react_1.useRef)(deployVersion);
109
+ (0, react_1.useEffect)(() => {
110
+ if (deployVersion > prevDeployVersion.current && activeTab !== 'deploy') {
111
+ setUnseenTabs(prev => new Set(prev).add('deploy'));
112
+ }
113
+ prevDeployVersion.current = deployVersion;
114
+ }, [deployVersion, activeTab]);
50
115
  // Save expanded state to localStorage when it changes
51
116
  (0, react_1.useEffect)(() => {
52
117
  localStorage.setItem('consoleExpanded', JSON.stringify(expanded));
@@ -55,7 +120,7 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
55
120
  (0, react_1.useEffect)(() => {
56
121
  localStorage.setItem('consoleHeight', String(height));
57
122
  }, [height]);
58
- const filterLogs = (logs) => {
123
+ const filteredLogs = (0, react_1.useMemo)(() => {
59
124
  let filtered = logs;
60
125
  // Filter by source (all/app/engine)
61
126
  if (logFilter === 'app') {
@@ -75,11 +140,10 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
75
140
  filtered = filtered.filter(log => levels.indexOf(log.level) >= minLevelIndex);
76
141
  }
77
142
  return filtered;
78
- };
143
+ }, [logs, logFilter, categoryFilter, levelFilter]);
79
144
  const renderTabContent = () => {
80
145
  switch (activeTab) {
81
146
  case 'console':
82
- const filteredLogs = filterLogs(logs);
83
147
  return ((0, jsx_runtime_1.jsxs)("div", { className: "console-tab-content", children: [(0, jsx_runtime_1.jsxs)("div", { className: "console-controls", children: [(0, jsx_runtime_1.jsxs)("div", { className: "filter-row", children: [(0, jsx_runtime_1.jsxs)("div", { className: "filter-group", children: [(0, jsx_runtime_1.jsx)("label", { className: "filter-label", children: "Source:" }), (0, jsx_runtime_1.jsxs)("select", { className: "filter-select", value: logFilter, onChange: (e) => setLogFilter(e.target.value), children: [(0, jsx_runtime_1.jsx)("option", { value: "app", children: "App" }), (0, jsx_runtime_1.jsx)("option", { value: "engine", children: "Engine (System)" }), (0, jsx_runtime_1.jsx)("option", { value: "all", children: "All Sources" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "filter-group", children: [(0, jsx_runtime_1.jsx)("label", { className: "filter-label", children: "Level:" }), (0, jsx_runtime_1.jsxs)("select", { className: "filter-select", value: levelFilter, onChange: (e) => setLevelFilter(e.target.value), children: [(0, jsx_runtime_1.jsx)("option", { value: "all", children: "All Levels" }), (0, jsx_runtime_1.jsx)("option", { value: "debug", children: "Debug+" }), (0, jsx_runtime_1.jsx)("option", { value: "info", children: "Info+" }), (0, jsx_runtime_1.jsx)("option", { value: "warn", children: "Warn+" }), (0, jsx_runtime_1.jsx)("option", { value: "error", children: "Error Only" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "filter-group", children: [(0, jsx_runtime_1.jsx)("label", { className: "filter-label", children: "Category:" }), (0, jsx_runtime_1.jsxs)("select", { className: "filter-select", value: categoryFilter, onChange: (e) => setCategoryFilter(e.target.value), children: [(0, jsx_runtime_1.jsx)("option", { value: "all", children: "All Categories" }), (0, jsx_runtime_1.jsx)("optgroup", { label: "\u2500\u2500\u2500 App \u2500\u2500\u2500", children: APP_CATEGORIES.map(cat => ((0, jsx_runtime_1.jsx)("option", { value: cat, children: cat }, cat))) }), (0, jsx_runtime_1.jsx)("optgroup", { label: "\u2500\u2500\u2500 System \u2500\u2500\u2500", children: SYSTEM_CATEGORIES.map(cat => ((0, jsx_runtime_1.jsx)("option", { value: cat, children: cat }, cat))) })] })] })] }), (0, jsx_runtime_1.jsx)("button", { className: "clear-logs-btn", onClick: onClearLogs, children: "Clear Logs" })] }), (0, jsx_runtime_1.jsx)("div", { className: "log-container", children: filteredLogs.length > 0 ? (filteredLogs.map((log) => {
84
148
  // Format log inline with access to all fields
85
149
  const time = new Date(log.timestamp).toLocaleTimeString();
@@ -93,8 +157,19 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
93
157
  case 'secrets':
94
158
  case 'kv':
95
159
  case 'sharedKv':
96
- case 'notifications':
97
160
  return ((0, jsx_runtime_1.jsx)("div", { className: "store-tab-content", children: (0, jsx_runtime_1.jsx)(StoreViewer_1.default, { initialTab: activeTab, hideTabs: true, storeTimestamps: storeTimestamps, onRefreshStores: onRefreshStores }) }));
161
+ case 'notifications':
162
+ return ((0, jsx_runtime_1.jsx)(NotificationViewer_1.default, { apiBaseUrl: "/devserver/api", notificationVersion: notificationVersion }));
163
+ case 'sourceData':
164
+ return ((0, jsx_runtime_1.jsx)(SourceEmittedDataPanel_1.SourceEmittedDataPanel, { apiBaseUrl: "/devserver/api", sourceDataVersion: sourceDataVersion, onDataCountChange: setSourceDataCount }));
165
+ case 'env':
166
+ return ((0, jsx_runtime_1.jsx)(EnvViewer_1.default, { apiBaseUrl: "/devserver/api", envVersion: envVersion }));
167
+ case 'deploy': {
168
+ return ((0, jsx_runtime_1.jsx)("div", { className: "console-tab-content", children: (0, jsx_runtime_1.jsx)("div", { className: "log-container", ref: (el) => {
169
+ if (el)
170
+ el.scrollTop = el.scrollHeight;
171
+ }, children: deployLogs.length > 0 ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [deployLogs.map((line, idx) => ((0, jsx_runtime_1.jsx)("div", { className: `log-line${line.startsWith('───') ? ' deploy-separator' : ''}`, children: line }, idx))), deployStatus?.deployInProgress && ((0, jsx_runtime_1.jsxs)("div", { className: "log-line deploy-spinner-line", children: [(0, jsx_runtime_1.jsx)("span", { className: "deploy-log-spinner" }), " Deploy in progress..."] }))] })) : ((0, jsx_runtime_1.jsx)("div", { className: "no-logs", children: "No deploy output yet. Click Deploy to start." })) }) }));
172
+ }
98
173
  default:
99
174
  return null;
100
175
  }
@@ -103,52 +178,51 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
103
178
  const handleResizeMouseDown = (e) => {
104
179
  e.preventDefault();
105
180
  e.stopPropagation();
181
+ // Clean up any existing listeners first (safety measure)
182
+ if (cleanupRef.current) {
183
+ cleanupRef.current();
184
+ }
106
185
  dragStateRef.current = {
107
- isMouseDown: true,
108
- isDragging: false,
109
186
  startY: e.clientY,
110
187
  startHeight: height
111
188
  };
189
+ setIsDragging(true);
190
+ document.body.style.cursor = 'ns-resize';
191
+ document.body.style.userSelect = 'none';
112
192
  const handleMouseMove = (e) => {
113
- const current = dragStateRef.current;
114
- if (!current.isMouseDown)
115
- return;
116
- // Only start dragging if the mouse has moved enough
117
- if (!current.isDragging) {
118
- const deltaY = Math.abs(current.startY - e.clientY);
119
- // Only start dragging if mouse moved at least 5px
120
- if (deltaY < 5)
121
- return;
122
- current.isDragging = true;
123
- document.body.style.cursor = 'ns-resize';
124
- document.body.style.userSelect = 'none';
125
- }
126
- // Only resize if we're actually dragging
127
- if (current.isDragging) {
128
- const deltaY = current.startY - e.clientY; // Inverted: moving up increases height
129
- const newHeight = current.startHeight + deltaY;
130
- const minHeight = 100;
131
- const maxHeight = window.innerHeight * 0.8;
132
- const clampedHeight = Math.max(minHeight, Math.min(maxHeight, newHeight));
133
- setHeight(clampedHeight);
193
+ const deltaY = dragStateRef.current.startY - e.clientY; // Inverted: moving up increases height
194
+ const newHeight = dragStateRef.current.startHeight + deltaY;
195
+ const minHeight = 100;
196
+ const maxHeight = window.innerHeight * 0.8;
197
+ const clampedHeight = Math.max(minHeight, Math.min(maxHeight, newHeight));
198
+ // Direct DOM manipulation for instant feedback (bypasses React render cycle)
199
+ if (panelRef.current) {
200
+ panelRef.current.style.height = `${clampedHeight}px`;
134
201
  }
135
202
  };
136
- const handleMouseUp = () => {
137
- dragStateRef.current = {
138
- isMouseDown: false,
139
- isDragging: false,
140
- startY: 0,
141
- startHeight: height // Keep current height instead of resetting to 200
142
- };
203
+ const stopDragging = () => {
204
+ // Sync the final height to React state
205
+ if (panelRef.current) {
206
+ const finalHeight = parseInt(panelRef.current.style.height, 10);
207
+ if (!isNaN(finalHeight)) {
208
+ setHeight(finalHeight);
209
+ }
210
+ }
211
+ setIsDragging(false);
143
212
  document.body.style.cursor = '';
144
213
  document.body.style.userSelect = '';
145
- // Remove event listeners
146
- document.removeEventListener('mousemove', handleMouseMove);
147
- document.removeEventListener('mouseup', handleMouseUp);
214
+ // Remove all event listeners
215
+ document.removeEventListener('mousemove', handleMouseMove, true);
216
+ document.removeEventListener('mouseup', stopDragging, true);
217
+ window.removeEventListener('blur', stopDragging);
218
+ cleanupRef.current = null;
148
219
  };
149
- // Add event listeners
150
- document.addEventListener('mousemove', handleMouseMove);
151
- document.addEventListener('mouseup', handleMouseUp);
220
+ // Store cleanup function for external access
221
+ cleanupRef.current = stopDragging;
222
+ // Add event listeners with capture phase for more reliable handling
223
+ document.addEventListener('mousemove', handleMouseMove, true);
224
+ document.addEventListener('mouseup', stopDragging, true);
225
+ window.addEventListener('blur', stopDragging);
152
226
  };
153
227
  // Handle tab click - switch tab and expand console if collapsed
154
228
  const handleTabClick = (tab) => {
@@ -156,8 +230,24 @@ const TabbedConsole = ({ logs, onClearLogs, storeTimestamps, onRefreshStores, no
156
230
  if (!expanded) {
157
231
  setExpanded(true);
158
232
  }
233
+ // Clear unseen indicator for this tab
234
+ setUnseenTabs(prev => {
235
+ if (!prev.has(tab))
236
+ return prev;
237
+ const updated = new Set(prev);
238
+ updated.delete(tab);
239
+ return updated;
240
+ });
159
241
  };
160
- return ((0, jsx_runtime_1.jsxs)("div", { className: `console-panel ${expanded ? 'expanded' : 'collapsed'}`, style: { height: expanded ? `${height}px` : '32px' }, children: [expanded && ((0, jsx_runtime_1.jsx)("div", { className: "console-resize-handle", onMouseDown: handleResizeMouseDown })), (0, jsx_runtime_1.jsxs)("div", { className: "console-tab-headers", children: [(0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'console' ? 'active' : ''}`, onClick: () => handleTabClick('console'), children: [(0, jsx_runtime_1.jsx)("span", { className: "tab-icon", children: "\uD83D\uDCCB" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Console" }), (0, jsx_runtime_1.jsxs)("span", { className: "tab-count", children: ["(", logs.length, ")"] })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'settings' ? 'active' : ''}`, onClick: () => handleTabClick('settings'), children: [(0, jsx_runtime_1.jsx)("span", { className: "tab-icon", children: "\u2699\uFE0F" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Settings" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'secrets' ? 'active' : ''}`, onClick: () => handleTabClick('secrets'), children: [(0, jsx_runtime_1.jsx)("span", { className: "tab-icon", children: "\uD83D\uDD10" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Secrets" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'kv' ? 'active' : ''}`, onClick: () => handleTabClick('kv'), children: [(0, jsx_runtime_1.jsx)("span", { className: "tab-icon", children: "\uD83D\uDDC3\uFE0F" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "KV Store" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'sharedKv' ? 'active' : ''}`, onClick: () => handleTabClick('sharedKv'), children: [(0, jsx_runtime_1.jsx)("span", { className: "tab-icon", children: "\uD83D\uDD17" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Shared KV" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'notifications' ? 'active' : ''}`, onClick: () => handleTabClick('notifications'), children: [(0, jsx_runtime_1.jsx)("span", { className: "tab-icon", children: "\uD83D\uDD14" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Notifications" }), notificationCount > 0 && ((0, jsx_runtime_1.jsx)("span", { className: "notification-badge", children: notificationCount }))] }), (0, jsx_runtime_1.jsx)("button", { className: "console-toggle", onClick: () => setExpanded(!expanded), children: expanded ? '▼' : '▲' })] }), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "console-content", children: (0, jsx_runtime_1.jsx)("div", { className: "console-tab-body", children: renderTabContent() }) }))] }));
242
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: panelRef, className: `console-panel ${expanded ? 'expanded' : 'collapsed'}${isDragging ? ' resizing' : ''}`, style: { height: expanded ? `${height}px` : '32px' }, children: [isDragging && ((0, jsx_runtime_1.jsx)("div", { style: {
243
+ position: 'fixed',
244
+ top: 0,
245
+ left: 0,
246
+ right: 0,
247
+ bottom: 0,
248
+ zIndex: 9999,
249
+ cursor: 'ns-resize',
250
+ } })), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "console-resize-handle", onMouseDown: handleResizeMouseDown })), (0, jsx_runtime_1.jsxs)("div", { className: "console-tab-headers", children: [(0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'console' ? 'active' : ''}${unseenTabs.has('console') ? ' unseen' : ''}`, onClick: () => handleTabClick('console'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconMemoPad, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Console" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-count", children: filteredLogs.length })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'settings' ? 'active' : ''}`, onClick: () => handleTabClick('settings'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconGear, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Settings" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'secrets' ? 'active' : ''}`, onClick: () => handleTabClick('secrets'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconKey, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Secrets" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'kv' ? 'active' : ''}`, onClick: () => handleTabClick('kv'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconGripVertical, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "KV Store" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'sharedKv' ? 'active' : ''}`, onClick: () => handleTabClick('sharedKv'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconKeySkeletonLeftRight, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Shared KV" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'notifications' ? 'active' : ''}${unseenTabs.has('notifications') ? ' unseen' : ''}`, onClick: () => handleTabClick('notifications'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconBell, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Notifications" }), notificationCount > 0 && ((0, jsx_runtime_1.jsx)("span", { className: "notification-badge", children: notificationCount }))] }), hasSources && ((0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'sourceData' ? 'active' : ''}${unseenTabs.has('sourceData') ? ' unseen' : ''}`, onClick: () => handleTabClick('sourceData'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconDownload, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Emitted Source Data" }), sourceDataCount > 0 && ((0, jsx_runtime_1.jsx)("span", { className: "notification-badge", children: sourceDataCount }))] })), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'env' ? 'active' : ''}${unseenTabs.has('env') ? ' unseen' : ''}`, onClick: () => handleTabClick('env'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconBracketsCurly, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Environment" })] }), (0, jsx_runtime_1.jsxs)("button", { className: `console-tab ${activeTab === 'deploy' ? 'active' : ''}${unseenTabs.has('deploy') ? ' unseen' : ''}`, onClick: () => handleTabClick('deploy'), children: [(0, jsx_runtime_1.jsx)(axiom_icons_1.IconUpload, { size: "2xs" }), (0, jsx_runtime_1.jsx)("span", { className: "tab-label", children: "Deploy" }), deployStatus?.deployInProgress && ((0, jsx_runtime_1.jsx)("span", { className: "deploy-tab-spinner" })), !deployStatus?.deployInProgress && deployStatus?.lastDeploySuccess === true && ((0, jsx_runtime_1.jsx)("span", { className: "deploy-tab-dot deploy-tab-dot-success" })), !deployStatus?.deployInProgress && deployStatus?.lastDeploySuccess === false && ((0, jsx_runtime_1.jsx)("span", { className: "deploy-tab-dot deploy-tab-dot-error" }))] }), (0, jsx_runtime_1.jsx)("button", { className: "console-toggle", onClick: () => setExpanded(!expanded), children: expanded ? (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCaretDownSolid, {}) : (0, jsx_runtime_1.jsx)(axiom_icons_1.IconCaretUpSolid, {}) })] }), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "console-content", children: (0, jsx_runtime_1.jsx)("div", { className: "console-tab-body", children: renderTabContent() }) }))] }));
161
251
  };
162
252
  exports.default = TabbedConsole;
163
253
  //# sourceMappingURL=TabbedConsole.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabbedConsole.js","sourceRoot":"","sources":["../../../../src/ui/components/TabbedConsole.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAA2D;AAC3D,gEAAwC;AAGxC,4DAAyD;AAkBzD,MAAM,aAAa,GAAiC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE;IACrI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAEhD,kDAAkD;IAClD,MAAM,SAAS,GAAI,QAAQ,CAAC,SAAS,CAAgB,IAAI,SAAS,CAAC;IAEnE,6DAA6D;IAC7D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAA2B,KAAK,CAAC,CAAC;IAC5E,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAS,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAS,KAAK,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAA,cAAM,EAAC;QAC1B,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,GAAG;KACjB,CAAC,CAAC;IAEH,0CAA0C;IAC1C,MAAM,cAAc,GAAG;QACrB,UAAU;QACV,WAAW;QACX,MAAM;QACN,eAAe;KAChB,CAAC;IAEF,MAAM,iBAAiB,GAAG;QACxB,OAAO;QACP,aAAa;QACb,SAAS;QACT,UAAU;QACV,SAAS;QACT,QAAQ;QACR,KAAK;QACL,SAAS;KACV,CAAC;IAEF,sDAAsD;IACtD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,8CAA8C;IAC9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAc,EAAE;QAClD,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,oCAAoC;QACpC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QAC1D,CAAC;aAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAC7D,CAAC;QAED,qBAAqB;QACrB,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YAC7B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;QACrE,CAAC;QAED,gEAAgE;QAChE,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAClD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,SAAS;gBACZ,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEtC,OAAO,CACL,iCAAK,SAAS,EAAC,qBAAqB,aAClC,iCAAK,SAAS,EAAC,kBAAkB,aAC/B,iCAAK,SAAS,EAAC,YAAY,aACzB,iCAAK,SAAS,EAAC,cAAc,aAC3B,kCAAO,SAAS,EAAC,cAAc,wBAAgB,EAC/C,oCACE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAiC,CAAC,aAEzE,mCAAQ,KAAK,EAAC,KAAK,oBAAa,EAChC,mCAAQ,KAAK,EAAC,QAAQ,gCAAyB,EAC/C,mCAAQ,KAAK,EAAC,KAAK,4BAAqB,IACjC,IACL,EAEN,iCAAK,SAAS,EAAC,cAAc,aAC3B,kCAAO,SAAS,EAAC,cAAc,uBAAe,EAC9C,oCACE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAE/C,mCAAQ,KAAK,EAAC,KAAK,2BAAoB,EACvC,mCAAQ,KAAK,EAAC,OAAO,uBAAgB,EACrC,mCAAQ,KAAK,EAAC,MAAM,sBAAe,EACnC,mCAAQ,KAAK,EAAC,MAAM,sBAAe,EACnC,mCAAQ,KAAK,EAAC,OAAO,2BAAoB,IAClC,IACL,EAEN,iCAAK,SAAS,EAAC,cAAc,aAC3B,kCAAO,SAAS,EAAC,cAAc,0BAAkB,EACjD,oCACE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAElD,mCAAQ,KAAK,EAAC,KAAK,+BAAwB,EAC3C,qCAAU,KAAK,EAAC,2CAAa,YAC1B,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACzB,mCAAkB,KAAK,EAAE,GAAG,YAAG,GAAG,IAArB,GAAG,CAA4B,CAC7C,CAAC,GACO,EACX,qCAAU,KAAK,EAAC,8CAAgB,YAC7B,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAC5B,mCAAkB,KAAK,EAAE,GAAG,YAAG,GAAG,IAArB,GAAG,CAA4B,CAC7C,CAAC,GACO,IACJ,IACL,IACF,EAEN,mCAAQ,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,WAAW,2BAE9C,IACL,EACN,gCAAK,SAAS,EAAC,eAAe,YAC3B,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAa,EAAE,EAAE;gCACjC,8CAA8C;gCAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CAAC;gCAC1D,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;gCACxC,MAAM,gBAAgB,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gCAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gCACtC,MAAM,YAAY,GAAG,IAAI,IAAI,KAAK,gBAAgB,CAAC,WAAW,EAAE,IAAI,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;gCAE5F,OAAO,CACL,gCAAkB,SAAS,EAAE,gBAAgB,GAAG,CAAC,KAAK,eAAe,GAAG,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,YAC3G,YAAY,IADL,GAAG,CAAC,EAAE,CAEV,CACP,CAAC;4BACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,gCAAK,SAAS,EAAC,SAAS,sCAA4B,CACrD,GACG,IACF,CACP,CAAC;YAEJ,KAAK,UAAU,CAAC;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,IAAI,CAAC;YACV,KAAK,UAAU,CAAC;YAChB,KAAK,eAAe;gBAClB,OAAO,CACL,gCAAK,SAAS,EAAC,mBAAmB,YAChC,uBAAC,qBAAW,IACV,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,IAAI,EACd,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,GAChC,GACE,CACP,CAAC;YAEJ;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,sDAAsD;IACtD,MAAM,qBAAqB,GAAG,CAAC,CAAmB,EAAE,EAAE;QACpD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QAEpB,YAAY,CAAC,OAAO,GAAG;YACrB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,CAAC,CAAC,OAAO;YACjB,WAAW,EAAE,MAAM;SACpB,CAAC;QAEF,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,OAAO;YAEjC,oDAAoD;YACpD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBACpD,kDAAkD;gBAClD,IAAI,MAAM,GAAG,CAAC;oBAAE,OAAO;gBAEvB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YAC1C,CAAC;YAED,yCAAyC;YACzC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,uCAAuC;gBAClF,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC/C,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;gBAE3C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1E,SAAS,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,YAAY,CAAC,OAAO,GAAG;gBACrB,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,MAAM,CAAE,kDAAkD;aACxE,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;YAEpC,yBAAyB;YACzB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,sBAAsB;QACtB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,gEAAgE;IAChE,MAAM,cAAc,GAAG,CAAC,GAAe,EAAE,EAAE;QACzC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,iCACE,SAAS,EAAE,iBAAiB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,EACjE,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,aAGnD,QAAQ,IAAI,CACX,gCACE,SAAS,EAAC,uBAAuB,EACjC,WAAW,EAAE,qBAAqB,GAClC,CACH,EAGD,iCAAK,SAAS,EAAC,qBAAqB,aAClC,oCACE,SAAS,EAAE,eAAe,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EACnE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,aAExC,iCAAM,SAAS,EAAC,UAAU,6BAAU,EACpC,iCAAM,SAAS,EAAC,WAAW,wBAAe,EAC1C,kCAAM,SAAS,EAAC,WAAW,kBAAG,IAAI,CAAC,MAAM,SAAS,IAC3C,EAET,oCACE,SAAS,EAAE,eAAe,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EACpE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,aAEzC,iCAAM,SAAS,EAAC,UAAU,6BAAU,EACpC,iCAAM,SAAS,EAAC,WAAW,yBAAgB,IACpC,EAET,oCACE,SAAS,EAAE,eAAe,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EACnE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,aAExC,iCAAM,SAAS,EAAC,UAAU,6BAAU,EACpC,iCAAM,SAAS,EAAC,WAAW,wBAAe,IACnC,EAET,oCACE,SAAS,EAAE,eAAe,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9D,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,aAEnC,iCAAM,SAAS,EAAC,UAAU,mCAAW,EACrC,iCAAM,SAAS,EAAC,WAAW,yBAAgB,IACpC,EAET,oCACE,SAAS,EAAE,eAAe,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EACpE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,aAEzC,iCAAM,SAAS,EAAC,UAAU,6BAAU,EACpC,iCAAM,SAAS,EAAC,WAAW,0BAAiB,IACrC,EAET,oCACE,SAAS,EAAE,eAAe,SAAS,KAAK,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EACzE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,aAE9C,iCAAM,SAAS,EAAC,UAAU,6BAAU,EACpC,iCAAM,SAAS,EAAC,WAAW,8BAAqB,EAC/C,iBAAiB,GAAG,CAAC,IAAI,CACxB,iCAAM,SAAS,EAAC,oBAAoB,YAAE,iBAAiB,GAAQ,CAChE,IACM,EAET,mCAAQ,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,YACrE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GACd,IACL,EAEL,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,iBAAiB,YAE9B,gCAAK,SAAS,EAAC,kBAAkB,YAC9B,gBAAgB,EAAE,GACf,GACF,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"TabbedConsole.js","sourceRoot":"","sources":["../../../../src/ui/components/TabbedConsole.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface ToolSettingsViewProps {
3
+ odpApiKey: string;
4
+ onSave: (odpApiKey: string) => void;
5
+ }
6
+ declare const ToolSettingsView: React.FC<ToolSettingsViewProps>;
7
+ export default ToolSettingsView;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
+ const react_1 = require("react");
8
+ const EyeIcon_1 = __importDefault(require("./common/EyeIcon"));
9
+ const ToolSettingsView = ({ odpApiKey, onSave }) => {
10
+ const [apiKey, setApiKey] = (0, react_1.useState)(odpApiKey);
11
+ const [showKey, setShowKey] = (0, react_1.useState)(false);
12
+ (0, react_1.useEffect)(() => {
13
+ setApiKey(odpApiKey);
14
+ }, [odpApiKey]);
15
+ const hasChanges = apiKey !== odpApiKey;
16
+ const handleSave = () => {
17
+ onSave(apiKey);
18
+ };
19
+ const handleCancel = () => {
20
+ setApiKey(odpApiKey);
21
+ };
22
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "tool-settings-view", children: [(0, jsx_runtime_1.jsxs)("div", { className: "tool-settings-header", children: [(0, jsx_runtime_1.jsx)("h2", { children: "Tool Settings" }), (0, jsx_runtime_1.jsxs)("p", { className: "tool-settings-subtitle", children: ["ODP configuration is stored in ", (0, jsx_runtime_1.jsx)("code", { children: ".ocp-local/config.json" })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "tool-settings-form", children: (0, jsx_runtime_1.jsxs)("div", { className: "tool-settings-field", children: [(0, jsx_runtime_1.jsx)("label", { className: "tool-settings-field-label", children: "ODP API Key" }), (0, jsx_runtime_1.jsxs)("p", { className: "tool-settings-field-description", children: ["The API key for your ODP/OCP account. When set, the app can read and write data to your account using the ", (0, jsx_runtime_1.jsx)("code", { children: "@zaiusinc/node-sdk" }), ". You can find this key in the ODP settings under APIs."] }), (0, jsx_runtime_1.jsxs)("div", { className: "tool-settings-input-row", children: [(0, jsx_runtime_1.jsx)("input", { type: showKey ? 'text' : 'password', className: "tool-settings-input", value: apiKey, onChange: (e) => setApiKey(e.target.value), placeholder: "Enter your ODP API key" }), (0, jsx_runtime_1.jsx)(EyeIcon_1.default, { isVisible: showKey, onClick: () => setShowKey(!showKey) })] }), hasChanges && ((0, jsx_runtime_1.jsxs)("div", { className: "tool-settings-controls", children: [(0, jsx_runtime_1.jsx)("button", { className: "save-btn", onClick: handleSave, children: "Save" }), (0, jsx_runtime_1.jsx)("button", { className: "cancel-btn", onClick: handleCancel, children: "Cancel" })] }))] }) })] }));
23
+ };
24
+ exports.default = ToolSettingsView;
25
+ //# sourceMappingURL=ToolSettingsView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolSettingsView.js","sourceRoot":"","sources":["../../../../src/ui/components/ToolSettingsView.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAmD;AACnD,+DAAuC;AAOvC,MAAM,gBAAgB,GAAoC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;IAClF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,SAAS,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC;IAExC,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,MAAM,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,SAAS,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO,CACL,iCAAK,SAAS,EAAC,oBAAoB,aACjC,iCAAK,SAAS,EAAC,sBAAsB,aACnC,2DAAsB,EACtB,+BAAG,SAAS,EAAC,wBAAwB,gDACJ,sEAAmC,IAChE,IACA,EACN,gCAAK,SAAS,EAAC,oBAAoB,YACjC,iCAAK,SAAS,EAAC,qBAAqB,aAClC,kCAAO,SAAS,EAAC,2BAA2B,4BAAoB,EAChE,+BAAG,SAAS,EAAC,iCAAiC,2HAElC,kEAA+B,+DAEvC,EACJ,iCAAK,SAAS,EAAC,yBAAyB,aACtC,kCACE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EACnC,SAAS,EAAC,qBAAqB,EAC/B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1C,WAAW,EAAC,wBAAwB,GACpC,EACF,uBAAC,iBAAO,IAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAI,IAChE,EACL,UAAU,IAAI,CACb,iCAAK,SAAS,EAAC,wBAAwB,aACrC,mCAAQ,SAAS,EAAC,UAAU,EAAC,OAAO,EAAE,UAAU,qBAAe,EAC/D,mCAAQ,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,YAAY,uBAAiB,IACjE,CACP,IACG,GACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const axiom_icons_1 = require("@optimizely/axiom-icons");
4
5
  /**
5
6
  * Toggleable eye icon for showing/hiding sensitive values
6
7
  */
7
8
  const EyeIcon = ({ isVisible, onClick, className = '' }) => {
8
- return ((0, jsx_runtime_1.jsx)("button", { className: `eye-icon ${isVisible ? 'visible' : 'hidden'} ${className}`, onClick: onClick, title: isVisible ? 'Hide value' : 'Show value', type: "button", children: isVisible ? '👁️' : '👁️‍🗨️' }));
9
+ return ((0, jsx_runtime_1.jsx)("button", { className: `eye-icon ${isVisible ? 'visible' : 'hidden'} ${className}`, onClick: onClick, title: isVisible ? 'Hide value' : 'Show value', type: "button", children: isVisible ? (0, jsx_runtime_1.jsx)(axiom_icons_1.IconEye, {}) : (0, jsx_runtime_1.jsx)(axiom_icons_1.IconEyeSlash, {}) }));
9
10
  };
10
11
  exports.default = EyeIcon;
11
12
  //# sourceMappingURL=EyeIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EyeIcon.js","sourceRoot":"","sources":["../../../../../src/ui/components/common/EyeIcon.tsx"],"names":[],"mappings":";;;AAQA;;GAEG;AACH,MAAM,OAAO,GAA2B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE;IACjF,OAAO,CACL,mCACE,SAAS,EAAE,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,EAAE,EACtE,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAC9C,IAAI,EAAC,QAAQ,YAEZ,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GACvB,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"EyeIcon.js","sourceRoot":"","sources":["../../../../../src/ui/components/common/EyeIcon.tsx"],"names":[],"mappings":";;;AACA,yDAAgE;AAQhE;;GAEG;AACH,MAAM,OAAO,GAA2B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE;IACjF,OAAO,CACL,mCACE,SAAS,EAAE,YAAY,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,EAAE,EACtE,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAC9C,IAAI,EAAC,QAAQ,YAEZ,SAAS,CAAC,CAAC,CAAC,uBAAC,qBAAO,KAAG,CAAC,CAAC,CAAC,uBAAC,0BAAY,KAAG,GACpC,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,OAAO,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { KeyValuePair } from '../store/formStateSlice';
2
+ /**
3
+ * Configuration for the useKeyValuePairs hook
4
+ */
5
+ interface UseKeyValuePairsConfig {
6
+ /** Current params array */
7
+ params: KeyValuePair[];
8
+ /** Current headers array */
9
+ headers: KeyValuePair[];
10
+ /** Callback to update form state */
11
+ onUpdate: (updates: {
12
+ params?: KeyValuePair[];
13
+ headers?: KeyValuePair[];
14
+ }) => void;
15
+ }
16
+ /**
17
+ * Return value from the useKeyValuePairs hook
18
+ */
19
+ interface UseKeyValuePairsReturn {
20
+ /** Add a new key-value pair to params or headers */
21
+ addKeyValuePair: (type: 'params' | 'headers') => void;
22
+ /** Update a specific field in a key-value pair */
23
+ updateKeyValuePair: (type: 'params' | 'headers', index: number, field: 'key' | 'value' | 'enabled', value: string | boolean) => void;
24
+ /** Remove a key-value pair at the specified index */
25
+ removeKeyValuePair: (type: 'params' | 'headers', index: number) => void;
26
+ }
27
+ /**
28
+ * Custom hook for managing key-value pairs (params and headers) in request forms.
29
+ *
30
+ * This hook provides a consistent interface for adding, updating, and removing
31
+ * key-value pairs, shared across FunctionsView, OpalToolsView, and other
32
+ * components that need params/headers management.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const { addKeyValuePair, updateKeyValuePair, removeKeyValuePair } = useKeyValuePairs({
37
+ * params: currentState.params,
38
+ * headers: currentState.headers,
39
+ * onUpdate: (updates) => updateFormState(updates),
40
+ * });
41
+ *
42
+ * // In JSX:
43
+ * <KeyValueEditor
44
+ * items={params}
45
+ * onAdd={() => addKeyValuePair('params')}
46
+ * onUpdate={(index, field, value) => updateKeyValuePair('params', index, field, value)}
47
+ * onRemove={(index) => removeKeyValuePair('params', index)}
48
+ * />
49
+ * ```
50
+ */
51
+ export declare function useKeyValuePairs(config: UseKeyValuePairsConfig): UseKeyValuePairsReturn;
52
+ export {};
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useKeyValuePairs = useKeyValuePairs;
4
+ const react_1 = require("react");
5
+ /**
6
+ * Custom hook for managing key-value pairs (params and headers) in request forms.
7
+ *
8
+ * This hook provides a consistent interface for adding, updating, and removing
9
+ * key-value pairs, shared across FunctionsView, OpalToolsView, and other
10
+ * components that need params/headers management.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const { addKeyValuePair, updateKeyValuePair, removeKeyValuePair } = useKeyValuePairs({
15
+ * params: currentState.params,
16
+ * headers: currentState.headers,
17
+ * onUpdate: (updates) => updateFormState(updates),
18
+ * });
19
+ *
20
+ * // In JSX:
21
+ * <KeyValueEditor
22
+ * items={params}
23
+ * onAdd={() => addKeyValuePair('params')}
24
+ * onUpdate={(index, field, value) => updateKeyValuePair('params', index, field, value)}
25
+ * onRemove={(index) => removeKeyValuePair('params', index)}
26
+ * />
27
+ * ```
28
+ */
29
+ function useKeyValuePairs(config) {
30
+ const { params, headers, onUpdate } = config;
31
+ const addKeyValuePair = (0, react_1.useCallback)((type) => {
32
+ const newPair = { key: '', value: '', enabled: true };
33
+ if (type === 'params') {
34
+ onUpdate({ params: [...params, newPair] });
35
+ }
36
+ else {
37
+ onUpdate({ headers: [...headers, newPair] });
38
+ }
39
+ }, [params, headers, onUpdate]);
40
+ const updateKeyValuePair = (0, react_1.useCallback)((type, index, field, value) => {
41
+ if (type === 'params') {
42
+ const newParams = [...params];
43
+ newParams[index] = { ...newParams[index], [field]: value };
44
+ onUpdate({ params: newParams });
45
+ }
46
+ else {
47
+ const newHeaders = [...headers];
48
+ newHeaders[index] = { ...newHeaders[index], [field]: value };
49
+ onUpdate({ headers: newHeaders });
50
+ }
51
+ }, [params, headers, onUpdate]);
52
+ const removeKeyValuePair = (0, react_1.useCallback)((type, index) => {
53
+ if (type === 'params') {
54
+ onUpdate({ params: params.filter((_, i) => i !== index) });
55
+ }
56
+ else {
57
+ onUpdate({ headers: headers.filter((_, i) => i !== index) });
58
+ }
59
+ }, [params, headers, onUpdate]);
60
+ return {
61
+ addKeyValuePair,
62
+ updateKeyValuePair,
63
+ removeKeyValuePair,
64
+ };
65
+ }
66
+ //# sourceMappingURL=useKeyValuePairs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyValuePairs.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useKeyValuePairs.ts"],"names":[],"mappings":";;AAwDA,4CAmDC;AA3GD,iCAAoC;AAgCpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,gBAAgB,CAAC,MAA8B;IAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE7C,MAAM,eAAe,GAAG,IAAA,mBAAW,EACjC,CAAC,IAA0B,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAiB,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC5B,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,CACE,IAA0B,EAC1B,KAAa,EACb,KAAkC,EAClC,KAAuB,EACvB,EAAE;QACF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAC9B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YAC3D,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;YAChC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;YAC7D,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC5B,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,CAAC,IAA0B,EAAE,KAAa,EAAE,EAAE;QAC5C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC5B,CAAC;IAEF,OAAO;QACL,eAAe;QACf,kBAAkB;QAClB,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
@@ -5,7 +5,7 @@ export interface KeyValuePair {
5
5
  }
6
6
  export interface FunctionFormState {
7
7
  httpMethod: string;
8
- requestUrl: string;
8
+ pathSuffix: string;
9
9
  params: KeyValuePair[];
10
10
  headers: KeyValuePair[];
11
11
  requestBody: string;
@@ -26,17 +26,31 @@ export interface SourceFormState {
26
26
  webhookParams: KeyValuePair[];
27
27
  webhookHeaders: KeyValuePair[];
28
28
  }
29
+ export interface OpalToolFormState {
30
+ requestBody: string;
31
+ params: KeyValuePair[];
32
+ headers: KeyValuePair[];
33
+ authData: string;
34
+ }
29
35
  export interface FormState {
30
36
  appName: string;
31
37
  functions: Record<string, FunctionFormState>;
32
38
  jobs: Record<string, JobFormState>;
33
39
  destinations: Record<string, DestinationFormState>;
34
40
  sources: Record<string, SourceFormState>;
41
+ opalTools: Record<string, OpalToolFormState>;
35
42
  }
36
43
  export declare const getDefaultFunctionFormState: () => FunctionFormState;
37
44
  export declare const getDefaultJobFormState: () => JobFormState;
38
45
  export declare const getDefaultDestinationFormState: () => DestinationFormState;
39
46
  export declare const getDefaultSourceFormState: () => SourceFormState;
47
+ export declare const getDefaultOpalToolFormState: () => OpalToolFormState;
48
+ /**
49
+ * Generate default auth data JSON based on auth requirements.
50
+ * - For non-OptiID providers: simpler template with just access_token
51
+ * - For OptiID: full template with customer_id, instance_id, access_token, product_sku
52
+ */
53
+ export declare function generateDefaultAuthData(authRequirements: any[]): string;
40
54
  export declare const setAppName: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "formState/setAppName">, updateFunctionState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
41
55
  id: string;
42
56
  data: Partial<FunctionFormState>;
@@ -49,6 +63,9 @@ export declare const setAppName: import("@reduxjs/toolkit").ActionCreatorWithPay
49
63
  }, "formState/updateDestinationState">, updateSourceState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
50
64
  id: string;
51
65
  data: Partial<SourceFormState>;
52
- }, "formState/updateSourceState">, clearAllState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"formState/clearAllState">, hydrateFromStorage: import("@reduxjs/toolkit").ActionCreatorWithPayload<FormState, "formState/hydrateFromStorage">;
66
+ }, "formState/updateSourceState">, updateOpalToolState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
67
+ id: string;
68
+ data: Partial<OpalToolFormState>;
69
+ }, "formState/updateOpalToolState">, clearAllState: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"formState/clearAllState">, hydrateFromStorage: import("@reduxjs/toolkit").ActionCreatorWithPayload<FormState, "formState/hydrateFromStorage">;
53
70
  declare const _default: import("redux").Reducer<FormState>;
54
71
  export default _default;