@burdenoff/microfe-bigconsole 2026.730.3 → 2026.730.5

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 (34) hide show
  1. package/dist/bigconsole/assistant/attachmentExtract.js +50 -0
  2. package/dist/bigconsole/assistant/attachmentExtract.js.map +1 -0
  3. package/dist/bigconsole/assistant/createSandboxAssistantTransport.js +174 -173
  4. package/dist/bigconsole/assistant/createSandboxAssistantTransport.js.map +1 -1
  5. package/dist/bigconsole/components/embed/EmbedErrorBoundary.js +25 -0
  6. package/dist/bigconsole/components/embed/EmbedErrorBoundary.js.map +1 -0
  7. package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js +36 -0
  8. package/dist/bigconsole/components/embed/EmbedWidgetRenderer.js.map +1 -0
  9. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js +62 -0
  10. package/dist/bigconsole/components/embed/ReadOnlyDashboardRenderer.js.map +1 -0
  11. package/dist/bigconsole/components/embed/index.js +7 -0
  12. package/dist/bigconsole/components/embed/renderer-manifest.js +77 -0
  13. package/dist/bigconsole/components/embed/renderer-manifest.js.map +1 -0
  14. package/dist/bigconsole/components/embed/types.js +6 -0
  15. package/dist/bigconsole/components/embed/types.js.map +1 -0
  16. package/dist/bigconsole/components/embed/validate.js +29 -0
  17. package/dist/bigconsole/components/embed/validate.js.map +1 -0
  18. package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js +34 -0
  19. package/dist/bigconsole/components/embed/widgets/KpiComparisonEmbed.js.map +1 -0
  20. package/dist/bigconsole/components/embed/widgets/ListEmbed.js +36 -0
  21. package/dist/bigconsole/components/embed/widgets/ListEmbed.js.map +1 -0
  22. package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js +20 -0
  23. package/dist/bigconsole/components/embed/widgets/MetricCardEmbed.js.map +1 -0
  24. package/dist/bigconsole/components/embed/widgets/TableEmbed.js +40 -0
  25. package/dist/bigconsole/components/embed/widgets/TableEmbed.js.map +1 -0
  26. package/dist/bigconsole/components/embed/widgets/TextEmbed.js +20 -0
  27. package/dist/bigconsole/components/embed/widgets/TextEmbed.js.map +1 -0
  28. package/dist/bigconsole/components/embed/widgets/shared.js +29 -0
  29. package/dist/bigconsole/components/embed/widgets/shared.js.map +1 -0
  30. package/dist/node_modules/pdfjs-dist/build/pdf.js +12493 -0
  31. package/dist/node_modules/pdfjs-dist/build/pdf.js.map +1 -0
  32. package/dist/node_modules/xlsx/xlsx.js +16412 -0
  33. package/dist/node_modules/xlsx/xlsx.js.map +1 -0
  34. package/package.json +8 -2
