@conuti-das/prince-ui-bo4e 0.3.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/datetime.ts","../src/core/validity.ts","../src/core/anomalies.ts","../src/core/humanize.ts","../src/core/date-edit.ts","../src/schema/load-schema.ts","../src/normalize.ts","../src/view/ValidityRange.tsx","../src/view/AddressBlock.tsx","../src/view/CodeResolved.tsx","../src/view/IdentityHeader.tsx","../src/view/EnumIcon.tsx","../src/view/EnumBadge.tsx","../src/view/SchemaPopover.tsx","../src/view/SchemaField.tsx","../src/view/ContactLine.tsx","../src/view/MarktpartnerRow.tsx","../src/view/EditableValue.tsx","../src/view/value-format.ts","../src/view/FullDetail.tsx","../src/view/SmartObjectCard.tsx","../src/view/renderers/generic.tsx","../src/view/renderers/marktlokation.tsx","../src/view/SmartObjectView.tsx","../src/SydocView.tsx"],"names":["BERLIN","jsxs","jsx","Icon","Select","SelectItem","useState","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["const BERLIN = \"Europe/Berlin\";\n\nexport function isIsoDate(v: unknown): v is string {\n return typeof v === \"string\" && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/.test(v);\n}\n\nfunction parts(iso: string): Record<string, string> {\n const f = new Intl.DateTimeFormat(\"de-DE\", {\n timeZone: BERLIN,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n });\n const p: Record<string, string> = {};\n for (const { type, value } of f.formatToParts(new Date(iso))) p[type] = value;\n return p;\n}\n\nexport function formatDateDE(iso: string, opts: { withTime?: boolean } = {}): string {\n if (!isIsoDate(iso)) return iso;\n const p = parts(iso);\n const date = `${p.day}.${p.month}.${p.year}`;\n return opts.withTime ? `${date} ${p.hour}:${p.minute}` : date;\n}\n\nexport function toUtcLabel(iso: string): string {\n if (!isIsoDate(iso)) return iso;\n return new Date(iso).toISOString().replace(/\\.\\d{3}Z$/, \"Z\");\n}\n\nexport function zonedLabelWithTz(iso: string): string {\n if (!isIsoDate(iso)) return iso;\n const tz =\n new Intl.DateTimeFormat(\"de-DE\", { timeZone: BERLIN, timeZoneName: \"short\" })\n .formatToParts(new Date(iso))\n .find((x) => x.type === \"timeZoneName\")?.value ?? \"\";\n return `${formatDateDE(iso, { withTime: true })}${tz ? ` ${tz}` : \"\"}`;\n}\n","export type ValidityState = \"zukuenftig\" | \"aktiv\" | \"laeuftBald\" | \"abgelaufen\";\n\nexport function validityStatus(\n range: { startdatum?: string | null; enddatum?: string | null },\n now: Date = new Date(),\n): ValidityState {\n const t = now.getTime();\n const start = range.startdatum ? new Date(range.startdatum).getTime() : null;\n const end = range.enddatum ? new Date(range.enddatum).getTime() : null;\n // A future start wins over the end check: a not-yet-active range is \"zukuenftig\"\n // even if its (malformed) end already lies in the past.\n if (start != null && start > t) return \"zukuenftig\";\n if (end != null) {\n if (end < t) return \"abgelaufen\";\n if (end < t + 30 * 86_400_000) return \"laeuftBald\";\n }\n return \"aktiv\";\n}\n","import { isIsoDate } from \"./datetime\";\n\nexport interface Anomaly {\n severity: \"warn\" | \"error\";\n path: string;\n value: unknown;\n rule: \"placeholder\" | \"suspiciousChar\" | \"defaultValue\" | \"implausibleDate\" | \"expired\" | \"placeholderObject\";\n message: string;\n}\n\nconst END_KEYS = /gueltigBis$|enddatum$|vertragsende$/i;\nconst DUMMY_OBJECT_KEYS = /geokoordinaten|katasteradresse/i;\n\n/** True if an object has string leaves that are all the dummy value \"1\". */\nfunction isDummyOnes(o: Record<string, unknown>): boolean {\n const strings = Object.values(o).filter((x): x is string => typeof x === \"string\");\n return strings.length > 0 && strings.every((x) => x === \"1\");\n}\n\nexport function scanAnomalies(node: unknown, opts: { now?: Date } = {}): Anomaly[] {\n const now = (opts.now ?? new Date()).getTime();\n const out: Anomaly[] = [];\n\n const walk = (v: unknown, path: string, key: string): void => {\n if (v == null) return;\n if (typeof v === \"string\") {\n if (/#.+#/.test(v)) {\n out.push({ severity: \"warn\", path, value: v, rule: \"placeholder\", message: `Platzhalter nicht ersetzt: ${v}` });\n }\n if (/[<>]/.test(v)) {\n out.push({ severity: \"warn\", path, value: v, rule: \"suspiciousChar\", message: `Sonderzeichen im Wert: ${v}` });\n }\n if (v === \"00000000\") {\n out.push({ severity: \"warn\", path, value: v, rule: \"defaultValue\", message: `Leerer Default-Wert (${key})` });\n }\n if (isIsoDate(v) && new Date(v).getUTCFullYear() <= 1950) {\n out.push({ severity: \"warn\", path, value: v, rule: \"implausibleDate\", message: `Unplausibles Datum: ${v}` });\n }\n if (isIsoDate(v) && END_KEYS.test(key) && new Date(v).getTime() < now) {\n out.push({ severity: \"warn\", path, value: v, rule: \"expired\", message: `Abgelaufen (${key}): ${v}` });\n }\n return;\n }\n if (Array.isArray(v)) {\n v.forEach((it, i) => walk(it, `${path}[${i}]`, key));\n return;\n }\n if (typeof v === \"object\") {\n const obj = v as Record<string, unknown>;\n if (DUMMY_OBJECT_KEYS.test(key) && isDummyOnes(obj)) {\n out.push({ severity: \"warn\", path, value: v, rule: \"placeholderObject\", message: `Platzhalter-Daten (${key}): alle Werte „1\"` });\n }\n for (const k of Object.keys(obj)) {\n walk(obj[k], path ? `${path}.${k}` : k, k);\n }\n }\n };\n\n walk(node, \"\", \"\");\n\n // Dedup identical findings (e.g. the same \"Fisch>\" on Eigentümer und Hausverwalter).\n const seen = new Set<string>();\n return out.filter((a) => {\n const key = `${a.rule}|${typeof a.value === \"object\" ? a.path : String(a.value)}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n","const LAB: Record<string, string> = {\n marktlokationsId: \"Marktlokations-ID\",\n messlokationsId: \"Messlokations-ID\",\n boTyp: \"BO-Typ\",\n versionStruktur: \"Versionsstruktur\",\n eMailAdresse: \"E-Mail-Adresse\",\n netzbetreiberCodeNr: \"Netzbetreiber-Codenr.\",\n grundversorgerCodeNr: \"Grundversorger-Codenr.\",\n rollencodenummer: \"Rollencodenummer\",\n rollencodetyp: \"Rollencodetyp\",\n pruefidentifikator: \"Prüfidentifikator\",\n zugehoerigeMesslokationen: \"Zugehörige Messlokationen\",\n messtechnischeEinordnung: \"Messtechnische Einordnung\",\n partneradresse: \"Partneradresse\",\n lokationsadresse: \"Lokationsadresse\",\n marktrollen: \"Marktrollen\",\n zaehlwerke: \"Zählwerke\",\n verbrauchsmenge: \"Verbrauchsmenge\",\n geschaeftspartnerrolle: \"Geschäftspartnerrolle\",\n messstellenbetreiberEigenschaft: \"MSB-Eigenschaft\",\n transaktionsReferenznummer: \"Transaktions-Referenznr.\",\n datenaustauschreferenz: \"Datenaustauschreferenz\",\n ediTyp: \"EDI-Typ\",\n ediVersion: \"EDI-Version\",\n ediEmpfangsDatum: \"EDI-Empfangsdatum\",\n marktpartnerRolle: \"Marktpartner-Rolle\",\n contrlReferenz: \"CONTRL-Referenz\",\n transaktionsgrund: \"Transaktionsgrund\",\n vorgangsnummer: \"Vorgangsnummer\",\n dokumentennummer: \"Dokumentennummer\",\n nachrichtendatum: \"Nachrichtendatum\",\n nachrichtenreferenznummer: \"Nachrichtenreferenznummer\",\n};\n\nexport function humanize(key: string): string {\n const known = LAB[key];\n if (known) return known;\n // ALL_CAPS group/enum keys -> Title Case (\"ENERGIELIEFERVERTRAG\" -> \"Energieliefervertrag\")\n if (/^[A-Z0-9]+(_[A-Z0-9]+)*$/.test(key)) {\n return key\n .split(\"_\")\n .map((w) => w.charAt(0) + w.slice(1).toLowerCase())\n .join(\" \");\n }\n const s = key.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\").replace(/_/g, \" \");\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n","import { parseAbsolute, type ZonedDateTime } from \"@internationalized/date\";\n\nconst BERLIN = \"Europe/Berlin\";\n\n/** ISO-UTC string -> ZonedDateTime in Europe/Berlin (for the date/time picker). */\nexport function isoToBerlin(iso: string): ZonedDateTime {\n return parseAbsolute(iso, BERLIN);\n}\n\n/** ZonedDateTime (any zone) -> normalized ISO-UTC string (\"…Z\", no millis). */\nexport function berlinToIso(z: ZonedDateTime): string {\n return z.toAbsoluteString().replace(/\\.\\d{3}(?=Z$)/, \"\");\n}\n","import type { FieldDoc, EnumDoc } from \"../types\";\nimport { humanize } from \"../core/humanize\";\n\ninterface RawField {\n translation?: string;\n description?: string;\n example?: string;\n pattern?: string;\n enumRef?: string;\n}\ninterface RawEnumValue {\n value: string;\n}\ninterface RawEnum {\n description?: string;\n values: RawEnumValue[];\n}\ninterface RawBo {\n description?: string;\n properties?: string[];\n}\n\nexport interface Bo4eSchema {\n fields: Record<string, Record<string, RawField>>;\n enums: Record<string, RawEnum>;\n bos: Record<string, RawBo>;\n}\n\nexport function loadBo4eSchema(src: { fields: unknown; enums: unknown; bos: unknown }): Bo4eSchema {\n return {\n fields: src.fields as Bo4eSchema[\"fields\"],\n enums: src.enums as Bo4eSchema[\"enums\"],\n bos: src.bos as Bo4eSchema[\"bos\"],\n };\n}\n\nexport function resolveField(schema: Bo4eSchema, boTyp: string, key: string): FieldDoc {\n const raw = schema.fields[boTyp]?.[key];\n let enumDoc: EnumDoc | undefined;\n const enumRef = raw?.enumRef;\n if (enumRef) {\n const e = schema.enums[enumRef];\n if (e) enumDoc = { description: e.description, values: e.values.map((v) => v.value) };\n }\n return {\n translation: raw?.translation ?? humanize(key),\n description: raw?.description,\n example: raw?.example,\n pattern: raw?.pattern,\n enumRef,\n enum: enumDoc,\n };\n}\n\nexport function getFieldOrder(schema: Bo4eSchema, boTyp: string): string[] {\n return schema.bos[boTyp]?.properties ?? Object.keys(schema.fields[boTyp] ?? {});\n}\n","import type { CDoc, Bo4eObject, Stammdaten } from \"./types\";\n\n/** A SydocView accepts a full cDoc, a single BO, or an array of BOs. */\nexport type SydocInput = CDoc | Bo4eObject | Bo4eObject[];\n\nfunction isCDoc(x: SydocInput): x is CDoc {\n return typeof x === \"object\" && x != null && !Array.isArray(x) && \"content\" in x && !(\"boTyp\" in (x as object));\n}\n\n/** Wrap a single BO or a BO array into a minimal cDoc (grouped by boTyp under OUTBOUND). */\nexport function normalizeToCDoc(input: SydocInput): CDoc {\n if (isCDoc(input)) return input;\n const list = Array.isArray(input) ? input : [input];\n const stammdaten: Stammdaten = {};\n for (const o of list) {\n const k = o.boTyp ?? \"UNBEKANNT\";\n const bucket = (stammdaten[k] ??= []);\n bucket.push(o);\n }\n return { id: \"\", businessKey: \"\", content: { OUTBOUND: { stammdaten } } };\n}\n","import { validityStatus } from \"../core/validity\";\nimport { formatDateDE } from \"../core/datetime\";\n\nexport interface ValidityRangeProps {\n start?: string | null;\n end?: string | null;\n now?: Date;\n}\n\nexport function ValidityRange({ start, end, now }: ValidityRangeProps) {\n const state = validityStatus({ startdatum: start ?? undefined, enddatum: end ?? undefined }, now);\n const hint =\n state === \"abgelaufen\" ? \"abgelaufen\" : state === \"laeuftBald\" ? \"läuft bald\" : state === \"zukuenftig\" ? \"künftig\" : \"\";\n const text = [start ? formatDateDE(start) : \"\", end ? formatDateDE(end) : \"\"].filter(Boolean).join(\" – \");\n return (\n <span className=\"prn-bo-vrange\" data-state={state}>\n <span className=\"dot\" />\n {text}\n {hint ? ` · ${hint}` : \"\"}\n </span>\n );\n}\n","import { Icon } from \"@conuti-das/prince-ui\";\n\nexport interface Adresse {\n strasse?: string;\n hausnummer?: string;\n postleitzahl?: string;\n ort?: string;\n ortsteil?: string;\n landescode?: string;\n}\n\nexport function AddressBlock({ adresse }: { adresse: Adresse }) {\n const a = adresse;\n const line1 = [a.strasse, a.hausnummer].filter(Boolean).join(\" \");\n const line2 = [a.postleitzahl, a.ort].filter(Boolean).join(\" \") + (a.ortsteil ? ` · ${a.ortsteil}` : \"\");\n return (\n <div className=\"prn-bo-addr\">\n <Icon name=\"pin\" />\n <div>\n {line1 ? <div>{line1}</div> : null}\n <div className=\"l2\">{line2}</div>\n {a.landescode ? <div className=\"l3\">{a.landescode}</div> : null}\n </div>\n </div>\n );\n}\n","import type { Bo4eResolvers } from \"../types\";\n\nexport interface CodeResolvedProps {\n code: string;\n codetyp?: string;\n resolvers?: Bo4eResolvers;\n}\n\nexport function CodeResolved({ code, codetyp, resolvers }: CodeResolvedProps) {\n const info = resolvers?.marktpartner?.(code, codetyp);\n return (\n <span className=\"prn-bo-code\">\n {info ? <span className=\"nm\">{info.name}</span> : <span>{code}</span>}\n {info ? <span className=\"raw\">{code}</span> : null}\n </span>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport interface IdentityHeaderProps {\n icon?: ReactNode;\n title: ReactNode;\n subtitle?: ReactNode;\n trailing?: ReactNode;\n}\n\nexport function IdentityHeader({ icon, title, subtitle, trailing }: IdentityHeaderProps) {\n return (\n <div className=\"prn-bo-idh\">\n {icon ? <span className=\"ico\">{icon}</span> : null}\n <div>\n <div className=\"ttl\">{title}</div>\n {subtitle ? <div className=\"sub\">{subtitle}</div> : null}\n </div>\n {trailing ? <div className=\"pill\">{trailing}</div> : null}\n </div>\n );\n}\n","import { Icon, type IconName } from \"@conuti-das/prince-ui\";\n\nconst MAP: Record<string, Record<string, IconName>> = {\n SPARTE: { STROM: \"bolt\", GAS: \"flame\", WASSER: \"droplet\", ABWASSER: \"droplet\" },\n ENERGIERICHTUNG: { AUSSP: \"arrow-down-right\", EINSP: \"arrow-up-right\" },\n};\n\nexport function EnumIcon({ enumName, value }: { enumName: string; value: string }) {\n const name = MAP[enumName]?.[value];\n if (!name) return null;\n return <Icon name={name} />;\n}\n","import type { ReactNode } from \"react\";\n\nexport type Tone = \"neutral\" | \"positive\" | \"info\" | \"critical\" | \"negative\";\n\nexport function EnumBadge({ tone = \"neutral\", icon, children }: { tone?: Tone; icon?: ReactNode; children: ReactNode }) {\n return (\n <span className=\"prn-bo-badge\" data-tone={tone}>\n {icon}\n {children}\n </span>\n );\n}\n","import type { FieldDoc } from \"../types\";\nimport { isIsoDate, zonedLabelWithTz, toUtcLabel } from \"../core/datetime\";\n\nexport function SchemaPopoverBody({ fieldKey, doc, value }: { fieldKey: string; doc: FieldDoc; value: unknown }) {\n const isDate = isIsoDate(value);\n return (\n <div>\n <h4>{doc.translation}</h4>\n <div className=\"key\">\n {fieldKey}\n {doc.enumRef ? ` · enum ${doc.enumRef}` : \"\"}\n </div>\n {doc.description ? (\n <div className=\"desc\">{doc.description}</div>\n ) : (\n <div className=\"desc\" data-nodoc=\"true\">\n Keine Schema-Beschreibung hinterlegt – im echten Editor aus dem JSON-Schema-Repo.\n </div>\n )}\n {isDate ? (\n <>\n <div className=\"row\">\n <span>Angezeigt (Berlin)</span>\n <span className=\"mono\">{zonedLabelWithTz(value)}</span>\n </div>\n <div className=\"row\">\n <span>Übermittelt (UTC)</span>\n <span className=\"mono\">{toUtcLabel(value)}</span>\n </div>\n </>\n ) : (\n <>\n {doc.pattern ? (\n <div className=\"row\">\n <span>Pattern</span>\n <span className=\"mono\">{doc.pattern}</span>\n </div>\n ) : null}\n {doc.example ? (\n <div className=\"row\">\n <span>Beispiel</span>\n <span className=\"mono\">{doc.example}</span>\n </div>\n ) : null}\n </>\n )}\n {doc.enum ? (\n <>\n <div className=\"enh\">Mögliche Werte</div>\n <div className=\"enums\">\n {doc.enum.values.map((v) => (\n <span key={v} className=\"ev\" data-on={v === value}>\n {v}\n </span>\n ))}\n </div>\n </>\n ) : null}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { Button, DialogTrigger, Dialog } from \"react-aria-components\";\nimport { Popover } from \"@conuti-das/prince-ui\";\nimport type { Bo4eSchema } from \"../schema/load-schema\";\nimport { resolveField } from \"../schema/load-schema\";\nimport { SchemaPopoverBody } from \"./SchemaPopover\";\n\nexport interface SchemaFieldProps {\n schema: Bo4eSchema;\n boTyp: string;\n fieldKey: string;\n value: unknown;\n children: ReactNode;\n}\n\nexport function SchemaField({ schema, boTyp, fieldKey, value, children }: SchemaFieldProps) {\n const doc = resolveField(schema, boTyp, fieldKey);\n return (\n <DialogTrigger>\n <Button className=\"prn-bo-field\">{children}</Button>\n <Popover>\n <Dialog className=\"prn-bo-pop\">\n <SchemaPopoverBody fieldKey={fieldKey} doc={doc} value={value} />\n </Dialog>\n </Popover>\n </DialogTrigger>\n );\n}\n","import { Icon } from \"@conuti-das/prince-ui\";\n\nexport interface ContactPerson {\n anrede?: string;\n name1?: string;\n name2?: string;\n name3?: string;\n eMailAdresse?: string;\n kontaktweg?: string[];\n geschaeftspartnerrolle?: string[];\n}\n\nexport function ContactLine({ person }: { person: ContactPerson }) {\n const name = [person.anrede, person.name1, person.name2, person.name3].filter(Boolean).join(\" \");\n const init = `${person.name1?.[0] ?? \"\"}${person.name2?.[0] ?? \"\"}`.toUpperCase();\n const kw = person.kontaktweg ?? [];\n const sub = [(person.geschaeftspartnerrolle ?? []).join(\", \"), person.eMailAdresse].filter(Boolean).join(\" · \");\n return (\n <div className=\"prn-bo-contact\">\n <div className=\"av\">{init}</div>\n <div>\n <div className=\"cn\">{name}</div>\n {sub ? <div className=\"csub\">{sub}</div> : null}\n </div>\n <div className=\"cways\">\n <a\n className=\"cway\"\n data-off={!kw.includes(\"E_MAIL\")}\n href={person.eMailAdresse ? `mailto:${person.eMailAdresse}` : undefined}\n aria-label=\"E-Mail\"\n >\n <Icon name=\"mail\" />\n </a>\n <span className=\"cway\" data-off={!kw.includes(\"TELEFONAT\")} aria-label=\"Telefon\">\n <Icon name=\"phone\" />\n </span>\n </div>\n </div>\n );\n}\n","import type { Bo4eObject, Bo4eResolvers } from \"../types\";\nimport { CodeResolved } from \"./CodeResolved\";\nimport { ValidityRange } from \"./ValidityRange\";\nimport { validityStatus } from \"../core/validity\";\nimport { humanize } from \"../core/humanize\";\n\ninterface Gz {\n startdatum?: string;\n enddatum?: string;\n}\n\nexport function MarktpartnerRow({ row, resolvers, now }: { row: Bo4eObject; resolvers?: Bo4eResolvers; now?: Date }) {\n const gz = (row.gueltigkeitszeitraum ?? {}) as Gz;\n const dim = validityStatus({ startdatum: gz.startdatum, enddatum: gz.enddatum }, now) === \"abgelaufen\";\n return (\n <div className=\"prn-bo-mpr\" data-dim={dim}>\n <span className=\"rtag\">{String(row.marktrolle ?? \"—\")}</span>\n <div className=\"mid\">\n <div className=\"mnm\">\n <CodeResolved\n code={String(row.rollencodenummer ?? \"\")}\n codetyp={row.rollencodetyp ? String(row.rollencodetyp) : undefined}\n resolvers={resolvers}\n />\n </div>\n {row.messstellenbetreiberEigenschaft ? (\n <div className=\"meig\">\n {row.messstellenbetreiberEigenschaft === \"GRUNDZUSTAENDIGER_MESSSTELLENBETREIBER\"\n ? \"grundzuständig\"\n : humanize(String(row.messstellenbetreiberEigenschaft))}\n </div>\n ) : null}\n </div>\n {gz.startdatum || gz.enddatum ? <ValidityRange start={gz.startdatum} end={gz.enddatum} now={now} /> : null}\n </div>\n );\n}\n","import type { ZonedDateTime } from \"@internationalized/date\";\nimport { TextField, NumberField, Switch, Select, SelectItem, DateField } from \"@conuti-das/prince-ui\";\nimport type { FieldDoc } from \"../types\";\nimport { isIsoDate } from \"../core/datetime\";\nimport { isoToBerlin, berlinToIso } from \"../core/date-edit\";\n\nexport interface EditableValueProps {\n doc: FieldDoc;\n value: unknown;\n onChange: (value: unknown) => void;\n}\n\n/**\n * Schema-getriebenes Eingabe-Widget für ein einzelnes Feld:\n * Enum → Select, Boolean → Switch, Zahl → NumberField, ISO-Datum → DateField\n * (Anzeige in Europe/Berlin, Rückgabe als ISO-UTC), sonst Freitext.\n */\nexport function EditableValue({ doc, value, onChange }: EditableValueProps) {\n const label = doc.translation ?? \"\";\n\n if (doc.enum) {\n return (\n <Select\n aria-label={label}\n selectedKey={value == null ? null : String(value)}\n onSelectionChange={(k) => onChange(k)}\n >\n {doc.enum.values.map((v) => (\n <SelectItem key={v} id={v}>\n {v}\n </SelectItem>\n ))}\n </Select>\n );\n }\n\n if (typeof value === \"boolean\") {\n return (\n <Switch isSelected={value} onChange={onChange}>\n {value ? \"Ja\" : \"Nein\"}\n </Switch>\n );\n }\n\n if (typeof value === \"number\") {\n return <NumberField aria-label={label} value={value} onChange={onChange} />;\n }\n\n if (isIsoDate(value)) {\n return (\n <DateField\n aria-label={label}\n granularity=\"minute\"\n value={isoToBerlin(value)}\n onChange={(z) => z && onChange(berlinToIso(z as ZonedDateTime))}\n />\n );\n }\n\n return <TextField aria-label={label} value={value == null ? \"\" : String(value)} onChange={onChange} />;\n}\n","import { isIsoDate, formatDateDE } from \"../core/datetime\";\n\n/** True for primitives, null, and arrays of primitives (i.e. not nested objects/arrays-of-objects). */\nexport function isScalarish(v: unknown): boolean {\n if (v == null) return true;\n if (Array.isArray(v)) return v.every((x) => x == null || typeof x !== \"object\");\n return typeof v !== \"object\";\n}\n\nexport function displayValue(v: unknown): { text: string; isNull: boolean } {\n if (v == null) return { text: \"—\", isNull: true };\n if (Array.isArray(v)) return { text: v.join(\", \"), isNull: false };\n if (isIsoDate(v)) return { text: formatDateDE(v, { withTime: true }), isNull: false };\n if (typeof v === \"boolean\") return { text: v ? \"Ja\" : \"Nein\", isNull: false };\n return { text: String(v), isNull: false };\n}\n","import { useState } from \"react\";\nimport { Select, SelectItem } from \"@conuti-das/prince-ui\";\nimport type { Bo4eObject } from \"../types\";\nimport type { Bo4eSchema } from \"../schema/load-schema\";\nimport { resolveField, getFieldOrder } from \"../schema/load-schema\";\nimport { SchemaField } from \"./SchemaField\";\nimport { EditableValue } from \"./EditableValue\";\nimport { humanize } from \"../core/humanize\";\nimport { isScalarish, displayValue } from \"./value-format\";\n\nexport interface FullDetailProps {\n schema: Bo4eSchema;\n boTyp: string;\n obj: Bo4eObject;\n editable?: boolean;\n}\n\nexport function FullDetail({ schema, boTyp, obj, editable = false }: FullDetailProps) {\n const [draft, setDraft] = useState<Bo4eObject>(obj);\n const source = editable ? draft : obj;\n const keys = Object.keys(source).filter((k) => isScalarish(source[k]));\n\n if (!editable) {\n return (\n <div className=\"prn-bo-kvgrid\">\n {keys.map((k) => {\n const d = displayValue(obj[k]);\n return (\n <div className=\"prn-bo-kv\" key={k}>\n <span className=\"k\">\n <SchemaField schema={schema} boTyp={boTyp} fieldKey={k} value={obj[k]}>\n <span>{humanize(k)}</span>\n </SchemaField>\n </span>\n <span className=\"v\" data-null={d.isNull} title={d.text}>\n {d.text}\n </span>\n </div>\n );\n })}\n </div>\n );\n }\n\n const setField = (k: string, v: unknown) => setDraft((d) => ({ ...d, [k]: v }));\n const candidates = getFieldOrder(schema, boTyp).filter((k) => !(k in draft));\n\n return (\n <div>\n <div className=\"prn-bo-kvgrid\">\n {keys.map((k) => (\n <div className=\"prn-bo-kv\" key={k}>\n <span className=\"k\">\n <SchemaField schema={schema} boTyp={boTyp} fieldKey={k} value={draft[k]}>\n <span>{humanize(k)}</span>\n </SchemaField>\n </span>\n <span className=\"v\">\n <EditableValue doc={resolveField(schema, boTyp, k)} value={draft[k]} onChange={(v) => setField(k, v)} />\n </span>\n </div>\n ))}\n </div>\n {candidates.length ? (\n <div className=\"prn-bo-addfield\">\n <Select\n aria-label=\"Feld hinzufügen\"\n placeholder=\"+ Feld hinzufügen\"\n selectedKey={null}\n onSelectionChange={(k) => k && setField(String(k), \"\")}\n >\n {candidates.map((c) => (\n <SelectItem key={c} id={c}>\n {humanize(c)}\n </SelectItem>\n ))}\n </Select>\n </div>\n ) : null}\n </div>\n );\n}\n","import { useState, type ReactNode } from \"react\";\nimport type { Bo4eObject } from \"../types\";\nimport type { Bo4eSchema } from \"../schema/load-schema\";\nimport { FullDetail } from \"./FullDetail\";\n\nexport interface SmartObjectCardProps {\n schema: Bo4eSchema;\n boTyp: string;\n obj: Bo4eObject;\n header?: ReactNode;\n children: ReactNode;\n}\n\nexport function SmartObjectCard({ schema, boTyp, obj, header, children }: SmartObjectCardProps) {\n const [full, setFull] = useState(false);\n const [edit, setEdit] = useState(false);\n\n return (\n <div className=\"prn-bo-card\">\n {header}\n {children}\n {full ? (\n <>\n <div className=\"prn-bo-detailbar\">\n <button type=\"button\" className=\"prn-bo-editbtn\" aria-pressed={edit} onClick={() => setEdit((e) => !e)}>\n {edit ? \"Fertig\" : \"Bearbeiten\"}\n </button>\n </div>\n <FullDetail schema={schema} boTyp={boTyp} obj={obj} editable={edit} />\n </>\n ) : (\n <button type=\"button\" className=\"prn-bo-moreb\" onClick={() => setFull(true)}>\n + Alle Details\n </button>\n )}\n </div>\n );\n}\n","import type { Bo4eObject } from \"../../types\";\nimport type { Bo4eSchema } from \"../../schema/load-schema\";\nimport { getFieldOrder } from \"../../schema/load-schema\";\nimport { SchemaField } from \"../SchemaField\";\nimport { humanize } from \"../../core/humanize\";\nimport { isScalarish, displayValue } from \"../value-format\";\n\nexport function GenericBody({ schema, boTyp, obj }: { schema: Bo4eSchema; boTyp: string; obj: Bo4eObject }) {\n const ordered = getFieldOrder(schema, boTyp).filter((k) => k in obj && isScalarish(obj[k]));\n const extra = Object.keys(obj).filter((k) => isScalarish(obj[k]) && !ordered.includes(k));\n const keys = [...ordered, ...extra].slice(0, 6);\n return (\n <div className=\"prn-bo-grp\">\n {keys.map((k) => (\n <div className=\"prn-bo-line\" key={k}>\n <SchemaField schema={schema} boTyp={boTyp} fieldKey={k} value={obj[k]}>\n <span className=\"lk\">{humanize(k)}</span>\n </SchemaField>\n <span className=\"lv\">{displayValue(obj[k]).text}</span>\n </div>\n ))}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\nimport type { Bo4eObject, Bo4eResolvers } from \"../../types\";\nimport type { Bo4eSchema } from \"../../schema/load-schema\";\nimport { IdentityHeader } from \"../IdentityHeader\";\nimport { EnumIcon } from \"../EnumIcon\";\nimport { EnumBadge, type Tone } from \"../EnumBadge\";\nimport { ContactLine, type ContactPerson } from \"../ContactLine\";\nimport { AddressBlock, type Adresse } from \"../AddressBlock\";\nimport { MarktpartnerRow } from \"../MarktpartnerRow\";\nimport { SchemaField } from \"../SchemaField\";\nimport { validityStatus } from \"../../core/validity\";\n\ninterface Gz {\n enddatum?: string;\n}\n\nexport function MarktlokationHeader({ schema, obj }: { schema: Bo4eSchema; obj: Bo4eObject }) {\n const typArr = obj.marktlokationsTyp as { typ?: string }[] | undefined;\n const typ = typArr?.[0]?.typ;\n const trailing = typ === \"STANDARD_MARKTLOKATION\" ? \"Standard\" : typ;\n return (\n <IdentityHeader\n icon={\n <SchemaField schema={schema} boTyp=\"MARKTLOKATION\" fieldKey=\"sparte\" value={obj.sparte}>\n <EnumIcon enumName=\"SPARTE\" value={String(obj.sparte)} />\n </SchemaField>\n }\n title={`MaLo ${String(obj.marktlokationsId ?? \"\")}`}\n subtitle=\"Marktlokation\"\n trailing={trailing}\n />\n );\n}\n\nexport function MarktlokationBody({\n schema,\n obj,\n resolvers,\n now,\n}: {\n schema: Bo4eSchema;\n obj: Bo4eObject;\n resolvers?: Bo4eResolvers;\n now?: Date;\n}) {\n const rollen = (obj.marktrollen as Bo4eObject[] | undefined) ?? [];\n const expired = (r: Bo4eObject) =>\n validityStatus({ enddatum: (r.gueltigkeitszeitraum as Gz | undefined)?.enddatum }, now) === \"abgelaufen\" ? 1 : 0;\n const sorted = [...rollen].sort((a, b) => expired(a) - expired(b));\n const endkunde = obj.endkunde as (ContactPerson & { partneradresse?: Adresse }) | undefined;\n\n const badge = (key: string, tone: Tone, label: string, icon?: ReactNode) => (\n <SchemaField schema={schema} boTyp=\"MARKTLOKATION\" fieldKey={key} value={obj[key]}>\n <EnumBadge tone={tone} icon={icon}>\n {label}\n </EnumBadge>\n </SchemaField>\n );\n\n return (\n <>\n <div className=\"prn-bo-grp prn-bo-badges\">\n {obj.energierichtung\n ? badge(\n \"energierichtung\",\n \"neutral\",\n obj.energierichtung === \"AUSSP\" ? \"Verbrauch\" : \"Erzeugung\",\n <EnumIcon enumName=\"ENERGIERICHTUNG\" value={String(obj.energierichtung)} />,\n )\n : null}\n {obj.bilanzierungsmethode ? badge(\"bilanzierungsmethode\", \"neutral\", String(obj.bilanzierungsmethode)) : null}\n {obj.netzebene ? badge(\"netzebene\", \"neutral\", String(obj.netzebene)) : null}\n {obj.sperrstatus\n ? badge(\"sperrstatus\", obj.sperrstatus === \"ENTSPERRT\" ? \"positive\" : \"negative\", String(obj.sperrstatus).toLowerCase())\n : null}\n </div>\n {endkunde ? (\n <div className=\"prn-bo-grp\">\n <div className=\"prn-bo-grph\">Endkunde</div>\n <ContactLine person={endkunde} />\n {endkunde.partneradresse ? <AddressBlock adresse={endkunde.partneradresse} /> : null}\n </div>\n ) : null}\n {sorted.length ? (\n <div className=\"prn-bo-grp\">\n <div className=\"prn-bo-grph\">Marktrollen · {sorted.length}</div>\n {sorted.map((r, i) => (\n <MarktpartnerRow key={i} row={r} resolvers={resolvers} now={now} />\n ))}\n </div>\n ) : null}\n </>\n );\n}\n","import type { Bo4eObject, Bo4eResolvers } from \"../types\";\nimport type { Bo4eSchema } from \"../schema/load-schema\";\nimport { SmartObjectCard } from \"./SmartObjectCard\";\nimport { GenericBody } from \"./renderers/generic\";\nimport { MarktlokationHeader, MarktlokationBody } from \"./renderers/marktlokation\";\nimport \"./bo4e.css\";\n\nexport interface SmartObjectViewProps {\n schema: Bo4eSchema;\n obj: Bo4eObject;\n resolvers?: Bo4eResolvers;\n now?: Date;\n}\n\nexport function SmartObjectView({ schema, obj, resolvers, now }: SmartObjectViewProps) {\n const boTyp = obj.boTyp ?? \"UNKNOWN\";\n if (boTyp === \"MARKTLOKATION\") {\n return (\n <SmartObjectCard\n schema={schema}\n boTyp={boTyp}\n obj={obj}\n header={<MarktlokationHeader schema={schema} obj={obj} />}\n >\n <MarktlokationBody schema={schema} obj={obj} resolvers={resolvers} now={now} />\n </SmartObjectCard>\n );\n }\n return (\n <SmartObjectCard schema={schema} boTyp={boTyp} obj={obj}>\n <GenericBody schema={schema} boTyp={boTyp} obj={obj} />\n </SmartObjectCard>\n );\n}\n","import { useMemo, useState } from \"react\";\nimport type { Bo4eResolvers } from \"./types\";\nimport type { Bo4eSchema } from \"./schema/load-schema\";\nimport { normalizeToCDoc, type SydocInput } from \"./normalize\";\nimport { scanAnomalies } from \"./core/anomalies\";\nimport { humanize } from \"./core/humanize\";\nimport { SmartObjectView } from \"./view/SmartObjectView\";\nimport \"./view/bo4e.css\";\n\nconst TRANS = \"__TRANS__\";\nconst ZUSATZ = \"__ZUSATZ__\";\n\nexport interface SydocViewProps {\n /** Full cDoc, a single BO, or an array of BOs. */\n doc: SydocInput;\n schema: Bo4eSchema;\n resolvers?: Bo4eResolvers;\n now?: Date;\n}\n\nexport function SydocView({ doc, schema, resolvers, now }: SydocViewProps) {\n const cdoc = normalizeToCDoc(doc);\n const directions = Object.keys(cdoc.content);\n const [dir, setDir] = useState<string>(() => (directions.includes(\"OUTBOUND\") ? \"OUTBOUND\" : (directions[0] ?? \"\")));\n const [tab, setTab] = useState<string | null>(null);\n\n const dd = cdoc.content[dir];\n const anomalies = useMemo(() => (dd ? scanAnomalies(dd, { now }) : []), [dd, now]);\n\n if (!dd) return null;\n\n const tabs = [\n ...Object.keys(dd.stammdaten),\n ...(dd.transaktionsdaten ? [TRANS] : []),\n ...(dd.zusatzdaten ? [ZUSATZ] : []),\n ];\n const active = tab && tabs.includes(tab) ? tab : (tabs[0] ?? \"\");\n\n const tabLabel = (t: string) => (t === TRANS ? \"Transaktionsdaten\" : t === ZUSATZ ? \"Zusatzdaten\" : humanize(t));\n\n const renderActive = () => {\n if (active === TRANS && dd.transaktionsdaten) {\n return <SmartObjectView schema={schema} obj={dd.transaktionsdaten} resolvers={resolvers} now={now} />;\n }\n if (active === ZUSATZ && dd.zusatzdaten) {\n return <SmartObjectView schema={schema} obj={dd.zusatzdaten} resolvers={resolvers} now={now} />;\n }\n const list = dd.stammdaten[active] ?? [];\n return list.map((obj, i) => <SmartObjectView key={i} schema={schema} obj={obj} resolvers={resolvers} now={now} />);\n };\n\n return (\n <div className=\"prn-bo-app\">\n {directions.length > 1 ? (\n <div className=\"prn-bo-tabs\" role=\"tablist\" aria-label=\"Richtung\">\n {directions.map((d) => (\n <button\n key={d}\n type=\"button\"\n className=\"prn-bo-tab\"\n role=\"tab\"\n aria-selected={d === dir}\n onClick={() => {\n setDir(d);\n setTab(null);\n }}\n >\n {d}\n </button>\n ))}\n </div>\n ) : null}\n\n {anomalies.length ? (\n <details className=\"prn-bo-warn\">\n <summary>{anomalies.length} Auffälligkeiten erkannt</summary>\n <ul>\n {anomalies.map((a, i) => (\n <li key={i}>\n {a.message} <code>— {a.path}</code>\n </li>\n ))}\n </ul>\n </details>\n ) : null}\n\n <div className=\"prn-bo-tabs\" role=\"tablist\" aria-label=\"Objekte\">\n {tabs.map((t) => {\n const list = dd.stammdaten[t];\n return (\n <button\n key={t}\n type=\"button\"\n className=\"prn-bo-tab\"\n role=\"tab\"\n aria-selected={t === active}\n onClick={() => setTab(t)}\n >\n {tabLabel(t)}\n {list ? ` (${list.length})` : \"\"}\n </button>\n );\n })}\n </div>\n\n <div>{renderActive()}</div>\n </div>\n );\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@conuti-das/prince-ui-bo4e",
3
+ "version": "0.3.0",
4
+ "description": "Smart-Viewer/-Editor für BO4E-cDoc (Marktkommunikation) auf prince-ui.",
5
+ "license": "MIT",
6
+ "private": false,
7
+ "type": "module",
8
+ "sideEffects": [
9
+ "*.css"
10
+ ],
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "main": "./dist/index.js",
15
+ "module": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ },
22
+ "./styles.css": "./dist/index.css",
23
+ "./package.json": "./package.json"
24
+ },
25
+ "dependencies": {
26
+ "@internationalized/date": "3.12.2",
27
+ "@conuti-das/prince-ui-tokens": "0.4.1"
28
+ },
29
+ "peerDependencies": {
30
+ "react": ">=18 <20",
31
+ "react-dom": ">=18 <20",
32
+ "react-aria-components": ">=1",
33
+ "@conuti-das/prince-ui": "0.9.3"
34
+ },
35
+ "devDependencies": {
36
+ "react-aria-components": "^1.19.0",
37
+ "@testing-library/jest-dom": "^6.6.3",
38
+ "@testing-library/react": "^16.0.1",
39
+ "@testing-library/user-event": "^14.5.2",
40
+ "@types/react": "^18.3.12",
41
+ "@types/react-dom": "^18.3.1",
42
+ "@vitest/coverage-v8": "^2.1.5",
43
+ "jsdom": "^25.0.1",
44
+ "react": "^18.3.1",
45
+ "react-dom": "^18.3.1",
46
+ "tsup": "^8.3.0",
47
+ "typescript": "^5.6.3",
48
+ "vitest": "^2.1.5",
49
+ "@conuti-das/prince-ui": "0.9.3"
50
+ },
51
+ "publishConfig": {
52
+ "registry": "https://registry.npmjs.org"
53
+ },
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "git+https://github.com/conuti-das/prince-ui.git",
57
+ "directory": "packages/bo4e"
58
+ },
59
+ "scripts": {
60
+ "build": "tsup",
61
+ "dev": "tsup --watch",
62
+ "typecheck": "tsc --noEmit",
63
+ "test": "vitest run",
64
+ "test:watch": "vitest"
65
+ }
66
+ }