@robosystems/report-components 0.1.0 → 0.1.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 (51) hide show
  1. package/dist/adapters/index.d.ts +1 -5
  2. package/dist/adapters/index.js +2 -2
  3. package/dist/adapters/index.js.map +1 -1
  4. package/dist/chunk-K67BB5QI.js +264 -0
  5. package/dist/chunk-K67BB5QI.js.map +1 -0
  6. package/dist/{model.d.ts → index-2pOwdKOv.d.ts} +60 -17
  7. package/dist/index.d.ts +118 -23
  8. package/dist/index.js +491 -23
  9. package/dist/index.js.map +1 -1
  10. package/package.json +3 -2
  11. package/dist/adapters/cypher.d.ts +0 -21
  12. package/dist/adapters/cypher.d.ts.map +0 -1
  13. package/dist/adapters/cypher.js +0 -9
  14. package/dist/adapters/cypher.js.map +0 -1
  15. package/dist/adapters/index.d.ts.map +0 -1
  16. package/dist/adapters/trig.d.ts +0 -7
  17. package/dist/adapters/trig.d.ts.map +0 -1
  18. package/dist/adapters/trig.js +0 -183
  19. package/dist/adapters/trig.js.map +0 -1
  20. package/dist/adapters/types.d.ts +0 -16
  21. package/dist/adapters/types.d.ts.map +0 -1
  22. package/dist/adapters/types.js +0 -2
  23. package/dist/adapters/types.js.map +0 -1
  24. package/dist/components/FactInspector.d.ts +0 -11
  25. package/dist/components/FactInspector.d.ts.map +0 -1
  26. package/dist/components/FactInspector.js +0 -79
  27. package/dist/components/FactInspector.js.map +0 -1
  28. package/dist/components/ReportView.d.ts +0 -9
  29. package/dist/components/ReportView.d.ts.map +0 -1
  30. package/dist/components/ReportView.js +0 -51
  31. package/dist/components/ReportView.js.map +0 -1
  32. package/dist/components/StatementTable.d.ts +0 -15
  33. package/dist/components/StatementTable.d.ts.map +0 -1
  34. package/dist/components/StatementTable.js +0 -86
  35. package/dist/components/StatementTable.js.map +0 -1
  36. package/dist/constants.d.ts +0 -71
  37. package/dist/constants.d.ts.map +0 -1
  38. package/dist/constants.js +0 -115
  39. package/dist/constants.js.map +0 -1
  40. package/dist/format.d.ts +0 -17
  41. package/dist/format.d.ts.map +0 -1
  42. package/dist/format.js +0 -34
  43. package/dist/format.js.map +0 -1
  44. package/dist/index.d.ts.map +0 -1
  45. package/dist/model.d.ts.map +0 -1
  46. package/dist/model.js +0 -15
  47. package/dist/model.js.map +0 -1
  48. package/dist/project.d.ts +0 -39
  49. package/dist/project.d.ts.map +0 -1
  50. package/dist/project.js +0 -201
  51. package/dist/project.js.map +0 -1
