@npmjsdnt/turn-reply 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tr.js +34 -15
- package/dist/tr.min.js +11 -11
- package/package.json +1 -1
package/dist/tr.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @npmjsdnt/turn-reply@0.1.
|
|
1
|
+
/*! @npmjsdnt/turn-reply@0.1.2 turn-reply panel */
|
|
2
2
|
(() => {
|
|
3
3
|
// trw:css
|
|
4
4
|
var css_default = `.trw{
|
|
@@ -768,28 +768,47 @@
|
|
|
768
768
|
items[0].__focus();
|
|
769
769
|
};
|
|
770
770
|
fold.addEventListener("click", () => setFold(false));
|
|
771
|
-
const ns = el("div", { cls: "ns", role: "status" }
|
|
772
|
-
let
|
|
771
|
+
const ns = el("div", { cls: "ns", role: "status" });
|
|
772
|
+
let nsWait = null;
|
|
773
|
+
const notSent = (why) => {
|
|
774
|
+
nsWait = null;
|
|
775
|
+
ns.textContent = "没有填进输入框:宿主只接受「刚在面板里点击」的填入,点之前 5 秒内页面别处有点击或按键就会拒收。别碰面板以外的地方,等几秒再点一次「填入输入框」。";
|
|
776
|
+
ns.title = why || "";
|
|
777
|
+
root.classList.add("notsent");
|
|
778
|
+
setFold(false);
|
|
779
|
+
};
|
|
780
|
+
window.addEventListener("message", (e) => {
|
|
781
|
+
if (!nsWait)
|
|
782
|
+
return;
|
|
783
|
+
const d = e.data;
|
|
784
|
+
if (!d || typeof d !== "object" || d.jsonrpc !== "2.0" || d.method !== undefined || !(("result" in d) || ("error" in d)))
|
|
785
|
+
return;
|
|
786
|
+
if (Date.now() > nsWait.until) {
|
|
787
|
+
nsWait = null;
|
|
788
|
+
return;
|
|
789
|
+
}
|
|
790
|
+
if (d.error || d.result && d.result.isError === true)
|
|
791
|
+
notSent(d.result && d.result._reason);
|
|
792
|
+
else
|
|
793
|
+
nsWait = null;
|
|
794
|
+
});
|
|
795
|
+
let nsObs = null;
|
|
773
796
|
const watchNotSent = () => {
|
|
774
|
-
if (nsObs)
|
|
775
|
-
nsObs.disconnect();
|
|
776
|
-
clearTimeout(nsTimer);
|
|
777
797
|
root.classList.remove("notsent");
|
|
798
|
+
nsWait = { until: Date.now() + 3000 };
|
|
778
799
|
const b = document.body;
|
|
779
800
|
if (!b || typeof MutationObserver !== "function")
|
|
780
801
|
return;
|
|
781
|
-
|
|
802
|
+
if (nsObs)
|
|
782
803
|
nsObs.disconnect();
|
|
783
|
-
clearTimeout(nsTimer);
|
|
784
|
-
root.classList.add("notsent");
|
|
785
|
-
setFold(false);
|
|
786
|
-
};
|
|
787
804
|
nsObs = new MutationObserver(() => {
|
|
788
|
-
if (b.hasAttribute("data-not-sent"))
|
|
789
|
-
|
|
805
|
+
if (b.hasAttribute("data-not-sent") && nsWait) {
|
|
806
|
+
nsObs.disconnect();
|
|
807
|
+
notSent();
|
|
808
|
+
}
|
|
790
809
|
});
|
|
791
810
|
nsObs.observe(b, { attributes: true, attributeFilter: ["data-not-sent"] });
|
|
792
|
-
|
|
811
|
+
setTimeout(() => nsObs && nsObs.disconnect(), 3000);
|
|
793
812
|
};
|
|
794
813
|
function fill() {
|
|
795
814
|
const t = build();
|
|
@@ -898,7 +917,7 @@
|
|
|
898
917
|
})();
|
|
899
918
|
|
|
900
919
|
// src/index.js
|
|
901
|
-
var version = "0.1.
|
|
920
|
+
var version = "0.1.2";
|
|
902
921
|
var STYLE_ID = "trw-style-" + version;
|
|
903
922
|
function injectCSS(root) {
|
|
904
923
|
const d = root.ownerDocument || document;
|
package/dist/tr.min.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
/*! @npmjsdnt/turn-reply@0.1.
|
|
2
|
-
(()=>{var rt=".trw{--c-bg:var(--surface-2);--c-sunken:var(--surface-1);--c-hover:var(--fill-ghost-hover,var(--surface-1));--c-soft:var(--fill-ghost-selected,var(--surface-1));--c-solid:var(--fill-primary,var(--text-primary));--c-on-solid:var(--on-primary,var(--surface-2));--c-line:var(--border);--c-line-s:var(--border-strong);--c-line-x:var(--border-stronger,var(--border-strong));--c-ink1:var(--text-primary);--c-ink2:var(--text-secondary);--c-ink3:var(--text-muted);--c-ink4:var(--text-disabled,var(--text-muted));--c-attn:var(--text-warning);--c-ok:var(--text-success);--c-focus:var(--border-accent,var(--text-accent));--c-r:6px;--c-track:color-mix(in srgb,var(--c-ink1,currentColor) 5%,transparent);--c-lift:var(--surface-3,var(--surface-2));--c-hov:color-mix(in srgb,var(--c-ink1,currentColor) 4%,transparent);container-type:inline-size;position:relative;box-sizing:border-box;font-family:var(--font-sans);font-size:13px;line-height:20px;font-weight:400;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;color:var(--c-ink1);background:transparent;border:0;border-radius:0;padding:0}.trw.dark{--c-lift:color-mix(in srgb,var(--c-ink1,currentColor) 15%,transparent);--c-hov:color-mix(in srgb,var(--c-ink1,currentColor) 8%,transparent)}.trw *,.trw *::before,.trw *::after{box-sizing:border-box}.trw [hidden]{display:none!important}.trw .mono{font-family:var(--font-mono);font-size:12px}.trw .grp{display:flex;align-items:flex-start;padding:6px 0;border-top:0.5px solid var(--c-line)}.trw .bd>.grp:first-child{border-top:0}.trw .gl{flex:0 0 60px;padding-top:6px;font-size:11px;line-height:16px;color:var(--c-ink2);white-space:nowrap;cursor:default}.trw .rs{flex:1 1 auto;min-width:0}.trw .it{margin:0 -6px;padding:0 6px;border-radius:0}.trw .it:hover,.trw.kb .it:focus-within{background:var(--c-hover)}.trw .ln{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;min-height:28px}.trw .bd>.grp:first-child .it:first-child .ln{padding-right:40px}.trw .q{flex:0 0 var(--qw,240px);min-width:0;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden}.trw.measuring .q{flex:none!important;width:max-content!important}.trw .qt{min-width:0;overflow:hidden;text-overflow:ellipsis}.trw .n{flex:none;min-width:14px;color:var(--c-ink2)}.trw .it.core .qt{font-weight:500}.trw .q.info .qt{font-size:12px;color:var(--c-ink2)}.trw a.tk{font-family:var(--font-mono);font-size:12px;color:var(--c-ink1);text-decoration:underline;text-decoration-color:var(--c-line-x);text-underline-offset:2px}.trw .ctl{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding:0 4px;margin:0 -4px}.trw .cb{flex:none;width:9px;height:9px;background:var(--c-attn);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.trw .seg{display:inline-flex;align-items:center;gap:2px;height:26px;padding:2px;border:0;border-radius:7px;background:var(--c-track)}.trw button.sg{position:relative;font-family:inherit!important;font-size:12px!important;font-weight:400!important;line-height:20px!important;height:22px!important;min-height:0!important;margin:0!important;padding:0 9px!important;border:0!important;border-radius:5px!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;white-space:nowrap;text-align:center;justify-content:center}.trw button.sg[aria-checked=\"false\"]:hover{background:var(--c-hov)!important;color:var(--c-ink1)!important}.trw .ck.rec>span::before{content:\"\";display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:2px}.trw button.sg.rec{padding:0 4px 0 14px!important}.trw button.sg.rec::before{content:\"\";position:absolute;left:6px;top:50%;width:4px;height:4px;margin-top:-2px;border-radius:50%;background:currentColor;opacity:.4}.trw button.sg.sk{color:var(--c-ink3)!important}.trw button.sg[aria-checked=\"true\"]{background:var(--c-lift)!important;color:var(--c-ink1)!important;box-shadow:none!important}.trw .dseg button.sg[aria-checked=\"true\"]:hover::before{content:\"×\";position:absolute;left:4px;top:0;width:8px;height:auto;margin:0;border-radius:0;background:none;line-height:22px;text-align:center;opacity:1;color:var(--c-ink3)}.trw .k{display:none;position:absolute;top:-8px;right:-4px;font:11px/14px var(--font-mono);padding:0 3px;border-radius:4px;background:var(--c-bg);color:var(--c-ink3);border:0.5px solid var(--c-line-s);pointer-events:none;z-index:1}.trw.kb .it:focus-within .k{display:block}.trw .ck{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 6px;border-radius:var(--c-r);font-size:12px;color:var(--c-ink2);cursor:pointer;white-space:nowrap;user-select:none}.trw .ck:hover{background:var(--c-hover);color:var(--c-ink1)}.trw .ck input{width:13px;height:13px;margin:0;accent-color:var(--c-solid);cursor:pointer}.trw .ck:has(input:checked){color:var(--c-ink1)}.trw button.gh{display:inline-flex;align-items:center;gap:5px;font-family:inherit!important;font-size:12px!important;font-weight:500!important;line-height:20px!important;height:26px!important;min-height:0!important;margin:0!important;padding:0 8px!important;border:0.5px solid transparent!important;border-radius:var(--c-r)!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;white-space:nowrap}.trw button.gh:hover{background:var(--c-hover)!important;color:var(--c-ink1)!important}.trw svg.i{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.trw .ed{display:flex;padding:4px 0 8px calc(var(--qw,240px) + 8px)}.trw .it:last-child>.ed{padding-bottom:4px}.trw .ed textarea,.trw textarea.ask{display:block;flex:1;min-width:0;min-height:28px;height:28px;resize:none!important;overflow:hidden;margin:0!important;padding:4px 10px!important;font:12px/18px var(--font-sans,system-ui)!important;white-space:pre-wrap;overflow-wrap:anywhere;border:0.5px solid var(--c-line-s)!important;border-radius:var(--c-r)!important;background:var(--c-bg)!important;color:var(--c-ink1)!important;box-shadow:none!important}.trw .ed textarea::placeholder,.trw textarea.ask::placeholder{color:var(--c-ink3)}.trw textarea.ask{flex:1 1 160px;min-height:26px;height:26px;padding:3px 10px!important}.trw .ln.top{align-items:flex-start}.trw .ln.top .q{min-height:26px}.trw .foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 0 2px;border-top:0.5px solid var(--c-line)}.trw .sum{flex:1 1 auto;display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:18px;color:var(--c-ink3);white-space:nowrap}.trw .sum b{font-weight:500;color:var(--c-ink2)}.trw button.lk{font-family:inherit!important;font-size:12px!important;font-weight:400!important;line-height:18px!important;height:auto!important;min-height:0!important;margin:0!important;padding:0 2px!important;border:0!important;border-radius:4px!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;text-decoration:underline;text-decoration-color:var(--c-line-x);text-underline-offset:3px}.trw button.btn{display:inline-flex;align-items:center;gap:6px;font-family:inherit!important;font-size:12px!important;font-weight:500!important;line-height:20px!important;height:28px!important;min-height:0!important;margin:0!important;padding:0 12px!important;border:0.5px solid transparent!important;border-radius:var(--c-r)!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;white-space:nowrap}.trw button.btn:hover{background:var(--c-hover)!important;color:var(--c-ink1)!important}.trw button.btn.pri{border-color:var(--c-line-x)!important;color:var(--c-ink1)!important}.trw button.btn:disabled,.trw button.gh:disabled{color:var(--c-ink4)!important;background:transparent!important;cursor:default}.trw pre.pv{font:12px/18px var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--c-sunken);padding:8px 10px;border-radius:var(--c-r);margin:0 0 8px;color:var(--c-ink2)}.trw .fold{display:none;align-items:center;gap:6px;min-height:34px;font-size:12px;color:var(--c-ink2);cursor:pointer;padding:0 40px 0 6px;margin:0 -6px}.trw .fold .fs{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trw .mk-ok{flex:none;width:10px;height:8px;background:var(--c-ok);clip-path:polygon(0 56%,15% 38%,38% 62%,85% 0,100% 19%,38% 100%)}.trw.folded .fold{display:flex}.trw.folded>:not(.fold){display:none!important}.trw.folded:hover{background:var(--c-hover);border-radius:0}.trw button:focus-visible{outline:2px solid var(--c-focus)!important;outline-offset:-2px}.trw .ed textarea:focus,.trw textarea.ask:focus{outline:none!important;border-color:var(--c-focus)!important;box-shadow:inset 0 0 0 1px var(--c-focus)!important}@container (max-width:480px){.trw .grp{display:block}.trw .ln{flex-wrap:wrap;row-gap:2px;padding-bottom:2px}.trw .q{flex:1 1 auto;white-space:normal}.trw .ed{padding-left:0}}.trw .err{padding:6px 0;font-size:12px;line-height:18px;color:var(--c-attn);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trw.dark{--c-track:color-mix(in srgb,var(--c-ink1,currentColor) 8%,transparent);--c-lift:color-mix(in srgb,var(--c-ink1,currentColor) 26%,transparent);--c-hov:color-mix(in srgb,var(--c-ink1,currentColor) 12%,transparent)}.trw.dark button.sg.rec::before{opacity:.75}.trw.dark button.sg[aria-checked=\"true\"]{font-weight:500!important}.trw .ns{display:none;font-size:12px;line-height:18px;color:var(--c-attn);padding:6px 0 0}.trw.notsent .ns{display:block}";var z=(n,l=1/0,m=1)=>typeof n==="string"&&n.length>=m&&n.length<=l,H=(n,l,m,y)=>{for(let s of Object.keys(n))if(!l.includes(s))y.push(`${m}.${s} 未定义的字段`)};function ot(n){let l=[];if(!n||typeof n!=="object"||Array.isArray(n))return["$ 不是对象"];if(H(n,["v","turn","ticketUrl","decisions","actions","delivery","optional"],"$",l),n.v!==1)l.push("$.v 必须为 1");if(!z(n.turn,40)||!/^[\w.:-]+$/.test(n.turn))l.push("$.turn 缺失或含非法字符");if(n.ticketUrl!==void 0&&!(z(n.ticketUrl)&&n.ticketUrl.startsWith("https://")))l.push("$.ticketUrl 须为 https:// 前缀");let m=new Set;(n.decisions??[]).forEach((s,x)=>{let f=`$.decisions[${x}]`;if(!s||typeof s!=="object")return l.push(`${f} 不是对象`);if(H(s,["n","group","core","q","opts","rec","def","multi","ask","ph"],f,l),!Number.isInteger(s.n)||s.n<1)l.push(`${f}.n 须为正整数`);else if(m.has(s.n))l.push(`${f}.n=${s.n} 重复`);else m.add(s.n);if(!["now","defaulted","pending"].includes(s.group))l.push(`${f}.group 非法`);if(!z(s.q,40))l.push(`${f}.q 须为 1–40 字`);if(s.core!==void 0&&typeof s.core!=="boolean")l.push(`${f}.core 须为布尔`);if(s.def!==void 0&&!z(s.def,60))l.push(`${f}.def 须为 ≤60 字`);if(s.multi!==void 0&&s.multi!==!0)l.push(`${f}.multi 只能为 true`);if(s.ask!==void 0&&s.ask!==!0)l.push(`${f}.ask 只能为 true`);let T=s.opts;if(T!==void 0&&!(Array.isArray(T)&&T.every((D)=>z(D,12))))l.push(`${f}.opts 须为 1–12 字的字符串数组`);let N=Array.isArray(T)?T.length:0,I=s.group==="defaulted"?"defaulted":s.ask?"ask":s.multi?"multi":"one";if(s.ask&&s.multi)l.push(`${f} ask 与 multi 不能同时出现`);if(I==="defaulted"&&(T||s.rec!==void 0||s.ask||s.multi))l.push(`${f} defaulted 条目只有「推翻」,不带 opts/rec/ask/multi`);if(I==="ask"&&(T||s.rec!==void 0))l.push(`${f} ask 条目不带 opts/rec`);if(s.ph!==void 0&&(I!=="ask"||!z(s.ph,40)))l.push(`${f}.ph 只用于 ask,≤40 字`);if(I==="one"&&(N<2||N>4))l.push(`${f} 单选须有 2–4 个 opts(现 ${N})`);if(I==="multi"&&(N<2||N>8))l.push(`${f} 多选须有 2–8 个 opts(现 ${N})`);if(I==="one"&&s.rec!==void 0&&!(Number.isInteger(s.rec)&&s.rec>=0&&s.rec<N))l.push(`${f}.rec 须为 opts 下标`);if(I==="multi"&&s.rec!==void 0&&!(Array.isArray(s.rec)&&s.rec.every((D)=>Number.isInteger(D)&&D>=0&&D<N)&&new Set(s.rec).size===s.rec.length))l.push(`${f}.rec 须为不重复的 opts 下标数组`);if(Array.isArray(T)&&new Set(T).size!==N)l.push(`${f}.opts 有重复`)});let y=[...m].sort((s,x)=>s-x);if(y.length&&y.some((s,x)=>x&&s!==y[x-1]+1))l.push(`$.decisions 编号不连续:${y.join(",")}`);if((n.actions??[]).forEach((s,x)=>{let f=`$.actions[${x}]`;if(!s||typeof s!=="object")return l.push(`${f} 不是对象`);if(H(s,["text","short","cmd"],f,l),!z(s.text,120))l.push(`${f}.text 须为 1–120 字`);if(!z(s.short,24))l.push(`${f}.short 须为 1–24 字`);if(s.cmd!==void 0&&!z(s.cmd))l.push(`${f}.cmd 须为非空字符串`)}),n.delivery!==void 0){let s=n.delivery;if(!s||typeof s!=="object")l.push("$.delivery 不是对象");else{if(H(s,["info","toggles"],"$.delivery",l),s.info!==void 0&&!z(s.info,120))l.push("$.delivery.info 须为 ≤120 字");(s.toggles??[]).forEach((x,f)=>{if(H(x??{},["label","rec"],`$.delivery.toggles[${f}]`,l),!z(x?.label,20))l.push(`$.delivery.toggles[${f}].label 须为 1–20 字`);if(x?.rec!==void 0&&typeof x.rec!=="boolean")l.push(`$.delivery.toggles[${f}].rec 须为布尔`)})}}(n.optional??[]).forEach((s,x)=>{if(H(s??{},["text"],`$.optional[${x}]`,l),!z(s?.text,120))l.push(`$.optional[${x}].text 须为 1–120 字`)});for(let s of["decisions","actions","optional"])if(n[s]!==void 0&&!Array.isArray(n[s]))l.push(`$.${s} 须为数组`);return l}var Nt=(()=>{let n=(p,h={},...E)=>{let w=document.createElement(p);for(let[g,_]of Object.entries(h)){if(_==null||_===!1)continue;if(g==="cls")w.className=_;else w.setAttribute(g,_)}return E.flat().forEach((g)=>{if(g!=null&&g!==!1)w.append(g)}),w},l={copy:'<rect x="5.5" y="5.5" width="7.5" height="7.5" rx="1.2"/><path d="M10.5 3.5V3a.5.5 0 0 0-.5-.5H3a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h.5"/>',reset:'<path d="M3.2 8a4.8 4.8 0 1 0 1.4-3.4"/><path d="M3.2 2.6v2.6h2.6"/>'},m=(p)=>{let h=document.createElementNS("http://www.w3.org/2000/svg","svg");return h.setAttribute("viewBox","0 0 16 16"),h.setAttribute("class","i"),h.setAttribute("aria-hidden","true"),h.innerHTML=l[p],h},y=null,s=(p)=>{if(!p)return[];let h=[],E=0;return p.replace(/\b[A-Z]{2,6}-\d+\b|\b[0-9a-f]{7,40}\b/g,(w,g)=>{let _=/^[A-Z]/.test(w);if(!_&&!(/\d/.test(w)&&/[a-f]/.test(w)))return w;if(_&&!y)return w;return h.push(p.slice(E,g),_?n("a",{cls:"tk",href:y+w,target:"_blank",rel:"noopener"},w):n("span",{cls:"mono"},w.slice(0,7))),E=g+w.length,w}),h.push(p.slice(E)),h},x=(p)=>{let h=()=>{let E=n("textarea",{style:"position:absolute;left:-9999px;top:0","aria-hidden":"true"});E.value=p,document.body.append(E),E.select();try{document.execCommand("copy")}catch(w){}E.remove()};try{navigator.clipboard.writeText(p).catch(h)}catch(E){h()}},f=(p,h)=>{if(!p.dataset.l)p.dataset.l=p.textContent;p.textContent=h,clearTimeout(p._t),p._t=setTimeout(()=>{p.textContent=p.dataset.l},1400)},T=(p)=>p?p.split(`
|
|
3
|
-
`).filter(Boolean).length:0,N=(p,h)=>p.length>h?p.slice(0,h)+"…":p,I=(p,h)=>p.size===h.size&&[...p].every((E)=>h.has(E)),
|
|
4
|
-
`).map((i)=>i.replace(/\s+$/,""));while(r.length&&!r[0])r.shift();while(r.length&&!r[r.length-1])r.pop();if(r=r.filter((i,
|
|
5
|
-
`+r.slice(1).map((i)=>
|
|
6
|
-
`)},
|
|
7
|
-
`));return e.forEach((r,
|
|
8
|
-
`)))t.push("");t.push("--早前尚未决策--"),
|
|
9
|
-
`)}let
|
|
1
|
+
/*! @npmjsdnt/turn-reply@0.1.2 turn-reply panel */
|
|
2
|
+
(()=>{var ot=".trw{--c-bg:var(--surface-2);--c-sunken:var(--surface-1);--c-hover:var(--fill-ghost-hover,var(--surface-1));--c-soft:var(--fill-ghost-selected,var(--surface-1));--c-solid:var(--fill-primary,var(--text-primary));--c-on-solid:var(--on-primary,var(--surface-2));--c-line:var(--border);--c-line-s:var(--border-strong);--c-line-x:var(--border-stronger,var(--border-strong));--c-ink1:var(--text-primary);--c-ink2:var(--text-secondary);--c-ink3:var(--text-muted);--c-ink4:var(--text-disabled,var(--text-muted));--c-attn:var(--text-warning);--c-ok:var(--text-success);--c-focus:var(--border-accent,var(--text-accent));--c-r:6px;--c-track:color-mix(in srgb,var(--c-ink1,currentColor) 5%,transparent);--c-lift:var(--surface-3,var(--surface-2));--c-hov:color-mix(in srgb,var(--c-ink1,currentColor) 4%,transparent);container-type:inline-size;position:relative;box-sizing:border-box;font-family:var(--font-sans);font-size:13px;line-height:20px;font-weight:400;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;color:var(--c-ink1);background:transparent;border:0;border-radius:0;padding:0}.trw.dark{--c-lift:color-mix(in srgb,var(--c-ink1,currentColor) 15%,transparent);--c-hov:color-mix(in srgb,var(--c-ink1,currentColor) 8%,transparent)}.trw *,.trw *::before,.trw *::after{box-sizing:border-box}.trw [hidden]{display:none!important}.trw .mono{font-family:var(--font-mono);font-size:12px}.trw .grp{display:flex;align-items:flex-start;padding:6px 0;border-top:0.5px solid var(--c-line)}.trw .bd>.grp:first-child{border-top:0}.trw .gl{flex:0 0 60px;padding-top:6px;font-size:11px;line-height:16px;color:var(--c-ink2);white-space:nowrap;cursor:default}.trw .rs{flex:1 1 auto;min-width:0}.trw .it{margin:0 -6px;padding:0 6px;border-radius:0}.trw .it:hover,.trw.kb .it:focus-within{background:var(--c-hover)}.trw .ln{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;min-height:28px}.trw .bd>.grp:first-child .it:first-child .ln{padding-right:40px}.trw .q{flex:0 0 var(--qw,240px);min-width:0;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden}.trw.measuring .q{flex:none!important;width:max-content!important}.trw .qt{min-width:0;overflow:hidden;text-overflow:ellipsis}.trw .n{flex:none;min-width:14px;color:var(--c-ink2)}.trw .it.core .qt{font-weight:500}.trw .q.info .qt{font-size:12px;color:var(--c-ink2)}.trw a.tk{font-family:var(--font-mono);font-size:12px;color:var(--c-ink1);text-decoration:underline;text-decoration-color:var(--c-line-x);text-underline-offset:2px}.trw .ctl{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding:0 4px;margin:0 -4px}.trw .cb{flex:none;width:9px;height:9px;background:var(--c-attn);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.trw .seg{display:inline-flex;align-items:center;gap:2px;height:26px;padding:2px;border:0;border-radius:7px;background:var(--c-track)}.trw button.sg{position:relative;font-family:inherit!important;font-size:12px!important;font-weight:400!important;line-height:20px!important;height:22px!important;min-height:0!important;margin:0!important;padding:0 9px!important;border:0!important;border-radius:5px!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;white-space:nowrap;text-align:center;justify-content:center}.trw button.sg[aria-checked=\"false\"]:hover{background:var(--c-hov)!important;color:var(--c-ink1)!important}.trw .ck.rec>span::before{content:\"\";display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:2px}.trw button.sg.rec{padding:0 4px 0 14px!important}.trw button.sg.rec::before{content:\"\";position:absolute;left:6px;top:50%;width:4px;height:4px;margin-top:-2px;border-radius:50%;background:currentColor;opacity:.4}.trw button.sg.sk{color:var(--c-ink3)!important}.trw button.sg[aria-checked=\"true\"]{background:var(--c-lift)!important;color:var(--c-ink1)!important;box-shadow:none!important}.trw .dseg button.sg[aria-checked=\"true\"]:hover::before{content:\"×\";position:absolute;left:4px;top:0;width:8px;height:auto;margin:0;border-radius:0;background:none;line-height:22px;text-align:center;opacity:1;color:var(--c-ink3)}.trw .k{display:none;position:absolute;top:-8px;right:-4px;font:11px/14px var(--font-mono);padding:0 3px;border-radius:4px;background:var(--c-bg);color:var(--c-ink3);border:0.5px solid var(--c-line-s);pointer-events:none;z-index:1}.trw.kb .it:focus-within .k{display:block}.trw .ck{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 6px;border-radius:var(--c-r);font-size:12px;color:var(--c-ink2);cursor:pointer;white-space:nowrap;user-select:none}.trw .ck:hover{background:var(--c-hover);color:var(--c-ink1)}.trw .ck input{width:13px;height:13px;margin:0;accent-color:var(--c-solid);cursor:pointer}.trw .ck:has(input:checked){color:var(--c-ink1)}.trw button.gh{display:inline-flex;align-items:center;gap:5px;font-family:inherit!important;font-size:12px!important;font-weight:500!important;line-height:20px!important;height:26px!important;min-height:0!important;margin:0!important;padding:0 8px!important;border:0.5px solid transparent!important;border-radius:var(--c-r)!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;white-space:nowrap}.trw button.gh:hover{background:var(--c-hover)!important;color:var(--c-ink1)!important}.trw svg.i{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.trw .ed{display:flex;padding:4px 0 8px calc(var(--qw,240px) + 8px)}.trw .it:last-child>.ed{padding-bottom:4px}.trw .ed textarea,.trw textarea.ask{display:block;flex:1;min-width:0;min-height:28px;height:28px;resize:none!important;overflow:hidden;margin:0!important;padding:4px 10px!important;font:12px/18px var(--font-sans,system-ui)!important;white-space:pre-wrap;overflow-wrap:anywhere;border:0.5px solid var(--c-line-s)!important;border-radius:var(--c-r)!important;background:var(--c-bg)!important;color:var(--c-ink1)!important;box-shadow:none!important}.trw .ed textarea::placeholder,.trw textarea.ask::placeholder{color:var(--c-ink3)}.trw textarea.ask{flex:1 1 160px;min-height:26px;height:26px;padding:3px 10px!important}.trw .ln.top{align-items:flex-start}.trw .ln.top .q{min-height:26px}.trw .foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 0 2px;border-top:0.5px solid var(--c-line)}.trw .sum{flex:1 1 auto;display:inline-flex;align-items:center;gap:8px;font-size:12px;line-height:18px;color:var(--c-ink3);white-space:nowrap}.trw .sum b{font-weight:500;color:var(--c-ink2)}.trw button.lk{font-family:inherit!important;font-size:12px!important;font-weight:400!important;line-height:18px!important;height:auto!important;min-height:0!important;margin:0!important;padding:0 2px!important;border:0!important;border-radius:4px!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;text-decoration:underline;text-decoration-color:var(--c-line-x);text-underline-offset:3px}.trw button.btn{display:inline-flex;align-items:center;gap:6px;font-family:inherit!important;font-size:12px!important;font-weight:500!important;line-height:20px!important;height:28px!important;min-height:0!important;margin:0!important;padding:0 12px!important;border:0.5px solid transparent!important;border-radius:var(--c-r)!important;background:transparent!important;color:var(--c-ink2)!important;box-shadow:none!important;cursor:pointer;white-space:nowrap}.trw button.btn:hover{background:var(--c-hover)!important;color:var(--c-ink1)!important}.trw button.btn.pri{border-color:var(--c-line-x)!important;color:var(--c-ink1)!important}.trw button.btn:disabled,.trw button.gh:disabled{color:var(--c-ink4)!important;background:transparent!important;cursor:default}.trw pre.pv{font:12px/18px var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;background:var(--c-sunken);padding:8px 10px;border-radius:var(--c-r);margin:0 0 8px;color:var(--c-ink2)}.trw .fold{display:none;align-items:center;gap:6px;min-height:34px;font-size:12px;color:var(--c-ink2);cursor:pointer;padding:0 40px 0 6px;margin:0 -6px}.trw .fold .fs{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trw .mk-ok{flex:none;width:10px;height:8px;background:var(--c-ok);clip-path:polygon(0 56%,15% 38%,38% 62%,85% 0,100% 19%,38% 100%)}.trw.folded .fold{display:flex}.trw.folded>:not(.fold){display:none!important}.trw.folded:hover{background:var(--c-hover);border-radius:0}.trw button:focus-visible{outline:2px solid var(--c-focus)!important;outline-offset:-2px}.trw .ed textarea:focus,.trw textarea.ask:focus{outline:none!important;border-color:var(--c-focus)!important;box-shadow:inset 0 0 0 1px var(--c-focus)!important}@container (max-width:480px){.trw .grp{display:block}.trw .ln{flex-wrap:wrap;row-gap:2px;padding-bottom:2px}.trw .q{flex:1 1 auto;white-space:normal}.trw .ed{padding-left:0}}.trw .err{padding:6px 0;font-size:12px;line-height:18px;color:var(--c-attn);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trw.dark{--c-track:color-mix(in srgb,var(--c-ink1,currentColor) 8%,transparent);--c-lift:color-mix(in srgb,var(--c-ink1,currentColor) 26%,transparent);--c-hov:color-mix(in srgb,var(--c-ink1,currentColor) 12%,transparent)}.trw.dark button.sg.rec::before{opacity:.75}.trw.dark button.sg[aria-checked=\"true\"]{font-weight:500!important}.trw .ns{display:none;font-size:12px;line-height:18px;color:var(--c-attn);padding:6px 0 0}.trw.notsent .ns{display:block}";var z=(n,l=1/0,m=1)=>typeof n==="string"&&n.length>=m&&n.length<=l,J=(n,l,m,y)=>{for(let s of Object.keys(n))if(!l.includes(s))y.push(`${m}.${s} 未定义的字段`)};function it(n){let l=[];if(!n||typeof n!=="object"||Array.isArray(n))return["$ 不是对象"];if(J(n,["v","turn","ticketUrl","decisions","actions","delivery","optional"],"$",l),n.v!==1)l.push("$.v 必须为 1");if(!z(n.turn,40)||!/^[\w.:-]+$/.test(n.turn))l.push("$.turn 缺失或含非法字符");if(n.ticketUrl!==void 0&&!(z(n.ticketUrl)&&n.ticketUrl.startsWith("https://")))l.push("$.ticketUrl 须为 https:// 前缀");let m=new Set;(n.decisions??[]).forEach((s,x)=>{let f=`$.decisions[${x}]`;if(!s||typeof s!=="object")return l.push(`${f} 不是对象`);if(J(s,["n","group","core","q","opts","rec","def","multi","ask","ph"],f,l),!Number.isInteger(s.n)||s.n<1)l.push(`${f}.n 须为正整数`);else if(m.has(s.n))l.push(`${f}.n=${s.n} 重复`);else m.add(s.n);if(!["now","defaulted","pending"].includes(s.group))l.push(`${f}.group 非法`);if(!z(s.q,40))l.push(`${f}.q 须为 1–40 字`);if(s.core!==void 0&&typeof s.core!=="boolean")l.push(`${f}.core 须为布尔`);if(s.def!==void 0&&!z(s.def,60))l.push(`${f}.def 须为 ≤60 字`);if(s.multi!==void 0&&s.multi!==!0)l.push(`${f}.multi 只能为 true`);if(s.ask!==void 0&&s.ask!==!0)l.push(`${f}.ask 只能为 true`);let j=s.opts;if(j!==void 0&&!(Array.isArray(j)&&j.every((M)=>z(M,12))))l.push(`${f}.opts 须为 1–12 字的字符串数组`);let N=Array.isArray(j)?j.length:0,I=s.group==="defaulted"?"defaulted":s.ask?"ask":s.multi?"multi":"one";if(s.ask&&s.multi)l.push(`${f} ask 与 multi 不能同时出现`);if(I==="defaulted"&&(j||s.rec!==void 0||s.ask||s.multi))l.push(`${f} defaulted 条目只有「推翻」,不带 opts/rec/ask/multi`);if(I==="ask"&&(j||s.rec!==void 0))l.push(`${f} ask 条目不带 opts/rec`);if(s.ph!==void 0&&(I!=="ask"||!z(s.ph,40)))l.push(`${f}.ph 只用于 ask,≤40 字`);if(I==="one"&&(N<2||N>4))l.push(`${f} 单选须有 2–4 个 opts(现 ${N})`);if(I==="multi"&&(N<2||N>8))l.push(`${f} 多选须有 2–8 个 opts(现 ${N})`);if(I==="one"&&s.rec!==void 0&&!(Number.isInteger(s.rec)&&s.rec>=0&&s.rec<N))l.push(`${f}.rec 须为 opts 下标`);if(I==="multi"&&s.rec!==void 0&&!(Array.isArray(s.rec)&&s.rec.every((M)=>Number.isInteger(M)&&M>=0&&M<N)&&new Set(s.rec).size===s.rec.length))l.push(`${f}.rec 须为不重复的 opts 下标数组`);if(Array.isArray(j)&&new Set(j).size!==N)l.push(`${f}.opts 有重复`)});let y=[...m].sort((s,x)=>s-x);if(y.length&&y.some((s,x)=>x&&s!==y[x-1]+1))l.push(`$.decisions 编号不连续:${y.join(",")}`);if((n.actions??[]).forEach((s,x)=>{let f=`$.actions[${x}]`;if(!s||typeof s!=="object")return l.push(`${f} 不是对象`);if(J(s,["text","short","cmd"],f,l),!z(s.text,120))l.push(`${f}.text 须为 1–120 字`);if(!z(s.short,24))l.push(`${f}.short 须为 1–24 字`);if(s.cmd!==void 0&&!z(s.cmd))l.push(`${f}.cmd 须为非空字符串`)}),n.delivery!==void 0){let s=n.delivery;if(!s||typeof s!=="object")l.push("$.delivery 不是对象");else{if(J(s,["info","toggles"],"$.delivery",l),s.info!==void 0&&!z(s.info,120))l.push("$.delivery.info 须为 ≤120 字");(s.toggles??[]).forEach((x,f)=>{if(J(x??{},["label","rec"],`$.delivery.toggles[${f}]`,l),!z(x?.label,20))l.push(`$.delivery.toggles[${f}].label 须为 1–20 字`);if(x?.rec!==void 0&&typeof x.rec!=="boolean")l.push(`$.delivery.toggles[${f}].rec 须为布尔`)})}}(n.optional??[]).forEach((s,x)=>{if(J(s??{},["text"],`$.optional[${x}]`,l),!z(s?.text,120))l.push(`$.optional[${x}].text 须为 1–120 字`)});for(let s of["decisions","actions","optional"])if(n[s]!==void 0&&!Array.isArray(n[s]))l.push(`$.${s} 须为数组`);return l}var It=(()=>{let n=(p,h={},...E)=>{let w=document.createElement(p);for(let[g,_]of Object.entries(h)){if(_==null||_===!1)continue;if(g==="cls")w.className=_;else w.setAttribute(g,_)}return E.flat().forEach((g)=>{if(g!=null&&g!==!1)w.append(g)}),w},l={copy:'<rect x="5.5" y="5.5" width="7.5" height="7.5" rx="1.2"/><path d="M10.5 3.5V3a.5.5 0 0 0-.5-.5H3a.5.5 0 0 0-.5.5v7a.5.5 0 0 0 .5.5h.5"/>',reset:'<path d="M3.2 8a4.8 4.8 0 1 0 1.4-3.4"/><path d="M3.2 2.6v2.6h2.6"/>'},m=(p)=>{let h=document.createElementNS("http://www.w3.org/2000/svg","svg");return h.setAttribute("viewBox","0 0 16 16"),h.setAttribute("class","i"),h.setAttribute("aria-hidden","true"),h.innerHTML=l[p],h},y=null,s=(p)=>{if(!p)return[];let h=[],E=0;return p.replace(/\b[A-Z]{2,6}-\d+\b|\b[0-9a-f]{7,40}\b/g,(w,g)=>{let _=/^[A-Z]/.test(w);if(!_&&!(/\d/.test(w)&&/[a-f]/.test(w)))return w;if(_&&!y)return w;return h.push(p.slice(E,g),_?n("a",{cls:"tk",href:y+w,target:"_blank",rel:"noopener"},w):n("span",{cls:"mono"},w.slice(0,7))),E=g+w.length,w}),h.push(p.slice(E)),h},x=(p)=>{let h=()=>{let E=n("textarea",{style:"position:absolute;left:-9999px;top:0","aria-hidden":"true"});E.value=p,document.body.append(E),E.select();try{document.execCommand("copy")}catch(w){}E.remove()};try{navigator.clipboard.writeText(p).catch(h)}catch(E){h()}},f=(p,h)=>{if(!p.dataset.l)p.dataset.l=p.textContent;p.textContent=h,clearTimeout(p._t),p._t=setTimeout(()=>{p.textContent=p.dataset.l},1400)},j=(p)=>p?p.split(`
|
|
3
|
+
`).filter(Boolean).length:0,N=(p,h)=>p.length>h?p.slice(0,h)+"…":p,I=(p,h)=>p.size===h.size&&[...p].every((E)=>h.has(E)),M={done:"已做",issue:"有问题",no:"没做",you:"你来做"};function Mt(p,h){p.replaceChildren(),p.classList.remove("folded","kb");{let t=(getComputedStyle(p).color.match(/\d+/g)||[0,0,0]).slice(0,3).map(Number);p.classList.toggle("dark",(t[0]*299+t[1]*587+t[2]*114)/1000>140)}y=h.ticketUrl||null;let E=h.turn?String(h.turn).replace(/[^\w.:-]/g,""):"",w=typeof sendPrompt==="function",g={dec:[],act:[],del:[],opt:[]},_=[],kt=n("div",{cls:"bd"}),at=(t,e)=>{let o=n("div",{cls:"rs"});return kt.append(n("div",{cls:"grp"},n("div",{cls:"gl",title:e||null},t),o)),o},Y=(t,e,o)=>{let r=n("div",{cls:"it"},e,...o||[]);return t.append(r),_.push(r),r},G=(t,e)=>{let o=n("span",{cls:"qt"},...s(e));return{q:n("div",{cls:"q",title:e||null},t&&t.n!=null?n("span",{cls:"n"},t.n+"."):null,t&&t.core?n("span",{cls:"cb",role:"img","aria-label":"核心决策",title:"核心决策"}):null,o),qt:o}},ct=(t)=>{if(!t.value){t.style.removeProperty("height");return}t.style.setProperty("height","auto","important"),t.style.setProperty("height",t.scrollHeight+(t.offsetHeight-t.clientHeight)+"px","important")},yt=(t,e)=>{let o=n("textarea",{rows:"1",cls:e||null,placeholder:t,"aria-label":t});return o.addEventListener("input",()=>ct(o)),o},Q=(t,e)=>{let o=n("div",{cls:"ed"}),r=yt(e);return r.addEventListener("input",()=>{t.text=r.value,O()}),o.append(r),o.hidden=!0,t.ed=o,{box:o,i:r,show(c,i){if(o.hidden=!c,c){if(ct(r),i)r.focus()}O()}}},F=(t)=>t.ed&&!t.ed.hidden?(t.text||"").trim():"",Et=(t,e,o={})=>{let r=o.init===void 0?null:o.init,c=n("div",{cls:"seg"+(o.cls?" "+o.cls:""),role:"radiogroup","aria-label":o.label||null,title:o.title||null}),i=t.map((u,b)=>n("button",{type:"button",role:"radio",cls:"sg"+(u.rec?" rec":""),"data-col":String(b),title:u.title||null},u.label,n("span",{cls:"k","aria-hidden":"true"},String(b+1)))),a=()=>{let u=t.findIndex((L)=>L.v===e.pick),b=e.pick!==r;i.forEach((L,D)=>{L.setAttribute("aria-checked",String(D===u)),L.classList.toggle("chg",D===u&&b),L.tabIndex=D===(u<0?0:u)?0:-1})},d=(u,b)=>{if(e.pick=u,a(),o.onChange)o.onChange(b);O()},v=(u,b)=>{if(t[u])d(o.toggle&&e.pick===t[u].v?null:t[u].v,b)};return i.forEach((u,b)=>u.addEventListener("click",()=>v(b,!1))),c.addEventListener("keydown",(u)=>{if(u.key!=="ArrowRight"&&u.key!=="ArrowLeft")return;u.preventDefault();let L=(Math.max(0,i.indexOf(document.activeElement))+(u.key==="ArrowRight"?1:-1)+i.length)%i.length;d(t[L].v,!0),i[L].focus()}),a(),c.append(...i),{w:c,set:d,choose:v,focus:()=>(i.find((u)=>u.tabIndex===0)||i[0]).focus()}},tt=(t,e,o={})=>{let r=n("input",{type:"checkbox"});return r.checked=!!e,{lb:n("label",{cls:"ck"+(o.rec?" rec":""),title:o.title||null},r,n("span",{},t)),i:r}},Pt=(t,e,o,r)=>{let c=n("div",{cls:"ctl",role:"group"}),i=t.map((d,v)=>tt(d,r.has(v),{rec:e.includes(v),title:e.includes(v)?"建议":null})),a=()=>i.forEach((d,v)=>d.lb.classList.toggle("chg",o.sel.has(v)!==r.has(v)));return i.forEach((d,v)=>d.i.addEventListener("change",()=>{d.i.checked?o.sel.add(v):o.sel.delete(v),a(),O()})),c.append(...i.map((d)=>d.lb)),{w:c,set:(d)=>{o.sel=new Set(d),i.forEach((v,u)=>{v.i.checked=o.sel.has(u)}),a(),O()},toggle:(d)=>{if(i[d])i[d].i.click()},focus:()=>i[0]&&i[0].i.focus()}},$t=(t,e={})=>n("button",{type:"button",cls:"gh",title:e.title||null},e.icon?m(e.icon):null,t?n("span",{},t):null);if([["本轮拍板","需要你拍板",(t)=>t.group==="now"],["早前","上轮按默认处理(勾「推翻」才回复)与早前尚未决策(默认不回复)",(t)=>t.group!=="now"]].forEach(([t,e,o])=>{let r=(h.decisions||[]).filter(o).sort((i,a)=>i.n-a.n);if(!r.length)return;let c=at(t,e);r.forEach((i)=>{let a={pick:null,text:""},d={d:i,st:a};g.dec.push(d);let{q:v}=G(i,i.q),u=[],b,L,D,Z=null;if(i.group==="defaulted"){let k=Q(a,"改成什么"),A=tt("推翻",!1,{title:"推翻上轮的默认处理"});A.i.addEventListener("change",()=>{a.pick=A.i.checked?"over":null,A.lb.classList.toggle("chg",A.i.checked),k.show(A.i.checked,!0)}),b=n("div",{cls:"ctl"},A.lb),u.push(k.box),L=(S)=>{if(S===0)A.i.click()},D=()=>A.i.focus(),k.i.__esc=()=>A.i.focus(),d.changed=()=>a.pick==="over",d.sum=()=>"推翻"}else if(i.ask){let k=yt(i.ph||"填写;要附文件就留空,到输入框里附","ask");k.addEventListener("input",()=>{a.text=k.value,O()}),b=k,d.top=!0,L=()=>{},D=()=>k.focus(),d.changed=()=>!!(a.text||"").trim(),d.sum=()=>"已填"}else if(i.multi){let k=i.opts||[],A=Array.isArray(i.rec)?i.rec:i.rec!=null?[i.rec]:[],S=new Set(i.group==="now"?A:[]);a.sel=new Set(S),d.init=S;let C=Pt(k,A,a,S),q=Q(a,"附一句;不勾选项时即为你的回复");Z=()=>{let T=q.box.hidden;if(q.show(T,!0),!T)C.focus()},b=C.w,u.push(q.box),d.reset=()=>C.set(S),L=(T)=>C.toggle(T),D=C.focus,q.i.__esc=()=>{q.show(!1),C.focus()},d.changed=()=>!I(a.sel,S)||!!F(a),d.sum=()=>{let T=[...a.sel].sort((xt,Ht)=>xt-Ht).map((xt)=>k[xt]);return(T.length?T.join("、"):"都不选")+(F(a)?"(附言)":"")}}else{let k=i.opts||[],A=k.map((q,T)=>({v:"o"+T,label:q,rec:T===i.rec,title:T===i.rec?"建议;再点一次即不回复":"再点一次即不回复"}));a.pick=i.group==="now"&&k[i.rec]!=null?"o"+i.rec:null,d.init=a.pick;let S=Et(A,a,{label:i.q,init:d.init,toggle:!0,cls:"dseg",title:i.def||null}),C=Q(a,"附一句;不选选项时即为你的回复");Z=()=>{let q=C.box.hidden;if(C.show(q,!0),!q)S.focus()},b=n("div",{cls:"ctl"},S.w),u.push(C.box),d.reset=()=>S.set(d.init),L=(q)=>S.choose(q,!1),D=S.focus,C.i.__esc=()=>{C.show(!1),S.focus()},d.changed=()=>a.pick!==d.init||!!F(a),d.sum=()=>(a.pick?k[+a.pick.slice(1)]:"不回复")+(F(a)?"(附言)":"")}let Tt=n("div",{cls:"ln"+(d.top?" top":"")},v,b),X=Y(c,Tt,u);if(Z)Tt.addEventListener("click",(k)=>{if(k.target.closest("button,input,textarea,label,a,.ctl"))return;Z()}),X.__note=Z;if(i.core)X.classList.add("core");X.__pick=L,X.__focus=D,d.it=X})}),h.actions&&h.actions.length){let t=at("你要做的","做完后在这里回执");h.actions.forEach((e)=>{let o={pick:null,text:""},r=Q(o,"贴结果、报错或原因"),c=[["done","已做"],["issue","有问题"],["no","没做"],["you","你来做"]].map(([u,b])=>({v:u,label:b})),i=Et(c,o,{toggle:!0,init:null,label:e.short||e.text,onChange:(u)=>{let b=o.pick==="issue"||o.pick==="no";if(r.box.hidden=!b,b){if(ct(r.i),!u)r.i.focus()}}}),a=null;if(e.cmd){a=$t("复制命令",{icon:"copy",title:e.cmd});let u=a.querySelector("span");a.addEventListener("click",()=>{x(e.cmd),f(u,"已复制")})}let{q:d}=G(null,e.text),v=Y(t,n("div",{cls:"ln"},d,n("div",{cls:"ctl"},i.w,a)),[r.box]);v.__pick=(u)=>i.choose(u,!1),v.__focus=i.focus,r.i.__esc=i.focus,g.act.push({a:e,st:o,it:v})})}let et=h.delivery,_t=h.optional||[];if(et||_t.length){let t=at("收尾");if(et){let e=[];(et.toggles||[]).forEach((c)=>{let i={t:c,init:!!c.rec,st:{on:!!c.rec}},a=tt(c.label,i.init,{rec:c.rec,title:c.rec?"建议;取消勾选即不表态":"勾选才表态"});a.i.addEventListener("change",()=>{i.st.on=a.i.checked,a.lb.classList.toggle("chg",i.st.on!==i.init),O()}),g.del.push(i),e.push(a)});let{q:o}=G(null,et.info||"");o.classList.add("info");let r=Y(t,n("div",{cls:"ln"},o,n("div",{cls:"ctl"},...e.map((c)=>c.lb))));r.__pick=(c)=>{if(e[c])e[c].i.click()},r.__focus=()=>{if(e[0])e[0].i.focus()},g.delIt=r}_t.forEach((e)=>{let o={on:!1},r=tt("也做",!1);r.i.addEventListener("change",()=>{o.on=r.i.checked,r.lb.classList.toggle("chg",o.on),O()});let{q:c}=G(null,e.text),i=Y(t,n("div",{cls:"ln"},c,n("div",{cls:"ctl"},r.lb)));i.__pick=(a)=>{if(a===0)r.i.click()},i.__focus=()=>r.i.focus(),g.opt.push({o:e,st:o,it:i})})}let P=(t,e,o)=>{let r=String(e).split(`
|
|
4
|
+
`).map((i)=>i.replace(/\s+$/,""));while(r.length&&!r[0])r.shift();while(r.length&&!r[r.length-1])r.pop();if(r=r.filter((i,a)=>i||r[a-1]),r.length<=1)return t+(r[0]||"");let c=" ".repeat(o);return t+r[0]+`
|
|
5
|
+
`+r.slice(1).map((i)=>c+i).join(`
|
|
6
|
+
`)},Lt=(t)=>{let{d:e,st:o}=t,r=F(o),c=e.n+". ",i=c.length;if(e.ask){let a=(o.text||"").trim();return a?P(c,a,i):null}if(e.group==="defaulted")return o.pick==="over"?P(c+"推翻:",r||"(待补充)",i):null;if(e.multi){let a=[...o.sel].sort((d,v)=>d-v).map((d)=>e.opts[d]);if(a.length)return P(c+a.join("、")+(r?",":""),r,i);if(t.init.size)return P(c+"都不选"+(r?",":""),r,i);return r?P(c,r,i):null}if(o.pick&&o.pick[0]==="o")return P(c+e.opts[+o.pick.slice(1)]+(r?",":""),r,i);return r?P(c,r,i):null},lt=(t,e)=>{let o=e.some((r)=>r.includes(`
|
|
7
|
+
`));return e.forEach((r,c)=>{if(o&&c)t.push("");t.push(r)}),o};function pt(){let t=[],e=g.dec.filter((a)=>a.d.group!=="pending").map(Lt).filter(Boolean),o=g.dec.filter((a)=>a.d.group==="pending").map(Lt).filter(Boolean);if(e.length||o.length){t.push("决策:");let a=lt(t,e);if(o.length){if(a||o.some((d)=>d.includes(`
|
|
8
|
+
`)))t.push("");t.push("--早前尚未决策--"),lt(t,o)}}let r=g.act.filter((a)=>a.st.pick);if(r.length){if(t.length)t.push("");t.push("反馈:"),lt(t,r.map((a)=>{let d=F(a.st);return P("- "+a.a.short+":"+M[a.st.pick]+(d?":":""),d,2)}))}let c=g.del.filter((a)=>a.st.on).map((a)=>a.t.label);if(c.length){if(t.length)t.push("");t.push("交付:"+c.join(","))}let i=g.opt.filter((a)=>a.st.on);if(i.length){if(t.length)t.push("");i.forEach((a)=>t.push("也做:"+a.o.text))}return t.join(`
|
|
9
|
+
`)}let At=()=>{let t=[];return g.dec.forEach((e)=>{if(e.changed())t.push(e.d.n+" "+e.sum())}),g.act.forEach((e)=>{if(e.st.pick)t.push(e.a.short+":"+M[e.st.pick])}),g.del.forEach((e)=>{if(e.st.on!==e.init)t.push((e.st.on?"":"不")+e.t.label)}),g.opt.forEach((e)=>{if(e.st.on)t.push("也做 "+N(e.o.text,10))}),t},dt=(t)=>t?"<turn-reply"+(E?' turn="'+E+'"':"")+`>
|
|
10
10
|
`+t+`
|
|
11
|
-
</turn-reply>`:t,
|
|
11
|
+
</turn-reply>`:t,ut=g.dec.filter((t)=>t.reset&&t.d.group==="now"),W=null;if(ut.length)W=$t("全部按建议",{icon:"reset",title:"把本轮拍板恢复为建议项"}),W.addEventListener("click",()=>ut.forEach((t)=>t.reset()));let St=n("span",{}),R=n("button",{type:"button",cls:"lk","aria-expanded":"false"},"预览"),Rt=n("span",{cls:"sum","aria-live":"polite"},St,R),H=n("pre",{cls:"pv"});H.hidden=!0;let ft=()=>{H.hidden=!0,R.textContent="预览",R.setAttribute("aria-expanded","false")};R.addEventListener("click",()=>{if(H.hidden)H.hidden=!1,R.textContent="收起",R.setAttribute("aria-expanded","true");else ft()});let Ct=n("span",{},"复制"),K=n("button",{type:"button",cls:"btn"},Ct);K.addEventListener("click",()=>{let t=pt();if(t)x(dt(t)),f(Ct,"已复制")});let V=null;if(w)V=n("button",{type:"button",cls:"btn pri"},"填入输入框"),V.addEventListener("click",(t)=>{t.stopPropagation(),jt()});else K.classList.add("pri");let Ut=n("div",{cls:"foot"},W,Rt,K,V),nt=n("span",{cls:"fs"}),Bt=n("button",{type:"button",cls:"lk"},"展开"),qt=n("div",{cls:"fold"},n("span",{cls:"mk-ok","aria-hidden":"true"}),nt,Bt),ht=(t)=>{if(p.classList.toggle("folded",t),t)ft();else if(p.classList.contains("kb")&&_[0])_[0].__focus()};qt.addEventListener("click",()=>ht(!1));let gt=n("div",{cls:"ns",role:"status"}),U=null,zt=(t)=>{U=null,gt.textContent="没有填进输入框:宿主只接受「刚在面板里点击」的填入,点之前 5 秒内页面别处有点击或按键就会拒收。别碰面板以外的地方,等几秒再点一次「填入输入框」。",gt.title=t||"",p.classList.add("notsent"),ht(!1)};window.addEventListener("message",(t)=>{if(!U)return;let e=t.data;if(!e||typeof e!=="object"||e.jsonrpc!=="2.0"||e.method!==void 0||!(("result"in e)||("error"in e)))return;if(Date.now()>U.until){U=null;return}if(e.error||e.result&&e.result.isError===!0)zt(e.result&&e.result._reason);else U=null});let B=null,Ft=()=>{p.classList.remove("notsent"),U={until:Date.now()+3000};let t=document.body;if(!t||typeof MutationObserver!=="function")return;if(B)B.disconnect();B=new MutationObserver(()=>{if(t.hasAttribute("data-not-sent")&&U)B.disconnect(),zt()}),B.observe(t,{attributes:!0,attributeFilter:["data-not-sent"]}),setTimeout(()=>B&&B.disconnect(),3000)};function jt(){let t=pt();if(!t)return;Ft(),sendPrompt(dt(t));let e=At();nt.textContent="已填入 · "+(e.length?e.join(" · "):"全部按建议"),nt.title=nt.textContent,ht(!0)}let Kt=()=>{if(w)jt();else K.click()};p.addEventListener("mousedown",()=>p.classList.remove("kb")),p.addEventListener("keydown",(t)=>{if(t.key==="Tab"||t.key.startsWith("Arrow")||/^[0-9]$/.test(t.key))p.classList.add("kb");if(p.classList.contains("folded"))return;let e=t.target;if(e.tagName==="TEXTAREA"){if(t.isComposing||t.keyCode===229)return;if(t.key==="Escape"&&e.__esc)t.preventDefault(),e.__esc();return}if(t.metaKey||t.ctrlKey||t.altKey)return;let o=e.closest&&e.closest(".it");if(!o)return;if(t.key==="/"&&o.__note){t.preventDefault(),o.__note();return}if(/^[1-9]$/.test(t.key)&&o.__pick){t.preventDefault(),o.__pick(+t.key-1);return}if(t.key==="ArrowDown"||t.key==="ArrowUp"){let r=_.indexOf(o),c=_[r+(t.key==="ArrowDown"?1:-1)];if(c)t.preventDefault(),c.__focus()}}),p.append(qt,kt,Ut,gt,H);function O(){let t=pt(),e=j(t),o=At();if(g.dec.forEach((c)=>c.it.classList.toggle("chg",c.changed())),g.act.forEach((c)=>c.it.classList.toggle("chg",!!c.st.pick)),g.delIt)g.delIt.classList.toggle("chg",g.del.some((c)=>c.st.on!==c.init));g.opt.forEach((c)=>c.it.classList.toggle("chg",c.st.on));let r=[];if(r.push(o.length?"改了 ":"全部按建议",...o.length?[n("b",{},String(o.length))," 项"]:[]),e)r.push(" · 将填入 ",n("b",{},String(e))," 行");else r.push(" · 没有要回复的内容");if(St.replaceChildren(...r),H.textContent=dt(t),R.hidden=!e,!e)ft();if(K.disabled=!e,V)V.disabled=!e;if(W)W.disabled=ut.every((c)=>!c.changed())}O();let mt={},Nt=[...p.querySelectorAll(".dseg button.sg")];Nt.forEach((t)=>{let e=t.dataset.col;mt[e]=Math.max(mt[e]||0,t.offsetWidth)}),Nt.forEach((t)=>{t.style.setProperty("width",Math.ceil(mt[t.dataset.col])+12+"px","important")}),p.classList.add("measuring");let rt=0;if(p.querySelectorAll(".q").forEach((t)=>{rt=Math.max(rt,t.offsetWidth)}),p.classList.remove("measuring"),rt>0)p.style.setProperty("--qw",Math.min(Math.ceil(rt)+2,260)+"px")}return Mt})();var st="0.1.2",Ot="trw-style-"+st;function Jt(n){let l=n.ownerDocument||document;if(l.getElementById(Ot))return;let m=l.createElement("style");m.id=Ot,m.textContent=ot,(l.head||n.parentNode||l.documentElement).appendChild(m)}function vt(n,l){n.replaceChildren(),n.classList.remove("folded","kb");let m=(n.ownerDocument||document).createElement("div");m.className="err",m.setAttribute("role","alert"),m.title=l,m.textContent=l,n.append(m)}var bt=",请直接在输入框回复";function Dt(n,l){if(!n||typeof n.append!=="function")return console.error("[turn-reply] root 不是元素"),["root 不是元素"];n.classList.add("trw"),Jt(n);let m=l;if(typeof m==="string")try{m=JSON.parse(m)}catch(s){return vt(n,"面板数据不是合法 JSON"+bt),["JSON 解析失败"]}let y=it(m);if(y.length)return console.error(`[turn-reply] spec 不合法:
|
|
12
12
|
`+y.join(`
|
|
13
|
-
`)),
|
|
13
|
+
`)),vt(n,"面板数据不合法("+y.length+" 处,首处 "+y[0]+")"+bt),y;try{It(n,m)}catch(s){console.error("[turn-reply] 渲染出错",s);let x="面板渲染出错("+(s&&s.message||s)+")"+bt;return vt(n,x),[x]}return[]}var wt=typeof window<"u"?window:globalThis;if(!wt.TR||wt.TR.version!==st)wt.TR={render:Dt,validate:it,version:st,css:ot};})();
|