@gzeoneth/gov-tracker 0.2.1-0 → 0.2.1-alpha.cli-preview.f8c3a87

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 (191) hide show
  1. package/README.md +91 -68
  2. package/dist/calldata/decoder.js +1 -1
  3. package/dist/calldata/decoder.js.map +1 -1
  4. package/dist/calldata/index.d.ts +1 -1
  5. package/dist/calldata/index.d.ts.map +1 -1
  6. package/dist/calldata/index.js.map +1 -1
  7. package/dist/calldata/parameter-decoder.d.ts.map +1 -1
  8. package/dist/calldata/parameter-decoder.js +16 -9
  9. package/dist/calldata/parameter-decoder.js.map +1 -1
  10. package/dist/calldata/signature-lookup.d.ts +17 -2
  11. package/dist/calldata/signature-lookup.d.ts.map +1 -1
  12. package/dist/calldata/signature-lookup.js +20 -2
  13. package/dist/calldata/signature-lookup.js.map +1 -1
  14. package/dist/cli/cli.d.ts +21 -0
  15. package/dist/cli/cli.d.ts.map +1 -0
  16. package/dist/cli/{monitor.js → cli.js} +155 -59
  17. package/dist/cli/cli.js.map +1 -0
  18. package/dist/cli/lib/cli.d.ts +8 -1
  19. package/dist/cli/lib/cli.d.ts.map +1 -1
  20. package/dist/cli/lib/cli.js +35 -15
  21. package/dist/cli/lib/cli.js.map +1 -1
  22. package/dist/cli/lib/concurrency.d.ts +20 -0
  23. package/dist/cli/lib/concurrency.d.ts.map +1 -0
  24. package/dist/cli/lib/concurrency.js +32 -0
  25. package/dist/cli/lib/concurrency.js.map +1 -0
  26. package/dist/cli/tui/App.d.ts +13 -0
  27. package/dist/cli/tui/App.d.ts.map +1 -0
  28. package/dist/cli/tui/App.js +92 -0
  29. package/dist/cli/tui/App.js.map +1 -0
  30. package/dist/cli/tui/components/Header.d.ts +20 -0
  31. package/dist/cli/tui/components/Header.d.ts.map +1 -0
  32. package/dist/cli/tui/components/Header.js +57 -0
  33. package/dist/cli/tui/components/Header.js.map +1 -0
  34. package/dist/cli/tui/components/KeyHelp.d.ts +11 -0
  35. package/dist/cli/tui/components/KeyHelp.d.ts.map +1 -0
  36. package/dist/cli/tui/components/KeyHelp.js +82 -0
  37. package/dist/cli/tui/components/KeyHelp.js.map +1 -0
  38. package/dist/cli/tui/components/ProposalRow.d.ts +11 -0
  39. package/dist/cli/tui/components/ProposalRow.d.ts.map +1 -0
  40. package/dist/cli/tui/components/ProposalRow.js +66 -0
  41. package/dist/cli/tui/components/ProposalRow.js.map +1 -0
  42. package/dist/cli/tui/components/StageRow.d.ts +12 -0
  43. package/dist/cli/tui/components/StageRow.d.ts.map +1 -0
  44. package/dist/cli/tui/components/StageRow.js +83 -0
  45. package/dist/cli/tui/components/StageRow.js.map +1 -0
  46. package/dist/cli/tui/components/StatusBadge.d.ts +12 -0
  47. package/dist/cli/tui/components/StatusBadge.d.ts.map +1 -0
  48. package/dist/cli/tui/components/StatusBadge.js +27 -0
  49. package/dist/cli/tui/components/StatusBadge.js.map +1 -0
  50. package/dist/cli/tui/components/ViewLayout.d.ts +18 -0
  51. package/dist/cli/tui/components/ViewLayout.d.ts.map +1 -0
  52. package/dist/cli/tui/components/ViewLayout.js +21 -0
  53. package/dist/cli/tui/components/ViewLayout.js.map +1 -0
  54. package/dist/cli/tui/hooks/index.d.ts +10 -0
  55. package/dist/cli/tui/hooks/index.d.ts.map +1 -0
  56. package/dist/cli/tui/hooks/index.js +14 -0
  57. package/dist/cli/tui/hooks/index.js.map +1 -0
  58. package/dist/cli/tui/hooks/useCache.d.ts +12 -0
  59. package/dist/cli/tui/hooks/useCache.d.ts.map +1 -0
  60. package/dist/cli/tui/hooks/useCache.js +86 -0
  61. package/dist/cli/tui/hooks/useCache.js.map +1 -0
  62. package/dist/cli/tui/hooks/useNavigation.d.ts +34 -0
  63. package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -0
  64. package/dist/cli/tui/hooks/useNavigation.js +219 -0
  65. package/dist/cli/tui/hooks/useNavigation.js.map +1 -0
  66. package/dist/cli/tui/hooks/useProposals.d.ts +10 -0
  67. package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -0
  68. package/dist/cli/tui/hooks/useProposals.js +159 -0
  69. package/dist/cli/tui/hooks/useProposals.js.map +1 -0
  70. package/dist/cli/tui/hooks/useStageCalldata.d.ts +17 -0
  71. package/dist/cli/tui/hooks/useStageCalldata.d.ts.map +1 -0
  72. package/dist/cli/tui/hooks/useStageCalldata.js +50 -0
  73. package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -0
  74. package/dist/cli/tui/hooks/useTracker.d.ts +28 -0
  75. package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -0
  76. package/dist/cli/tui/hooks/useTracker.js +165 -0
  77. package/dist/cli/tui/hooks/useTracker.js.map +1 -0
  78. package/dist/cli/tui/index.d.ts +14 -0
  79. package/dist/cli/tui/index.d.ts.map +1 -0
  80. package/dist/cli/tui/index.js +68 -0
  81. package/dist/cli/tui/index.js.map +1 -0
  82. package/dist/cli/tui/ink-wrapper.d.ts +43 -0
  83. package/dist/cli/tui/ink-wrapper.d.ts.map +1 -0
  84. package/dist/cli/tui/ink-wrapper.js +41 -0
  85. package/dist/cli/tui/ink-wrapper.js.map +1 -0
  86. package/dist/cli/tui/types.d.ts +34 -0
  87. package/dist/cli/tui/types.d.ts.map +1 -0
  88. package/dist/cli/tui/types.js +6 -0
  89. package/dist/cli/tui/types.js.map +1 -0
  90. package/dist/cli/tui/utils/index.d.ts +4 -0
  91. package/dist/cli/tui/utils/index.d.ts.map +1 -0
  92. package/dist/cli/tui/utils/index.js +10 -0
  93. package/dist/cli/tui/utils/index.js.map +1 -0
  94. package/dist/cli/tui/utils/terminal.d.ts +18 -0
  95. package/dist/cli/tui/utils/terminal.d.ts.map +1 -0
  96. package/dist/cli/tui/utils/terminal.js +26 -0
  97. package/dist/cli/tui/utils/terminal.js.map +1 -0
  98. package/dist/cli/tui/utils/text.d.ts +12 -0
  99. package/dist/cli/tui/utils/text.d.ts.map +1 -0
  100. package/dist/cli/tui/utils/text.js +28 -0
  101. package/dist/cli/tui/utils/text.js.map +1 -0
  102. package/dist/cli/tui/views/CalldataView.d.ts +12 -0
  103. package/dist/cli/tui/views/CalldataView.d.ts.map +1 -0
  104. package/dist/cli/tui/views/CalldataView.js +180 -0
  105. package/dist/cli/tui/views/CalldataView.js.map +1 -0
  106. package/dist/cli/tui/views/DescriptionView.d.ts +12 -0
  107. package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -0
  108. package/dist/cli/tui/views/DescriptionView.js +174 -0
  109. package/dist/cli/tui/views/DescriptionView.js.map +1 -0
  110. package/dist/cli/tui/views/ElectionView.d.ts +12 -0
  111. package/dist/cli/tui/views/ElectionView.d.ts.map +1 -0
  112. package/dist/cli/tui/views/ElectionView.js +159 -0
  113. package/dist/cli/tui/views/ElectionView.js.map +1 -0
  114. package/dist/cli/tui/views/ProposalDetail.d.ts +14 -0
  115. package/dist/cli/tui/views/ProposalDetail.d.ts.map +1 -0
  116. package/dist/cli/tui/views/ProposalDetail.js +172 -0
  117. package/dist/cli/tui/views/ProposalDetail.js.map +1 -0
  118. package/dist/cli/tui/views/ProposalList.d.ts +17 -0
  119. package/dist/cli/tui/views/ProposalList.d.ts.map +1 -0
  120. package/dist/cli/tui/views/ProposalList.js +111 -0
  121. package/dist/cli/tui/views/ProposalList.js.map +1 -0
  122. package/dist/cli/tui/views/SimulationView.d.ts +12 -0
  123. package/dist/cli/tui/views/SimulationView.d.ts.map +1 -0
  124. package/dist/cli/tui/views/SimulationView.js +93 -0
  125. package/dist/cli/tui/views/SimulationView.js.map +1 -0
  126. package/dist/cli/tui/views/StageView.d.ts +12 -0
  127. package/dist/cli/tui/views/StageView.d.ts.map +1 -0
  128. package/dist/cli/tui/views/StageView.js +199 -0
  129. package/dist/cli/tui/views/StageView.js.map +1 -0
  130. package/dist/constants.d.ts +1 -0
  131. package/dist/constants.d.ts.map +1 -1
  132. package/dist/constants.js +1 -0
  133. package/dist/constants.js.map +1 -1
  134. package/dist/data/bundled-cache.json +24151 -0
  135. package/dist/discovery/governor-discovery.d.ts.map +1 -1
  136. package/dist/discovery/governor-discovery.js +2 -1
  137. package/dist/discovery/governor-discovery.js.map +1 -1
  138. package/dist/index.d.ts +23 -4
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +30 -4
  141. package/dist/index.js.map +1 -1
  142. package/dist/stages/l2-to-l1-message.d.ts +5 -0
  143. package/dist/stages/l2-to-l1-message.d.ts.map +1 -1
  144. package/dist/stages/l2-to-l1-message.js +109 -70
  145. package/dist/stages/l2-to-l1-message.js.map +1 -1
  146. package/dist/stages/proposal-queued.js +2 -2
  147. package/dist/stages/proposal-queued.js.map +1 -1
  148. package/dist/stages/retryables.d.ts.map +1 -1
  149. package/dist/stages/retryables.js +8 -1
  150. package/dist/stages/retryables.js.map +1 -1
  151. package/dist/stages/timelock.d.ts.map +1 -1
  152. package/dist/stages/timelock.js +11 -9
  153. package/dist/stages/timelock.js.map +1 -1
  154. package/dist/stages/utils.d.ts +5 -2
  155. package/dist/stages/utils.d.ts.map +1 -1
  156. package/dist/stages/utils.js +35 -18
  157. package/dist/stages/utils.js.map +1 -1
  158. package/dist/stages/voting.d.ts.map +1 -1
  159. package/dist/stages/voting.js +2 -6
  160. package/dist/stages/voting.js.map +1 -1
  161. package/dist/tracker/cache.d.ts +27 -0
  162. package/dist/tracker/cache.d.ts.map +1 -1
  163. package/dist/tracker/cache.js +46 -2
  164. package/dist/tracker/cache.js.map +1 -1
  165. package/dist/tracker/execute.d.ts.map +1 -1
  166. package/dist/tracker/execute.js +25 -1
  167. package/dist/tracker/execute.js.map +1 -1
  168. package/dist/tracker/state.d.ts +0 -3
  169. package/dist/tracker/state.d.ts.map +1 -1
  170. package/dist/tracker/state.js +11 -5
  171. package/dist/tracker/state.js.map +1 -1
  172. package/dist/types/stages.d.ts +15 -2
  173. package/dist/types/stages.d.ts.map +1 -1
  174. package/dist/types/stages.js.map +1 -1
  175. package/dist/types/tracking.d.ts +4 -0
  176. package/dist/types/tracking.d.ts.map +1 -1
  177. package/dist/utils/salt-computation.d.ts.map +1 -1
  178. package/dist/utils/salt-computation.js +20 -26
  179. package/dist/utils/salt-computation.js.map +1 -1
  180. package/dist/utils/sanitize.d.ts +28 -0
  181. package/dist/utils/sanitize.d.ts.map +1 -0
  182. package/dist/utils/sanitize.js +52 -0
  183. package/dist/utils/sanitize.js.map +1 -0
  184. package/dist/utils/timing.d.ts +10 -2
  185. package/dist/utils/timing.d.ts.map +1 -1
  186. package/dist/utils/timing.js +22 -4
  187. package/dist/utils/timing.js.map +1 -1
  188. package/package.json +29 -17
  189. package/dist/cli/monitor.d.ts +0 -3
  190. package/dist/cli/monitor.d.ts.map +0 -1
  191. package/dist/cli/monitor.js.map +0 -1
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Single stage row component for proposal detail view
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StageRow = StageRow;
7
+ const ink_wrapper_js_1 = require("../ink-wrapper.js");
8
+ const stage_metadata_js_1 = require("../../../utils/stage-metadata.js");
9
+ const StatusBadge_js_1 = require("./StatusBadge.js");
10
+ function formatTiming(stage) {
11
+ if (stage.timing?.eta) {
12
+ const date = new Date(stage.timing.eta * 1000);
13
+ const now = Date.now();
14
+ const diff = stage.timing.eta * 1000 - now;
15
+ if (diff > 0) {
16
+ const hours = Math.floor(diff / (1000 * 60 * 60));
17
+ const mins = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
18
+ if (hours > 24) {
19
+ const days = Math.floor(hours / 24);
20
+ return `~${days}d ${hours % 24}h`;
21
+ }
22
+ return `~${hours}h ${mins}m`;
23
+ }
24
+ return date.toLocaleDateString();
25
+ }
26
+ if (stage.transactions.length > 0) {
27
+ const tx = stage.transactions[0];
28
+ if (tx.timestamp) {
29
+ return new Date(tx.timestamp * 1000).toLocaleDateString();
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ function getStageExtra(stage) {
35
+ if (stage.type === "VOTING_ACTIVE" && stage.data) {
36
+ const data = stage.data;
37
+ if (data.proposalState) {
38
+ return data.proposalState;
39
+ }
40
+ }
41
+ if (stage.type === "RETRYABLE_EXECUTED" && stage.data) {
42
+ const data = stage.data;
43
+ if (data.ticketCount !== undefined) {
44
+ const redeemed = data.redeemedCount ?? 0;
45
+ return `${redeemed}/${data.ticketCount} tickets`;
46
+ }
47
+ }
48
+ if ((stage.type === "L2_TIMELOCK" || stage.type === "L1_TIMELOCK") &&
49
+ stage.data) {
50
+ const data = stage.data;
51
+ if (data.state)
52
+ return data.state;
53
+ }
54
+ if (stage.type === "L2_TO_L1_MESSAGE" && stage.data) {
55
+ const data = stage.data;
56
+ if (data.messageCount) {
57
+ const status = data.status ?? "pending";
58
+ return `${data.messageCount} msg${data.messageCount > 1 ? "s" : ""} (${status})`;
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+ function StageRow({ stage, index, isSelected }) {
64
+ const title = (0, stage_metadata_js_1.formatStageTitle)(stage.type);
65
+ const timing = formatTiming(stage);
66
+ const extra = getStageExtra(stage);
67
+ return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, null,
68
+ ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: isSelected ? "cyan" : undefined },
69
+ isSelected ? ">" : " ",
70
+ " ",
71
+ index + 1,
72
+ ".",
73
+ " "),
74
+ ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: isSelected ? "cyan" : undefined }, title.padEnd(18)),
75
+ ink_wrapper_js_1.React.createElement(StatusBadge_js_1.StatusBadge, { status: stage.status, padded: true }),
76
+ ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, stage.chain.padEnd(10)),
77
+ ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, (timing ?? "").padEnd(12)),
78
+ extra && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
79
+ "[",
80
+ extra,
81
+ "]")));
82
+ }
83
+ //# sourceMappingURL=StageRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StageRow.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/StageRow.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAkFH,4BAiBC;AAjGD,sDAAqD;AAErD,wEAAoE;AACpE,qDAA+C;AAQ/C,SAAS,YAAY,CAAC,KAAmB;IACvC,IAAI,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;QAE3C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACpC,OAAO,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC;YACpC,CAAC;YACD,OAAO,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAmB;IACxC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,IAKlB,CAAC;QACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAwD,CAAC;QAC5E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YACzC,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,WAAW,UAAU,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;QAC9D,KAAK,CAAC,IAAI,EACV,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAA0B,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAkD,CAAC;QACtE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,GAAG,CAAC;QACnF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAiB;IAClE,MAAM,KAAK,GAAG,IAAA,oCAAgB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,CACL,qCAAC,oBAAG;QACF,qCAAC,qBAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACzC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;;YAAG,KAAK,GAAG,CAAC;;YAAG,GAAG,CACpC;QACP,qCAAC,qBAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ;QACvE,qCAAC,4BAAW,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,SAAG;QAC5C,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,IAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ;QAClD,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,IAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAQ;QACpD,KAAK,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;;YAAG,KAAK;gBAAS,CACzC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Status badge component for displaying stage/proposal status
3
+ */
4
+ import type { StageStatus } from "../../../types/index.js";
5
+ interface StatusBadgeProps {
6
+ status: StageStatus | "active" | "complete" | "failed";
7
+ compact?: boolean;
8
+ padded?: boolean;
9
+ }
10
+ export declare function StatusBadge({ status, compact, padded }: StatusBadgeProps): React.ReactElement;
11
+ export {};
12
+ //# sourceMappingURL=StatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,UAAU,gBAAgB;IACxB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAcD,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAe,EAAE,MAAc,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAa7G"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * Status badge component for displaying stage/proposal status
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StatusBadge = StatusBadge;
7
+ const ink_wrapper_js_1 = require("../ink-wrapper.js");
8
+ const STATUS_CONFIG = {
9
+ NOT_STARTED: { icon: "·", color: "gray", label: "Not Started" },
10
+ PENDING: { icon: "◐", color: "yellow", label: "Pending" },
11
+ READY: { icon: "▶", color: "green", label: "Ready" },
12
+ COMPLETED: { icon: "✓", color: "green", label: "Complete" },
13
+ FAILED: { icon: "✗", color: "red", label: "Failed" },
14
+ SKIPPED: { icon: "○", color: "gray", label: "Skipped" },
15
+ active: { icon: "●", color: "yellow", label: "Active" },
16
+ complete: { icon: "✓", color: "green", label: "Complete" },
17
+ failed: { icon: "✗", color: "red", label: "Failed" },
18
+ };
19
+ function StatusBadge({ status, compact = false, padded = false }) {
20
+ const config = STATUS_CONFIG[status] ?? STATUS_CONFIG.NOT_STARTED;
21
+ if (compact) {
22
+ return ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: config.color }, config.icon);
23
+ }
24
+ const text = `${config.icon} ${config.label}`;
25
+ return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: config.color }, padded ? text.padEnd(14) : text));
26
+ }
27
+ //# sourceMappingURL=StatusBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBadge.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAuBH,kCAaC;AAlCD,sDAAgD;AAShD,MAAM,aAAa,GAAmE;IACpF,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;IAC/D,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;IACzD,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACpD,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpD,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;IACvD,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;IAC1D,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;CACrD,CAAC;AAEF,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAoB;IACvF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;IAElE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,qCAAC,qBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAG,MAAM,CAAC,IAAI,CAAQ,CAAC;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAC9C,OAAO,CACL,qCAAC,qBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IACtB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3B,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Shared view layout component
3
+ */
4
+ import type { ViewType, FilterType } from "../types.js";
5
+ interface ViewLayoutProps {
6
+ view: ViewType;
7
+ filter?: FilterType;
8
+ title?: string;
9
+ hasProviders?: boolean;
10
+ isTracking?: boolean;
11
+ loading?: boolean;
12
+ loadingText?: string;
13
+ error?: string | null;
14
+ children: React.ReactNode;
15
+ }
16
+ export declare function ViewLayout({ view, filter, title, hasProviders, isTracking, loading, loadingText, error, children, }: ViewLayoutProps): React.ReactElement;
17
+ export {};
18
+ //# sourceMappingURL=ViewLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewLayout.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/ViewLayout.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIxD,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,MAAc,EACd,KAAK,EACL,YAAoB,EACpB,UAAkB,EAClB,OAAe,EACf,WAA0B,EAC1B,KAAY,EACZ,QAAQ,GACT,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAqBtC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * Shared view layout component
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ViewLayout = ViewLayout;
7
+ const ink_wrapper_js_1 = require("../ink-wrapper.js");
8
+ const Header_js_1 = require("./Header.js");
9
+ const KeyHelp_js_1 = require("./KeyHelp.js");
10
+ function ViewLayout({ view, filter = "all", title, hasProviders = false, isTracking = false, loading = false, loadingText = "Loading...", error = null, children, }) {
11
+ return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", height: "100%" },
12
+ ink_wrapper_js_1.React.createElement(Header_js_1.Header, { view: view, filter: filter, stats: null, hasProviders: hasProviders, isTracking: isTracking, title: title }),
13
+ ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column", paddingX: 1, flexGrow: 1 },
14
+ loading && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" }, loadingText),
15
+ error && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "red" },
16
+ "Error: ",
17
+ error),
18
+ !loading && !error && children),
19
+ ink_wrapper_js_1.React.createElement(KeyHelp_js_1.KeyHelp, { view: view, hasProviders: hasProviders })));
20
+ }
21
+ //# sourceMappingURL=ViewLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewLayout.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/ViewLayout.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AAmBH,gCA+BC;AAhDD,sDAAqD;AAErD,2CAAqC;AACrC,6CAAuC;AAcvC,SAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,MAAM,GAAG,KAAK,EACd,KAAK,EACL,YAAY,GAAG,KAAK,EACpB,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,YAAY,EAC1B,KAAK,GAAG,IAAI,EACZ,QAAQ,GACQ;IAChB,OAAO,CACL,qCAAC,oBAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM;QACvC,qCAAC,kBAAM,IACL,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,EACX,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,GACZ;QAEF,qCAAC,oBAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,WAAW,CAAQ;YACpD,KAAK,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,KAAK;;gBAAS,KAAK,CAAQ;YAChD,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,CAC3B;QAEN,qCAAC,oBAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,GAAI,CAC/C,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { useCache } from "./useCache.js";
2
+ export type { UseCacheResult } from "./useCache.js";
3
+ export { useProposals } from "./useProposals.js";
4
+ export { useNavigation } from "./useNavigation.js";
5
+ export type { UseNavigationResult } from "./useNavigation.js";
6
+ export { useTracker } from "./useTracker.js";
7
+ export type { UseTrackerResult, UseTrackerOptions } from "./useTracker.js";
8
+ export { useStageCalldata } from "./useStageCalldata.js";
9
+ export type { UseStageCalldataResult, DecodedAction } from "./useStageCalldata.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useStageCalldata = exports.useTracker = exports.useNavigation = exports.useProposals = exports.useCache = void 0;
4
+ var useCache_js_1 = require("./useCache.js");
5
+ Object.defineProperty(exports, "useCache", { enumerable: true, get: function () { return useCache_js_1.useCache; } });
6
+ var useProposals_js_1 = require("./useProposals.js");
7
+ Object.defineProperty(exports, "useProposals", { enumerable: true, get: function () { return useProposals_js_1.useProposals; } });
8
+ var useNavigation_js_1 = require("./useNavigation.js");
9
+ Object.defineProperty(exports, "useNavigation", { enumerable: true, get: function () { return useNavigation_js_1.useNavigation; } });
10
+ var useTracker_js_1 = require("./useTracker.js");
11
+ Object.defineProperty(exports, "useTracker", { enumerable: true, get: function () { return useTracker_js_1.useTracker; } });
12
+ var useStageCalldata_js_1 = require("./useStageCalldata.js");
13
+ Object.defineProperty(exports, "useStageCalldata", { enumerable: true, get: function () { return useStageCalldata_js_1.useStageCalldata; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/index.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAGtB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cache loading hook for TUI
3
+ */
4
+ import type { CacheData } from "../types.js";
5
+ export interface UseCacheResult {
6
+ data: CacheData | null;
7
+ loading: boolean;
8
+ error: string | null;
9
+ reload: () => Promise<void>;
10
+ }
11
+ export declare function useCache(cachePath?: string): UseCacheResult;
12
+ //# sourceMappingURL=useCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCache.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+C7C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,wBAAgB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CA+B3D"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * Cache loading hook for TUI
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useCache = useCache;
7
+ const react_1 = require("react");
8
+ const cache_js_1 = require("../../../tracker/cache.js");
9
+ function computeStats(checkpoints) {
10
+ const stats = {
11
+ total: 0,
12
+ proposals: { total: 0, complete: 0, active: 0, errored: 0 },
13
+ timelocks: { total: 0, complete: 0, active: 0, errored: 0 },
14
+ elections: { total: 0, complete: 0 },
15
+ };
16
+ for (const [, checkpoint] of checkpoints) {
17
+ if (checkpoint.input.type === "discovery")
18
+ continue;
19
+ stats.total++;
20
+ const stages = checkpoint.cachedData.completedStages ?? [];
21
+ const isComplete = stages.length === 7 && stages.every((s) => s.status === "COMPLETED");
22
+ const hasError = (checkpoint.metadata?.errorCount ?? 0) >= 5;
23
+ const isElection = stages.some((s) => {
24
+ if (s.type === "PROPOSAL_CREATED" && s.data) {
25
+ const data = s.data;
26
+ return data.proposalType === "ELECTION_NOMINEE" || data.proposalType === "ELECTION_MEMBER";
27
+ }
28
+ return false;
29
+ });
30
+ if (checkpoint.input.type === "governor") {
31
+ if (isElection) {
32
+ stats.elections.total++;
33
+ if (isComplete)
34
+ stats.elections.complete++;
35
+ }
36
+ else {
37
+ stats.proposals.total++;
38
+ if (isComplete)
39
+ stats.proposals.complete++;
40
+ else if (hasError)
41
+ stats.proposals.errored++;
42
+ else
43
+ stats.proposals.active++;
44
+ }
45
+ }
46
+ else if (checkpoint.input.type === "timelock") {
47
+ stats.timelocks.total++;
48
+ if (isComplete)
49
+ stats.timelocks.complete++;
50
+ else if (hasError)
51
+ stats.timelocks.errored++;
52
+ else
53
+ stats.timelocks.active++;
54
+ }
55
+ }
56
+ return stats;
57
+ }
58
+ function useCache(cachePath) {
59
+ const [data, setData] = (0, react_1.useState)(null);
60
+ const [loading, setLoading] = (0, react_1.useState)(true);
61
+ const [error, setError] = (0, react_1.useState)(null);
62
+ const loadCache = async () => {
63
+ setLoading(true);
64
+ setError(null);
65
+ try {
66
+ const path = cachePath ?? (0, cache_js_1.getBundledCachePath)();
67
+ if (!path) {
68
+ throw new Error("No cache path available. Use --cache or ensure bundled cache exists.");
69
+ }
70
+ const { checkpoints } = await (0, cache_js_1.readCacheStatus)(path);
71
+ const stats = computeStats(checkpoints);
72
+ setData({ checkpoints, stats });
73
+ }
74
+ catch (err) {
75
+ setError(err instanceof Error ? err.message : String(err));
76
+ }
77
+ finally {
78
+ setLoading(false);
79
+ }
80
+ };
81
+ (0, react_1.useEffect)(() => {
82
+ loadCache();
83
+ }, [cachePath]);
84
+ return { data, loading, error, reload: loadCache };
85
+ }
86
+ //# sourceMappingURL=useCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCache.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Navigation state management hook
3
+ */
4
+ import type { NavigationState, ProposalListItem, FilterType } from "../types.js";
5
+ export interface UseNavigationResult {
6
+ state: NavigationState;
7
+ setFilter: (filter: FilterType) => void;
8
+ cycleFilter: () => void;
9
+ selectItem: (index: number) => void;
10
+ moveUp: () => void;
11
+ moveDown: (maxIndex: number) => void;
12
+ pageUp: (maxIndex: number) => void;
13
+ pageDown: (maxIndex: number) => void;
14
+ goToTop: () => void;
15
+ goToBottom: (maxIndex: number) => void;
16
+ enter: (items: ProposalListItem[]) => void;
17
+ back: () => void;
18
+ goToCalldata: () => void;
19
+ goToStage: (index: number) => void;
20
+ goToSimulation: () => void;
21
+ goToDescription: () => void;
22
+ goToElection: () => void;
23
+ nextAction: (maxIndex: number) => void;
24
+ prevAction: () => void;
25
+ setScrollOffset: (offset: number) => void;
26
+ reset: () => void;
27
+ startSearch: () => void;
28
+ cancelSearch: () => void;
29
+ setSearchQuery: (query: string) => void;
30
+ appendSearchChar: (char: string) => void;
31
+ deleteSearchChar: () => void;
32
+ }
33
+ export declare function useNavigation(): UseNavigationResult;
34
+ //# sourceMappingURL=useNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useNavigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAY,MAAM,aAAa,CAAC;AAc3F,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IAC3C,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAMD,wBAAgB,aAAa,IAAI,mBAAmB,CA2NnD"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ /**
3
+ * Navigation state management hook
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useNavigation = useNavigation;
7
+ const react_1 = require("react");
8
+ const INITIAL_STATE = {
9
+ view: "list",
10
+ filter: "all",
11
+ selectedIndex: 0,
12
+ selectedProposal: null,
13
+ selectedStageIndex: 0,
14
+ calldataActionIndex: 0,
15
+ scrollOffset: 0,
16
+ searchQuery: "",
17
+ isSearching: false,
18
+ };
19
+ const FILTER_ORDER = ["all", "active", "complete", "timelocks"];
20
+ const PAGE_SIZE = 10;
21
+ const SCROLLABLE_VIEWS = ["calldata", "stage", "description"];
22
+ function useNavigation() {
23
+ const [state, setState] = (0, react_1.useState)(INITIAL_STATE);
24
+ const setFilter = (0, react_1.useCallback)((filter) => {
25
+ setState((prev) => ({ ...prev, filter, selectedIndex: 0, scrollOffset: 0 }));
26
+ }, []);
27
+ const cycleFilter = (0, react_1.useCallback)(() => {
28
+ setState((prev) => {
29
+ const nextIndex = (FILTER_ORDER.indexOf(prev.filter) + 1) % FILTER_ORDER.length;
30
+ return { ...prev, filter: FILTER_ORDER[nextIndex], selectedIndex: 0, scrollOffset: 0 };
31
+ });
32
+ }, []);
33
+ const selectItem = (0, react_1.useCallback)((index) => {
34
+ setState((prev) => ({ ...prev, selectedIndex: index }));
35
+ }, []);
36
+ const moveUp = (0, react_1.useCallback)(() => {
37
+ setState((prev) => {
38
+ if (prev.view === "list") {
39
+ return { ...prev, selectedIndex: Math.max(0, prev.selectedIndex - 1) };
40
+ }
41
+ if (prev.view === "detail") {
42
+ return { ...prev, selectedStageIndex: Math.max(0, prev.selectedStageIndex - 1) };
43
+ }
44
+ if (SCROLLABLE_VIEWS.includes(prev.view)) {
45
+ return { ...prev, scrollOffset: Math.max(0, prev.scrollOffset - 1) };
46
+ }
47
+ return prev;
48
+ });
49
+ }, []);
50
+ const moveDown = (0, react_1.useCallback)((maxIndex) => {
51
+ setState((prev) => {
52
+ if (prev.view === "list") {
53
+ return { ...prev, selectedIndex: Math.min(maxIndex - 1, prev.selectedIndex + 1) };
54
+ }
55
+ if (prev.view === "detail") {
56
+ return { ...prev, selectedStageIndex: Math.min(6, prev.selectedStageIndex + 1) };
57
+ }
58
+ if (SCROLLABLE_VIEWS.includes(prev.view)) {
59
+ return { ...prev, scrollOffset: prev.scrollOffset + 1 };
60
+ }
61
+ return prev;
62
+ });
63
+ }, []);
64
+ const pageUp = (0, react_1.useCallback)((_maxIndex) => {
65
+ setState((prev) => {
66
+ if (prev.view === "list") {
67
+ return { ...prev, selectedIndex: Math.max(0, prev.selectedIndex - PAGE_SIZE) };
68
+ }
69
+ if (SCROLLABLE_VIEWS.includes(prev.view)) {
70
+ return { ...prev, scrollOffset: Math.max(0, prev.scrollOffset - PAGE_SIZE) };
71
+ }
72
+ return prev;
73
+ });
74
+ }, []);
75
+ const pageDown = (0, react_1.useCallback)((maxIndex) => {
76
+ setState((prev) => {
77
+ if (prev.view === "list") {
78
+ return { ...prev, selectedIndex: Math.min(maxIndex - 1, prev.selectedIndex + PAGE_SIZE) };
79
+ }
80
+ if (SCROLLABLE_VIEWS.includes(prev.view)) {
81
+ return { ...prev, scrollOffset: prev.scrollOffset + PAGE_SIZE };
82
+ }
83
+ return prev;
84
+ });
85
+ }, []);
86
+ const goToTop = (0, react_1.useCallback)(() => {
87
+ setState((prev) => {
88
+ if (prev.view === "list") {
89
+ return { ...prev, selectedIndex: 0 };
90
+ }
91
+ if (prev.view === "detail") {
92
+ return { ...prev, selectedStageIndex: 0 };
93
+ }
94
+ if (SCROLLABLE_VIEWS.includes(prev.view)) {
95
+ return { ...prev, scrollOffset: 0 };
96
+ }
97
+ return prev;
98
+ });
99
+ }, []);
100
+ const goToBottom = (0, react_1.useCallback)((maxIndex) => {
101
+ setState((prev) => {
102
+ if (prev.view === "list") {
103
+ return { ...prev, selectedIndex: Math.max(0, maxIndex - 1) };
104
+ }
105
+ if (prev.view === "detail") {
106
+ return { ...prev, selectedStageIndex: 6 };
107
+ }
108
+ if (SCROLLABLE_VIEWS.includes(prev.view)) {
109
+ return { ...prev, scrollOffset: Math.max(0, maxIndex - 1) };
110
+ }
111
+ return prev;
112
+ });
113
+ }, []);
114
+ const enter = (0, react_1.useCallback)((items) => {
115
+ setState((prev) => {
116
+ if (prev.view === "list" && items[prev.selectedIndex]) {
117
+ return {
118
+ ...prev,
119
+ view: "detail",
120
+ selectedProposal: items[prev.selectedIndex],
121
+ selectedStageIndex: 0,
122
+ };
123
+ }
124
+ if (prev.view === "detail") {
125
+ return { ...prev, view: "stage", scrollOffset: 0 };
126
+ }
127
+ return prev;
128
+ });
129
+ }, []);
130
+ const back = (0, react_1.useCallback)(() => {
131
+ setState((prev) => {
132
+ if (prev.view === "detail" || prev.view === "election") {
133
+ return { ...prev, view: "list", selectedProposal: null, selectedStageIndex: 0 };
134
+ }
135
+ if (SCROLLABLE_VIEWS.includes(prev.view) || prev.view === "simulation") {
136
+ return { ...prev, view: "detail", scrollOffset: 0, calldataActionIndex: 0 };
137
+ }
138
+ return prev;
139
+ });
140
+ }, []);
141
+ const goToSubView = (0, react_1.useCallback)((targetView) => {
142
+ setState((prev) => {
143
+ if (prev.view !== "detail" && prev.view !== "list")
144
+ return prev;
145
+ return { ...prev, view: targetView, scrollOffset: 0, calldataActionIndex: 0 };
146
+ });
147
+ }, []);
148
+ const goToCalldata = (0, react_1.useCallback)(() => goToSubView("calldata"), [goToSubView]);
149
+ const goToSimulation = (0, react_1.useCallback)(() => goToSubView("simulation"), [goToSubView]);
150
+ const goToDescription = (0, react_1.useCallback)(() => goToSubView("description"), [goToSubView]);
151
+ const goToElection = (0, react_1.useCallback)(() => goToSubView("election"), [goToSubView]);
152
+ const goToStage = (0, react_1.useCallback)((index) => {
153
+ setState((prev) => ({ ...prev, view: "stage", selectedStageIndex: index, scrollOffset: 0 }));
154
+ }, []);
155
+ const nextAction = (0, react_1.useCallback)((maxIndex) => {
156
+ setState((prev) => ({
157
+ ...prev,
158
+ calldataActionIndex: Math.min(maxIndex - 1, prev.calldataActionIndex + 1),
159
+ }));
160
+ }, []);
161
+ const prevAction = (0, react_1.useCallback)(() => {
162
+ setState((prev) => ({
163
+ ...prev,
164
+ calldataActionIndex: Math.max(0, prev.calldataActionIndex - 1),
165
+ }));
166
+ }, []);
167
+ const setScrollOffset = (0, react_1.useCallback)((offset) => {
168
+ setState((prev) => ({ ...prev, scrollOffset: offset }));
169
+ }, []);
170
+ const reset = (0, react_1.useCallback)(() => setState(INITIAL_STATE), []);
171
+ const startSearch = (0, react_1.useCallback)(() => {
172
+ setState((prev) => ({ ...prev, isSearching: true, searchQuery: "" }));
173
+ }, []);
174
+ const cancelSearch = (0, react_1.useCallback)(() => {
175
+ setState((prev) => ({ ...prev, isSearching: false, searchQuery: "" }));
176
+ }, []);
177
+ const setSearchQuery = (0, react_1.useCallback)((query) => {
178
+ setState((prev) => ({ ...prev, searchQuery: query, selectedIndex: 0 }));
179
+ }, []);
180
+ const appendSearchChar = (0, react_1.useCallback)((char) => {
181
+ setState((prev) => ({ ...prev, searchQuery: prev.searchQuery + char, selectedIndex: 0 }));
182
+ }, []);
183
+ const deleteSearchChar = (0, react_1.useCallback)(() => {
184
+ setState((prev) => ({
185
+ ...prev,
186
+ searchQuery: prev.searchQuery.slice(0, -1),
187
+ selectedIndex: 0,
188
+ }));
189
+ }, []);
190
+ return {
191
+ state,
192
+ setFilter,
193
+ cycleFilter,
194
+ selectItem,
195
+ moveUp,
196
+ moveDown,
197
+ pageUp,
198
+ pageDown,
199
+ goToTop,
200
+ goToBottom,
201
+ enter,
202
+ back,
203
+ goToCalldata,
204
+ goToStage,
205
+ goToSimulation,
206
+ goToDescription,
207
+ goToElection,
208
+ nextAction,
209
+ prevAction,
210
+ setScrollOffset,
211
+ reset,
212
+ startSearch,
213
+ cancelSearch,
214
+ setSearchQuery,
215
+ appendSearchChar,
216
+ deleteSearchChar,
217
+ };
218
+ }
219
+ //# sourceMappingURL=useNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNavigation.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useNavigation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Transform cache checkpoints into displayable proposal list
3
+ */
4
+ import type { ProposalListItem, FilterType, CacheData } from "../types.js";
5
+ export declare function useProposals(data: CacheData | null, filter: FilterType, searchQuery?: string): {
6
+ items: ProposalListItem[];
7
+ filteredCount: number;
8
+ totalCount: number;
9
+ };
10
+ //# sourceMappingURL=useProposals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProposals.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useProposals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoI3E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,MAAM,EAAE,UAAU,EAClB,WAAW,SAAK,GACf;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CA6C1E"}