@@ -1,21 +0,0 @@
1
- /**
2
- * The cypher / GraphQL adapter — a live graph database (an entity graph **or**
3
- * the SEC repository) read read-only with an API key. One adapter for both:
4
- * only the endpoint / `graphId` differ.
5
- *
6
- * Phase 2 (Mode B). Stubbed for now so the seam and the `./adapters` export
7
- * surface are in place; the holon-viewer's SEC mode will drive its build-out.
8
- */
9
- import type { ReportAdapter } from './types';
10
- export interface CypherAdapterConfig {
11
- /** GraphQL / cypher endpoint base URL. */
12
- endpoint: string;
13
- /** User-supplied API key (sent client-side; never app-managed). */
14
- apiKey: string;
15
- /** Target graph — an entity graph id or the SEC repository id. */
16
- graphId: string;
17
- /** The report to materialize. */
18
- reportId: string;
19
- }
20
- export declare function cypherAdapter(config: CypherAdapterConfig): ReportAdapter;
21
- //# sourceMappingURL=cypher.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cypher.d.ts","sourceRoot":"","sources":["../../src/adapters/cypher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CASxE"}
@@ -1,9 +0,0 @@
1
- export function cypherAdapter(config) {
2
- return {
3
- source: `cypher:${config.graphId}/${config.reportId}`,
4
- load: async () => {
5
- throw new Error('The cypher adapter is not implemented yet (phase 2 / Mode B — live SEC graph).');
6
- },
7
- };
8
- }
9
- //# sourceMappingURL=cypher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cypher.js","sourceRoot":"","sources":["../../src/adapters/cypher.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,aAAa,CAAC,MAA2B;IACvD,OAAO;QACL,MAAM,EAAE,UAAU,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;QACrD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
@@ -1,7 +0,0 @@
1
- import type { NormalizedReport } from '../model';
2
- import type { ReportAdapter } from './types';
3
- /** Parse a `holon.trig` document into the normalized report model. */
4
- export declare function parseTrig(trig: string): NormalizedReport;
5
- /** A `ReportAdapter` over an in-memory `holon.trig` document. */
6
- export declare function trigFileAdapter(trig: string, source?: string): ReportAdapter;
7
- //# sourceMappingURL=trig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trig.d.ts","sourceRoot":"","sources":["../../src/adapters/trig.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAMV,gBAAgB,EAMjB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAqB5C,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA2JxD;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAe,GAAG,aAAa,CAKlF"}
@@ -1,183 +0,0 @@
1
- /**
2
- * The `holon.trig` file adapter — offline, no backend, no auth.
3
- *
4
- * Parses TriG (three named graphs: `#scene`, `#boundary`, `#projection`) with
5
- * N3.js into a quad store, then traverses the store to emit a `NormalizedReport`.
6
- * The three graphs are queried as a union (graph = `null`) — exactly the join
7
- * the DataBook converter does on the flat graph. No SPARQL engine is required;
8
- * only store traversal.
9
- */
10
- import { DataFactory, Parser, Store } from 'n3';
11
- import { IRI, humanize, qname } from '../constants';
12
- const { namedNode } = DataFactory;
13
- function makeReaders(store) {
14
- const objects = (s, p) => store.getObjects(namedNode(s), namedNode(p), null);
15
- const firstValue = (s, p) => {
16
- const os = objects(s, p);
17
- return os.length ? os[0].value : null;
18
- };
19
- const subjectsOfType = (type) => store.getSubjects(namedNode(IRI.type), namedNode(type), null).map((t) => t.value);
20
- return { objects, firstValue, subjectsOfType };
21
- }
22
- function toNumber(raw) {
23
- if (raw === null || raw === '')
24
- return null;
25
- const n = Number(raw);
26
- return Number.isNaN(n) ? null : n;
27
- }
28
- /** Parse a `holon.trig` document into the normalized report model. */
29
- export function parseTrig(trig) {
30
- const parser = new Parser({ format: 'application/trig' });
31
- const store = new Store(parser.parse(trig));
32
- const { objects, firstValue, subjectsOfType } = makeReaders(store);
33
- // ── Elements ──
34
- const elements = {};
35
- for (const id of subjectsOfType(IRI.Element)) {
36
- const balance = firstValue(id, IRI.balance);
37
- const periodType = firstValue(id, IRI.periodType);
38
- elements[id] = {
39
- id,
40
- qname: qname(id),
41
- label: firstValue(id, IRI.prefLabel) ?? humanize(id),
42
- balance: balance === 'debit' || balance === 'credit' ? balance : null,
43
- periodType: periodType === 'instant' || periodType === 'duration' ? periodType : null,
44
- abstract: firstValue(id, IRI.abstract) === 'true',
45
- monetary: firstValue(id, IRI.monetary) === 'true',
46
- };
47
- }
48
- // ── Periods ──
49
- const periods = {};
50
- for (const id of subjectsOfType(IRI.Period)) {
51
- const declared = firstValue(id, IRI.periodType);
52
- const instant = firstValue(id, IRI.instant);
53
- const startDate = firstValue(id, IRI.startDate);
54
- const endDate = firstValue(id, IRI.endDate);
55
- const type = declared === 'instant'
56
- ? 'instant'
57
- : declared === 'duration'
58
- ? 'duration'
59
- : instant
60
- ? 'instant'
61
- : 'duration';
62
- const end = (type === 'instant' ? instant : endDate) ?? instant ?? endDate ?? '';
63
- periods[id] = { id, type, instant, startDate, endDate, end };
64
- }
65
- // ── Units ──
66
- const units = {};
67
- for (const id of subjectsOfType(IRI.Unit)) {
68
- const measureTerm = objects(id, IRI.measure)[0];
69
- const measure = measureTerm ? qname(measureTerm.value) : 'unknown';
70
- units[id] = {
71
- id,
72
- measure,
73
- label: measure.includes(':') ? measure.split(':').pop() : measure,
74
- };
75
- }
76
- // ── Entity ──
77
- let entity = null;
78
- const entityIds = subjectsOfType(IRI.Entity);
79
- if (entityIds.length) {
80
- const id = entityIds[0];
81
- entity = {
82
- id,
83
- name: firstValue(id, IRI.prefLabel) ?? firstValue(id, IRI.legalName) ?? 'Entity',
84
- legalName: firstValue(id, IRI.legalName),
85
- country: firstValue(id, IRI.country),
86
- };
87
- }
88
- // ── Facts ──
89
- const facts = [];
90
- for (const id of subjectsOfType(IRI.Fact)) {
91
- facts.push({
92
- id,
93
- element: firstValue(id, IRI.element) ?? '',
94
- period: firstValue(id, IRI.period) ?? '',
95
- unit: firstValue(id, IRI.unit),
96
- entity: firstValue(id, IRI.entity),
97
- factSet: firstValue(id, IRI.factSet),
98
- value: toNumber(firstValue(id, IRI.numericValue)),
99
- decimals: firstValue(id, IRI.decimals),
100
- });
101
- }
102
- // ── Information Blocks ──
103
- const informationBlocks = [];
104
- for (const id of subjectsOfType(IRI.InformationBlock)) {
105
- informationBlocks.push({
106
- id,
107
- blockType: firstValue(id, IRI.blockType) ?? '',
108
- factSet: firstValue(id, IRI.factSet),
109
- label: firstValue(id, IRI.prefLabel),
110
- });
111
- }
112
- // ── Structures + association → structure membership ──
113
- const structures = [];
114
- const assocStructure = new Map();
115
- for (const id of subjectsOfType(IRI.Structure)) {
116
- structures.push({
117
- id,
118
- blockType: firstValue(id, IRI.blockType) ?? '',
119
- roleUri: firstValue(id, IRI.roleUri),
120
- structureName: firstValue(id, IRI.structureName),
121
- });
122
- for (const assoc of objects(id, IRI.hasAssociation)) {
123
- assocStructure.set(assoc.value, id);
124
- }
125
- }
126
- // ── Associations ──
127
- const calcAssociations = [];
128
- const presAssociations = [];
129
- for (const id of subjectsOfType(IRI.Association)) {
130
- const parent = firstValue(id, IRI.from);
131
- const child = firstValue(id, IRI.to);
132
- if (!parent || !child)
133
- continue;
134
- const type = firstValue(id, IRI.associationType);
135
- const order = toNumber(firstValue(id, IRI.order)) ?? 0;
136
- const role = firstValue(id, IRI.role);
137
- const structure = assocStructure.get(id) ?? null;
138
- if (type === 'calculation') {
139
- calcAssociations.push({
140
- parent,
141
- child,
142
- weight: toNumber(firstValue(id, IRI.weight)) ?? 1,
143
- order,
144
- role,
145
- structure,
146
- });
147
- }
148
- else if (type === 'presentation') {
149
- presAssociations.push({ parent, child, order, role, structure });
150
- }
151
- }
152
- // ── Report IRI / id (from the named-graph names) ──
153
- let reportIri = null;
154
- for (const graph of store.getGraphs(null, null, null)) {
155
- const hash = graph.value.indexOf('#');
156
- if (hash > 0) {
157
- reportIri = graph.value.slice(0, hash);
158
- break;
159
- }
160
- }
161
- const reportId = reportIri ? (reportIri.split('/').pop() ?? null) : null;
162
- return {
163
- reportId,
164
- reportIri,
165
- entity,
166
- informationBlocks,
167
- structures,
168
- facts,
169
- elements,
170
- periods,
171
- units,
172
- calcAssociations,
173
- presAssociations,
174
- };
175
- }
176
- /** A `ReportAdapter` over an in-memory `holon.trig` document. */
177
- export function trigFileAdapter(trig, source = 'holon.trig') {
178
- return {
179
- source,
180
- load: async () => parseTrig(trig),
181
- };
182
- }
183
- //# sourceMappingURL=trig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trig.js","sourceRoot":"","sources":["../../src/adapters/trig.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * The adapter seam. An adapter turns one source into a `NormalizedReport`; the
3
- * projection + components do the rest, identically for every source.
4
- *
5
- * The package ships two read-only reference adapters — `trig` (offline file via
6
- * N3.js) and `cypher` (a live graph database). A consuming app with operational
7
- * needs (a live ledger it also edits) supplies its own adapter in-app.
8
- */
9
- import type { NormalizedReport } from '../model';
10
- export interface ReportAdapter {
11
- /** A short, human-readable description of the source (for the UI). */
12
- readonly source: string;
13
- /** Produce the normalized report model. */
14
- load(): Promise<NormalizedReport>;
15
- }
16
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,2CAA2C;IAC3C,IAAI,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAClC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import type { NormalizedReport, Statement, StatementRow } from '../model';
2
- export interface FactInspectorProps {
3
- report: NormalizedReport;
4
- statement: Statement;
5
- row: StatementRow;
6
- columnIndex: number;
7
- onClose?: () => void;
8
- currencySymbol?: string;
9
- }
10
- export declare function FactInspector({ report, statement, row, columnIndex, onClose, currencySymbol, }: FactInspectorProps): import("react").JSX.Element;
11
- //# sourceMappingURL=FactInspector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FactInspector.d.ts","sourceRoot":"","sources":["../../src/components/FactInspector.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,gBAAgB,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,YAAY,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAsED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,GAAG,EACH,WAAW,EACX,OAAO,EACP,cAAoB,GACrB,EAAE,kBAAkB,+BA+DpB"}
@@ -1,79 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { formatMoney, formatPeriod } from '../format';
3
- import { footCheck } from '../project';
4
- const styles = {
5
- panel: {
6
- fontFamily: 'var(--rs-font-sans, ui-sans-serif, system-ui, sans-serif)',
7
- color: 'var(--rs-text, #111827)',
8
- border: '1px solid var(--rs-border, #e5e7eb)',
9
- borderRadius: '12px',
10
- padding: '1rem 1.25rem',
11
- background: 'var(--rs-panel-bg, #ffffff)',
12
- boxShadow: '0 1px 3px rgba(0,0,0,0.08)',
13
- },
14
- header: {
15
- display: 'flex',
16
- justifyContent: 'space-between',
17
- alignItems: 'flex-start',
18
- gap: '1rem',
19
- marginBottom: '0.75rem',
20
- },
21
- label: { fontSize: '1rem', fontWeight: 700, margin: 0 },
22
- qname: {
23
- fontFamily: 'var(--rs-font-mono, ui-monospace, monospace)',
24
- fontSize: '0.8rem',
25
- color: 'var(--rs-primary-700, #1d4ed8)',
26
- },
27
- close: {
28
- border: 'none',
29
- background: 'transparent',
30
- fontSize: '1.25rem',
31
- lineHeight: 1,
32
- cursor: 'pointer',
33
- color: 'var(--rs-muted, #6b7280)',
34
- },
35
- grid: {
36
- display: 'grid',
37
- gridTemplateColumns: 'auto 1fr',
38
- gap: '0.35rem 1rem',
39
- fontSize: '0.85rem',
40
- margin: '0.5rem 0',
41
- },
42
- key: { color: 'var(--rs-muted, #6b7280)' },
43
- mono: { fontFamily: 'var(--rs-font-mono, ui-monospace, monospace)' },
44
- footing: {
45
- marginTop: '0.85rem',
46
- paddingTop: '0.75rem',
47
- borderTop: '1px solid var(--rs-border, #e5e7eb)',
48
- },
49
- footTitle: {
50
- fontSize: '0.75rem',
51
- textTransform: 'uppercase',
52
- letterSpacing: '0.05em',
53
- color: 'var(--rs-muted, #6b7280)',
54
- marginBottom: '0.4rem',
55
- },
56
- equation: {
57
- fontFamily: 'var(--rs-font-mono, ui-monospace, monospace)',
58
- fontSize: '0.85rem',
59
- lineHeight: 1.6,
60
- },
61
- };
62
- function Field({ k, children }) {
63
- return (_jsxs(_Fragment, { children: [_jsx("span", { style: styles.key, children: k }), _jsx("span", { children: children })] }));
64
- }
65
- export function FactInspector({ report, statement, row, columnIndex, onClose, currencySymbol = '$', }) {
66
- const { element } = row;
67
- const cell = row.cells[columnIndex];
68
- const column = statement.columns[columnIndex];
69
- const unit = cell.fact?.unit ? report.units[cell.fact.unit] : null;
70
- const foot = footCheck(report, statement, element.id, columnIndex);
71
- const sym = currencySymbol;
72
- return (_jsxs("div", { style: styles.panel, children: [_jsxs("div", { style: styles.header, children: [_jsxs("div", { children: [_jsx("p", { style: styles.label, children: element.label }), _jsx("span", { style: styles.qname, children: element.qname })] }), onClose ? (_jsx("button", { style: styles.close, onClick: onClose, "aria-label": "Close", children: "\u00D7" })) : null] }), _jsxs("div", { style: styles.grid, children: [_jsx(Field, { k: "Value", children: _jsx("span", { style: styles.mono, children: formatMoney(cell.value, { currencySymbol: sym }) }) }), _jsxs(Field, { k: "Period", children: [formatPeriod(column.period), " ", _jsxs("span", { style: styles.key, children: ["(", column.period.type, ")"] })] }), _jsx(Field, { k: "Unit", children: unit ? unit.label : '—' }), element.balance ? _jsx(Field, { k: "Balance", children: element.balance }) : null, cell.fact?.decimals ? _jsx(Field, { k: "Decimals", children: cell.fact.decimals }) : null] }), foot ? (_jsxs("div", { style: styles.footing, children: [_jsxs("div", { style: styles.footTitle, children: ["Calculation ", foot.ok ? '✓ foots' : '⚠ does not foot'] }), _jsxs("div", { style: styles.equation, children: [foot.terms.map((term, i) => {
73
- const op = i === 0 ? (term.weight < 0 ? '−' : '') : term.weight < 0 ? ' − ' : ' + ';
74
- return (_jsxs("span", { title: term.element.qname, children: [op, formatMoney(term.value === null ? 0 : Math.abs(term.value), {
75
- currencySymbol: sym,
76
- })] }, term.element.id));
77
- }), ' = ', _jsx("strong", { children: formatMoney(foot.expected, { currencySymbol: sym }) }), ' ', foot.ok ? (_jsx("span", { style: { color: 'var(--rs-success, #00875a)' }, children: "\u2713" })) : (_jsxs("span", { style: { color: 'var(--rs-error, #dc2626)' }, children: ["\u2717 (reported ", formatMoney(foot.actual, { currencySymbol: sym }), ")"] }))] })] })) : null] }));
78
- }
79
- //# sourceMappingURL=FactInspector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FactInspector.js","sourceRoot":"","sources":["../../src/components/FactInspector.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { NormalizedReport } from '../model';
2
- export interface ReportViewProps {
3
- report: NormalizedReport;
4
- currencySymbol?: string;
5
- /** Disable the click-to-inspect fact panel (render-only). */
6
- inspect?: boolean;
7
- }
8
- export declare function ReportView({ report, currencySymbol, inspect }: ReportViewProps): import("react").JSX.Element;
9
- //# sourceMappingURL=ReportView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportView.d.ts","sourceRoot":"","sources":["../../src/components/ReportView.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,UAAU,CAAA;AAK9D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAiCD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,cAAoB,EAAE,OAAc,EAAE,EAAE,eAAe,+BAmE3F"}
@@ -1,51 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo, useState } from 'react';
3
- import { buildStatements } from '../project';
4
- import { FactInspector } from './FactInspector';
5
- import { StatementTable } from './StatementTable';
6
- const styles = {
7
- layout: {
8
- display: 'grid',
9
- gridTemplateColumns: 'minmax(0, 1fr)',
10
- gap: '1.5rem',
11
- alignItems: 'start',
12
- },
13
- layoutWithPanel: {
14
- gridTemplateColumns: 'minmax(0, 1fr) 340px',
15
- },
16
- entity: {
17
- fontFamily: 'var(--rs-font-heading, var(--rs-font-sans, sans-serif))',
18
- textAlign: 'center',
19
- marginBottom: '1.5rem',
20
- },
21
- entityName: {
22
- fontSize: '1.5rem',
23
- fontWeight: 700,
24
- margin: 0,
25
- color: 'var(--rs-text, #111827)',
26
- },
27
- entitySub: { fontSize: '0.85rem', color: 'var(--rs-muted, #6b7280)' },
28
- panel: { position: 'sticky', top: '1rem' },
29
- };
30
- export function ReportView({ report, currencySymbol = '$', inspect = true }) {
31
- const statements = useMemo(() => buildStatements(report), [report]);
32
- const [selection, setSelection] = useState(null);
33
- const selected = selection !== null ? statements[selection.statementIndex] : null;
34
- const selectedRow = selected?.rows.find((r) => r.element.id === selection?.elementId) ?? null;
35
- return (_jsxs("div", { children: [report.entity ? (_jsxs("header", { style: styles.entity, children: [_jsx("h2", { style: styles.entityName, children: report.entity.name }), report.entity.country ? (_jsx("div", { style: styles.entitySub, children: report.entity.country })) : null] })) : null, _jsxs("div", { style: {
36
- ...styles.layout,
37
- ...(inspect && selectedRow ? styles.layoutWithPanel : {}),
38
- }, children: [_jsx("div", { children: statements.map((statement, statementIndex) => (_jsx(StatementTable, { statement: statement, currencySymbol: currencySymbol, selected: selection && selection.statementIndex === statementIndex
39
- ? {
40
- elementId: selection.elementId,
41
- columnIndex: selection.columnIndex,
42
- }
43
- : null, onCellClick: inspect
44
- ? (row, columnIndex) => setSelection({
45
- statementIndex,
46
- elementId: row.element.id,
47
- columnIndex,
48
- })
49
- : undefined }, statement.ib.id))) }), inspect && selected && selectedRow && selection ? (_jsx("div", { style: styles.panel, children: _jsx(FactInspector, { report: report, statement: selected, row: selectedRow, columnIndex: selection.columnIndex, currencySymbol: currencySymbol, onClose: () => setSelection(null) }) })) : null] })] }));
50
- }
51
- //# sourceMappingURL=ReportView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReportView.js","sourceRoot":"","sources":["../../src/components/ReportView.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import type { Statement, StatementRow } from '../model';
2
- export interface StatementTableProps {
3
- statement: Statement;
4
- /** Called when a value cell is clicked — drives fact inspection. */
5
- onCellClick?: (row: StatementRow, columnIndex: number) => void;
6
- /** Currency symbol for values (default `$`). */
7
- currencySymbol?: string;
8
- /** The currently-selected cell, highlighted. */
9
- selected?: {
10
- elementId: string;
11
- columnIndex: number;
12
- } | null;
13
- }
14
- export declare function StatementTable({ statement, onCellClick, currencySymbol, selected, }: StatementTableProps): import("react").JSX.Element;
15
- //# sourceMappingURL=StatementTable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatementTable.d.ts","sourceRoot":"","sources":["../../src/components/StatementTable.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gDAAgD;IAChD,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAC7D;AAmDD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,WAAW,EACX,cAAoB,EACpB,QAAe,GAChB,EAAE,mBAAmB,+BA8ErB"}
@@ -1,86 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { formatMoney, formatPeriod } from '../format';
3
- const styles = {
4
- wrap: {
5
- fontFamily: 'var(--rs-font-sans, ui-sans-serif, system-ui, sans-serif)',
6
- color: 'var(--rs-text, #111827)',
7
- marginBottom: '2.5rem',
8
- },
9
- heading: {
10
- textAlign: 'center',
11
- marginBottom: '1rem',
12
- },
13
- title: {
14
- fontFamily: 'var(--rs-font-heading, var(--rs-font-sans, sans-serif))',
15
- fontSize: '1.15rem',
16
- fontWeight: 700,
17
- letterSpacing: '0.02em',
18
- margin: 0,
19
- },
20
- subtitle: {
21
- fontSize: '0.85rem',
22
- color: 'var(--rs-muted, #6b7280)',
23
- marginTop: '0.25rem',
24
- },
25
- table: {
26
- width: '100%',
27
- borderCollapse: 'collapse',
28
- fontSize: '0.875rem',
29
- },
30
- th: {
31
- borderBottom: '2px solid var(--rs-border-strong, #9ca3af)',
32
- padding: '0.5rem 0.75rem',
33
- fontWeight: 600,
34
- color: 'var(--rs-muted, #6b7280)',
35
- fontSize: '0.8rem',
36
- },
37
- thConcept: { textAlign: 'left' },
38
- thNum: { textAlign: 'right', whiteSpace: 'nowrap' },
39
- labelCell: {
40
- padding: '0.3rem 0.75rem',
41
- whiteSpace: 'normal',
42
- },
43
- numCell: {
44
- padding: '0.3rem 0.75rem',
45
- textAlign: 'right',
46
- whiteSpace: 'nowrap',
47
- fontFamily: 'var(--rs-font-mono, ui-monospace, SFMono-Regular, monospace)',
48
- fontVariantNumeric: 'tabular-nums',
49
- },
50
- };
51
- export function StatementTable({ statement, onCellClick, currencySymbol = '$', selected = null, }) {
52
- const { columns, rows } = statement;
53
- const periodCaption = columns.length === 1 ? formatPeriod(columns[0].period) : null;
54
- return (_jsxs("section", { style: styles.wrap, children: [_jsxs("header", { style: styles.heading, children: [_jsx("h3", { style: styles.title, children: statement.title }), statement.structureName ? (_jsx("div", { style: styles.subtitle, children: statement.structureName })) : null, periodCaption ? _jsx("div", { style: styles.subtitle, children: periodCaption }) : null] }), _jsxs("table", { style: styles.table, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { style: { ...styles.th, ...styles.thConcept }, children: "Concept" }), columns.map((col) => (_jsx("th", { style: { ...styles.th, ...styles.thNum }, children: col.label }, col.key)))] }) }), _jsx("tbody", { children: rows.map((row) => {
55
- const isGrandTotal = row.isSubtotal && row.depth === 0;
56
- const allZeroOrNull = row.cells.every((c) => c.value === null || c.value === 0);
57
- const rowStyle = {
58
- backgroundColor: row.isSubtotal ? 'var(--rs-subtotal-bg, #f9fafb)' : undefined,
59
- };
60
- const labelStyle = {
61
- ...styles.labelCell,
62
- paddingLeft: `${row.depth * 20 + 12}px`,
63
- fontWeight: row.isSubtotal ? 600 : 400,
64
- color: !row.isSubtotal && allZeroOrNull ? 'var(--rs-muted, #9ca3af)' : undefined,
65
- borderBottom: isGrandTotal ? '3px double var(--rs-text, #111827)' : undefined,
66
- };
67
- return (_jsxs("tr", { style: rowStyle, children: [_jsx("td", { style: labelStyle, title: row.element.qname, children: row.element.label }), row.cells.map((cell, i) => {
68
- const isSelected = selected !== null &&
69
- selected.elementId === row.element.id &&
70
- selected.columnIndex === i;
71
- const clickable = onCellClick && cell.fact !== null;
72
- const numStyle = {
73
- ...styles.numCell,
74
- fontWeight: row.isSubtotal ? 600 : 400,
75
- borderBottom: isGrandTotal ? '3px double var(--rs-text, #111827)' : undefined,
76
- cursor: clickable ? 'pointer' : 'default',
77
- backgroundColor: isSelected ? 'var(--rs-selected-bg, #dbeafe)' : undefined,
78
- color: !row.isSubtotal && (cell.value === null || cell.value === 0)
79
- ? 'var(--rs-muted, #9ca3af)'
80
- : undefined,
81
- };
82
- return (_jsx("td", { style: numStyle, onClick: clickable ? () => onCellClick?.(row, i) : undefined, children: formatMoney(cell.value, { currencySymbol }) }, columns[i].key));
83
- })] }, row.element.id));
84
- }) })] })] }));
85
- }
86
- //# sourceMappingURL=StatementTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StatementTable.js","sourceRoot":"","sources":["../../src/components/StatementTable.tsx"],"names":[],"mappings":"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"}