@cardano-slips/flow 0.2.0 → 0.3.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.
- package/README.md +53 -9
- package/dist/address.d.ts +12 -0
- package/dist/address.d.ts.map +1 -1
- package/dist/address.js +43 -0
- package/dist/address.js.map +1 -1
- package/dist/card.css +492 -0
- package/dist/card.d.ts +41 -0
- package/dist/card.d.ts.map +1 -0
- package/dist/card.js +69 -0
- package/dist/card.js.map +1 -0
- package/dist/complete-error.d.ts +8 -1
- package/dist/complete-error.d.ts.map +1 -1
- package/dist/complete-error.js +6 -1
- package/dist/complete-error.js.map +1 -1
- package/dist/complete.d.ts +29 -10
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +83 -9
- package/dist/complete.js.map +1 -1
- package/dist/derived.d.ts +8 -0
- package/dist/derived.d.ts.map +1 -0
- package/dist/derived.js +2 -0
- package/dist/derived.js.map +1 -0
- package/dist/effects-panel.d.ts +37 -0
- package/dist/effects-panel.d.ts.map +1 -0
- package/dist/effects-panel.js +64 -0
- package/dist/effects-panel.js.map +1 -0
- package/dist/effects.css +629 -0
- package/dist/exchange.d.ts +54 -0
- package/dist/exchange.d.ts.map +1 -0
- package/dist/exchange.js +136 -0
- package/dist/exchange.js.map +1 -0
- package/dist/explain.d.ts +39 -0
- package/dist/explain.d.ts.map +1 -0
- package/dist/explain.js +172 -0
- package/dist/explain.js.map +1 -0
- package/dist/index.d.ts +19 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +74 -0
- package/dist/ledger.d.ts.map +1 -0
- package/dist/ledger.js +402 -0
- package/dist/ledger.js.map +1 -0
- package/dist/outcome-panel.d.ts +63 -0
- package/dist/outcome-panel.d.ts.map +1 -0
- package/dist/outcome-panel.js +40 -0
- package/dist/outcome-panel.js.map +1 -0
- package/dist/parameter-form.d.ts +26 -0
- package/dist/parameter-form.d.ts.map +1 -0
- package/dist/parameter-form.js +42 -0
- package/dist/parameter-form.js.map +1 -0
- package/dist/slip-card.d.ts +55 -0
- package/dist/slip-card.d.ts.map +1 -0
- package/dist/slip-card.js +89 -0
- package/dist/slip-card.js.map +1 -0
- package/dist/tokens.css +57 -32
- package/package.json +11 -7
- package/src/address.ts +53 -0
- package/src/card.css +492 -0
- package/src/card.ts +86 -0
- package/src/complete-error.ts +14 -2
- package/src/complete.ts +128 -19
- package/src/derived.ts +8 -0
- package/src/effects-panel.tsx +386 -0
- package/src/effects.css +629 -0
- package/src/exchange.ts +212 -0
- package/src/explain.ts +211 -0
- package/src/index.ts +39 -3
- package/src/ledger.ts +503 -0
- package/src/outcome-panel.tsx +263 -0
- package/src/parameter-form.tsx +138 -0
- package/src/slip-card.tsx +244 -0
- package/src/tokens.css +57 -32
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useId, useState } from "react";
|
|
4
|
+
import { formatCountdown, secondsLeft } from "./explain.js";
|
|
5
|
+
import { blockedLine, evidenceOf, groupsOf, headlineOf, isCollapsed, isGrouped, ledgerOf, matchLine, rawLines } from "./ledger.js";
|
|
6
|
+
/** Under this, the countdown leaves the meta row and takes the headline's place (state f). */
|
|
7
|
+
const expiringUnder = 60;
|
|
8
|
+
const groupNames = {
|
|
9
|
+
arriving: "Arriving",
|
|
10
|
+
leaving: "Leaving",
|
|
11
|
+
unmoved: "No value moved"
|
|
12
|
+
};
|
|
13
|
+
const markWords = { "not-in-the-link": "Not in the link", "not-as-the-link-says": "Not as the link says" };
|
|
14
|
+
const chipWords = { refundable: "Refundable", "as-stated": "As stated" };
|
|
15
|
+
const useNow = (clock) => {
|
|
16
|
+
const [now, setNow] = useState(clock);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const timer = setInterval(() => setNow(clock()), 1000);
|
|
19
|
+
return () => clearInterval(timer);
|
|
20
|
+
}, [clock]);
|
|
21
|
+
return now;
|
|
22
|
+
};
|
|
23
|
+
const LedgerRow = ({ row }) => (_jsxs("div", { className: "slip-panel__row", "data-mark": row.mark, children: [_jsxs("div", { className: "slip-panel__row-name", children: [_jsxs("div", { className: "slip-panel__row-label", children: [_jsx("span", { className: "slip-panel__label", children: row.label }), row.chip === undefined ? undefined : (_jsx("span", { className: "slip-panel__chip", "data-chip": row.chip, children: chipWords[row.chip] })), row.mark === undefined ? undefined : (_jsx("span", { className: "slip-panel__chip", "data-chip": "mark", children: markWords[row.mark] }))] }), row.detail === undefined ? undefined : _jsx("span", { className: "slip-panel__detail", children: row.detail })] }), _jsxs("div", { className: "slip-panel__amounts", children: [row.identifier === undefined ? undefined : _jsx("span", { className: "slip-panel__identifier", children: row.identifier }), row.amounts.map((amount, index) => (_jsx("span", { className: "slip-panel__amount", "data-tone": amount.tone, children: amount.text }, index)))] }), row.note === undefined ? undefined : _jsx("p", { className: "slip-panel__note", children: row.note })] }));
|
|
24
|
+
const Rows = ({ rows }) => (_jsx("div", { className: "slip-panel__ledger", children: rows.map((row) => (_jsx(LedgerRow, { row: row }, row.key))) }));
|
|
25
|
+
/**
|
|
26
|
+
* Past eight rows each group folds to its header and a count. A group holding
|
|
27
|
+
* a marked row never starts folded: the one thing the block points at is not
|
|
28
|
+
* something a person should have to open.
|
|
29
|
+
*/
|
|
30
|
+
export const Ledger = ({ rows }) => {
|
|
31
|
+
if (!isGrouped(rows))
|
|
32
|
+
return _jsx(Rows, { rows: rows });
|
|
33
|
+
const collapsed = isCollapsed(rows);
|
|
34
|
+
return (_jsx("div", { className: "slip-panel__groups", children: groupsOf(rows).map(({ group, rows: inGroup }) => collapsed ? (_jsxs("details", { className: "slip-panel__group", open: inGroup.some((row) => row.mark !== undefined) || undefined, children: [_jsxs("summary", { className: "slip-panel__group-name", children: [groupNames[group], " \u00B7 ", inGroup.length] }), _jsx(Rows, { rows: inGroup })] }, group)) : (_jsxs("div", { className: "slip-panel__group", children: [_jsx("p", { className: "slip-panel__group-name", children: groupNames[group] }), _jsx(Rows, { rows: inGroup })] }, group))) }));
|
|
35
|
+
};
|
|
36
|
+
const Raw = ({ derived }) => (_jsx("pre", { className: "slip-panel__raw-lines", children: rawLines(derived).join("\n") }));
|
|
37
|
+
const Countdown = ({ seconds }) => (_jsx("span", { suppressHydrationWarning: true, children: formatCountdown(seconds) }));
|
|
38
|
+
const Blocked = ({ claim, description, derived, reasons, onCancel, onReport }) => {
|
|
39
|
+
const [rawOpen, setRawOpen] = useState(false);
|
|
40
|
+
const title = useId();
|
|
41
|
+
const rows = ledgerOf(derived, reasons);
|
|
42
|
+
return (_jsxs("section", { className: "slip-root slip-panel", "data-blocked": "", "aria-labelledby": title, children: [_jsxs("div", { className: "slip-panel__claim", role: "alert", children: [_jsx("p", { className: "slip-panel__kicker", "data-tone": "bad", children: "Signing blocked" }), _jsx("h2", { className: "slip-panel__title", id: title, children: "This transaction doesn't do what the link says" }), _jsx("p", { className: "slip-panel__lead", children: blockedLine(reasons) })] }), _jsxs("div", { className: "slip-panel__compare", children: [_jsxs("div", { className: "slip-panel__side", children: [_jsx("p", { className: "slip-panel__kicker", children: "The link claims" }), _jsx("p", { className: "slip-panel__claimed", children: claim }), description === undefined ? undefined : _jsx("p", { className: "slip-panel__note", children: description })] }), _jsxs("div", { className: "slip-panel__side", "data-tone": "bad", children: [_jsx("p", { className: "slip-panel__kicker", "data-tone": "bad", children: "The transaction does" }), reasons.map((reason, index) => {
|
|
43
|
+
const { figure, lines } = evidenceOf(reason, derived);
|
|
44
|
+
return (_jsxs("div", { className: "slip-panel__evidence", children: [figure === undefined ? undefined : _jsx("p", { className: "slip-panel__evidence-figure", children: figure }), lines.map((line) => (_jsx("p", { className: "slip-panel__detail", children: line }, line)))] }, index));
|
|
45
|
+
})] })] }), _jsx(Ledger, { rows: rows }), rawOpen ? _jsx(Raw, { derived: derived }) : undefined, _jsxs("div", { className: "slip-panel__exits", children: [_jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "close", onClick: onCancel, children: "Close without signing" }), _jsxs("div", { className: "slip-panel__quiet", children: [_jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "quiet", "aria-expanded": rawOpen, onClick: () => setRawOpen((open) => !open), children: rawOpen ? "Hide raw transaction" : "Show raw transaction" }), onReport === undefined ? undefined : (_jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "quiet", onClick: onReport, children: "Report this link" }))] })] })] }));
|
|
46
|
+
};
|
|
47
|
+
export const EffectsPanel = ({ claim, description, origin, derived, verdict, clock = Date.now, onSign, onCancel, onRebuild, onReport }) => {
|
|
48
|
+
const now = useNow(clock);
|
|
49
|
+
const [rawOpen, setRawOpen] = useState(false);
|
|
50
|
+
const title = useId();
|
|
51
|
+
if (verdict._tag === "mismatch") {
|
|
52
|
+
return (_jsx(Blocked, { claim: claim, derived: derived, reasons: verdict.reasons, ...(description === undefined ? {} : { description }), ...(onCancel === undefined ? {} : { onCancel }), ...(onReport === undefined ? {} : { onReport }) }));
|
|
53
|
+
}
|
|
54
|
+
const rows = ledgerOf(derived);
|
|
55
|
+
const until = derived.effects.validity.validUntil;
|
|
56
|
+
const seconds = until === null ? undefined : secondsLeft(until.time, BigInt(now));
|
|
57
|
+
if (seconds === 0) {
|
|
58
|
+
return (_jsxs("section", { className: "slip-root slip-panel", "data-expired": "", "aria-labelledby": title, children: [_jsxs("div", { className: "slip-panel__claim", children: [_jsx("p", { className: "slip-panel__kicker", "data-tone": "warn", children: "Expired" }), _jsx("h2", { className: "slip-panel__title", id: title, children: "This transaction ran out of time" }), _jsx("p", { className: "slip-panel__lead", children: "Nothing was signed and nothing left your wallet. Building a new one takes a second, and the amounts will be checked again." })] }), _jsx("div", { className: "slip-panel__stale", children: _jsx(Ledger, { rows: rows }) }), _jsxs("div", { className: "slip-panel__buttons", children: [_jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "cancel", onClick: onCancel, children: "Cancel" }), _jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "primary", onClick: onRebuild, children: "Build a new transaction" })] })] }));
|
|
59
|
+
}
|
|
60
|
+
const headline = headlineOf(derived);
|
|
61
|
+
const expiring = seconds !== undefined && seconds < expiringUnder;
|
|
62
|
+
return (_jsxs("section", { className: "slip-root slip-panel", "aria-labelledby": title, children: [_jsxs("div", { className: "slip-panel__claim", children: [_jsx("p", { className: "slip-panel__kicker", children: "What you're signing" }), _jsx("h2", { className: "slip-panel__title", id: title, children: claim }), origin === undefined ? undefined : _jsx("span", { className: "slip-panel__origin", children: origin })] }), expiring ? (_jsxs("div", { className: "slip-panel__expiring", role: "timer", children: [_jsxs("div", { className: "slip-panel__expiring-head", children: [_jsx("span", { children: "This transaction expires in" }), _jsx("span", { className: "slip-panel__expiring-clock", children: _jsx(Countdown, { seconds: seconds }) })] }), _jsx("div", { className: "slip-panel__bar", "aria-hidden": "true", children: _jsx("span", { className: "slip-panel__bar-fill", suppressHydrationWarning: true, style: { width: `${(seconds / expiringUnder) * 100}%` } }) }), _jsx("p", { className: "slip-panel__note", children: "After that the amounts could be stale, so we'll build a fresh one." })] })) : (_jsxs("div", { className: "slip-panel__headline", children: [_jsxs("div", { className: "slip-panel__figure", children: [_jsx("span", { className: "slip-panel__note", children: headline.label }), _jsx("span", { className: "slip-panel__figure-amount", "data-tone": headline.tone, children: headline.amount }), headline.fee === undefined ? undefined : _jsx("span", { className: "slip-panel__note", children: headline.fee })] }), headline.held === undefined ? undefined : (_jsxs(_Fragment, { children: [_jsx("span", { className: "slip-panel__rule", "aria-hidden": "true" }), _jsxs("div", { className: "slip-panel__figure", children: [_jsx("span", { className: "slip-panel__note", children: headline.held.label }), _jsx("span", { className: "slip-panel__figure-amount", "data-tone": headline.held.tone, children: headline.held.amount })] })] }))] })), _jsx(Ledger, { rows: rows }), expiring || seconds === undefined ? undefined : (_jsxs("div", { className: "slip-panel__expiry", children: [_jsx("span", { className: "slip-panel__note", children: "Expires in" }), _jsx("span", { className: "slip-panel__clock", children: _jsx(Countdown, { seconds: seconds }) })] })), _jsxs("p", { className: "slip-panel__verdict", children: [_jsx("span", { className: "slip-panel__tick", "aria-hidden": "true", children: "\u2713" }), _jsx("span", { children: matchLine(derived, rows) })] }), _jsxs("div", { className: "slip-panel__buttons", children: [_jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "cancel", onClick: onCancel, children: "Cancel" }), _jsx("button", { type: "button", className: "slip-panel__button", "data-kind": "primary", onClick: onSign, children: "Sign transaction" })] }), _jsxs("div", { className: "slip-panel__raw", children: [_jsxs("button", { type: "button", className: "slip-panel__raw-toggle", "aria-expanded": rawOpen, onClick: () => setRawOpen((open) => !open), children: [_jsx("span", { "aria-hidden": "true", children: rawOpen ? "▾" : "▸" }), _jsx("span", { children: "Raw transaction" })] }), rawOpen ? _jsx(Raw, { derived: derived }) : undefined] })] }));
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=effects-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effects-panel.js","sourceRoot":"","sources":["../src/effects-panel.tsx"],"names":[],"mappings":"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"}
|