@@ -0,0 +1,36 @@
1
+ import { asArray as e, asRecord as t, asString as n, displayValue as r } from "./shared.js";
2
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ //#region src/bigconsole/components/embed/widgets/ListEmbed.tsx
4
+ var o = 500;
5
+ function s({ widget: s }) {
6
+ let c = t(s.config), l = t(s.data), u = n(c.primaryField ?? c.titleField, "title"), d = n(c.secondaryField ?? c.subtitleField, "subtitle"), f = e(l.items).map((e) => t(e)).slice(0, o);
7
+ return f.length === 0 ? /* @__PURE__ */ i("div", {
8
+ className: "flex h-full items-center justify-center bg-surface p-4 text-sm text-secondary",
9
+ children: "No items"
10
+ }) : /* @__PURE__ */ a("div", {
11
+ className: "h-full w-full overflow-auto bg-surface",
12
+ children: [s.title && /* @__PURE__ */ i("div", {
13
+ className: "px-3 py-2 text-sm font-medium text-primary",
14
+ children: s.title
15
+ }), /* @__PURE__ */ i("ul", {
16
+ className: "divide-y divide-border-default",
17
+ children: f.map((e, t) => {
18
+ let n = r(e[u]), o = r(e[d]);
19
+ return /* @__PURE__ */ a("li", {
20
+ className: "px-3 py-2",
21
+ children: [/* @__PURE__ */ i("div", {
22
+ className: "text-sm text-primary",
23
+ children: n
24
+ }), o && /* @__PURE__ */ i("div", {
25
+ className: "text-xs text-secondary",
26
+ children: o
27
+ })]
28
+ }, t);
29
+ })
30
+ })]
31
+ });
32
+ }
33
+ //#endregion
34
+ export { s as ListEmbed };
35
+
36
+ //# sourceMappingURL=ListEmbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListEmbed.js","names":[],"sources":["../../../../../src/bigconsole/components/embed/widgets/ListEmbed.tsx"],"sourcesContent":["/** Read-only list embed renderer (BOFF-2986). */\nimport type { EmbedWidgetRenderProps } from '../types';\nimport { asRecord, asArray, asString, displayValue } from './shared';\n\nconst MAX_ITEMS = 500;\n\nexport function ListEmbed({ widget }: EmbedWidgetRenderProps) {\n const config = asRecord(widget.config);\n const data = asRecord(widget.data);\n const primaryKey = asString(config.primaryField ?? config.titleField, 'title');\n const secondaryKey = asString(config.secondaryField ?? config.subtitleField, 'subtitle');\n\n const items = asArray(data.items)\n .map((item) => asRecord(item))\n .slice(0, MAX_ITEMS);\n\n if (items.length === 0) {\n return (\n <div className=\"flex h-full items-center justify-center bg-surface p-4 text-sm text-secondary\">No items</div>\n );\n }\n\n return (\n <div className=\"h-full w-full overflow-auto bg-surface\">\n {widget.title && <div className=\"px-3 py-2 text-sm font-medium text-primary\">{widget.title}</div>}\n <ul className=\"divide-y divide-border-default\">\n {items.map((item, i) => {\n const primary = displayValue(item[primaryKey]);\n const secondary = displayValue(item[secondaryKey]);\n return (\n <li key={i} className=\"px-3 py-2\">\n <div className=\"text-sm text-primary\">{primary}</div>\n {secondary && <div className=\"text-xs text-secondary\">{secondary}</div>}\n </li>\n );\n })}\n </ul>\n </div>\n );\n}\n"],"mappings":";;;AAIA,IAAM,IAAY;AAElB,SAAgB,EAAU,EAAE,aAAkC;CAC5D,IAAM,IAAS,EAAS,EAAO,OAAO,EAChC,IAAO,EAAS,EAAO,KAAK,EAC5B,IAAa,EAAS,EAAO,gBAAgB,EAAO,YAAY,QAAQ,EACxE,IAAe,EAAS,EAAO,kBAAkB,EAAO,eAAe,WAAW,EAElF,IAAQ,EAAQ,EAAK,MAAM,CAC9B,KAAK,MAAS,EAAS,EAAK,CAAC,CAC7B,MAAM,GAAG,EAAU;AAQtB,QANI,EAAM,WAAW,IAEjB,kBAAC,OAAD;EAAK,WAAU;YAAgF;EAAc,CAAA,GAK/G,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,EAAO,SAAS,kBAAC,OAAD;GAAK,WAAU;aAA8C,EAAO;GAAY,CAAA,EACjG,kBAAC,MAAD;GAAI,WAAU;aACX,EAAM,KAAK,GAAM,MAAM;IACtB,IAAM,IAAU,EAAa,EAAK,GAAY,EACxC,IAAY,EAAa,EAAK,GAAc;AAClD,WACE,kBAAC,MAAD;KAAY,WAAU;eAAtB,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAwB;MAAc,CAAA,EACpD,KAAa,kBAAC,OAAD;MAAK,WAAU;gBAA0B;MAAgB,CAAA,CACpE;OAHI,EAGJ;KAEP;GACC,CAAA,CACD"}
@@ -0,0 +1,20 @@
1
+ import { asFiniteNumber as e, asRecord as t, asString as n, formatNumber as r } from "./shared.js";
2
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ //#region src/bigconsole/components/embed/widgets/MetricCardEmbed.tsx
4
+ function o({ widget: o }) {
5
+ let s = t(o.config), c = e(t(o.data).value ?? s.value), l = n(s.label ?? o.title, "Metric"), u = c === null ? "—" : r(c, s);
6
+ return /* @__PURE__ */ a("div", {
7
+ className: "flex h-full w-full flex-col justify-center gap-1 bg-surface p-4",
8
+ children: [/* @__PURE__ */ i("div", {
9
+ className: "text-xs uppercase tracking-wide text-secondary",
10
+ children: l
11
+ }), /* @__PURE__ */ i("div", {
12
+ className: "text-3xl font-semibold text-primary",
13
+ children: u
14
+ })]
15
+ });
16
+ }
17
+ //#endregion
18
+ export { o as MetricCardEmbed };
19
+
20
+ //# sourceMappingURL=MetricCardEmbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricCardEmbed.js","names":[],"sources":["../../../../../src/bigconsole/components/embed/widgets/MetricCardEmbed.tsx"],"sourcesContent":["/** Read-only metric card embed renderer (BOFF-2986). */\nimport type { EmbedWidgetRenderProps } from '../types';\nimport { asRecord, asString, asFiniteNumber, formatNumber } from './shared';\n\nexport function MetricCardEmbed({ widget }: EmbedWidgetRenderProps) {\n const config = asRecord(widget.config);\n const data = asRecord(widget.data);\n const rawValue = asFiniteNumber(data.value ?? config.value);\n const label = asString(config.label ?? widget.title, 'Metric');\n const display = rawValue !== null ? formatNumber(rawValue, config) : '—';\n\n return (\n <div className=\"flex h-full w-full flex-col justify-center gap-1 bg-surface p-4\">\n <div className=\"text-xs uppercase tracking-wide text-secondary\">{label}</div>\n <div className=\"text-3xl font-semibold text-primary\">{display}</div>\n </div>\n );\n}\n"],"mappings":";;;AAIA,SAAgB,EAAgB,EAAE,aAAkC;CAClE,IAAM,IAAS,EAAS,EAAO,OAAO,EAEhC,IAAW,EADJ,EAAS,EAAO,KAAK,CACG,SAAS,EAAO,MAAM,EACrD,IAAQ,EAAS,EAAO,SAAS,EAAO,OAAO,SAAS,EACxD,IAAU,MAAa,OAAwC,MAAjC,EAAa,GAAU,EAAO;AAElE,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aAAkD;GAAY,CAAA,EAC7E,kBAAC,OAAD;GAAK,WAAU;aAAuC;GAAc,CAAA,CAChE"}
@@ -0,0 +1,40 @@
1
+ import { asArray as e, asRecord as t, asString as n, displayValue as r } from "./shared.js";
2
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
3
+ //#region src/bigconsole/components/embed/widgets/TableEmbed.tsx
4
+ var o = 500;
5
+ function s(r, i) {
6
+ let a = e(r.columns).map((e) => t(e)).map((e) => ({
7
+ key: n(e.key),
8
+ label: n(e.label ?? e.key)
9
+ })).filter((e) => e.key.length > 0);
10
+ return a.length > 0 ? a : Object.keys(i).map((e) => ({
11
+ key: e,
12
+ label: e
13
+ }));
14
+ }
15
+ function c({ widget: n }) {
16
+ let c = t(n.config), l = e(t(n.data).rows).map((e) => t(e)).slice(0, o), u = s(c, l[0] ?? {});
17
+ return u.length === 0 ? /* @__PURE__ */ i("div", {
18
+ className: "flex h-full items-center justify-center bg-surface p-4 text-sm text-secondary",
19
+ children: "No data"
20
+ }) : /* @__PURE__ */ a("div", {
21
+ className: "h-full w-full overflow-auto bg-surface",
22
+ children: [n.title && /* @__PURE__ */ i("div", {
23
+ className: "px-3 py-2 text-sm font-medium text-primary",
24
+ children: n.title
25
+ }), /* @__PURE__ */ a("table", {
26
+ className: "w-full border-collapse text-sm",
27
+ children: [/* @__PURE__ */ i("thead", { children: /* @__PURE__ */ i("tr", { children: u.map((e) => /* @__PURE__ */ i("th", {
28
+ className: "border-b border-border-default px-3 py-2 text-left font-medium text-secondary",
29
+ children: e.label
30
+ }, e.key)) }) }), /* @__PURE__ */ i("tbody", { children: l.map((e, t) => /* @__PURE__ */ i("tr", { children: u.map((t) => /* @__PURE__ */ i("td", {
31
+ className: "border-b border-border-default px-3 py-2 text-primary",
32
+ children: r(e[t.key])
33
+ }, t.key)) }, t)) })]
34
+ })]
35
+ });
36
+ }
37
+ //#endregion
38
+ export { c as TableEmbed };
39
+
40
+ //# sourceMappingURL=TableEmbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableEmbed.js","names":[],"sources":["../../../../../src/bigconsole/components/embed/widgets/TableEmbed.tsx"],"sourcesContent":["/** Read-only table embed renderer (BOFF-2986). */\nimport type { EmbedWidgetRenderProps } from '../types';\nimport { asRecord, asArray, asString, displayValue } from './shared';\n\ninterface Column {\n key: string;\n label: string;\n}\n\n/** Hard client-side cap; the publication builder is expected to page/limit rows. */\nconst MAX_ROWS = 500;\n\nfunction readColumns(config: Record<string, unknown>, firstRow: Record<string, unknown>): Column[] {\n const configured = asArray(config.columns)\n .map((c) => asRecord(c))\n .map((c) => ({ key: asString(c.key), label: asString(c.label ?? c.key) }))\n .filter((c) => c.key.length > 0);\n if (configured.length > 0) return configured;\n // Derive from the first row when the publication didn't pin columns.\n return Object.keys(firstRow).map((key) => ({ key, label: key }));\n}\n\nexport function TableEmbed({ widget }: EmbedWidgetRenderProps) {\n const config = asRecord(widget.config);\n const data = asRecord(widget.data);\n const rows = asArray(data.rows)\n .map((r) => asRecord(r))\n .slice(0, MAX_ROWS);\n const columns = readColumns(config, rows[0] ?? {});\n\n if (columns.length === 0) {\n return <div className=\"flex h-full items-center justify-center bg-surface p-4 text-sm text-secondary\">No data</div>;\n }\n\n return (\n <div className=\"h-full w-full overflow-auto bg-surface\">\n {widget.title && <div className=\"px-3 py-2 text-sm font-medium text-primary\">{widget.title}</div>}\n <table className=\"w-full border-collapse text-sm\">\n <thead>\n <tr>\n {columns.map((col) => (\n <th\n key={col.key}\n className=\"border-b border-border-default px-3 py-2 text-left font-medium text-secondary\"\n >\n {col.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, i) => (\n <tr key={i}>\n {columns.map((col) => (\n <td key={col.key} className=\"border-b border-border-default px-3 py-2 text-primary\">\n {displayValue(row[col.key])}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n"],"mappings":";;;AAUA,IAAM,IAAW;AAEjB,SAAS,EAAY,GAAiC,GAA6C;CACjG,IAAM,IAAa,EAAQ,EAAO,QAAQ,CACvC,KAAK,MAAM,EAAS,EAAE,CAAC,CACvB,KAAK,OAAO;EAAE,KAAK,EAAS,EAAE,IAAI;EAAE,OAAO,EAAS,EAAE,SAAS,EAAE,IAAI;EAAE,EAAE,CACzE,QAAQ,MAAM,EAAE,IAAI,SAAS,EAAE;AAGlC,QAFI,EAAW,SAAS,IAAU,IAE3B,OAAO,KAAK,EAAS,CAAC,KAAK,OAAS;EAAE;EAAK,OAAO;EAAK,EAAE;;AAGlE,SAAgB,EAAW,EAAE,aAAkC;CAC7D,IAAM,IAAS,EAAS,EAAO,OAAO,EAEhC,IAAO,EADA,EAAS,EAAO,KAAK,CACR,KAAK,CAC5B,KAAK,MAAM,EAAS,EAAE,CAAC,CACvB,MAAM,GAAG,EAAS,EACf,IAAU,EAAY,GAAQ,EAAK,MAAM,EAAE,CAAC;AAMlD,QAJI,EAAQ,WAAW,IACd,kBAAC,OAAD;EAAK,WAAU;YAAgF;EAAa,CAAA,GAInH,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,EAAO,SAAS,kBAAC,OAAD;GAAK,WAAU;aAA8C,EAAO;GAAY,CAAA,EACjG,kBAAC,SAAD;GAAO,WAAU;aAAjB,CACE,kBAAC,SAAD,EAAA,UACE,kBAAC,MAAD,EAAA,UACG,EAAQ,KAAK,MACZ,kBAAC,MAAD;IAEE,WAAU;cAET,EAAI;IACF,EAJE,EAAI,IAIN,CACL,EACC,CAAA,EACC,CAAA,EACR,kBAAC,SAAD,EAAA,UACG,EAAK,KAAK,GAAK,MACd,kBAAC,MAAD,EAAA,UACG,EAAQ,KAAK,MACZ,kBAAC,MAAD;IAAkB,WAAU;cACzB,EAAa,EAAI,EAAI,KAAK;IACxB,EAFI,EAAI,IAER,CACL,EACC,EANI,EAMJ,CACL,EACI,CAAA,CACF;KACJ"}
@@ -0,0 +1,20 @@
1
+ import { asRecord as e, asString as t } from "./shared.js";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ //#region src/bigconsole/components/embed/widgets/TextEmbed.tsx
4
+ function i({ widget: i }) {
5
+ let a = e(i.config), o = t(a.content ?? a.text ?? a.markdown);
6
+ return /* @__PURE__ */ r("div", {
7
+ className: "h-full w-full overflow-auto bg-surface p-4",
8
+ children: [i.title && /* @__PURE__ */ n("div", {
9
+ className: "mb-2 text-sm font-medium text-primary",
10
+ children: i.title
11
+ }), /* @__PURE__ */ n("div", {
12
+ className: "whitespace-pre-wrap break-words text-sm text-primary",
13
+ children: o
14
+ })]
15
+ });
16
+ }
17
+ //#endregion
18
+ export { i as TextEmbed };
19
+
20
+ //# sourceMappingURL=TextEmbed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextEmbed.js","names":[],"sources":["../../../../../src/bigconsole/components/embed/widgets/TextEmbed.tsx"],"sourcesContent":["/**\n * Read-only text embed renderer (BOFF-2986).\n *\n * Renders the text content as PLAIN TEXT — React escapes it, so no HTML/script\n * from the content can execute. Rich Markdown/HTML rendering is deferred until a\n * vetted sanitizer is wired; until then plain text is the safe default rather\n * than `dangerouslySetInnerHTML`.\n */\nimport type { EmbedWidgetRenderProps } from '../types';\nimport { asRecord, asString } from './shared';\n\nexport function TextEmbed({ widget }: EmbedWidgetRenderProps) {\n const config = asRecord(widget.config);\n const content = asString(config.content ?? config.text ?? config.markdown);\n\n return (\n <div className=\"h-full w-full overflow-auto bg-surface p-4\">\n {widget.title && <div className=\"mb-2 text-sm font-medium text-primary\">{widget.title}</div>}\n <div className=\"whitespace-pre-wrap break-words text-sm text-primary\">{content}</div>\n </div>\n );\n}\n"],"mappings":";;;AAWA,SAAgB,EAAU,EAAE,aAAkC;CAC5D,IAAM,IAAS,EAAS,EAAO,OAAO,EAChC,IAAU,EAAS,EAAO,WAAW,EAAO,QAAQ,EAAO,SAAS;AAE1E,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,EAAO,SAAS,kBAAC,OAAD;GAAK,WAAU;aAAyC,EAAO;GAAY,CAAA,EAC5F,kBAAC,OAAD;GAAK,WAAU;aAAwD;GAAc,CAAA,CACjF"}
@@ -0,0 +1,29 @@
1
+ //#region src/bigconsole/components/embed/widgets/shared.ts
2
+ function e(e, t = "") {
3
+ return typeof e == "string" ? e : t;
4
+ }
5
+ function t(e) {
6
+ if (typeof e == "number" && Number.isFinite(e)) return e;
7
+ if (typeof e == "string" && e.trim() !== "") {
8
+ let t = Number(e);
9
+ if (Number.isFinite(t)) return t;
10
+ }
11
+ return null;
12
+ }
13
+ function n(e) {
14
+ return Array.isArray(e) ? e : [];
15
+ }
16
+ function r(e) {
17
+ return e && typeof e == "object" && !Array.isArray(e) ? e : {};
18
+ }
19
+ function i(e) {
20
+ return e == null ? "" : typeof e == "string" ? e : typeof e == "number" ? Number.isFinite(e) ? String(e) : "" : typeof e == "boolean" ? e ? "true" : "false" : "";
21
+ }
22
+ function a(n, r) {
23
+ let i = t(r.decimals), a = e(r.prefix), o = e(r.suffix);
24
+ return `${a}${i === null ? String(n) : n.toFixed(Math.min(Math.max(i, 0), 10))}${o}`;
25
+ }
26
+ //#endregion
27
+ export { n as asArray, t as asFiniteNumber, r as asRecord, e as asString, i as displayValue, a as formatNumber };
28
+
29
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","names":[],"sources":["../../../../../src/bigconsole/components/embed/widgets/shared.ts"],"sourcesContent":["/**\n * Defensive value coercion for embed widget renderers (BOFF-2986).\n *\n * The render model is sanitized by the publication builder, but the renderer\n * re-narrows every value it reads: an embedded widget is anonymous, untrusted\n * customer-facing surface, so we never assume a field is the type we expect.\n */\n\nexport function asString(value: unknown, fallback = ''): string {\n return typeof value === 'string' ? value : fallback;\n}\n\nexport function asFiniteNumber(value: unknown): number | null {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string' && value.trim() !== '') {\n const n = Number(value);\n if (Number.isFinite(n)) return n;\n }\n return null;\n}\n\nexport function asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nexport function asRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === 'object' && !Array.isArray(value) ? (value as Record<string, unknown>) : {};\n}\n\n/**\n * Render an arbitrary cell value as a display string. Objects/arrays collapse to\n * an empty string rather than `[object Object]`, so no internal structure leaks.\n */\nexport function displayValue(value: unknown): string {\n if (value === null || value === undefined) return '';\n if (typeof value === 'string') return value;\n if (typeof value === 'number') return Number.isFinite(value) ? String(value) : '';\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n return '';\n}\n\n/** Format a number with the widget's optional locale/format hints, safely. */\nexport function formatNumber(value: number, config: Record<string, unknown>): string {\n const decimals = asFiniteNumber(config.decimals);\n const prefix = asString(config.prefix);\n const suffix = asString(config.suffix);\n const fixed = decimals !== null ? value.toFixed(Math.min(Math.max(decimals, 0), 10)) : String(value);\n return `${prefix}${fixed}${suffix}`;\n}\n"],"mappings":";AAQA,SAAgB,EAAS,GAAgB,IAAW,IAAY;AAC9D,QAAO,OAAO,KAAU,WAAW,IAAQ;;AAG7C,SAAgB,EAAe,GAA+B;AAC5D,KAAI,OAAO,KAAU,YAAY,OAAO,SAAS,EAAM,CAAE,QAAO;AAChE,KAAI,OAAO,KAAU,YAAY,EAAM,MAAM,KAAK,IAAI;EACpD,IAAM,IAAI,OAAO,EAAM;AACvB,MAAI,OAAO,SAAS,EAAE,CAAE,QAAO;;AAEjC,QAAO;;AAGT,SAAgB,EAAQ,GAA2B;AACjD,QAAO,MAAM,QAAQ,EAAM,GAAG,IAAQ,EAAE;;AAG1C,SAAgB,EAAS,GAAyC;AAChE,QAAO,KAAS,OAAO,KAAU,YAAY,CAAC,MAAM,QAAQ,EAAM,GAAI,IAAoC,EAAE;;AAO9G,SAAgB,EAAa,GAAwB;AAKnD,QAJI,KAAU,OAAoC,KAC9C,OAAO,KAAU,WAAiB,IAClC,OAAO,KAAU,WAAiB,OAAO,SAAS,EAAM,GAAG,OAAO,EAAM,GAAG,KAC3E,OAAO,KAAU,YAAkB,IAAQ,SAAS,UACjD;;AAIT,SAAgB,EAAa,GAAe,GAAyC;CACnF,IAAM,IAAW,EAAe,EAAO,SAAS,EAC1C,IAAS,EAAS,EAAO,OAAO,EAChC,IAAS,EAAS,EAAO,OAAO;AAEtC,QAAO,GAAG,IADI,MAAa,OAA4D,OAAO,EAAM,GAAlE,EAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAU,EAAE,EAAE,GAAG,CAAC,GACzD"}