@thehammer/template-verification 0.2.22 → 0.2.23
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/dist/components/VerifiedField.vue.d.ts +22 -0
- package/dist/style.css +1 -1
- package/dist/template-verification.js +119 -114
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ref as F, watch as Y, defineComponent as M, openBlock as
|
|
2
|
-
import { DanxSkeleton as ce, useToast as de, DanxIcon as fe, gearIcon as ve, DanxBadge as pe, DanxProgressBar as me, DanxToastContainer as
|
|
3
|
-
import { CodeViewer as
|
|
4
|
-
const R = "tv-chrome",
|
|
1
|
+
import { ref as F, watch as Y, defineComponent as M, openBlock as i, createElementBlock as u, normalizeClass as g, createCommentVNode as k, computed as o, createElementVNode as m, createVNode as T, createBlock as B, unref as f, Fragment as j, renderSlot as oe, toDisplayString as E, withModifiers as W, withDirectives as ie, isRef as se, vModelCheckbox as ue } from "vue";
|
|
2
|
+
import { DanxSkeleton as ce, useToast as de, DanxIcon as fe, gearIcon as ve, DanxBadge as pe, DanxProgressBar as me, DanxToastContainer as he } from "@thehammer/danx-ui";
|
|
3
|
+
import { CodeViewer as be } from "@thehammer/danx-ui/components/code-viewer";
|
|
4
|
+
const R = "tv-chrome", ge = "tv-editable", Z = "template-verification:enabled";
|
|
5
5
|
let N = null;
|
|
6
6
|
function we(e) {
|
|
7
7
|
var t;
|
|
@@ -37,7 +37,7 @@ function ee(e) {
|
|
|
37
37
|
function _e() {
|
|
38
38
|
return N || (N = ee()), N;
|
|
39
39
|
}
|
|
40
|
-
function
|
|
40
|
+
function ct(e) {
|
|
41
41
|
N = ee(e);
|
|
42
42
|
}
|
|
43
43
|
function te() {
|
|
@@ -147,7 +147,7 @@ function U(e, t, n) {
|
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
149
|
if (!X(e)) return;
|
|
150
|
-
const
|
|
150
|
+
const h = e.__meta ?? {};
|
|
151
151
|
for (const [r, v] of Object.entries(e)) {
|
|
152
152
|
if (r === "__meta") continue;
|
|
153
153
|
const w = t ? `${t}.${r}` : r;
|
|
@@ -155,13 +155,13 @@ function U(e, t, n) {
|
|
|
155
155
|
U(v, w, n);
|
|
156
156
|
continue;
|
|
157
157
|
}
|
|
158
|
-
const
|
|
159
|
-
!
|
|
158
|
+
const p = h[r];
|
|
159
|
+
!p && ze.has(r) || n.push({
|
|
160
160
|
path: w,
|
|
161
161
|
label: r,
|
|
162
|
-
meta:
|
|
162
|
+
meta: p ?? null,
|
|
163
163
|
value: v,
|
|
164
|
-
unanchored: !
|
|
164
|
+
unanchored: !p
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
}
|
|
@@ -178,18 +178,18 @@ function Ue(e) {
|
|
|
178
178
|
const t = re(e).filter(
|
|
179
179
|
(r) => r.meta !== null
|
|
180
180
|
), n = t.length;
|
|
181
|
-
let d = 0,
|
|
181
|
+
let d = 0, h = 0;
|
|
182
182
|
for (const r of t) {
|
|
183
183
|
if (r.meta.candidates.override) {
|
|
184
184
|
d++;
|
|
185
185
|
continue;
|
|
186
186
|
}
|
|
187
|
-
ae(r.meta) &&
|
|
187
|
+
ae(r.meta) && h++;
|
|
188
188
|
}
|
|
189
189
|
return {
|
|
190
190
|
total: n,
|
|
191
191
|
verified: d,
|
|
192
|
-
needsReview:
|
|
192
|
+
needsReview: h,
|
|
193
193
|
percent: n === 0 ? 100 : Math.round(d / n * 100)
|
|
194
194
|
};
|
|
195
195
|
}
|
|
@@ -206,15 +206,15 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
206
206
|
4: "w-4/5 bg-(--confidence-4)",
|
|
207
207
|
5: "w-full bg-(--confidence-5)"
|
|
208
208
|
};
|
|
209
|
-
return (d,
|
|
210
|
-
class:
|
|
209
|
+
return (d, h) => (i(), u("span", {
|
|
210
|
+
class: g(["tv-confidence-bar flex h-[3px] w-[19px] shrink-0 overflow-hidden rounded-full", t.level === null ? "border border-dotted border-(--confidence-none)" : ""]),
|
|
211
211
|
"data-theme": "light",
|
|
212
212
|
"data-level": t.level ?? "none",
|
|
213
213
|
"aria-hidden": "true"
|
|
214
214
|
}, [
|
|
215
|
-
t.level !== null ? (
|
|
215
|
+
t.level !== null ? (i(), u("span", {
|
|
216
216
|
key: 0,
|
|
217
|
-
class:
|
|
217
|
+
class: g(["tv-confidence-fill h-full rounded-full", n[t.level]])
|
|
218
218
|
}, null, 2)) : k("", !0)
|
|
219
219
|
], 10, Ye));
|
|
220
220
|
}
|
|
@@ -224,17 +224,17 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
224
224
|
state: {}
|
|
225
225
|
},
|
|
226
226
|
setup(e) {
|
|
227
|
-
const t = e, n =
|
|
227
|
+
const t = e, n = o(() => z(t.state)), d = o(
|
|
228
228
|
() => t.state === "failed" || t.state === "unrated" ? null : t.state
|
|
229
229
|
);
|
|
230
|
-
return (
|
|
230
|
+
return (h, r) => t.state === "failed" ? (i(), u("span", {
|
|
231
231
|
key: 0,
|
|
232
232
|
class: "tv-confidence-icon inline-flex items-center rounded-full bg-red-100 px-2 py-0.5 text-[11px] font-semibold leading-none text-red-800 ring-1 ring-inset ring-red-700/30",
|
|
233
233
|
"data-status": "failed",
|
|
234
234
|
title: n.value
|
|
235
235
|
}, [...r[0] || (r[0] = [
|
|
236
|
-
|
|
237
|
-
])], 8, Ge)) : (
|
|
236
|
+
m("span", { "aria-hidden": "true" }, "⊗", -1)
|
|
237
|
+
])], 8, Ge)) : (i(), u("span", {
|
|
238
238
|
key: 1,
|
|
239
239
|
class: "tv-confidence-icon inline-flex items-center rounded-full bg-white px-1.5 py-1.5 ring-1 ring-inset ring-gray-300",
|
|
240
240
|
"data-status": String(t.state),
|
|
@@ -244,74 +244,78 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
244
244
|
], 8, He));
|
|
245
245
|
}
|
|
246
246
|
}), Ke = {
|
|
247
|
+
key: 0,
|
|
248
|
+
class: "tv-field-placeholder"
|
|
249
|
+
}, Qe = {
|
|
247
250
|
key: 0,
|
|
248
251
|
class: "tv-mark-anchor"
|
|
249
|
-
},
|
|
252
|
+
}, We = ["aria-label", "title"], Xe = {
|
|
250
253
|
key: 1,
|
|
251
254
|
class: "tv-verified-chip tv-audit-chip inline-flex items-center gap-1 rounded-full bg-green-600 px-2 py-0.5 text-[11px] font-semibold leading-none text-white",
|
|
252
255
|
"data-status": "audited"
|
|
253
|
-
},
|
|
256
|
+
}, Ze = {
|
|
254
257
|
key: 2,
|
|
255
258
|
class: "tv-verified-chip inline-flex items-center gap-1 rounded-full bg-green-600 px-2 py-0.5 text-[11px] font-semibold leading-none text-white",
|
|
256
259
|
"data-status": "verified"
|
|
257
|
-
},
|
|
260
|
+
}, et = {
|
|
258
261
|
key: 3,
|
|
259
262
|
class: "tv-verified-chip tv-verified-chip-empty inline-flex items-center gap-1 rounded-full border-2 border-dashed border-green-600 bg-transparent px-2 py-0.5 text-[11px] font-semibold leading-none text-green-600",
|
|
260
263
|
"data-status": "verified-empty"
|
|
261
|
-
},
|
|
264
|
+
}, tt = {
|
|
262
265
|
key: 5,
|
|
263
266
|
class: "tv-correction-indicator ml-0.5 text-blue-500",
|
|
264
267
|
"aria-hidden": !0
|
|
265
|
-
},
|
|
268
|
+
}, dt = /* @__PURE__ */ M({
|
|
266
269
|
__name: "VerifiedField",
|
|
267
270
|
props: {
|
|
268
271
|
source: {},
|
|
269
272
|
field: {},
|
|
270
273
|
original: {},
|
|
271
|
-
format: { type: Function }
|
|
274
|
+
format: { type: Function },
|
|
275
|
+
placeholder: {}
|
|
272
276
|
},
|
|
273
277
|
setup(e) {
|
|
274
|
-
const t = e, n = te(), d =
|
|
278
|
+
const t = e, n = te(), d = o(() => n.enabled.value), h = o(() => n.loading), r = o(() => {
|
|
275
279
|
var a;
|
|
276
280
|
return t.source && t.field ? ((a = t.source.__meta) == null ? void 0 : a[t.field]) ?? null : null;
|
|
277
|
-
}), v =
|
|
281
|
+
}), v = o(() => Re(r.value)), w = o(() => {
|
|
278
282
|
if (t.original !== void 0 && t.original !== null)
|
|
279
283
|
return t.original;
|
|
280
284
|
if (r.value && v.value.value !== null && v.value.value !== void 0)
|
|
281
285
|
return v.value.value;
|
|
282
286
|
if (t.source && t.field) return t.source[t.field];
|
|
283
|
-
}),
|
|
287
|
+
}), p = o(() => {
|
|
284
288
|
const a = w.value;
|
|
285
289
|
return a == null ? "" : typeof t.format == "function" ? t.format(a) : String(a);
|
|
286
|
-
}), D =
|
|
287
|
-
var l,
|
|
288
|
-
const a = (
|
|
290
|
+
}), D = o(() => {
|
|
291
|
+
var l, c;
|
|
292
|
+
const a = (c = (l = r.value) == null ? void 0 : l.candidates) == null ? void 0 : c.extracted;
|
|
289
293
|
return Ce(a == null ? void 0 : a.confidence, (a == null ? void 0 : a.state) === "failed");
|
|
290
|
-
}),
|
|
294
|
+
}), b = o(() => De(r.value)), s = o(() => Ve(r.value)), y = o(() => !b.value && Ne(r.value)), x = o(() => {
|
|
291
295
|
var a, l;
|
|
292
296
|
return !!((l = (a = r.value) == null ? void 0 : a.candidates) != null && l.override);
|
|
293
|
-
}), L =
|
|
294
|
-
var a, l,
|
|
295
|
-
return ((
|
|
296
|
-
}),
|
|
297
|
-
var a, l,
|
|
298
|
-
return x.value ? ((
|
|
299
|
-
}),
|
|
297
|
+
}), L = o(() => {
|
|
298
|
+
var a, l, c;
|
|
299
|
+
return ((c = (l = (a = r.value) == null ? void 0 : a.candidates) == null ? void 0 : l.extracted) == null ? void 0 : c.source) ?? null;
|
|
300
|
+
}), C = o(() => !x.value && L.value === "audit"), S = o(() => {
|
|
301
|
+
var a, l, c;
|
|
302
|
+
return x.value ? ((c = (l = (a = r.value) == null ? void 0 : a.candidates) == null ? void 0 : l.override) == null ? void 0 : c.value) === null ? "confirmed-empty" : "confirmed" : "unverified";
|
|
303
|
+
}), $ = o(() => d.value), O = o(() => {
|
|
300
304
|
const a = r.value;
|
|
301
|
-
return
|
|
302
|
-
}), A =
|
|
305
|
+
return $.value && !!a && ae(a);
|
|
306
|
+
}), A = o(() => {
|
|
303
307
|
var a;
|
|
304
|
-
return
|
|
305
|
-
}), q =
|
|
308
|
+
return $.value && !!((a = r.value) != null && a.anchor);
|
|
309
|
+
}), q = o(() => {
|
|
306
310
|
var J, K, Q;
|
|
307
311
|
const a = t.field ?? "This value", l = A.value ? " — open in the review panel" : " — no place to record a correction";
|
|
308
312
|
if (S.value === "confirmed-empty")
|
|
309
313
|
return `${a}: a person confirmed this field is genuinely blank${l}`;
|
|
310
314
|
if (x.value) return `${a}: verified by a person${l}`;
|
|
311
|
-
const
|
|
312
|
-
_.push(
|
|
313
|
-
const P = (
|
|
314
|
-
return P > 0 && _.push(`${P} cited ${P === 1 ? "page" : "pages"}`),
|
|
315
|
+
const c = (K = (J = r.value) == null ? void 0 : J.candidates) == null ? void 0 : K.extracted, I = D.value, _ = [], V = typeof I == "number" ? `${z(I)} (${I}/5)` : z(I);
|
|
316
|
+
_.push(C.value ? `Verified by audit — ${V}` : V);
|
|
317
|
+
const P = (c == null ? void 0 : c.sources_count) ?? ((Q = c == null ? void 0 : c.sources) == null ? void 0 : Q.length) ?? 0;
|
|
318
|
+
return P > 0 && _.push(`${P} cited ${P === 1 ? "page" : "pages"}`), b.value ? _.push(s.value ? "source document conflict" : "sources disagree") : y.value && _.push("value corrected"), `${a}: ${_.join(", ")}${l}`;
|
|
315
319
|
});
|
|
316
320
|
function G() {
|
|
317
321
|
var l;
|
|
@@ -320,7 +324,7 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
320
324
|
anchor: a,
|
|
321
325
|
workflowInputId: n.workflowInputId,
|
|
322
326
|
label: t.field ?? null,
|
|
323
|
-
value:
|
|
327
|
+
value: p.value
|
|
324
328
|
});
|
|
325
329
|
}
|
|
326
330
|
function le() {
|
|
@@ -332,14 +336,14 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
332
336
|
const H = F(null);
|
|
333
337
|
return Y(
|
|
334
338
|
H,
|
|
335
|
-
(a, l,
|
|
339
|
+
(a, l, c) => {
|
|
336
340
|
if (!a || typeof MutationObserver > "u") return;
|
|
337
341
|
const I = () => {
|
|
338
342
|
a.querySelectorAll(".dx-language-badge-container").forEach((V) => V.remove());
|
|
339
343
|
};
|
|
340
344
|
I();
|
|
341
345
|
const _ = new MutationObserver(I);
|
|
342
|
-
_.observe(a, { childList: !0, subtree: !0 }),
|
|
346
|
+
_.observe(a, { childList: !0, subtree: !0 }), c(() => _.disconnect());
|
|
343
347
|
},
|
|
344
348
|
// `flush: "sync"` — a template ref is populated by Vue's own patch process,
|
|
345
349
|
// and the DEFAULT ("pre") flush timing runs a watcher reacting to that
|
|
@@ -349,29 +353,30 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
349
353
|
// conceivably a synchronous export/print path) must never observe the
|
|
350
354
|
// badge even for one tick, so this cannot wait for the async scheduler.
|
|
351
355
|
{ immediate: !0, flush: "sync" }
|
|
352
|
-
), (a, l) => (
|
|
353
|
-
class:
|
|
356
|
+
), (a, l) => (i(), u("span", {
|
|
357
|
+
class: g(["tv-field", O.value ? "tv-needs-review" : ""])
|
|
354
358
|
}, [
|
|
355
|
-
|
|
359
|
+
h.value ? (i(), B(f(ce), {
|
|
356
360
|
key: 0,
|
|
357
361
|
shape: "rounded",
|
|
358
362
|
class: "tv-field-skeleton inline-block h-[1em] w-16 align-middle"
|
|
359
|
-
})) : (
|
|
360
|
-
|
|
361
|
-
class:
|
|
363
|
+
})) : (i(), u(j, { key: 1 }, [
|
|
364
|
+
m("span", {
|
|
365
|
+
class: g(["tv-field-value", A.value ? f(ge) : ""]),
|
|
362
366
|
onClick: le
|
|
363
367
|
}, [
|
|
364
|
-
|
|
368
|
+
oe(a.$slots, "default", {
|
|
365
369
|
value: w.value,
|
|
366
|
-
formatted:
|
|
370
|
+
formatted: p.value
|
|
367
371
|
}, () => [
|
|
368
|
-
p("span", {
|
|
372
|
+
!p.value && e.placeholder ? (i(), u("em", Ke, E(e.placeholder), 1)) : (i(), u("span", {
|
|
373
|
+
key: 1,
|
|
369
374
|
ref_key: "markdownFallbackRef",
|
|
370
375
|
ref: H,
|
|
371
376
|
class: "tv-markdown-fallback-wrap"
|
|
372
377
|
}, [
|
|
373
|
-
T(f(
|
|
374
|
-
"model-value":
|
|
378
|
+
T(f(be), {
|
|
379
|
+
"model-value": p.value,
|
|
375
380
|
format: "markdown",
|
|
376
381
|
theme: "light",
|
|
377
382
|
"can-edit": !1,
|
|
@@ -379,59 +384,59 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
379
384
|
"hide-footer": "",
|
|
380
385
|
class: "tv-markdown-fallback"
|
|
381
386
|
}, null, 8, ["model-value"])
|
|
382
|
-
], 512)
|
|
387
|
+
], 512))
|
|
383
388
|
])
|
|
384
389
|
], 2),
|
|
385
|
-
|
|
386
|
-
|
|
390
|
+
$.value ? (i(), u("span", Qe, [
|
|
391
|
+
m("button", {
|
|
387
392
|
type: "button",
|
|
388
|
-
class:
|
|
393
|
+
class: g(["tv-overlay", [f(R), A.value ? "cursor-pointer" : "cursor-default"]]),
|
|
389
394
|
"aria-label": q.value,
|
|
390
395
|
title: q.value,
|
|
391
|
-
onClick: l[0] || (l[0] = (
|
|
396
|
+
onClick: l[0] || (l[0] = (c) => A.value ? G() : void 0)
|
|
392
397
|
}, [
|
|
393
|
-
S.value === "unverified" && !
|
|
398
|
+
S.value === "unverified" && !C.value ? (i(), B(Je, {
|
|
394
399
|
key: 0,
|
|
395
400
|
state: D.value
|
|
396
|
-
}, null, 8, ["state"])) : S.value === "unverified" &&
|
|
397
|
-
|
|
401
|
+
}, null, 8, ["state"])) : S.value === "unverified" && C.value ? (i(), u("span", Xe, "A")) : S.value === "confirmed" ? (i(), u("span", Ze, "✔")) : (i(), u("span", et, "✔")),
|
|
402
|
+
b.value && !x.value ? (i(), u("span", {
|
|
398
403
|
key: 4,
|
|
399
|
-
class:
|
|
404
|
+
class: g(["tv-discrepancy-indicator ml-0.5 text-amber-500", s.value ? "tv-source-discrepancy-indicator" : ""]),
|
|
400
405
|
"aria-hidden": !0
|
|
401
|
-
}, "⚠", 2)) : y.value && !x.value ? (
|
|
402
|
-
], 10,
|
|
406
|
+
}, "⚠", 2)) : y.value && !x.value ? (i(), u("span", tt, "✎")) : k("", !0)
|
|
407
|
+
], 10, We)
|
|
403
408
|
])) : k("", !0)
|
|
404
409
|
], 64))
|
|
405
410
|
], 2));
|
|
406
411
|
}
|
|
407
|
-
}),
|
|
412
|
+
}), nt = { class: "tv-enable-toggle flex items-center justify-between text-sm font-medium text-gray-700" }, rt = { class: "tv-progress-block" }, at = { class: "mb-1 flex items-baseline justify-between" }, lt = { class: "tv-progress-count text-xs font-semibold text-gray-600" }, ot = {
|
|
408
413
|
key: 0,
|
|
409
414
|
class: "tv-attempts-recorded mt-1 text-[11px] text-gray-400"
|
|
410
|
-
},
|
|
415
|
+
}, ft = /* @__PURE__ */ M({
|
|
411
416
|
__name: "VerificationChrome",
|
|
412
417
|
setup(e) {
|
|
413
|
-
const t = te(), { enabled: n } = t, d = de(),
|
|
418
|
+
const t = te(), { enabled: n } = t, d = de(), h = F(!1), r = o(() => Ue(t.data)), v = o(
|
|
414
419
|
() => re(t.data).reduce(
|
|
415
|
-
(
|
|
416
|
-
var y, x, L,
|
|
417
|
-
return
|
|
420
|
+
(b, s) => {
|
|
421
|
+
var y, x, L, C, S, $, O;
|
|
422
|
+
return b + (((L = (x = (y = s.meta) == null ? void 0 : y.candidates) == null ? void 0 : x.extracted) == null ? void 0 : L.history_count) ?? ((O = ($ = (S = (C = s.meta) == null ? void 0 : C.candidates) == null ? void 0 : S.extracted) == null ? void 0 : $.history) == null ? void 0 : O.length) ?? 0);
|
|
418
423
|
},
|
|
419
424
|
0
|
|
420
425
|
)
|
|
421
426
|
), w = F(!1);
|
|
422
427
|
Y(
|
|
423
428
|
() => r.value.percent,
|
|
424
|
-
(
|
|
425
|
-
|
|
429
|
+
(b) => {
|
|
430
|
+
b === 100 && r.value.total > 0 && !w.value && (w.value = !0, d.success("All data points verified 🎯"));
|
|
426
431
|
}
|
|
427
432
|
);
|
|
428
|
-
let
|
|
433
|
+
let p = 0;
|
|
429
434
|
function D() {
|
|
430
|
-
const
|
|
431
|
-
if (!
|
|
432
|
-
|
|
433
|
-
const s =
|
|
434
|
-
|
|
435
|
+
const b = document.querySelectorAll(".tv-needs-review");
|
|
436
|
+
if (!b.length) return;
|
|
437
|
+
p = p % b.length;
|
|
438
|
+
const s = b[p];
|
|
439
|
+
p++, s.scrollIntoView({ behavior: "smooth", block: "center" }), s.animate(
|
|
435
440
|
[
|
|
436
441
|
{ boxShadow: "0 0 0 0 rgba(245, 158, 11, 0.8)" },
|
|
437
442
|
{ boxShadow: "0 0 0 12px rgba(245, 158, 11, 0)" }
|
|
@@ -439,31 +444,31 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
439
444
|
{ duration: 900, iterations: 2 }
|
|
440
445
|
);
|
|
441
446
|
}
|
|
442
|
-
return (
|
|
443
|
-
|
|
447
|
+
return (b, s) => (i(), u(j, null, [
|
|
448
|
+
m("button", {
|
|
444
449
|
type: "button",
|
|
445
|
-
class:
|
|
450
|
+
class: g(["tv-settings-button fixed bottom-4 right-4 z-50 flex h-11 w-11 items-center justify-center rounded-full bg-gray-900 text-white shadow-lg transition-transform hover:scale-105", f(R)]),
|
|
446
451
|
title: "Verification",
|
|
447
|
-
onClick: s[0] || (s[0] = W((y) =>
|
|
452
|
+
onClick: s[0] || (s[0] = W((y) => h.value = !h.value, ["stop"]))
|
|
448
453
|
}, [
|
|
449
454
|
T(f(fe), {
|
|
450
455
|
icon: f(ve),
|
|
451
456
|
class: "h-5 w-5"
|
|
452
457
|
}, null, 8, ["icon"]),
|
|
453
|
-
f(n) && r.value.needsReview > 0 ? (
|
|
458
|
+
f(n) && r.value.needsReview > 0 ? (i(), B(f(pe), {
|
|
454
459
|
key: 0,
|
|
455
460
|
value: r.value.needsReview,
|
|
456
461
|
variant: "warning",
|
|
457
462
|
class: "tv-needs-review-badge absolute -right-1 -top-1"
|
|
458
463
|
}, null, 8, ["value"])) : k("", !0)
|
|
459
464
|
], 2),
|
|
460
|
-
|
|
465
|
+
h.value ? (i(), u("div", {
|
|
461
466
|
key: 0,
|
|
462
|
-
class:
|
|
467
|
+
class: g(["tv-settings-panel fixed bottom-20 right-4 z-50 flex w-72 flex-col gap-4 rounded-xl bg-white p-4 shadow-2xl ring-1 ring-gray-200", f(R)])
|
|
463
468
|
}, [
|
|
464
|
-
|
|
465
|
-
s[2] || (s[2] =
|
|
466
|
-
|
|
469
|
+
m("label", nt, [
|
|
470
|
+
s[2] || (s[2] = m("span", null, "Verification overlay", -1)),
|
|
471
|
+
ie(m("input", {
|
|
467
472
|
"onUpdate:modelValue": s[1] || (s[1] = (y) => se(n) ? n.value = y : null),
|
|
468
473
|
type: "checkbox",
|
|
469
474
|
class: "tv-enable-checkbox h-4 w-4 accent-gray-900"
|
|
@@ -471,11 +476,11 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
471
476
|
[ue, f(n)]
|
|
472
477
|
])
|
|
473
478
|
]),
|
|
474
|
-
f(n) && r.value.total > 0 ? (
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
s[3] || (s[3] =
|
|
478
|
-
|
|
479
|
+
f(n) && r.value.total > 0 ? (i(), u(j, { key: 0 }, [
|
|
480
|
+
m("div", rt, [
|
|
481
|
+
m("div", at, [
|
|
482
|
+
s[3] || (s[3] = m("span", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, "Review progress", -1)),
|
|
483
|
+
m("span", lt, E(r.value.verified) + " / " + E(r.value.total), 1)
|
|
479
484
|
]),
|
|
480
485
|
T(f(me), {
|
|
481
486
|
value: r.value.verified,
|
|
@@ -487,21 +492,21 @@ const Ye = ["data-level"], qe = /* @__PURE__ */ M({
|
|
|
487
492
|
glow: r.value.percent === 100,
|
|
488
493
|
gradient: ""
|
|
489
494
|
}, null, 8, ["value", "max", "variant", "striped", "animate-stripes", "glow"]),
|
|
490
|
-
v.value > 0 ? (
|
|
495
|
+
v.value > 0 ? (i(), u("div", ot, E(v.value) + " extraction attempt" + E(v.value === 1 ? "" : "s") + " recorded ", 1)) : k("", !0)
|
|
491
496
|
]),
|
|
492
|
-
r.value.needsReview > 0 ? (
|
|
497
|
+
r.value.needsReview > 0 ? (i(), u("button", {
|
|
493
498
|
key: 0,
|
|
494
499
|
type: "button",
|
|
495
|
-
class:
|
|
500
|
+
class: g(["tv-next-flagged flex items-center justify-between rounded-lg bg-amber-50 px-3 py-2 text-left text-xs font-medium text-amber-700 ring-1 ring-inset ring-amber-600/20 transition hover:bg-amber-100", f(R)]),
|
|
496
501
|
onClick: W(D, ["stop"])
|
|
497
502
|
}, [
|
|
498
|
-
|
|
499
|
-
s[4] || (s[4] =
|
|
503
|
+
m("span", null, E(r.value.needsReview) + " need" + E(r.value.needsReview === 1 ? "s" : "") + " review", 1),
|
|
504
|
+
s[4] || (s[4] = m("span", { "aria-hidden": "true" }, "→", -1))
|
|
500
505
|
], 2)) : k("", !0)
|
|
501
506
|
], 64)) : k("", !0)
|
|
502
507
|
], 2)) : k("", !0),
|
|
503
|
-
T(f(
|
|
504
|
-
class:
|
|
508
|
+
T(f(he), {
|
|
509
|
+
class: g(f(R))
|
|
505
510
|
}, null, 8, ["class"])
|
|
506
511
|
], 64));
|
|
507
512
|
}
|
|
@@ -511,20 +516,20 @@ export {
|
|
|
511
516
|
Ie as CONFIDENCE_SCALE,
|
|
512
517
|
Je as ConfidenceIcon,
|
|
513
518
|
Pe as DATA_POINT_ACTIVATED,
|
|
514
|
-
|
|
519
|
+
ge as EDITABLE_CLASS,
|
|
515
520
|
Z as ENABLED_STORAGE_KEY,
|
|
516
521
|
ne as RESOLUTION_PRIORITY,
|
|
517
522
|
Fe as TEMPLATE_MESSAGE_SOURCE,
|
|
518
523
|
Me as TEMPLATE_PROTOCOL_VERSION,
|
|
519
|
-
|
|
520
|
-
|
|
524
|
+
ft as VerificationChrome,
|
|
525
|
+
dt as VerifiedField,
|
|
521
526
|
Le as candidatesDisagree,
|
|
522
527
|
Ue as computeProgress,
|
|
523
528
|
z as confidenceStateLabel,
|
|
524
529
|
Ce as confidenceStateOf,
|
|
525
530
|
Be as embedderOrigin,
|
|
526
531
|
De as hasDiscrepancy,
|
|
527
|
-
|
|
532
|
+
ct as initVerification,
|
|
528
533
|
je as notifyDataPointActivated,
|
|
529
534
|
Ee as ratingLevel,
|
|
530
535
|
Te as resolveCandidates,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thehammer/template-verification",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.23",
|
|
4
4
|
"description": "Read-write verification overlay for rendered template apps — per-data-point confidence, discrepancy, 3-source resolution (override > extracted > claim), inline edit, and a recursive comparison page. Consumes the host's __meta sidecar; fetches nothing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|