@ovalbee/reportifact 0.0.2 → 0.0.3

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 (59) hide show
  1. package/README.md +15 -15
  2. package/dist/{Chart.vue_vue_type_style_index_0_lang-Bp14Es_r.js → Chart.vue_vue_type_style_index_0_lang-Bxrsp8Oz.js} +53 -43
  3. package/dist/{Chart.vue_vue_type_style_index_0_lang-Dj7m6i3v.cjs → Chart.vue_vue_type_style_index_0_lang-mN1IaQ_U.cjs} +1 -1
  4. package/dist/ImageGallery.vue_vue_type_style_index_0_lang-Ak_OUL_c.js +197 -0
  5. package/dist/ImageGallery.vue_vue_type_style_index_0_lang-Ch0UPxhs.cjs +1 -0
  6. package/dist/MetricCallout.vue_vue_type_style_index_0_lang-ANFFq7CE.js +62 -0
  7. package/dist/MetricCallout.vue_vue_type_style_index_0_lang-CT9lFI28.cjs +1 -0
  8. package/dist/MetricCards.vue_vue_type_style_index_0_lang-1hn2BMbU.js +46 -0
  9. package/dist/MetricCards.vue_vue_type_style_index_0_lang-BDU7pisC.cjs +1 -0
  10. package/dist/MetricsTable.vue_vue_type_style_index_0_lang-BfxK3vcz.js +140 -0
  11. package/dist/MetricsTable.vue_vue_type_style_index_0_lang-CS7xiHRk.cjs +1 -0
  12. package/dist/{Timeline.vue_vue_type_style_index_0_lang-BTA6fIp9.js → Timeline.vue_vue_type_style_index_0_lang-EmkZbKjQ.js} +9 -3
  13. package/dist/{Timeline.vue_vue_type_style_index_0_lang-CZ8Y2pXG.cjs → Timeline.vue_vue_type_style_index_0_lang-HOC43_F3.cjs} +2 -2
  14. package/dist/WidgetWrapper.vue_vue_type_style_index_0_lang-BY2t_Hvs.cjs +1 -0
  15. package/dist/WidgetWrapper.vue_vue_type_style_index_0_lang-BbnW8GXT.js +72 -0
  16. package/dist/portable/contracts.d.ts +6 -1
  17. package/dist/reportifact.cjs +24 -24
  18. package/dist/reportifact.js +1408 -1403
  19. package/dist/style.css +1 -1
  20. package/dist/widgets/Chart.vue.d.ts +7 -4
  21. package/dist/widgets/ImageGallery.vue.d.ts +7 -4
  22. package/dist/widgets/Markdown.vue.d.ts +1 -1
  23. package/dist/widgets/MetricCallout.vue.d.ts +5 -2
  24. package/dist/widgets/MetricCards.vue.d.ts +6 -3
  25. package/dist/widgets/MetricsTable.vue.d.ts +7 -4
  26. package/dist/widgets/ModelClassComparison.vue.d.ts +1 -1
  27. package/dist/widgets/ModelComparisonGallery.vue.d.ts +1 -1
  28. package/dist/widgets/Table.vue.d.ts +1 -1
  29. package/dist/widgets/Tensorboard.vue.d.ts +1 -1
  30. package/dist/widgets/Timeline.vue.d.ts +7 -4
  31. package/dist/widgets/WidgetWrapper.vue.d.ts +11 -5
  32. package/dist/widgets/chart.cjs +1 -1
  33. package/dist/widgets/chart.js +1 -1
  34. package/dist/widgets/image-gallery.cjs +1 -1
  35. package/dist/widgets/image-gallery.js +1 -1
  36. package/dist/widgets/metric-callout.cjs +1 -1
  37. package/dist/widgets/metric-callout.js +1 -1
  38. package/dist/widgets/metric-cards.cjs +1 -1
  39. package/dist/widgets/metric-cards.js +1 -1
  40. package/dist/widgets/metrics-table.cjs +1 -1
  41. package/dist/widgets/metrics-table.js +1 -1
  42. package/dist/widgets/timeline.cjs +1 -1
  43. package/dist/widgets/timeline.js +1 -1
  44. package/package.json +1 -6
  45. package/dist/ImageGallery.vue_vue_type_style_index_0_lang-BB4dG0CB.cjs +0 -1
  46. package/dist/ImageGallery.vue_vue_type_style_index_0_lang-DPY6mSdA.js +0 -191
  47. package/dist/MetricCallout.vue_vue_type_style_index_0_lang-BZbc-Wkf.js +0 -49
  48. package/dist/MetricCallout.vue_vue_type_style_index_0_lang-WpuALh8Z.cjs +0 -1
  49. package/dist/MetricCards.vue_vue_type_style_index_0_lang-CDPSu7no.cjs +0 -1
  50. package/dist/MetricCards.vue_vue_type_style_index_0_lang-CfxCCXmB.js +0 -33
  51. package/dist/MetricsTable.vue_vue_type_style_index_0_lang-BzrxoJW4.cjs +0 -1
  52. package/dist/MetricsTable.vue_vue_type_style_index_0_lang-CO9HvYfr.js +0 -132
  53. package/dist/WidgetWrapper.vue_vue_type_style_index_0_lang-BQQ4Vv5j.cjs +0 -1
  54. package/dist/WidgetWrapper.vue_vue_type_style_index_0_lang-D-oXqmI2.js +0 -59
  55. package/dist/entries/figure.d.ts +0 -1
  56. package/dist/portable/ReportifactFigure.vue.d.ts +0 -40
  57. package/dist/widgets/figure.cjs +0 -1
  58. package/dist/widgets/figure.d.ts +0 -6
  59. package/dist/widgets/figure.js +0 -84
