@robosystems/report-components 0.1.0 → 0.1.2
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 +7 -7
- package/dist/adapters/index.d.ts +2 -5
- package/dist/adapters/index.js +2 -2
- package/dist/adapters/index.js.map +1 -1
- package/dist/chunk-FNRQJVAH.js +284 -0
- package/dist/chunk-FNRQJVAH.js.map +1 -0
- package/dist/{model.d.ts → index-DlTmV_mJ.d.ts} +87 -17
- package/dist/index.d.ts +119 -23
- package/dist/index.js +491 -23
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
- package/dist/adapters/cypher.d.ts +0 -21
- package/dist/adapters/cypher.d.ts.map +0 -1
- package/dist/adapters/cypher.js +0 -9
- package/dist/adapters/cypher.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/trig.d.ts +0 -7
- package/dist/adapters/trig.d.ts.map +0 -1
- package/dist/adapters/trig.js +0 -183
- package/dist/adapters/trig.js.map +0 -1
- package/dist/adapters/types.d.ts +0 -16
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/adapters/types.js +0 -2
- package/dist/adapters/types.js.map +0 -1
- package/dist/components/FactInspector.d.ts +0 -11
- package/dist/components/FactInspector.d.ts.map +0 -1
- package/dist/components/FactInspector.js +0 -79
- package/dist/components/FactInspector.js.map +0 -1
- package/dist/components/ReportView.d.ts +0 -9
- package/dist/components/ReportView.d.ts.map +0 -1
- package/dist/components/ReportView.js +0 -51
- package/dist/components/ReportView.js.map +0 -1
- package/dist/components/StatementTable.d.ts +0 -15
- package/dist/components/StatementTable.d.ts.map +0 -1
- package/dist/components/StatementTable.js +0 -86
- package/dist/components/StatementTable.js.map +0 -1
- package/dist/constants.d.ts +0 -71
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -115
- package/dist/constants.js.map +0 -1
- package/dist/format.d.ts +0 -17
- package/dist/format.d.ts.map +0 -1
- package/dist/format.js +0 -34
- package/dist/format.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/model.d.ts.map +0 -1
- package/dist/model.js +0 -15
- package/dist/model.js.map +0 -1
- package/dist/project.d.ts +0 -39
- package/dist/project.d.ts.map +0 -1
- package/dist/project.js +0 -201
- package/dist/project.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,sCAAsC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC5E,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AAEzB,aAAa;AACb,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAG5D,uDAAuD;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"sources":["../src/format.ts","../src/project.ts","../src/components/FactInspector.tsx","../src/components/StatementTable.tsx","../src/components/ReportView.tsx"],"names":["styles","jsxs","jsx"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Pure formatting helpers shared by the projection and the components. No React\n * here, so the projection can depend on it without pulling in a renderer.\n */\nimport type { PeriodInfo } from './model'\n\n/**\n * Accounting-style money: negatives in parentheses, no sign, an em-dash for\n * absent values. Matches the RoboLedger statement renderer.\n */\nexport function formatMoney(\n value: number | null | undefined,\n opts: { currencySymbol?: string } = {}\n): string {\n if (value === null || value === undefined || Number.isNaN(value)) return '—'\n const symbol = opts.currencySymbol ?? '$'\n const abs = Math.abs(value).toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n return value < 0 ? `${symbol}(${abs})` : `${symbol}${abs}`\n}\n\nconst MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n\n/** `2024-03-31` → `Mar 31, 2024`. Falls back to the raw string if unparseable. */\nexport function formatDate(iso: string | null | undefined): string {\n if (!iso) return ''\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(iso)\n if (!m) return iso\n const [, year, month, day] = m\n const idx = Number(month) - 1\n return `${MONTHS[idx] ?? month} ${Number(day)}, ${year}`\n}\n\n/** A human description of a period — \"As of …\" for instants, a span for durations. */\nexport function formatPeriod(period: PeriodInfo): string {\n if (period.type === 'instant') {\n return `As of ${formatDate(period.instant ?? period.end)}`\n }\n return `${formatDate(period.startDate)} – ${formatDate(period.endDate ?? period.end)}`\n}\n","/**\n * Reconstruction: a `NormalizedReport` → renderable `Statement`s.\n *\n * This is the source-agnostic half of the library — the part that is identical\n * for every adapter. It is a TypeScript port of the RoboSystems platform's\n * DataBook converter:\n *\n * - **presentation walk** — a post-order DFS of the presentation network, so a\n * total renders *after* its components (cash + receivables … then *Assets,\n * Current*; the section subtotals last). `order` is the flattened post-order\n * position; `depth` is the tree depth (drives indentation).\n * - **subtotal detection** — a concept is a subtotal iff it is a *calculation\n * parent*. A presentation leaf can still be a subtotal (Gross Profit is a\n * presentation sibling but a calculation parent), so bolding off the calc\n * tree marks exactly the right rows.\n * - **table projection** — collect a block's facts by `factSet`, key by\n * element, derive period columns from the facts themselves, lay rows out in\n * presentation order.\n */\nimport { BLOCK_ORDER, BLOCK_TITLES, humanize, qname } from './constants'\nimport { formatDate } from './format'\nimport type {\n CalcAssociation,\n ElementInfo,\n Fact,\n InformationBlock,\n NormalizedReport,\n PeriodInfo,\n RowCell,\n Statement,\n StatementColumn,\n StatementRow,\n StructureInfo,\n} from './model'\n\ninterface OrderEntry {\n order: number\n depth: number\n}\n\nfunction fallbackElement(id: string): ElementInfo {\n return {\n id,\n qname: qname(id),\n label: humanize(id),\n balance: null,\n periodType: null,\n abstract: false,\n monetary: false,\n }\n}\n\n/**\n * Post-order the presentation arcs of one structure → `{element: {order, depth}}`.\n * Roots (a `from` that is never a `to`) are visited by their subtree's leading\n * arc order, so a balance sheet's roots (Assets, then Liabilities and Equity)\n * come out in the right sequence.\n */\nexport function presentationOrder(\n model: NormalizedReport,\n structureId: string\n): Map<string, OrderEntry> {\n const children = new Map<string, Array<[number, string]>>()\n const froms = new Set<string>()\n const tos = new Set<string>()\n\n for (const assoc of model.presAssociations) {\n if (assoc.structure !== structureId) continue\n const kids = children.get(assoc.parent) ?? []\n kids.push([assoc.order, assoc.child])\n children.set(assoc.parent, kids)\n froms.add(assoc.parent)\n tos.add(assoc.child)\n }\n for (const kids of children.values()) {\n kids.sort((a, b) => a[0] - b[0])\n }\n\n const out = new Map<string, OrderEntry>()\n const seen = new Set<string>()\n let counter = 0\n\n const walk = (node: string, depth: number): void => {\n if (seen.has(node)) return\n seen.add(node)\n for (const [, child] of children.get(node) ?? []) {\n walk(child, depth + 1)\n }\n out.set(node, { order: counter, depth })\n counter += 1\n }\n\n const rootKey = (root: string): number => {\n const kids = children.get(root)\n return kids && kids.length ? kids[0][0] : 0\n }\n\n const roots = [...froms].filter((f) => !tos.has(f)).sort((a, b) => rootKey(a) - rootKey(b))\n for (const root of roots) walk(root, 0)\n return out\n}\n\n/** Concepts that are calculation parents — the authoritative subtotal set. */\nexport function calcSubtotals(model: NormalizedReport): Set<string> {\n const out = new Set<string>()\n for (const assoc of model.calcAssociations) out.add(assoc.parent)\n return out\n}\n\nfunction structureForBlock(model: NormalizedReport, blockType: string): StructureInfo | null {\n return model.structures.find((s) => s.blockType === blockType) ?? null\n}\n\nfunction columnLabel(period: PeriodInfo): string {\n return formatDate(period.end)\n}\n\n/** Period columns derived from the facts in one block, keyed and sorted by end. */\nfunction deriveColumns(model: NormalizedReport, facts: Fact[]): StatementColumn[] {\n const byEnd = new Map<string, PeriodInfo>()\n for (const fact of facts) {\n const period = model.periods[fact.period]\n if (!period || !period.end) continue\n const existing = byEnd.get(period.end)\n // Prefer a duration as the column representative — it carries the span.\n if (!existing || (existing.type === 'instant' && period.type === 'duration')) {\n byEnd.set(period.end, period)\n }\n }\n return [...byEnd.values()]\n .sort((a, b) => {\n const aStart = a.startDate ?? a.end\n const bStart = b.startDate ?? b.end\n return aStart.localeCompare(bStart) || a.end.localeCompare(b.end)\n })\n .map((period) => ({ key: period.end, label: columnLabel(period), period }))\n}\n\nfunction buildStatement(\n model: NormalizedReport,\n ib: InformationBlock,\n subtotals: Set<string>\n): Statement {\n const structure = structureForBlock(model, ib.blockType)\n const order = structure ? presentationOrder(model, structure.id) : new Map<string, OrderEntry>()\n\n const facts = model.facts.filter((f) => f.factSet !== null && f.factSet === ib.factSet)\n const columns = deriveColumns(model, facts)\n const colIndex = new Map(columns.map((c, i) => [c.key, i]))\n\n const cellsByElement = new Map<string, RowCell[]>()\n for (const fact of facts) {\n const period = model.periods[fact.period]\n if (!period) continue\n const idx = colIndex.get(period.end)\n if (idx === undefined) continue\n let cells = cellsByElement.get(fact.element)\n if (!cells) {\n cells = columns.map(() => ({ value: null, fact: null }))\n cellsByElement.set(fact.element, cells)\n }\n cells[idx] = { value: fact.value, fact }\n }\n\n const rows: StatementRow[] = [...cellsByElement.keys()]\n .map((id) => {\n const entry = order.get(id)\n return {\n id,\n order: entry ? entry.order : Number.MAX_SAFE_INTEGER,\n depth: entry ? entry.depth : 0,\n }\n })\n .sort((a, b) => a.order - b.order || a.id.localeCompare(b.id))\n .map(({ id, depth }) => ({\n element: model.elements[id] ?? fallbackElement(id),\n depth,\n isSubtotal: subtotals.has(id),\n cells: cellsByElement.get(id) as RowCell[],\n }))\n\n return {\n ib,\n blockType: ib.blockType,\n title: BLOCK_TITLES[ib.blockType] ?? ib.label ?? ib.blockType,\n structureName: structure?.structureName ?? ib.label ?? null,\n columns,\n rows,\n }\n}\n\n/** Reconstruct every statement in the report, in canonical block order. */\nexport function buildStatements(model: NormalizedReport): Statement[] {\n const subtotals = calcSubtotals(model)\n return [...model.informationBlocks]\n .sort(\n (a, b) =>\n (BLOCK_ORDER[a.blockType] ?? 99) - (BLOCK_ORDER[b.blockType] ?? 99) ||\n a.blockType.localeCompare(b.blockType)\n )\n .map((ib) => buildStatement(model, ib, subtotals))\n}\n\n// ── Footing check ────────────────────────────────────────────────────────────\n\nexport interface FootTerm {\n element: ElementInfo\n weight: number\n value: number | null\n}\n\nexport interface FootCheck {\n element: ElementInfo\n columnIndex: number\n terms: FootTerm[]\n /** Σ child·weight over the present terms, or null if none are present. */\n expected: number | null\n /** The subtotal's own reported value in this column. */\n actual: number | null\n ok: boolean\n}\n\n/**\n * Foot a subtotal live: sum its calculation children (× weight) and compare to\n * its reported value, e.g. `13,550 + 900 = 14,450 ✓`. Returns `null` when the\n * element is not a calculation parent (nothing to foot).\n */\nexport function footCheck(\n model: NormalizedReport,\n statement: Statement,\n elementId: string,\n columnIndex: number\n): FootCheck | null {\n const kids: CalcAssociation[] = model.calcAssociations.filter((a) => a.parent === elementId)\n if (!kids.length) return null\n\n const valueOf = (id: string): number | null => {\n const row = statement.rows.find((r) => r.element.id === id)\n return row ? (row.cells[columnIndex]?.value ?? null) : null\n }\n\n const terms: FootTerm[] = kids\n .slice()\n .sort((a, b) => a.order - b.order)\n .map((a) => ({\n element: model.elements[a.child] ?? fallbackElement(a.child),\n weight: a.weight,\n value: valueOf(a.child),\n }))\n\n const present = terms.filter((t) => t.value !== null)\n const expected = present.length\n ? present.reduce((sum, t) => sum + (t.value as number) * t.weight, 0)\n : null\n const actual = valueOf(elementId)\n const ok = expected !== null && actual !== null && Math.abs(expected - actual) < 0.005\n\n return {\n element: model.elements[elementId] ?? fallbackElement(elementId),\n columnIndex,\n terms,\n expected,\n actual,\n ok,\n }\n}\n","/**\n * Click-a-fact inspection: the selected cell's element / period / unit, plus —\n * when the element is a calculation subtotal — the calculation rule it foots,\n * computed live in the browser (`13,550 + 900 = 14,450 ✓`).\n */\nimport type { CSSProperties, ReactNode } from 'react'\nimport { formatMoney, formatPeriod } from '../format'\nimport type { NormalizedReport, Statement, StatementRow } from '../model'\nimport { footCheck } from '../project'\n\nexport interface FactInspectorProps {\n report: NormalizedReport\n statement: Statement\n row: StatementRow\n columnIndex: number\n onClose?: () => void\n currencySymbol?: string\n}\n\nconst styles: Record<string, CSSProperties> = {\n panel: {\n fontFamily: 'var(--rs-font-sans, ui-sans-serif, system-ui, sans-serif)',\n color: 'var(--rs-text, #111827)',\n border: '1px solid var(--rs-border, #e5e7eb)',\n borderRadius: '12px',\n padding: '1rem 1.25rem',\n background: 'var(--rs-panel-bg, #ffffff)',\n boxShadow: '0 1px 3px rgba(0,0,0,0.08)',\n },\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n gap: '1rem',\n marginBottom: '0.75rem',\n },\n label: { fontSize: '1rem', fontWeight: 700, margin: 0 },\n qname: {\n fontFamily: 'var(--rs-font-mono, ui-monospace, monospace)',\n fontSize: '0.8rem',\n color: 'var(--rs-primary-700, #1d4ed8)',\n },\n close: {\n border: 'none',\n background: 'transparent',\n fontSize: '1.25rem',\n lineHeight: 1,\n cursor: 'pointer',\n color: 'var(--rs-muted, #6b7280)',\n },\n grid: {\n display: 'grid',\n gridTemplateColumns: 'auto 1fr',\n gap: '0.35rem 1rem',\n fontSize: '0.85rem',\n margin: '0.5rem 0',\n },\n key: { color: 'var(--rs-muted, #6b7280)' },\n mono: { fontFamily: 'var(--rs-font-mono, ui-monospace, monospace)' },\n footing: {\n marginTop: '0.85rem',\n paddingTop: '0.75rem',\n borderTop: '1px solid var(--rs-border, #e5e7eb)',\n },\n footTitle: {\n fontSize: '0.75rem',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n color: 'var(--rs-muted, #6b7280)',\n marginBottom: '0.4rem',\n },\n equation: {\n fontFamily: 'var(--rs-font-mono, ui-monospace, monospace)',\n fontSize: '0.85rem',\n lineHeight: 1.6,\n },\n}\n\nfunction Field({ k, children }: { k: string; children: ReactNode }) {\n return (\n <>\n <span style={styles.key}>{k}</span>\n <span>{children}</span>\n </>\n )\n}\n\nexport function FactInspector({\n report,\n statement,\n row,\n columnIndex,\n onClose,\n currencySymbol = '$',\n}: FactInspectorProps) {\n const { element } = row\n const cell = row.cells[columnIndex]\n const column = statement.columns[columnIndex]\n const unit = cell.fact?.unit ? report.units[cell.fact.unit] : null\n const foot = footCheck(report, statement, element.id, columnIndex)\n const sym = currencySymbol\n\n return (\n <div style={styles.panel}>\n <div style={styles.header}>\n <div>\n <p style={styles.label}>{element.label}</p>\n <span style={styles.qname}>{element.qname}</span>\n </div>\n {onClose ? (\n <button style={styles.close} onClick={onClose} aria-label=\"Close\">\n ×\n </button>\n ) : null}\n </div>\n\n <div style={styles.grid}>\n <Field k=\"Value\">\n <span style={styles.mono}>{formatMoney(cell.value, { currencySymbol: sym })}</span>\n </Field>\n <Field k=\"Period\">\n {formatPeriod(column.period)} <span style={styles.key}>({column.period.type})</span>\n </Field>\n <Field k=\"Unit\">{unit ? unit.label : '—'}</Field>\n {element.balance ? <Field k=\"Balance\">{element.balance}</Field> : null}\n {cell.fact?.decimals ? <Field k=\"Decimals\">{cell.fact.decimals}</Field> : null}\n </div>\n\n {foot ? (\n <div style={styles.footing}>\n <div style={styles.footTitle}>Calculation {foot.ok ? '✓ foots' : '⚠ does not foot'}</div>\n <div style={styles.equation}>\n {foot.terms.map((term, i) => {\n const op = i === 0 ? (term.weight < 0 ? '−' : '') : term.weight < 0 ? ' − ' : ' + '\n return (\n <span key={term.element.id} title={term.element.qname}>\n {op}\n {formatMoney(term.value === null ? 0 : Math.abs(term.value), {\n currencySymbol: sym,\n })}\n </span>\n )\n })}\n {' = '}\n <strong>{formatMoney(foot.expected, { currencySymbol: sym })}</strong>{' '}\n {foot.ok ? (\n <span style={{ color: 'var(--rs-success, #00875a)' }}>✓</span>\n ) : (\n <span style={{ color: 'var(--rs-error, #dc2626)' }}>\n ✗ (reported {formatMoney(foot.actual, { currencySymbol: sym })})\n </span>\n )}\n </div>\n </div>\n ) : null}\n </div>\n )\n}\n","/**\n * Renders one reconstructed `Statement` as a financial-statement table.\n *\n * Framework-agnostic plain React — no `next/*`, no CSS framework required. Styled\n * with inline styles that read CSS custom properties (`--rs-*`) so a host app can\n * theme it, with sensible RoboSystems defaults baked in as fallbacks.\n */\nimport type { CSSProperties } from 'react'\nimport { formatMoney, formatPeriod } from '../format'\nimport type { Statement, StatementRow } from '../model'\n\nexport interface StatementTableProps {\n statement: Statement\n /** Called when a value cell is clicked — drives fact inspection. */\n onCellClick?: (row: StatementRow, columnIndex: number) => void\n /** Currency symbol for values (default `$`). */\n currencySymbol?: string\n /** The currently-selected cell, highlighted. */\n selected?: { elementId: string; columnIndex: number } | null\n}\n\nconst styles: Record<string, CSSProperties> = {\n wrap: {\n fontFamily: 'var(--rs-font-sans, ui-sans-serif, system-ui, sans-serif)',\n color: 'var(--rs-text, #111827)',\n marginBottom: '2.5rem',\n },\n heading: {\n textAlign: 'center',\n marginBottom: '1rem',\n },\n title: {\n fontFamily: 'var(--rs-font-heading, var(--rs-font-sans, sans-serif))',\n fontSize: '1.15rem',\n fontWeight: 700,\n letterSpacing: '0.02em',\n margin: 0,\n },\n subtitle: {\n fontSize: '0.85rem',\n color: 'var(--rs-muted, #6b7280)',\n marginTop: '0.25rem',\n },\n table: {\n width: '100%',\n borderCollapse: 'collapse',\n fontSize: '0.875rem',\n },\n th: {\n borderBottom: '2px solid var(--rs-border-strong, #9ca3af)',\n padding: '0.5rem 0.75rem',\n fontWeight: 600,\n color: 'var(--rs-muted, #6b7280)',\n fontSize: '0.8rem',\n },\n thConcept: { textAlign: 'left' },\n thNum: { textAlign: 'right', whiteSpace: 'nowrap' },\n labelCell: {\n padding: '0.3rem 0.75rem',\n whiteSpace: 'normal',\n },\n numCell: {\n padding: '0.3rem 0.75rem',\n textAlign: 'right',\n whiteSpace: 'nowrap',\n fontFamily: 'var(--rs-font-mono, ui-monospace, SFMono-Regular, monospace)',\n fontVariantNumeric: 'tabular-nums',\n },\n}\n\nexport function StatementTable({\n statement,\n onCellClick,\n currencySymbol = '$',\n selected = null,\n}: StatementTableProps) {\n const { columns, rows } = statement\n const periodCaption = columns.length === 1 ? formatPeriod(columns[0].period) : null\n\n return (\n <section style={styles.wrap}>\n <header style={styles.heading}>\n <h3 style={styles.title}>{statement.title}</h3>\n {statement.structureName ? (\n <div style={styles.subtitle}>{statement.structureName}</div>\n ) : null}\n {periodCaption ? <div style={styles.subtitle}>{periodCaption}</div> : null}\n </header>\n\n <table style={styles.table}>\n <thead>\n <tr>\n <th style={{ ...styles.th, ...styles.thConcept }}>Concept</th>\n {columns.map((col) => (\n <th key={col.key} style={{ ...styles.th, ...styles.thNum }}>\n {col.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => {\n const isGrandTotal = row.isSubtotal && row.depth === 0\n const allZeroOrNull = row.cells.every((c) => c.value === null || c.value === 0)\n const rowStyle: CSSProperties = {\n backgroundColor: row.isSubtotal ? 'var(--rs-subtotal-bg, #f9fafb)' : undefined,\n }\n const labelStyle: CSSProperties = {\n ...styles.labelCell,\n paddingLeft: `${row.depth * 20 + 12}px`,\n fontWeight: row.isSubtotal ? 600 : 400,\n color: !row.isSubtotal && allZeroOrNull ? 'var(--rs-muted, #9ca3af)' : undefined,\n borderBottom: isGrandTotal ? '3px double var(--rs-text, #111827)' : undefined,\n }\n return (\n <tr key={row.element.id} style={rowStyle}>\n <td style={labelStyle} title={row.element.qname}>\n {row.element.label}\n </td>\n {row.cells.map((cell, i) => {\n const isSelected =\n selected !== null &&\n selected.elementId === row.element.id &&\n selected.columnIndex === i\n const clickable = onCellClick && cell.fact !== null\n const numStyle: CSSProperties = {\n ...styles.numCell,\n fontWeight: row.isSubtotal ? 600 : 400,\n borderBottom: isGrandTotal ? '3px double var(--rs-text, #111827)' : undefined,\n cursor: clickable ? 'pointer' : 'default',\n backgroundColor: isSelected ? 'var(--rs-selected-bg, #dbeafe)' : undefined,\n color:\n !row.isSubtotal && (cell.value === null || cell.value === 0)\n ? 'var(--rs-muted, #9ca3af)'\n : undefined,\n }\n return (\n <td\n key={columns[i].key}\n style={numStyle}\n onClick={clickable ? () => onCellClick?.(row, i) : undefined}\n >\n {formatMoney(cell.value, { currencySymbol })}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n </section>\n )\n}\n","/**\n * Top-level renderer: a `NormalizedReport` → the entity header, every statement,\n * and an inline fact inspector wired to cell selection. This is the one\n * component a consuming app typically renders.\n */\nimport type { CSSProperties } from 'react'\nimport { useMemo, useState } from 'react'\nimport type { NormalizedReport, StatementRow } from '../model'\nimport { buildStatements } from '../project'\nimport { FactInspector } from './FactInspector'\nimport { StatementTable } from './StatementTable'\n\nexport interface ReportViewProps {\n report: NormalizedReport\n currencySymbol?: string\n /** Disable the click-to-inspect fact panel (render-only). */\n inspect?: boolean\n}\n\ninterface Selection {\n statementIndex: number\n elementId: string\n columnIndex: number\n}\n\nconst styles: Record<string, CSSProperties> = {\n layout: {\n display: 'grid',\n gridTemplateColumns: 'minmax(0, 1fr)',\n gap: '1.5rem',\n alignItems: 'start',\n },\n layoutWithPanel: {\n gridTemplateColumns: 'minmax(0, 1fr) 340px',\n },\n entity: {\n fontFamily: 'var(--rs-font-heading, var(--rs-font-sans, sans-serif))',\n textAlign: 'center',\n marginBottom: '1.5rem',\n },\n entityName: {\n fontSize: '1.5rem',\n fontWeight: 700,\n margin: 0,\n color: 'var(--rs-text, #111827)',\n },\n entitySub: { fontSize: '0.85rem', color: 'var(--rs-muted, #6b7280)' },\n panel: { position: 'sticky', top: '1rem' },\n}\n\nexport function ReportView({ report, currencySymbol = '$', inspect = true }: ReportViewProps) {\n const statements = useMemo(() => buildStatements(report), [report])\n const [selection, setSelection] = useState<Selection | null>(null)\n\n const selected = selection !== null ? statements[selection.statementIndex] : null\n const selectedRow = selected?.rows.find((r) => r.element.id === selection?.elementId) ?? null\n\n return (\n <div>\n {report.entity ? (\n <header style={styles.entity}>\n <h2 style={styles.entityName}>{report.entity.name}</h2>\n {report.entity.country ? (\n <div style={styles.entitySub}>{report.entity.country}</div>\n ) : null}\n </header>\n ) : null}\n\n <div\n style={{\n ...styles.layout,\n ...(inspect && selectedRow ? styles.layoutWithPanel : {}),\n }}\n >\n <div>\n {statements.map((statement, statementIndex) => (\n <StatementTable\n key={statement.ib.id}\n statement={statement}\n currencySymbol={currencySymbol}\n selected={\n selection && selection.statementIndex === statementIndex\n ? {\n elementId: selection.elementId,\n columnIndex: selection.columnIndex,\n }\n : null\n }\n onCellClick={\n inspect\n ? (row: StatementRow, columnIndex: number) =>\n setSelection({\n statementIndex,\n elementId: row.element.id,\n columnIndex,\n })\n : undefined\n }\n />\n ))}\n </div>\n\n {inspect && selected && selectedRow && selection ? (\n <div style={styles.panel}>\n <FactInspector\n report={report}\n statement={selected}\n row={selectedRow}\n columnIndex={selection.columnIndex}\n currencySymbol={currencySymbol}\n onClose={() => setSelection(null)}\n />\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robosystems/report-components",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Source-agnostic React components for rendering XBRL-grade financial statements",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "RFS LLC",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
],
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "
|
|
27
|
+
"build": "tsup",
|
|
28
28
|
"format": "prettier . --write",
|
|
29
29
|
"format:check": "prettier . --check",
|
|
30
30
|
"lint": "eslint .",
|
|
@@ -51,11 +51,13 @@
|
|
|
51
51
|
"react-dom": ">=18"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
+
"jsonld": "^9.0.0",
|
|
54
55
|
"n3": "^1.26.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@eslint/js": "^9.39.2",
|
|
58
59
|
"@testing-library/react": "^16.3.0",
|
|
60
|
+
"@types/jsonld": "^1.5.15",
|
|
59
61
|
"@types/n3": "^1.26.0",
|
|
60
62
|
"@types/node": "^22.0.0",
|
|
61
63
|
"@types/react": "^19.1.9",
|
|
@@ -68,6 +70,7 @@
|
|
|
68
70
|
"prettier-plugin-organize-imports": "^4.0.0",
|
|
69
71
|
"react": "^19.2.0",
|
|
70
72
|
"react-dom": "^19.2.0",
|
|
73
|
+
"tsup": "^8.5.1",
|
|
71
74
|
"typescript": "^5.7.2",
|
|
72
75
|
"typescript-eslint": "^8.54.0",
|
|
73
76
|
"vitest": "^4.1.4"
|
|
@@ -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"}
|
package/dist/adapters/cypher.js
DELETED
|
@@ -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"}
|
package/dist/adapters/trig.d.ts
DELETED
|
@@ -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"}
|
package/dist/adapters/trig.js
DELETED
|
@@ -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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"}
|
package/dist/adapters/types.d.ts
DELETED
|
@@ -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"}
|
package/dist/adapters/types.js
DELETED
|
@@ -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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"}
|