@@ -0,0 +1,197 @@
1
+ import { defineComponent as X, ref as R, computed as o, watch as U, createBlock as Y, openBlock as l, withCtx as I, createElementVNode as s, createElementBlock as n, createCommentVNode as f, normalizeStyle as O, Fragment as T, renderList as A, normalizeClass as L, toDisplayString as Z } from "vue";
2
+ import { u as q } from "./useFetch-CHQm_TmB.js";
3
+ import { _ as ee } from "./WidgetWrapper.vue_vue_type_style_index_0_lang-BbnW8GXT.js";
4
+ const ae = { class: "reportifact-image-gallery" }, te = { class: "reportifact-image-gallery-frame" }, re = ["src"], oe = ["src"], le = {
5
+ key: 2,
6
+ class: "reportifact-image-gallery-empty"
7
+ }, m = 4, ue = /* @__PURE__ */ X({
8
+ __name: "ImageGallery",
9
+ props: {
10
+ caption: { default: void 0 },
11
+ sourceHref: { default: void 0 },
12
+ sourceLabel: { default: void 0 },
13
+ widget: { default: void 0 },
14
+ url: { default: void 0 },
15
+ src: { default: void 0 },
16
+ data: { default: void 0 },
17
+ options: { default: void 0 },
18
+ mediaResolver: { type: Function, default: void 0 }
19
+ },
20
+ emits: ["row-click"],
21
+ setup(M, { expose: $, emit: z }) {
22
+ const t = M, i = R([]), y = R([]), C = o(() => t.data === void 0 ? t.src ?? t.url ?? "" : ""), c = o(() => {
23
+ var e;
24
+ return t.options ?? ((e = t.widget) == null ? void 0 : e.options) ?? {};
25
+ }), F = o(() => y.value.slice(0, m)), G = o(
26
+ () => i.value.length > m && i.value.some((e) => e.asset)
27
+ ), p = o(() => String(c.value.fit ?? "contain") === "cover" ? "cover" : "contain"), N = o(() => String(c.value.aspectRatio ?? "4 / 3")), w = o(() => J(c.value.overlayOpacity, 0.7)), h = o(
28
+ () => c.value.drawTags !== !1 && c.value.drawTags !== "false"
29
+ ), { loading: x, error: B, fetchData: D } = q(C, {
30
+ async onSuccess(e) {
31
+ await d(await e.json());
32
+ }
33
+ }), E = o(() => t.data === void 0 && x.value), j = o(() => t.data !== void 0 ? null : t.src || t.url ? B.value : "Resource not found in asset");
34
+ async function d(e) {
35
+ i.value = K(e), await _();
36
+ }
37
+ U(
38
+ () => t.data,
39
+ (e) => {
40
+ e !== void 0 && d(e);
41
+ },
42
+ { immediate: !0, deep: !0 }
43
+ );
44
+ const H = z;
45
+ U(
46
+ () => [t.mediaResolver, w.value],
47
+ () => {
48
+ _();
49
+ }
50
+ );
51
+ async function _() {
52
+ const e = i.value.slice(0, m);
53
+ y.value = await Promise.all(e.map(P));
54
+ }
55
+ async function P(e, a) {
56
+ const r = await k({
57
+ role: "image",
58
+ item: e,
59
+ index: a,
60
+ src: e.imageSrc,
61
+ asset: e.asset
62
+ }), g = await k({
63
+ role: "overlay",
64
+ item: e,
65
+ index: a,
66
+ src: e.overlaySrc,
67
+ annotation: e.annotation,
68
+ imageAsset: e.asset,
69
+ imageSrc: e.imageSrc,
70
+ imageUrl: r,
71
+ drawTags: h.value
72
+ });
73
+ return {
74
+ key: `${a}:${e.asset ?? e.imageSrc ?? ""}:${e.annotation ?? e.overlaySrc ?? ""}`,
75
+ imageUrl: r,
76
+ overlayUrl: g,
77
+ overlayOpacity: w.value
78
+ };
79
+ }
80
+ async function k(e) {
81
+ return !e.src && !e.asset && !e.annotation ? null : t.mediaResolver ? V(await t.mediaResolver({
82
+ role: e.role,
83
+ index: e.index,
84
+ item: e.item,
85
+ src: e.src,
86
+ asset: e.asset,
87
+ annotation: e.annotation,
88
+ imageAsset: e.imageAsset,
89
+ imageSrc: e.imageSrc,
90
+ imageUrl: e.imageUrl,
91
+ drawTags: e.drawTags,
92
+ defaultResolve: (a) => a
93
+ })) : e.src ?? null;
94
+ }
95
+ function V(e) {
96
+ return typeof e == "string" ? e || null : e && typeof e == "object" ? e.url ?? null : null;
97
+ }
98
+ function J(e, a) {
99
+ const r = typeof e == "number" ? e : Number(e);
100
+ return Number.isFinite(r) ? Math.max(0, Math.min(1, r)) : a;
101
+ }
102
+ function K(e) {
103
+ const a = u(e.assets), r = u(e.annotations), g = u(e.images), b = u(e.overlays), W = Math.max(a.length, r.length, g.length, b.length);
104
+ return Array.from({ length: W }, (ne, v) => ({
105
+ imageSrc: g[v],
106
+ overlaySrc: b[v],
107
+ asset: a[v],
108
+ annotation: r[v]
109
+ }));
110
+ }
111
+ function u(e) {
112
+ return Array.isArray(e) ? e.map((a) => typeof a == "string" ? a : "") : [];
113
+ }
114
+ function Q() {
115
+ const e = i.value.filter((a) => S(a.asset)).map((a) => ({
116
+ asset: a.asset,
117
+ layers: S(a.annotation) ? [{ annotation: a.annotation }] : []
118
+ }));
119
+ e.length && H("row-click", {
120
+ action: "asset-preview",
121
+ title: "Images",
122
+ assets: e,
123
+ layout: "collection",
124
+ click: "preview",
125
+ grid: 4,
126
+ drawTags: h.value
127
+ });
128
+ }
129
+ function S(e) {
130
+ return typeof e == "string" && e.length > 0;
131
+ }
132
+ return $({
133
+ refresh() {
134
+ t.data !== void 0 ? d(t.data) : D();
135
+ }
136
+ }), (e, a) => (l(), Y(ee, {
137
+ loading: E.value,
138
+ error: j.value,
139
+ caption: t.caption,
140
+ "source-href": t.sourceHref,
141
+ "source-label": t.sourceLabel
142
+ }, {
143
+ skeleton: I(() => [
144
+ s("div", ae, [
145
+ (l(), n(T, null, A(4, (r) => s("div", {
146
+ key: r,
147
+ class: "reportifact-image-gallery-tile"
148
+ }, [...a[0] || (a[0] = [
149
+ s("div", { class: "reportifact-skeleton-line reportifact-image-gallery-skeleton" }, null, -1)
150
+ ])])), 64))
151
+ ])
152
+ ]),
153
+ default: I(() => [
154
+ s("div", null, [
155
+ s("div", {
156
+ class: "reportifact-image-gallery",
157
+ style: O({ "--reportifact-gallery-aspect-ratio": N.value })
158
+ }, [
159
+ (l(!0), n(T, null, A(F.value, (r) => (l(), n("article", {
160
+ key: r.key,
161
+ class: "reportifact-image-gallery-tile"
162
+ }, [
163
+ s("div", te, [
164
+ r.imageUrl ? (l(), n("img", {
165
+ key: 0,
166
+ class: L(["reportifact-image-gallery-image", `reportifact-image-gallery-image--${p.value}`]),
167
+ src: r.imageUrl,
168
+ alt: "Gallery image",
169
+ loading: "lazy"
170
+ }, null, 10, re)) : f("", !0),
171
+ r.overlayUrl ? (l(), n("img", {
172
+ key: 1,
173
+ class: L(["reportifact-image-gallery-overlay", `reportifact-image-gallery-image--${p.value}`]),
174
+ src: r.overlayUrl,
175
+ alt: "Gallery overlay",
176
+ style: O({ opacity: r.overlayOpacity }),
177
+ loading: "lazy"
178
+ }, null, 14, oe)) : f("", !0),
179
+ r.imageUrl ? f("", !0) : (l(), n("div", le, " Media unavailable "))
180
+ ])
181
+ ]))), 128))
182
+ ], 4),
183
+ G.value ? (l(), n("button", {
184
+ key: 0,
185
+ type: "button",
186
+ class: "reportifact-image-gallery-more",
187
+ onClick: Q
188
+ }, " Show all " + Z(i.value.length) + " images ", 1)) : f("", !0)
189
+ ])
190
+ ]),
191
+ _: 1
192
+ }, 8, ["loading", "error", "caption", "source-href", "source-label"]));
193
+ }
194
+ });
195
+ export {
196
+ ue as _
197
+ };
@@ -0,0 +1 @@
1
+ "use strict";const a=require("vue"),$=require("./useFetch-BfOAq-Kg.cjs"),x=require("./WidgetWrapper.vue_vue_type_style_index_0_lang-BY2t_Hvs.cjs"),G={class:"reportifact-image-gallery"},D={class:"reportifact-image-gallery-frame"},j=["src"],H=["src"],P={key:2,class:"reportifact-image-gallery-empty"},m=4,W=a.defineComponent({__name:"ImageGallery",props:{caption:{default:void 0},sourceHref:{default:void 0},sourceLabel:{default:void 0},widget:{default:void 0},url:{default:void 0},src:{default:void 0},data:{default:void 0},options:{default:void 0},mediaResolver:{type:Function,default:void 0}},emits:["row-click"],setup(h,{expose:_,emit:S}){const o=h,l=a.ref([]),d=a.ref([]),B=a.computed(()=>o.data===void 0?o.src??o.url??"":""),n=a.computed(()=>{var e;return o.options??((e=o.widget)==null?void 0:e.options)??{}}),E=a.computed(()=>d.value.slice(0,m)),b=a.computed(()=>l.value.length>m&&l.value.some(e=>e.asset)),g=a.computed(()=>String(n.value.fit??"contain")==="cover"?"cover":"contain"),N=a.computed(()=>String(n.value.aspectRatio??"4 / 3")),v=a.computed(()=>T(n.value.overlayOpacity,.7)),p=a.computed(()=>n.value.drawTags!==!1&&n.value.drawTags!=="false"),{loading:C,error:R,fetchData:V}=$.useFetch(B,{async onSuccess(e){await u(await e.json())}}),U=a.computed(()=>o.data===void 0&&C.value),I=a.computed(()=>o.data!==void 0?null:o.src||o.url?R.value:"Resource not found in asset");async function u(e){l.value=A(e),await y()}a.watch(()=>o.data,e=>{e!==void 0&&u(e)},{immediate:!0,deep:!0});const O=S;a.watch(()=>[o.mediaResolver,v.value],()=>{y()});async function y(){const e=l.value.slice(0,m);d.value=await Promise.all(e.map(z))}async function z(e,t){const r=await f({role:"image",item:e,index:t,src:e.imageSrc,asset:e.asset}),s=await f({role:"overlay",item:e,index:t,src:e.overlaySrc,annotation:e.annotation,imageAsset:e.asset,imageSrc:e.imageSrc,imageUrl:r,drawTags:p.value});return{key:`${t}:${e.asset??e.imageSrc??""}:${e.annotation??e.overlaySrc??""}`,imageUrl:r,overlayUrl:s,overlayOpacity:v.value}}async function f(e){return!e.src&&!e.asset&&!e.annotation?null:o.mediaResolver?L(await o.mediaResolver({role:e.role,index:e.index,item:e.item,src:e.src,asset:e.asset,annotation:e.annotation,imageAsset:e.imageAsset,imageSrc:e.imageSrc,imageUrl:e.imageUrl,drawTags:e.drawTags,defaultResolve:t=>t})):e.src??null}function L(e){return typeof e=="string"?e||null:e&&typeof e=="object"?e.url??null:null}function T(e,t){const r=typeof e=="number"?e:Number(e);return Number.isFinite(r)?Math.max(0,Math.min(1,r)):t}function A(e){const t=i(e.assets),r=i(e.annotations),s=i(e.images),w=i(e.overlays),M=Math.max(t.length,r.length,s.length,w.length);return Array.from({length:M},(J,c)=>({imageSrc:s[c],overlaySrc:w[c],asset:t[c],annotation:r[c]}))}function i(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?t:""):[]}function F(){const e=l.value.filter(t=>k(t.asset)).map(t=>({asset:t.asset,layers:k(t.annotation)?[{annotation:t.annotation}]:[]}));e.length&&O("row-click",{action:"asset-preview",title:"Images",assets:e,layout:"collection",click:"preview",grid:4,drawTags:p.value})}function k(e){return typeof e=="string"&&e.length>0}return _({refresh(){o.data!==void 0?u(o.data):V()}}),(e,t)=>(a.openBlock(),a.createBlock(x._sfc_main,{loading:U.value,error:I.value,caption:o.caption,"source-href":o.sourceHref,"source-label":o.sourceLabel},{skeleton:a.withCtx(()=>[a.createElementVNode("div",G,[(a.openBlock(),a.createElementBlock(a.Fragment,null,a.renderList(4,r=>a.createElementVNode("div",{key:r,class:"reportifact-image-gallery-tile"},[...t[0]||(t[0]=[a.createElementVNode("div",{class:"reportifact-skeleton-line reportifact-image-gallery-skeleton"},null,-1)])])),64))])]),default:a.withCtx(()=>[a.createElementVNode("div",null,[a.createElementVNode("div",{class:"reportifact-image-gallery",style:a.normalizeStyle({"--reportifact-gallery-aspect-ratio":N.value})},[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(E.value,r=>(a.openBlock(),a.createElementBlock("article",{key:r.key,class:"reportifact-image-gallery-tile"},[a.createElementVNode("div",D,[r.imageUrl?(a.openBlock(),a.createElementBlock("img",{key:0,class:a.normalizeClass(["reportifact-image-gallery-image",`reportifact-image-gallery-image--${g.value}`]),src:r.imageUrl,alt:"Gallery image",loading:"lazy"},null,10,j)):a.createCommentVNode("",!0),r.overlayUrl?(a.openBlock(),a.createElementBlock("img",{key:1,class:a.normalizeClass(["reportifact-image-gallery-overlay",`reportifact-image-gallery-image--${g.value}`]),src:r.overlayUrl,alt:"Gallery overlay",style:a.normalizeStyle({opacity:r.overlayOpacity}),loading:"lazy"},null,14,H)):a.createCommentVNode("",!0),r.imageUrl?a.createCommentVNode("",!0):(a.openBlock(),a.createElementBlock("div",P," Media unavailable "))])]))),128))],4),b.value?(a.openBlock(),a.createElementBlock("button",{key:0,type:"button",class:"reportifact-image-gallery-more",onClick:F}," Show all "+a.toDisplayString(l.value.length)+" images ",1)):a.createCommentVNode("",!0)])]),_:1},8,["loading","error","caption","source-href","source-label"]))}});exports._sfc_main=W;
@@ -0,0 +1,62 @@
1
+ import { defineComponent as m, computed as l, createBlock as f, openBlock as s, withCtx as v, createElementVNode as a, createElementBlock as _, createCommentVNode as h, toDisplayString as i, normalizeClass as b } from "vue";
2
+ import { m as g } from "./markdownTable-B5207r3E.js";
3
+ import { _ as w } from "./WidgetWrapper.vue_vue_type_style_index_0_lang-BbnW8GXT.js";
4
+ const k = { class: "reportifact-metric-callout" }, C = { class: "reportifact-metric-callout-header" }, H = { class: "reportifact-metric-callout-label" }, y = { class: "reportifact-metric-callout-description" }, L = ["innerHTML"], B = /* @__PURE__ */ m({
5
+ __name: "MetricCallout",
6
+ props: {
7
+ caption: { default: void 0 },
8
+ sourceHref: { default: void 0 },
9
+ sourceLabel: { default: void 0 },
10
+ widget: { default: void 0 },
11
+ data: { default: void 0 },
12
+ label: { default: void 0 },
13
+ value: { default: void 0 },
14
+ description: { default: void 0 },
15
+ html: { default: void 0 }
16
+ },
17
+ setup(d) {
18
+ const e = d, n = l(() => {
19
+ var t, o;
20
+ return String(e.label ?? ((t = e.data) == null ? void 0 : t.label) ?? ((o = e.widget) == null ? void 0 : o.options.label) ?? "Metric");
21
+ }), c = l(() => {
22
+ var t, o;
23
+ return String(e.value ?? ((t = e.data) == null ? void 0 : t.value) ?? ((o = e.widget) == null ? void 0 : o.options.value) ?? "");
24
+ }), u = l(() => {
25
+ var t, o;
26
+ return String(
27
+ e.description ?? ((t = e.data) == null ? void 0 : t.description) ?? ((o = e.widget) == null ? void 0 : o.options.description) ?? ""
28
+ );
29
+ }), r = l(() => {
30
+ var t, o;
31
+ return e.html ?? ((t = e.data) == null ? void 0 : t.html) ?? ((o = e.widget) == null ? void 0 : o.html) ?? "";
32
+ }), p = l(() => g(c.value));
33
+ return (t, o) => (s(), f(w, {
34
+ caption: e.caption,
35
+ "source-href": e.sourceHref,
36
+ "source-label": e.sourceLabel
37
+ }, {
38
+ default: v(() => [
39
+ a("section", k, [
40
+ a("header", C, [
41
+ a("div", null, [
42
+ a("div", H, i(n.value), 1),
43
+ a("strong", {
44
+ class: b(["reportifact-metric-callout-value", `reportifact-metric-callout-value--${p.value}`])
45
+ }, i(c.value), 3)
46
+ ]),
47
+ a("div", y, i(u.value), 1)
48
+ ]),
49
+ r.value ? (s(), _("div", {
50
+ key: 0,
51
+ class: "reportifact-metric-callout-body reportifact-markdown",
52
+ innerHTML: r.value
53
+ }, null, 8, L)) : h("", !0)
54
+ ])
55
+ ]),
56
+ _: 1
57
+ }, 8, ["caption", "source-href", "source-label"]));
58
+ }
59
+ });
60
+ export {
61
+ B as _
62
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),s=require("./markdownTable-Cbn1Du3L.cjs"),u=require("./WidgetWrapper.vue_vue_type_style_index_0_lang-BY2t_Hvs.cjs"),p={class:"reportifact-metric-callout"},m={class:"reportifact-metric-callout-header"},v={class:"reportifact-metric-callout-label"},_={class:"reportifact-metric-callout-description"},f=["innerHTML"],h=e.defineComponent({__name:"MetricCallout",props:{caption:{default:void 0},sourceHref:{default:void 0},sourceLabel:{default:void 0},widget:{default:void 0},data:{default:void 0},label:{default:void 0},value:{default:void 0},description:{default:void 0},html:{default:void 0}},setup(i){const t=i,r=e.computed(()=>{var o,a;return String(t.label??((o=t.data)==null?void 0:o.label)??((a=t.widget)==null?void 0:a.options.label)??"Metric")}),l=e.computed(()=>{var o,a;return String(t.value??((o=t.data)==null?void 0:o.value)??((a=t.widget)==null?void 0:a.options.value)??"")}),n=e.computed(()=>{var o,a;return String(t.description??((o=t.data)==null?void 0:o.description)??((a=t.widget)==null?void 0:a.options.description)??"")}),c=e.computed(()=>{var o,a;return t.html??((o=t.data)==null?void 0:o.html)??((a=t.widget)==null?void 0:a.html)??""}),d=e.computed(()=>s.metricTone(l.value));return(o,a)=>(e.openBlock(),e.createBlock(u._sfc_main,{caption:t.caption,"source-href":t.sourceHref,"source-label":t.sourceLabel},{default:e.withCtx(()=>[e.createElementVNode("section",p,[e.createElementVNode("header",m,[e.createElementVNode("div",null,[e.createElementVNode("div",v,e.toDisplayString(r.value),1),e.createElementVNode("strong",{class:e.normalizeClass(["reportifact-metric-callout-value",`reportifact-metric-callout-value--${d.value}`])},e.toDisplayString(l.value),3)]),e.createElementVNode("div",_,e.toDisplayString(n.value),1)]),c.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"reportifact-metric-callout-body reportifact-markdown",innerHTML:c.value},null,8,f)):e.createCommentVNode("",!0)])]),_:1},8,["caption","source-href","source-label"]))}});exports._sfc_main=h;
@@ -0,0 +1,46 @@
1
+ import { defineComponent as u, computed as f, createBlock as m, openBlock as c, withCtx as _, createElementVNode as r, createElementBlock as s, Fragment as v, renderList as h, normalizeClass as b, unref as i, normalizeStyle as g, toDisplayString as o } from "vue";
2
+ import { p as k, m as y, a as C } from "./markdownTable-B5207r3E.js";
3
+ import { _ as x } from "./WidgetWrapper.vue_vue_type_style_index_0_lang-BbnW8GXT.js";
4
+ const B = { class: "reportifact-metric-cards" }, L = { class: "reportifact-metric-card-label" }, $ = { class: "reportifact-metric-card-value" }, z = { class: "reportifact-metric-card-description" }, T = /* @__PURE__ */ u({
5
+ __name: "MetricCards",
6
+ props: {
7
+ caption: { default: void 0 },
8
+ sourceHref: { default: void 0 },
9
+ sourceLabel: { default: void 0 },
10
+ widget: { default: void 0 },
11
+ content: { default: void 0 },
12
+ data: { default: void 0 }
13
+ },
14
+ setup(l) {
15
+ const e = l, n = f(() => {
16
+ var a;
17
+ return e.data ?? k(e.content ?? ((a = e.widget) == null ? void 0 : a.content) ?? "");
18
+ }), d = y, p = C;
19
+ return (a, E) => (c(), m(x, {
20
+ caption: e.caption,
21
+ "source-href": e.sourceHref,
22
+ "source-label": e.sourceLabel
23
+ }, {
24
+ default: _(() => [
25
+ r("div", B, [
26
+ (c(!0), s(v, null, h(n.value, (t) => (c(), s("article", {
27
+ key: t.label,
28
+ class: b(["reportifact-metric-card", `reportifact-metric-card--${i(d)(t.value)}`])
29
+ }, [
30
+ r("span", {
31
+ class: "reportifact-metric-card-fill",
32
+ style: g({ height: `${i(p)(t.value)}%` })
33
+ }, null, 4),
34
+ r("span", L, o(t.label), 1),
35
+ r("strong", $, o(t.value), 1),
36
+ r("p", z, o(t.description), 1)
37
+ ], 2))), 128))
38
+ ])
39
+ ]),
40
+ _: 1
41
+ }, 8, ["caption", "source-href", "source-label"]));
42
+ }
43
+ });
44
+ export {
45
+ T as _
46
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),a=require("./markdownTable-Cbn1Du3L.cjs"),s=require("./WidgetWrapper.vue_vue_type_style_index_0_lang-BY2t_Hvs.cjs"),d={class:"reportifact-metric-cards"},u={class:"reportifact-metric-card-label"},p={class:"reportifact-metric-card-value"},m={class:"reportifact-metric-card-description"},_=e.defineComponent({__name:"MetricCards",props:{caption:{default:void 0},sourceHref:{default:void 0},sourceLabel:{default:void 0},widget:{default:void 0},content:{default:void 0},data:{default:void 0}},setup(o){const t=o,n=e.computed(()=>{var c;return t.data??a.parseMarkdownTable(t.content??((c=t.widget)==null?void 0:c.content)??"")}),l=a.metricTone,i=a.metricPercent;return(c,f)=>(e.openBlock(),e.createBlock(s._sfc_main,{caption:t.caption,"source-href":t.sourceHref,"source-label":t.sourceLabel},{default:e.withCtx(()=>[e.createElementVNode("div",d,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,r=>(e.openBlock(),e.createElementBlock("article",{key:r.label,class:e.normalizeClass(["reportifact-metric-card",`reportifact-metric-card--${e.unref(l)(r.value)}`])},[e.createElementVNode("span",{class:"reportifact-metric-card-fill",style:e.normalizeStyle({height:`${e.unref(i)(r.value)}%`})},null,4),e.createElementVNode("span",u,e.toDisplayString(r.label),1),e.createElementVNode("strong",p,e.toDisplayString(r.value),1),e.createElementVNode("p",m,e.toDisplayString(r.description),1)],2))),128))])]),_:1},8,["caption","source-href","source-label"]))}});exports._sfc_main=_;
@@ -0,0 +1,140 @@
1
+ import { defineComponent as j, computed as o, ref as z, watch as H, createBlock as N, openBlock as s, withCtx as y, createElementVNode as l, createElementBlock as r, createCommentVNode as m, toDisplayString as u, normalizeClass as P, Fragment as c, renderList as d, normalizeStyle as T } from "vue";
2
+ import { u as W } from "./useFetch-CHQm_TmB.js";
3
+ import { _ as $ } from "./WidgetWrapper.vue_vue_type_style_index_0_lang-BbnW8GXT.js";
4
+ const q = { class: "rm-skeleton" }, G = { class: "rm-card" }, I = {
5
+ key: 0,
6
+ class: "rm-title"
7
+ }, J = {
8
+ key: 0,
9
+ class: "rm-empty"
10
+ }, K = { class: "rm-name" }, O = { class: "rm-value" }, Q = { class: "rm-bar-track" }, U = {
11
+ key: 0,
12
+ class: "rm-pct"
13
+ }, X = {
14
+ key: 2,
15
+ class: "rm-table"
16
+ }, te = /* @__PURE__ */ j({
17
+ __name: "MetricsTable",
18
+ props: {
19
+ caption: { default: void 0 },
20
+ sourceHref: { default: void 0 },
21
+ sourceLabel: { default: void 0 },
22
+ url: { default: void 0 },
23
+ src: { default: void 0 },
24
+ data: { default: void 0 },
25
+ options: { default: void 0 }
26
+ },
27
+ setup(k, { expose: b }) {
28
+ const t = k, f = o(() => {
29
+ var e;
30
+ return typeof ((e = t.options) == null ? void 0 : e.title) == "string" ? t.options.title : "";
31
+ }), p = o(() => {
32
+ var e;
33
+ return ((e = t.options) == null ? void 0 : e.show_pct) === !0;
34
+ }), n = z(null), w = o(() => t.data === void 0 ? t.src ?? t.url ?? "" : ""), { loading: x, error: g, fetchData: C } = W(w, {
35
+ async onSuccess(e) {
36
+ n.value = await e.json();
37
+ }
38
+ }), A = o(() => t.data === void 0 && x.value), F = o(() => t.data !== void 0 ? null : t.src || t.url ? g.value : "Resource not found in asset");
39
+ H(
40
+ () => t.data,
41
+ (e) => {
42
+ e !== void 0 && (n.value = e);
43
+ },
44
+ { immediate: !0, deep: !0 }
45
+ );
46
+ function L() {
47
+ t.data !== void 0 ? n.value = t.data : C();
48
+ }
49
+ b({ refresh: L });
50
+ const _ = o(() => {
51
+ const e = n.value;
52
+ if (!e || !Array.isArray(e.rows)) return !1;
53
+ const i = e.rows[0];
54
+ return i === void 0 || typeof i == "object" && "value" in i;
55
+ }), v = o(() => {
56
+ const e = n.value;
57
+ return !!e && Array.isArray(e.columns);
58
+ }), h = o(
59
+ () => _.value ? n.value.rows : []
60
+ ), M = o(
61
+ () => v.value ? n.value.columns : []
62
+ ), R = o(
63
+ () => v.value ? n.value.rows : []
64
+ );
65
+ function B(e) {
66
+ return e.toFixed(3);
67
+ }
68
+ function D(e, i) {
69
+ return Math.min(100, Math.max(0, e / (i ?? 1) * 100));
70
+ }
71
+ return (e, i) => (s(), N($, {
72
+ loading: A.value,
73
+ error: F.value,
74
+ caption: t.caption,
75
+ "source-href": t.sourceHref,
76
+ "source-label": t.sourceLabel
77
+ }, {
78
+ skeleton: y(() => [
79
+ l("div", q, [
80
+ (s(), r(c, null, d(4, (a) => l("div", {
81
+ key: a,
82
+ class: "rm-skeleton-row"
83
+ }, [...i[0] || (i[0] = [
84
+ l("div", {
85
+ class: "reportifact-skeleton-line",
86
+ style: { width: "80px" }
87
+ }, null, -1),
88
+ l("div", {
89
+ class: "reportifact-skeleton-line",
90
+ style: { width: "40px" }
91
+ }, null, -1),
92
+ l("div", {
93
+ class: "reportifact-skeleton-line",
94
+ style: { flex: "1" }
95
+ }, null, -1)
96
+ ])])), 64))
97
+ ])
98
+ ]),
99
+ default: y(() => [
100
+ l("div", G, [
101
+ f.value ? (s(), r("div", I, u(f.value), 1)) : m("", !0),
102
+ _.value ? (s(), r("div", {
103
+ key: 1,
104
+ class: P(["rm-metrics", { "rm-metrics--with-pct": p.value }])
105
+ }, [
106
+ h.value.length === 0 ? (s(), r("div", J, " Waiting for first evaluation… ")) : (s(!0), r(c, { key: 1 }, d(h.value, (a) => (s(), r("div", {
107
+ key: a.name,
108
+ class: "rm-row"
109
+ }, [
110
+ l("span", K, u(a.name), 1),
111
+ l("span", O, u(B(a.value)), 1),
112
+ l("div", Q, [
113
+ l("div", {
114
+ class: "rm-bar-fill",
115
+ style: T({ width: D(a.value, a.max) + "%" })
116
+ }, null, 4)
117
+ ]),
118
+ p.value ? (s(), r("span", U, u((a.value * 100).toFixed(1)) + "%", 1)) : m("", !0)
119
+ ]))), 128))
120
+ ], 2)) : v.value ? (s(), r("table", X, [
121
+ l("thead", null, [
122
+ l("tr", null, [
123
+ (s(!0), r(c, null, d(M.value, (a) => (s(), r("th", { key: a }, u(a), 1))), 128))
124
+ ])
125
+ ]),
126
+ l("tbody", null, [
127
+ (s(!0), r(c, null, d(R.value, (a, E) => (s(), r("tr", { key: E }, [
128
+ (s(!0), r(c, null, d(a, (S, V) => (s(), r("td", { key: V }, u(S), 1))), 128))
129
+ ]))), 128))
130
+ ])
131
+ ])) : m("", !0)
132
+ ])
133
+ ]),
134
+ _: 1
135
+ }, 8, ["loading", "error", "caption", "source-href", "source-label"]));
136
+ }
137
+ });
138
+ export {
139
+ te as _
140
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),x=require("./useFetch-BfOAq-Kg.cjs"),F=require("./WidgetWrapper.vue_vue_type_style_index_0_lang-BY2t_Hvs.cjs"),C={class:"rm-skeleton"},D={class:"rm-card"},L={key:0,class:"rm-title"},S={key:0,class:"rm-empty"},A={class:"rm-name"},M={class:"rm-value"},R={class:"rm-bar-track"},q={key:0,class:"rm-pct"},W={key:2,class:"rm-table"},j=e.defineComponent({__name:"MetricsTable",props:{caption:{default:void 0},sourceHref:{default:void 0},sourceLabel:{default:void 0},url:{default:void 0},src:{default:void 0},data:{default:void 0},options:{default:void 0}},setup(d,{expose:m}){const o=d,c=e.computed(()=>{var t;return typeof((t=o.options)==null?void 0:t.title)=="string"?o.options.title:""}),s=e.computed(()=>{var t;return((t=o.options)==null?void 0:t.show_pct)===!0}),r=e.ref(null),p=e.computed(()=>o.data===void 0?o.src??o.url??"":""),{loading:v,error:k,fetchData:f}=x.useFetch(p,{async onSuccess(t){r.value=await t.json()}}),_=e.computed(()=>o.data===void 0&&v.value),y=e.computed(()=>o.data!==void 0?null:o.src||o.url?k.value:"Resource not found in asset");e.watch(()=>o.data,t=>{t!==void 0&&(r.value=t)},{immediate:!0,deep:!0});function B(){o.data!==void 0?r.value=o.data:f()}m({refresh:B});const i=e.computed(()=>{const t=r.value;if(!t||!Array.isArray(t.rows))return!1;const n=t.rows[0];return n===void 0||typeof n=="object"&&"value"in n}),a=e.computed(()=>{const t=r.value;return!!t&&Array.isArray(t.columns)}),u=e.computed(()=>i.value?r.value.rows:[]),h=e.computed(()=>a.value?r.value.columns:[]),E=e.computed(()=>a.value?r.value.rows:[]);function g(t){return t.toFixed(3)}function V(t,n){return Math.min(100,Math.max(0,t/(n??1)*100))}return(t,n)=>(e.openBlock(),e.createBlock(F._sfc_main,{loading:_.value,error:y.value,caption:o.caption,"source-href":o.sourceHref,"source-label":o.sourceLabel},{skeleton:e.withCtx(()=>[e.createElementVNode("div",C,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(4,l=>e.createElementVNode("div",{key:l,class:"rm-skeleton-row"},[...n[0]||(n[0]=[e.createElementVNode("div",{class:"reportifact-skeleton-line",style:{width:"80px"}},null,-1),e.createElementVNode("div",{class:"reportifact-skeleton-line",style:{width:"40px"}},null,-1),e.createElementVNode("div",{class:"reportifact-skeleton-line",style:{flex:"1"}},null,-1)])])),64))])]),default:e.withCtx(()=>[e.createElementVNode("div",D,[c.value?(e.openBlock(),e.createElementBlock("div",L,e.toDisplayString(c.value),1)):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["rm-metrics",{"rm-metrics--with-pct":s.value}])},[u.value.length===0?(e.openBlock(),e.createElementBlock("div",S," Waiting for first evaluation… ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(u.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.name,class:"rm-row"},[e.createElementVNode("span",A,e.toDisplayString(l.name),1),e.createElementVNode("span",M,e.toDisplayString(g(l.value)),1),e.createElementVNode("div",R,[e.createElementVNode("div",{class:"rm-bar-fill",style:e.normalizeStyle({width:V(l.value,l.max)+"%"})},null,4)]),s.value?(e.openBlock(),e.createElementBlock("span",q,e.toDisplayString((l.value*100).toFixed(1))+"%",1)):e.createCommentVNode("",!0)]))),128))],2)):a.value?(e.openBlock(),e.createElementBlock("table",W,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,l=>(e.openBlock(),e.createElementBlock("th",{key:l},e.toDisplayString(l),1))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,(l,N)=>(e.openBlock(),e.createElementBlock("tr",{key:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l,(b,w)=>(e.openBlock(),e.createElementBlock("td",{key:w},e.toDisplayString(b),1))),128))]))),128))])])):e.createCommentVNode("",!0)])]),_:1},8,["loading","error","caption","source-href","source-label"]))}});exports._sfc_main=j;
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as Cr, ref as Ge, onMounted as Rr, onUnmounted as Dr, computed as le, watch as Tr, createBlock as Mt, openBlock as He, withCtx as bt, createElementVNode as ce, normalizeStyle as At, createCommentVNode as Lr, createElementBlock as Pr, Fragment as Ir, renderList as Or, normalizeClass as zr, toDisplayString as Zr, unref as Nr } from "vue";
2
2
  import { m as ue, r as Vr, n as kr, a as rt, _ as Q, b as D, c as Pe, e as de, d as be, i as wt, s as Ie, E as Br, f as lt, t as Ye, g as Re, h as Fr, j as Et, k as Ct, l as ut, o as Be, p as Gr, q as Hr, T as Yr, u as Wr, S as Ur, v as Ee, w as ct, x as or, y as C, z as $r, A as ft, B as H, C as N, D as Xr, F as ge, G as Ae, H as Kr, I as vt, J as me, K as ir, P as sr, L as jr, M as qr, N as Jr, O as Qr, Q as ea, R as ta, U as ra, V as aa, W as na, X as oa, Y as ia, Z as sa, $ as Rt, a0 as at, a1 as la, a2 as Dt, a3 as Tt, a4 as Lt, a5 as k, a6 as Pt, a7 as ua, a8 as lr, a9 as nt, aa as We, ab as It, ac as ca, ad as fa, ae as va, af as ha, ag as da, ah as pa, ai as oe, aj as ga, ak as Ot, al as ma, am as ot, an as ya, ao as _a, ap as zt, aq as O, ar as ve, as as we, at as Ue, au as ur, av as cr, aw as Sa, ax as xa, ay as fr, az as Ma, aA as ba, aB as Aa, aC as wa, aD as Ea, aE as Ca, aF as Ra, aG as vr, aH as hr, aI as Zt, aJ as Da, aK as Ta, aL as La, aM as Pa, aN as Te, aO as Ia, aP as Oa, aQ as Nt, aR as Vt, aS as za, aT as Za, aU as Na, aV as kt, aW as Va, aX as ka, aY as Ba, aZ as Fa, a_ as it, a$ as Ga, b0 as Ha, b1 as Ya, b2 as Wa, b3 as Ua, b4 as $a, b5 as Xa } from "./index-DevYhXSC.js";
3
3
  import { u as Ka } from "./useFetch-CHQm_TmB.js";
4
- import { _ as ja } from "./WidgetWrapper.vue_vue_type_style_index_0_lang-D-oXqmI2.js";
4
+ import { _ as ja } from "./WidgetWrapper.vue_vue_type_style_index_0_lang-BbnW8GXT.js";
5
5
  var qa = ue();
6
6
  function Bt(r, t) {
7
7
  return !!qa(r)[t];
@@ -2362,6 +2362,9 @@ function Co(r) {
2362
2362
  const Ro = { class: "reportifact-timeline-toolbar" }, Do = ["onClick"], nr = "#ef4444", tt = "Cuts", To = 22, zo = /* @__PURE__ */ Cr({
2363
2363
  __name: "Timeline",
2364
2364
  props: {
2365
+ caption: { default: void 0 },
2366
+ sourceHref: { default: void 0 },
2367
+ sourceLabel: { default: void 0 },
2365
2368
  url: { default: void 0 },
2366
2369
  src: { default: void 0 },
2367
2370
  data: { default: void 0 },
@@ -2594,7 +2597,10 @@ const Ro = { class: "reportifact-timeline-toolbar" }, Do = ["onClick"], nr = "#e
2594
2597
  }
2595
2598
  return t({ refresh: T }), (_, S) => (He(), Mt(ja, {
2596
2599
  loading: !u.value.length && M.value,
2597
- error: A.value
2600
+ error: A.value,
2601
+ caption: s.caption,
2602
+ "source-href": s.sourceHref,
2603
+ "source-label": s.sourceLabel
2598
2604
  }, {
2599
2605
  skeleton: bt(() => [
2600
2606
  ce("div", {
@@ -2632,7 +2638,7 @@ const Ro = { class: "reportifact-timeline-toolbar" }, Do = ["onClick"], nr = "#e
2632
2638
  ], 4)
2633
2639
  ]),
2634
2640
  _: 1
2635
- }, 8, ["loading", "error"]));
2641
+ }, 8, ["loading", "error", "caption", "source-href", "source-label"]));
2636
2642
  }
2637
2643
  });
2638
2644
  export {