@npmjsdnt/turn-reply 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tr.css CHANGED
@@ -87,3 +87,28 @@
87
87
  .trw.dark button.sg[aria-checked="true"]{font-weight:500!important}
88
88
  .trw .ns{display:none;font-size:12px;line-height:18px;color:var(--c-attn);padding:6px 0 0}
89
89
  .trw.notsent .ns{display:block}
90
+ /* 0.2.0:Orca 宿主。变量先取 Claude Desktop 的名字,取不到再退到 Orca 外壳给的 shadcn 变量(--card --foreground --muted-foreground 等);同为 .trw,写在后面即覆盖开头的定义 */
91
+ .trw{
92
+ --c-bg:var(--surface-2,var(--card,var(--background)));--c-sunken:var(--surface-1,var(--muted));
93
+ --c-hover:var(--fill-ghost-hover,var(--surface-1,var(--accent)));--c-soft:var(--fill-ghost-selected,var(--surface-1,var(--accent)));
94
+ --c-solid:var(--fill-primary,var(--text-primary,var(--primary)));--c-on-solid:var(--on-primary,var(--surface-2,var(--primary-foreground)));
95
+ --c-line:var(--border);--c-line-s:var(--border-strong,var(--input,var(--border)));--c-line-x:var(--border-stronger,var(--border-strong,var(--ring)));
96
+ --c-ink1:var(--text-primary,var(--foreground));--c-ink2:var(--text-secondary,var(--muted-foreground));--c-ink3:var(--text-muted,var(--muted-foreground));--c-ink4:var(--text-disabled,var(--text-muted,var(--muted-foreground)));
97
+ --c-attn:var(--text-warning,#d97706);--c-ok:var(--text-success,#16a34a);--c-focus:var(--border-accent,var(--text-accent,var(--ring)));
98
+ --c-lift:var(--surface-3,var(--surface-2,var(--card,var(--background))))
99
+ }
100
+ /* 复制被拒时的手动复制框 */
101
+ .trw .man{padding:6px 0 0}
102
+ .trw .man .mh{font-size:12px;line-height:18px;color:var(--c-attn);padding-bottom:4px}
103
+ .trw .man textarea{display:block;width:100%;resize:vertical!important;margin:0!important;padding:4px 10px!important;font:12px/18px var(--font-mono)!important;white-space:pre-wrap;border:0.5px solid var(--c-line-s)!important;border-radius:var(--c-r)!important;background:var(--c-sunken)!important;color:var(--c-ink1)!important;box-shadow:none!important}
104
+ /* 问题栏:宽度取最长问题的文字宽(--qw),上限是「容器宽度减去最宽一组控件(--cw)」,让控件尽量留在同一行;
105
+ 上限最少保留容器的 40%,控件特别宽时宁可让控件换行,也不把问题压得太窄。两个宽度都在渲染时量出。
106
+ 宽度按整个面板算(100cqw 减去 60px 的分组标签栏),不用 100%:100% 是每行自己的宽度,首行为宿主悬浮按钮留了 40px 右内边距,会让首行选项比别的行靠左。
107
+ --qcap 声明在 .trw 上(容器查询匹配不到容器自身),只在宽容器里使用;480px 以下仍按上面 @container 规则上下堆叠 */
108
+ .trw{--qcap:min(var(--qw,240px),max(calc((100cqw - 60px) * .4),calc(100cqw - 60px - var(--cw,0px) - 16px)))}
109
+ @container (min-width:481px){
110
+ .trw .q{flex-basis:var(--qcap)}
111
+ .trw .ed{padding-left:calc(var(--qcap) + 8px)}
112
+ }
113
+ /* 引导代码里的隐藏标题:Claude Desktop 自带 .sr-only,Orca 外壳没有 */
114
+ .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
package/dist/tr.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @npmjsdnt/turn-reply@0.1.2 turn-reply panel */
1
+ /*! @npmjsdnt/turn-reply@0.2.0 turn-reply panel */
2
2
  (() => {
3
3
  // trw:css
4
4
  var css_default = `.trw{
@@ -90,6 +90,31 @@
90
90
  .trw.dark button.sg[aria-checked="true"]{font-weight:500!important}
91
91
  .trw .ns{display:none;font-size:12px;line-height:18px;color:var(--c-attn);padding:6px 0 0}
92
92
  .trw.notsent .ns{display:block}
93
+ /* 0.2.0:Orca 宿主。变量先取 Claude Desktop 的名字,取不到再退到 Orca 外壳给的 shadcn 变量(--card --foreground --muted-foreground 等);同为 .trw,写在后面即覆盖开头的定义 */
94
+ .trw{
95
+ --c-bg:var(--surface-2,var(--card,var(--background)));--c-sunken:var(--surface-1,var(--muted));
96
+ --c-hover:var(--fill-ghost-hover,var(--surface-1,var(--accent)));--c-soft:var(--fill-ghost-selected,var(--surface-1,var(--accent)));
97
+ --c-solid:var(--fill-primary,var(--text-primary,var(--primary)));--c-on-solid:var(--on-primary,var(--surface-2,var(--primary-foreground)));
98
+ --c-line:var(--border);--c-line-s:var(--border-strong,var(--input,var(--border)));--c-line-x:var(--border-stronger,var(--border-strong,var(--ring)));
99
+ --c-ink1:var(--text-primary,var(--foreground));--c-ink2:var(--text-secondary,var(--muted-foreground));--c-ink3:var(--text-muted,var(--muted-foreground));--c-ink4:var(--text-disabled,var(--text-muted,var(--muted-foreground)));
100
+ --c-attn:var(--text-warning,#d97706);--c-ok:var(--text-success,#16a34a);--c-focus:var(--border-accent,var(--text-accent,var(--ring)));
101
+ --c-lift:var(--surface-3,var(--surface-2,var(--card,var(--background))))
102
+ }
103
+ /* 复制被拒时的手动复制框 */
104
+ .trw .man{padding:6px 0 0}
105
+ .trw .man .mh{font-size:12px;line-height:18px;color:var(--c-attn);padding-bottom:4px}
106
+ .trw .man textarea{display:block;width:100%;resize:vertical!important;margin:0!important;padding:4px 10px!important;font:12px/18px var(--font-mono)!important;white-space:pre-wrap;border:0.5px solid var(--c-line-s)!important;border-radius:var(--c-r)!important;background:var(--c-sunken)!important;color:var(--c-ink1)!important;box-shadow:none!important}
107
+ /* 问题栏:宽度取最长问题的文字宽(--qw),上限是「容器宽度减去最宽一组控件(--cw)」,让控件尽量留在同一行;
108
+ 上限最少保留容器的 40%,控件特别宽时宁可让控件换行,也不把问题压得太窄。两个宽度都在渲染时量出。
109
+ 宽度按整个面板算(100cqw 减去 60px 的分组标签栏),不用 100%:100% 是每行自己的宽度,首行为宿主悬浮按钮留了 40px 右内边距,会让首行选项比别的行靠左。
110
+ --qcap 声明在 .trw 上(容器查询匹配不到容器自身),只在宽容器里使用;480px 以下仍按上面 @container 规则上下堆叠 */
111
+ .trw{--qcap:min(var(--qw,240px),max(calc((100cqw - 60px) * .4),calc(100cqw - 60px - var(--cw,0px) - 16px)))}
112
+ @container (min-width:481px){
113
+ .trw .q{flex-basis:var(--qcap)}
114
+ .trw .ed{padding-left:calc(var(--qcap) + 8px)}
115
+ }
116
+ /* 引导代码里的隐藏标题:Claude Desktop 自带 .sr-only,Orca 外壳没有 */
117
+ .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
93
118
  `;
94
119
 
95
120
  // ../schema/validate.ts
@@ -251,19 +276,25 @@
251
276
  out.push(s.slice(last));
252
277
  return out;
253
278
  };
254
- const copyText = (t) => {
279
+ const copyText = (t, done) => {
280
+ const end = (ok) => {
281
+ if (done)
282
+ done(ok);
283
+ };
255
284
  const fb = () => {
256
285
  const a = el("textarea", { style: "position:absolute;left:-9999px;top:0", "aria-hidden": "true" });
257
286
  a.value = t;
258
287
  document.body.append(a);
259
288
  a.select();
289
+ let ok = false;
260
290
  try {
261
- document.execCommand("copy");
291
+ ok = document.execCommand("copy");
262
292
  } catch (_) {}
263
293
  a.remove();
294
+ end(ok);
264
295
  };
265
296
  try {
266
- navigator.clipboard.writeText(t).catch(fb);
297
+ navigator.clipboard.writeText(t).then(() => end(true), fb);
267
298
  } catch (_) {
268
299
  fb();
269
300
  }
@@ -291,7 +322,9 @@
291
322
  }
292
323
  LIN = spec.ticketUrl || null;
293
324
  const TURN = spec.turn ? String(spec.turn).replace(/[^\w.:-]/g, "") : "";
294
- const hasSend = typeof sendPrompt === "function";
325
+ const ORCA = String(window.name || "").indexOf("orca-chat-visual:") === 0 || !!document.getElementById("orca-visual-theme");
326
+ const send = typeof sendPrompt === "function" ? sendPrompt : typeof orcaComposeDraft === "function" ? orcaComposeDraft : null;
327
+ const hasSend = !!send;
295
328
  const S = { dec: [], act: [], del: [], opt: [] };
296
329
  const items = [];
297
330
  const bd = el("div", { cls: "bd" });
@@ -544,10 +577,7 @@
544
577
  if (a.cmd) {
545
578
  cp = ghost("复制命令", { icon: "copy", title: a.cmd });
546
579
  const lb = cp.querySelector("span");
547
- cp.addEventListener("click", () => {
548
- copyText(a.cmd);
549
- flash(lb, "已复制");
550
- });
580
+ cp.addEventListener("click", () => copyText(a.cmd, (ok) => ok ? flash(lb, "已复制") : manual(a.cmd)));
551
581
  }
552
582
  const { q } = qcell(null, a.text);
553
583
  const it = item(rs, el("div", { cls: "ln" }, q, el("div", { cls: "ctl" }, sg.w, cp)), [ed.box]);
@@ -737,13 +767,13 @@
737
767
  } else
738
768
  closePre();
739
769
  });
740
- const cpLb = el("span", {}, "复制");
770
+ const cpLb = el("span", {}, ORCA && !hasSend ? "复制回复" : "复制");
741
771
  const cp = el("button", { type: "button", cls: "btn" }, cpLb);
742
772
  cp.addEventListener("click", () => {
743
773
  const t = build();
744
774
  if (t) {
745
- copyText(wrap(t));
746
- flash(cpLb, "已复制");
775
+ const w = wrap(t);
776
+ copyText(w, (ok) => ok ? flash(cpLb, "已复制") : manual(w));
747
777
  }
748
778
  });
749
779
  let go = null;
@@ -768,11 +798,27 @@
768
798
  items[0].__focus();
769
799
  };
770
800
  fold.addEventListener("click", () => setFold(false));
801
+ let man = null;
802
+ function manual(t) {
803
+ if (!man) {
804
+ const ta = el("textarea", { readonly: "", rows: "4", "aria-label": "回复文字" });
805
+ ta.addEventListener("focus", () => ta.select());
806
+ man = el("div", { cls: "man", role: "status" }, el("div", { cls: "mh" }, "复制被拒:按 ⌘C(或 Ctrl+C)复制下面的文字,再粘贴到输入框"), ta);
807
+ root.append(man);
808
+ }
809
+ const ta = man.querySelector("textarea");
810
+ ta.value = t;
811
+ man.hidden = false;
812
+ if (root.classList.contains("folded"))
813
+ setFold(false);
814
+ ta.focus();
815
+ ta.select();
816
+ }
771
817
  const ns = el("div", { cls: "ns", role: "status" });
772
818
  let nsWait = null;
773
819
  const notSent = (why) => {
774
820
  nsWait = null;
775
- ns.textContent = "没有填进输入框:宿主只接受「刚在面板里点击」的填入,点之前 5 秒内页面别处有点击或按键就会拒收。别碰面板以外的地方,等几秒再点一次「填入输入框」。";
821
+ ns.textContent = ORCA ? "没有填进输入框:Orca 只接受刚在面板里点击后的填入(" + ({ gesture: "这次点击没被认作面板内的操作", cooldown: "两次点得太近", unavailable: "没能写进这个会话的草稿" }[why] || "原因未知") + ")。再点一次「填入输入框」,或点「复制」后粘贴。" : "没有填进输入框:宿主只接受「刚在面板里点击」的填入,点之前 5 秒内页面别处有点击或按键就会拒收。别碰面板以外的地方,等几秒再点一次「填入输入框」。";
776
822
  ns.title = why || "";
777
823
  root.classList.add("notsent");
778
824
  setFold(false);
@@ -781,6 +827,13 @@
781
827
  if (!nsWait)
782
828
  return;
783
829
  const d = e.data;
830
+ if (d && typeof d === "object" && d.type === "orca-visual-compose-result") {
831
+ if (d.ok === false)
832
+ notSent(d.reason);
833
+ else
834
+ nsWait = null;
835
+ return;
836
+ }
784
837
  if (!d || typeof d !== "object" || d.jsonrpc !== "2.0" || d.method !== undefined || !(("result" in d) || ("error" in d)))
785
838
  return;
786
839
  if (Date.now() > nsWait.until) {
@@ -815,7 +868,7 @@
815
868
  if (!t)
816
869
  return;
817
870
  watchNotSent();
818
- sendPrompt(wrap(t));
871
+ send(wrap(t));
819
872
  const dv = devs();
820
873
  fsum.textContent = "已填入 · " + (dv.length ? dv.join(" · ") : "全部按建议");
821
874
  fsum.title = fsum.textContent;
@@ -895,29 +948,58 @@
895
948
  allRec.disabled = nowDec.every((x) => !x.changed());
896
949
  }
897
950
  upd();
898
- const cw = {};
899
- const dbs = [...root.querySelectorAll(".dseg button.sg")];
900
- dbs.forEach((b) => {
901
- const c = b.dataset.col;
902
- cw[c] = Math.max(cw[c] || 0, b.offsetWidth);
903
- });
904
- dbs.forEach((b) => {
905
- b.style.setProperty("width", Math.ceil(cw[b.dataset.col]) + 12 + "px", "important");
906
- });
907
- root.classList.add("measuring");
908
- let m = 0;
909
- root.querySelectorAll(".q").forEach((q) => {
910
- m = Math.max(m, q.offsetWidth);
911
- });
912
- root.classList.remove("measuring");
913
- if (m > 0)
914
- root.style.setProperty("--qw", Math.min(Math.ceil(m) + 2, 260) + "px");
951
+ const lay = () => {
952
+ const cw = {};
953
+ const dbs = [...root.querySelectorAll(".dseg button.sg")];
954
+ dbs.forEach((b) => b.style.removeProperty("width"));
955
+ dbs.forEach((b) => {
956
+ const c = b.dataset.col;
957
+ cw[c] = Math.max(cw[c] || 0, b.offsetWidth);
958
+ });
959
+ dbs.forEach((b) => {
960
+ b.style.setProperty("width", Math.ceil(cw[b.dataset.col]) + 12 + "px", "important");
961
+ });
962
+ root.classList.add("measuring");
963
+ let m = 0;
964
+ root.querySelectorAll(".q").forEach((q) => {
965
+ m = Math.max(m, q.offsetWidth);
966
+ });
967
+ let cmax = 0;
968
+ root.querySelectorAll(".ln>.ctl").forEach((c) => {
969
+ cmax = Math.max(cmax, c.offsetWidth);
970
+ });
971
+ root.classList.remove("measuring");
972
+ if (m > 0)
973
+ root.style.setProperty("--qw", Math.ceil(m) + 2 + "px");
974
+ if (cmax > 0)
975
+ root.style.setProperty("--cw", Math.ceil(cmax) + "px");
976
+ };
977
+ if (window.innerWidth > 0)
978
+ lay();
979
+ if (typeof ResizeObserver === "function") {
980
+ let w = -1;
981
+ new ResizeObserver(() => {
982
+ const nw = root.clientWidth;
983
+ if (nw > 0 && nw !== w) {
984
+ w = nw;
985
+ lay();
986
+ }
987
+ }).observe(root);
988
+ } else if (!(window.innerWidth > 0)) {
989
+ const on = () => {
990
+ if (window.innerWidth > 0) {
991
+ window.removeEventListener("resize", on);
992
+ lay();
993
+ }
994
+ };
995
+ window.addEventListener("resize", on);
996
+ }
915
997
  }
916
998
  return render;
917
999
  })();
918
1000
 
919
1001
  // src/index.js
920
- var version = "0.1.2";
1002
+ var version = "0.2.0";
921
1003
  var STYLE_ID = "trw-style-" + version;
922
1004
  function injectCSS(root) {
923
1005
  const d = root.ownerDocument || document;
package/dist/tr.min.js CHANGED
@@ -1,13 +1,13 @@
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+'"':"")+`>
1
+ /*! @npmjsdnt/turn-reply@0.2.0 turn-reply panel */
2
+ (()=>{var at=".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}.trw{--c-bg:var(--surface-2,var(--card,var(--background)));--c-sunken:var(--surface-1,var(--muted));--c-hover:var(--fill-ghost-hover,var(--surface-1,var(--accent)));--c-soft:var(--fill-ghost-selected,var(--surface-1,var(--accent)));--c-solid:var(--fill-primary,var(--text-primary,var(--primary)));--c-on-solid:var(--on-primary,var(--surface-2,var(--primary-foreground)));--c-line:var(--border);--c-line-s:var(--border-strong,var(--input,var(--border)));--c-line-x:var(--border-stronger,var(--border-strong,var(--ring)));--c-ink1:var(--text-primary,var(--foreground));--c-ink2:var(--text-secondary,var(--muted-foreground));--c-ink3:var(--text-muted,var(--muted-foreground));--c-ink4:var(--text-disabled,var(--text-muted,var(--muted-foreground)));--c-attn:var(--text-warning,#d97706);--c-ok:var(--text-success,#16a34a);--c-focus:var(--border-accent,var(--text-accent,var(--ring)));--c-lift:var(--surface-3,var(--surface-2,var(--card,var(--background))))}.trw .man{padding:6px 0 0}.trw .man .mh{font-size:12px;line-height:18px;color:var(--c-attn);padding-bottom:4px}.trw .man textarea{display:block;width:100%;resize:vertical!important;margin:0!important;padding:4px 10px!important;font:12px/18px var(--font-mono)!important;white-space:pre-wrap;border:0.5px solid var(--c-line-s)!important;border-radius:var(--c-r)!important;background:var(--c-sunken)!important;color:var(--c-ink1)!important;box-shadow:none!important}.trw{--qcap:min(var(--qw,240px),max(calc((100cqw - 60px) * .4),calc(100cqw - 60px - var(--cw,0px) - 16px)))}@container (min-width:481px){.trw .q{flex-basis:var(--qcap)}.trw .ed{padding-left:calc(var(--qcap) + 8px)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}";var j=(n,l=1/0,g=1)=>typeof n==="string"&&n.length>=g&&n.length<=l,J=(n,l,g,E)=>{for(let s of Object.keys(n))if(!l.includes(s))E.push(`${g}.${s} 未定义的字段`)};function ct(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(!j(n.turn,40)||!/^[\w.:-]+$/.test(n.turn))l.push("$.turn 缺失或含非法字符");if(n.ticketUrl!==void 0&&!(j(n.ticketUrl)&&n.ticketUrl.startsWith("https://")))l.push("$.ticketUrl 须为 https:// 前缀");let g=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(g.has(s.n))l.push(`${f}.n=${s.n} 重复`);else g.add(s.n);if(!["now","defaulted","pending"].includes(s.group))l.push(`${f}.group 非法`);if(!j(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&&!j(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 N=s.opts;if(N!==void 0&&!(Array.isArray(N)&&N.every((P)=>j(P,12))))l.push(`${f}.opts 须为 1–12 字的字符串数组`);let O=Array.isArray(N)?N.length:0,T=s.group==="defaulted"?"defaulted":s.ask?"ask":s.multi?"multi":"one";if(s.ask&&s.multi)l.push(`${f} ask 与 multi 不能同时出现`);if(T==="defaulted"&&(N||s.rec!==void 0||s.ask||s.multi))l.push(`${f} defaulted 条目只有「推翻」,不带 opts/rec/ask/multi`);if(T==="ask"&&(N||s.rec!==void 0))l.push(`${f} ask 条目不带 opts/rec`);if(s.ph!==void 0&&(T!=="ask"||!j(s.ph,40)))l.push(`${f}.ph 只用于 ask,≤40 字`);if(T==="one"&&(O<2||O>4))l.push(`${f} 单选须有 2–4 个 opts(现 ${O})`);if(T==="multi"&&(O<2||O>8))l.push(`${f} 多选须有 2–8 个 opts(现 ${O})`);if(T==="one"&&s.rec!==void 0&&!(Number.isInteger(s.rec)&&s.rec>=0&&s.rec<O))l.push(`${f}.rec 须为 opts 下标`);if(T==="multi"&&s.rec!==void 0&&!(Array.isArray(s.rec)&&s.rec.every((P)=>Number.isInteger(P)&&P>=0&&P<O)&&new Set(s.rec).size===s.rec.length))l.push(`${f}.rec 须为不重复的 opts 下标数组`);if(Array.isArray(N)&&new Set(N).size!==O)l.push(`${f}.opts 有重复`)});let E=[...g].sort((s,x)=>s-x);if(E.length&&E.some((s,x)=>x&&s!==E[x-1]+1))l.push(`$.decisions 编号不连续:${E.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),!j(s.text,120))l.push(`${f}.text 须为 1–120 字`);if(!j(s.short,24))l.push(`${f}.short 须为 1–24 字`);if(s.cmd!==void 0&&!j(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&&!j(s.info,120))l.push("$.delivery.info 须为 ≤120 字");(s.toggles??[]).forEach((x,f)=>{if(J(x??{},["label","rec"],`$.delivery.toggles[${f}]`,l),!j(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),!j(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 Dt=(()=>{let n=(p,h={},...A)=>{let b=document.createElement(p);for(let[k,L]of Object.entries(h)){if(L==null||L===!1)continue;if(k==="cls")b.className=L;else b.setAttribute(k,L)}return A.flat().forEach((k)=>{if(k!=null&&k!==!1)b.append(k)}),b},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"/>'},g=(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},E=null,s=(p)=>{if(!p)return[];let h=[],A=0;return p.replace(/\b[A-Z]{2,6}-\d+\b|\b[0-9a-f]{7,40}\b/g,(b,k)=>{let L=/^[A-Z]/.test(b);if(!L&&!(/\d/.test(b)&&/[a-f]/.test(b)))return b;if(L&&!E)return b;return h.push(p.slice(A,k),L?n("a",{cls:"tk",href:E+b,target:"_blank",rel:"noopener"},b):n("span",{cls:"mono"},b.slice(0,7))),A=k+b.length,b}),h.push(p.slice(A)),h},x=(p,h)=>{let A=(k)=>{if(h)h(k)},b=()=>{let k=n("textarea",{style:"position:absolute;left:-9999px;top:0","aria-hidden":"true"});k.value=p,document.body.append(k),k.select();let L=!1;try{L=document.execCommand("copy")}catch(v){}k.remove(),A(L)};try{navigator.clipboard.writeText(p).then(()=>A(!0),b)}catch(k){b()}},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)},N=(p)=>p?p.split(`
3
+ `).filter(Boolean).length:0,O=(p,h)=>p.length>h?p.slice(0,h)+"…":p,T=(p,h)=>p.size===h.size&&[...p].every((A)=>h.has(A)),P={done:"已做",issue:"有问题",no:"没做",you:"你来做"};function Rt(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)}E=h.ticketUrl||null;let A=h.turn?String(h.turn).replace(/[^\w.:-]/g,""):"",b=String(window.name||"").indexOf("orca-chat-visual:")===0||!!document.getElementById("orca-visual-theme"),k=typeof sendPrompt==="function"?sendPrompt:typeof orcaComposeDraft==="function"?orcaComposeDraft:null,L=!!k,v={dec:[],act:[],del:[],opt:[]},K=[],$t=n("div",{cls:"bd"}),pt=(t,e)=>{let r=n("div",{cls:"rs"});return $t.append(n("div",{cls:"grp"},n("div",{cls:"gl",title:e||null},t),r)),r},tt=(t,e,r)=>{let o=n("div",{cls:"it"},e,...r||[]);return t.append(o),K.push(o),o},et=(t,e)=>{let r=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,r),qt:r}},dt=(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")},Lt=(t,e)=>{let r=n("textarea",{rows:"1",cls:e||null,placeholder:t,"aria-label":t});return r.addEventListener("input",()=>dt(r)),r},nt=(t,e)=>{let r=n("div",{cls:"ed"}),o=Lt(e);return o.addEventListener("input",()=>{t.text=o.value,D()}),r.append(o),r.hidden=!0,t.ed=r,{box:r,i:o,show(a,i){if(r.hidden=!a,a){if(dt(o),i)o.focus()}D()}}},F=(t)=>t.ed&&!t.ed.hidden?(t.text||"").trim():"",_t=(t,e,r={})=>{let o=r.init===void 0?null:r.init,a=n("div",{cls:"seg"+(r.cls?" "+r.cls:""),role:"radiogroup","aria-label":r.label||null,title:r.title||null}),i=t.map((u,m)=>n("button",{type:"button",role:"radio",cls:"sg"+(u.rec?" rec":""),"data-col":String(m),title:u.title||null},u.label,n("span",{cls:"k","aria-hidden":"true"},String(m+1)))),c=()=>{let u=t.findIndex((_)=>_.v===e.pick),m=e.pick!==o;i.forEach((_,M)=>{_.setAttribute("aria-checked",String(M===u)),_.classList.toggle("chg",M===u&&m),_.tabIndex=M===(u<0?0:u)?0:-1})},d=(u,m)=>{if(e.pick=u,c(),r.onChange)r.onChange(m);D()},w=(u,m)=>{if(t[u])d(r.toggle&&e.pick===t[u].v?null:t[u].v,m)};return i.forEach((u,m)=>u.addEventListener("click",()=>w(m,!1))),a.addEventListener("keydown",(u)=>{if(u.key!=="ArrowRight"&&u.key!=="ArrowLeft")return;u.preventDefault();let _=(Math.max(0,i.indexOf(document.activeElement))+(u.key==="ArrowRight"?1:-1)+i.length)%i.length;d(t[_].v,!0),i[_].focus()}),c(),a.append(...i),{w:a,set:d,choose:w,focus:()=>(i.find((u)=>u.tabIndex===0)||i[0]).focus()}},rt=(t,e,r={})=>{let o=n("input",{type:"checkbox"});return o.checked=!!e,{lb:n("label",{cls:"ck"+(r.rec?" rec":""),title:r.title||null},o,n("span",{},t)),i:o}},Wt=(t,e,r,o)=>{let a=n("div",{cls:"ctl",role:"group"}),i=t.map((d,w)=>rt(d,o.has(w),{rec:e.includes(w),title:e.includes(w)?"建议":null})),c=()=>i.forEach((d,w)=>d.lb.classList.toggle("chg",r.sel.has(w)!==o.has(w)));return i.forEach((d,w)=>d.i.addEventListener("change",()=>{d.i.checked?r.sel.add(w):r.sel.delete(w),c(),D()})),a.append(...i.map((d)=>d.lb)),{w:a,set:(d)=>{r.sel=new Set(d),i.forEach((w,u)=>{w.i.checked=r.sel.has(u)}),c(),D()},toggle:(d)=>{if(i[d])i[d].i.click()},focus:()=>i[0]&&i[0].i.focus()}},Ct=(t,e={})=>n("button",{type:"button",cls:"gh",title:e.title||null},e.icon?g(e.icon):null,t?n("span",{},t):null);if([["本轮拍板","需要你拍板",(t)=>t.group==="now"],["早前","上轮按默认处理(勾「推翻」才回复)与早前尚未决策(默认不回复)",(t)=>t.group!=="now"]].forEach(([t,e,r])=>{let o=(h.decisions||[]).filter(r).sort((i,c)=>i.n-c.n);if(!o.length)return;let a=pt(t,e);o.forEach((i)=>{let c={pick:null,text:""},d={d:i,st:c};v.dec.push(d);let{q:w}=et(i,i.q),u=[],m,_,M,G=null;if(i.group==="defaulted"){let y=nt(c,"改成什么"),C=rt("推翻",!1,{title:"推翻上轮的默认处理"});C.i.addEventListener("change",()=>{c.pick=C.i.checked?"over":null,C.lb.classList.toggle("chg",C.i.checked),y.show(C.i.checked,!0)}),m=n("div",{cls:"ctl"},C.lb),u.push(y.box),_=(S)=>{if(S===0)C.i.click()},M=()=>C.i.focus(),y.i.__esc=()=>C.i.focus(),d.changed=()=>c.pick==="over",d.sum=()=>"推翻"}else if(i.ask){let y=Lt(i.ph||"填写;要附文件就留空,到输入框里附","ask");y.addEventListener("input",()=>{c.text=y.value,D()}),m=y,d.top=!0,_=()=>{},M=()=>y.focus(),d.changed=()=>!!(c.text||"").trim(),d.sum=()=>"已填"}else if(i.multi){let y=i.opts||[],C=Array.isArray(i.rec)?i.rec:i.rec!=null?[i.rec]:[],S=new Set(i.group==="now"?C:[]);c.sel=new Set(S),d.init=S;let q=Wt(y,C,c,S),z=nt(c,"附一句;不勾选项时即为你的回复");G=()=>{let I=z.box.hidden;if(z.show(I,!0),!I)q.focus()},m=q.w,u.push(z.box),d.reset=()=>q.set(S),_=(I)=>q.toggle(I),M=q.focus,z.i.__esc=()=>{z.show(!1),q.focus()},d.changed=()=>!T(c.sel,S)||!!F(c),d.sum=()=>{let I=[...c.sel].sort((bt,Jt)=>bt-Jt).map((bt)=>y[bt]);return(I.length?I.join("、"):"都不选")+(F(c)?"(附言)":"")}}else{let y=i.opts||[],C=y.map((z,I)=>({v:"o"+I,label:z,rec:I===i.rec,title:I===i.rec?"建议;再点一次即不回复":"再点一次即不回复"}));c.pick=i.group==="now"&&y[i.rec]!=null?"o"+i.rec:null,d.init=c.pick;let S=_t(C,c,{label:i.q,init:d.init,toggle:!0,cls:"dseg",title:i.def||null}),q=nt(c,"附一句;不选选项时即为你的回复");G=()=>{let z=q.box.hidden;if(q.show(z,!0),!z)S.focus()},m=n("div",{cls:"ctl"},S.w),u.push(q.box),d.reset=()=>S.set(d.init),_=(z)=>S.choose(z,!1),M=S.focus,q.i.__esc=()=>{q.show(!1),S.focus()},d.changed=()=>c.pick!==d.init||!!F(c),d.sum=()=>(c.pick?y[+c.pick.slice(1)]:"不回复")+(F(c)?"(附言)":"")}let Tt=n("div",{cls:"ln"+(d.top?" top":"")},w,m),Q=tt(a,Tt,u);if(G)Tt.addEventListener("click",(y)=>{if(y.target.closest("button,input,textarea,label,a,.ctl"))return;G()}),Q.__note=G;if(i.core)Q.classList.add("core");Q.__pick=_,Q.__focus=M,d.it=Q})}),h.actions&&h.actions.length){let t=pt("你要做的","做完后在这里回执");h.actions.forEach((e)=>{let r={pick:null,text:""},o=nt(r,"贴结果、报错或原因"),a=[["done","已做"],["issue","有问题"],["no","没做"],["you","你来做"]].map(([u,m])=>({v:u,label:m})),i=_t(a,r,{toggle:!0,init:null,label:e.short||e.text,onChange:(u)=>{let m=r.pick==="issue"||r.pick==="no";if(o.box.hidden=!m,m){if(dt(o.i),!u)o.i.focus()}}}),c=null;if(e.cmd){c=Ct("复制命令",{icon:"copy",title:e.cmd});let u=c.querySelector("span");c.addEventListener("click",()=>x(e.cmd,(m)=>m?f(u,"已复制"):Ot(e.cmd)))}let{q:d}=et(null,e.text),w=tt(t,n("div",{cls:"ln"},d,n("div",{cls:"ctl"},i.w,c)),[o.box]);w.__pick=(u)=>i.choose(u,!1),w.__focus=i.focus,o.i.__esc=i.focus,v.act.push({a:e,st:r,it:w})})}let ot=h.delivery,St=h.optional||[];if(ot||St.length){let t=pt("收尾");if(ot){let e=[];(ot.toggles||[]).forEach((a)=>{let i={t:a,init:!!a.rec,st:{on:!!a.rec}},c=rt(a.label,i.init,{rec:a.rec,title:a.rec?"建议;取消勾选即不表态":"勾选才表态"});c.i.addEventListener("change",()=>{i.st.on=c.i.checked,c.lb.classList.toggle("chg",i.st.on!==i.init),D()}),v.del.push(i),e.push(c)});let{q:r}=et(null,ot.info||"");r.classList.add("info");let o=tt(t,n("div",{cls:"ln"},r,n("div",{cls:"ctl"},...e.map((a)=>a.lb))));o.__pick=(a)=>{if(e[a])e[a].i.click()},o.__focus=()=>{if(e[0])e[0].i.focus()},v.delIt=o}St.forEach((e)=>{let r={on:!1},o=rt("也做",!1);o.i.addEventListener("change",()=>{r.on=o.i.checked,o.lb.classList.toggle("chg",r.on),D()});let{q:a}=et(null,e.text),i=tt(t,n("div",{cls:"ln"},a,n("div",{cls:"ctl"},o.lb)));i.__pick=(c)=>{if(c===0)o.i.click()},i.__focus=()=>o.i.focus(),v.opt.push({o:e,st:r,it:i})})}let R=(t,e,r)=>{let o=String(e).split(`
4
+ `).map((i)=>i.replace(/\s+$/,""));while(o.length&&!o[0])o.shift();while(o.length&&!o[o.length-1])o.pop();if(o=o.filter((i,c)=>i||o[c-1]),o.length<=1)return t+(o[0]||"");let a=" ".repeat(r);return t+o[0]+`
5
+ `+o.slice(1).map((i)=>a+i).join(`
6
+ `)},At=(t)=>{let{d:e,st:r}=t,o=F(r),a=e.n+". ",i=a.length;if(e.ask){let c=(r.text||"").trim();return c?R(a,c,i):null}if(e.group==="defaulted")return r.pick==="over"?R(a+"推翻:",o||"(待补充)",i):null;if(e.multi){let c=[...r.sel].sort((d,w)=>d-w).map((d)=>e.opts[d]);if(c.length)return R(a+c.join("、")+(o?",":""),o,i);if(t.init.size)return R(a+"都不选"+(o?",":""),o,i);return o?R(a,o,i):null}if(r.pick&&r.pick[0]==="o")return R(a+e.opts[+r.pick.slice(1)]+(o?",":""),o,i);return o?R(a,o,i):null},ut=(t,e)=>{let r=e.some((o)=>o.includes(`
7
+ `));return e.forEach((o,a)=>{if(r&&a)t.push("");t.push(o)}),r};function ft(){let t=[],e=v.dec.filter((c)=>c.d.group!=="pending").map(At).filter(Boolean),r=v.dec.filter((c)=>c.d.group==="pending").map(At).filter(Boolean);if(e.length||r.length){t.push("决策:");let c=ut(t,e);if(r.length){if(c||r.some((d)=>d.includes(`
8
+ `)))t.push("");t.push("--早前尚未决策--"),ut(t,r)}}let o=v.act.filter((c)=>c.st.pick);if(o.length){if(t.length)t.push("");t.push("反馈:"),ut(t,o.map((c)=>{let d=F(c.st);return R("- "+c.a.short+":"+P[c.st.pick]+(d?":":""),d,2)}))}let a=v.del.filter((c)=>c.st.on).map((c)=>c.t.label);if(a.length){if(t.length)t.push("");t.push("交付:"+a.join(","))}let i=v.opt.filter((c)=>c.st.on);if(i.length){if(t.length)t.push("");i.forEach((c)=>t.push("也做:"+c.o.text))}return t.join(`
9
+ `)}let qt=()=>{let t=[];return v.dec.forEach((e)=>{if(e.changed())t.push(e.d.n+" "+e.sum())}),v.act.forEach((e)=>{if(e.st.pick)t.push(e.a.short+":"+P[e.st.pick])}),v.del.forEach((e)=>{if(e.st.on!==e.init)t.push((e.st.on?"":"不")+e.t.label)}),v.opt.forEach((e)=>{if(e.st.on)t.push("也做 "+O(e.o.text,10))}),t},ht=(t)=>t?"<turn-reply"+(A?' turn="'+A+'"':"")+`>
10
10
  `+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
- `+y.join(`
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};})();
11
+ </turn-reply>`:t,gt=v.dec.filter((t)=>t.reset&&t.d.group==="now"),V=null;if(gt.length)V=Ct("全部按建议",{icon:"reset",title:"把本轮拍板恢复为建议项"}),V.addEventListener("click",()=>gt.forEach((t)=>t.reset()));let zt=n("span",{}),U=n("button",{type:"button",cls:"lk","aria-expanded":"false"},"预览"),Ut=n("span",{cls:"sum","aria-live":"polite"},zt,U),H=n("pre",{cls:"pv"});H.hidden=!0;let mt=()=>{H.hidden=!0,U.textContent="预览",U.setAttribute("aria-expanded","false")};U.addEventListener("click",()=>{if(H.hidden)H.hidden=!1,U.textContent="收起",U.setAttribute("aria-expanded","true");else mt()});let jt=n("span",{},b&&!L?"复制回复":"复制"),Z=n("button",{type:"button",cls:"btn"},jt);Z.addEventListener("click",()=>{let t=ft();if(t){let e=ht(t);x(e,(r)=>r?f(jt,"已复制"):Ot(e))}});let X=null;if(L)X=n("button",{type:"button",cls:"btn pri"},"填入输入框"),X.addEventListener("click",(t)=>{t.stopPropagation(),It()});else Z.classList.add("pri");let Bt=n("div",{cls:"foot"},V,Ut,Z,X),it=n("span",{cls:"fs"}),Ft=n("button",{type:"button",cls:"lk"},"展开"),Nt=n("div",{cls:"fold"},n("span",{cls:"mk-ok","aria-hidden":"true"}),it,Ft),st=(t)=>{if(p.classList.toggle("folded",t),t)mt();else if(p.classList.contains("kb")&&K[0])K[0].__focus()};Nt.addEventListener("click",()=>st(!1));let Y=null;function Ot(t){if(!Y){let r=n("textarea",{readonly:"",rows:"4","aria-label":"回复文字"});r.addEventListener("focus",()=>r.select()),Y=n("div",{cls:"man",role:"status"},n("div",{cls:"mh"},"复制被拒:按 ⌘C(或 Ctrl+C)复制下面的文字,再粘贴到输入框"),r),p.append(Y)}let e=Y.querySelector("textarea");if(e.value=t,Y.hidden=!1,p.classList.contains("folded"))st(!1);e.focus(),e.select()}let xt=n("div",{cls:"ns",role:"status"}),W=null,vt=(t)=>{W=null,xt.textContent=b?"没有填进输入框:Orca 只接受刚在面板里点击后的填入("+({gesture:"这次点击没被认作面板内的操作",cooldown:"两次点得太近",unavailable:"没能写进这个会话的草稿"}[t]||"原因未知")+")。再点一次「填入输入框」,或点「复制」后粘贴。":"没有填进输入框:宿主只接受「刚在面板里点击」的填入,点之前 5 秒内页面别处有点击或按键就会拒收。别碰面板以外的地方,等几秒再点一次「填入输入框」。",xt.title=t||"",p.classList.add("notsent"),st(!1)};window.addEventListener("message",(t)=>{if(!W)return;let e=t.data;if(e&&typeof e==="object"&&e.type==="orca-visual-compose-result"){if(e.ok===!1)vt(e.reason);else W=null;return}if(!e||typeof e!=="object"||e.jsonrpc!=="2.0"||e.method!==void 0||!(("result"in e)||("error"in e)))return;if(Date.now()>W.until){W=null;return}if(e.error||e.result&&e.result.isError===!0)vt(e.result&&e.result._reason);else W=null});let B=null,Ht=()=>{p.classList.remove("notsent"),W={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")&&W)B.disconnect(),vt()}),B.observe(t,{attributes:!0,attributeFilter:["data-not-sent"]}),setTimeout(()=>B&&B.disconnect(),3000)};function It(){let t=ft();if(!t)return;Ht(),k(ht(t));let e=qt();it.textContent="已填入 · "+(e.length?e.join(" · "):"全部按建议"),it.title=it.textContent,st(!0)}let Zt=()=>{if(L)It();else Z.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 r=e.closest&&e.closest(".it");if(!r)return;if(t.key==="/"&&r.__note){t.preventDefault(),r.__note();return}if(/^[1-9]$/.test(t.key)&&r.__pick){t.preventDefault(),r.__pick(+t.key-1);return}if(t.key==="ArrowDown"||t.key==="ArrowUp"){let o=K.indexOf(r),a=K[o+(t.key==="ArrowDown"?1:-1)];if(a)t.preventDefault(),a.__focus()}}),p.append(Nt,$t,Bt,xt,H);function D(){let t=ft(),e=N(t),r=qt();if(v.dec.forEach((a)=>a.it.classList.toggle("chg",a.changed())),v.act.forEach((a)=>a.it.classList.toggle("chg",!!a.st.pick)),v.delIt)v.delIt.classList.toggle("chg",v.del.some((a)=>a.st.on!==a.init));v.opt.forEach((a)=>a.it.classList.toggle("chg",a.st.on));let o=[];if(o.push(r.length?"改了 ":"全部按建议",...r.length?[n("b",{},String(r.length))," 项"]:[]),e)o.push(" · 将填入 ",n("b",{},String(e))," 行");else o.push(" · 没有要回复的内容");if(zt.replaceChildren(...o),H.textContent=ht(t),U.hidden=!e,!e)mt();if(Z.disabled=!e,X)X.disabled=!e;if(V)V.disabled=gt.every((a)=>!a.changed())}D();let wt=()=>{let t={},e=[...p.querySelectorAll(".dseg button.sg")];e.forEach((a)=>a.style.removeProperty("width")),e.forEach((a)=>{let i=a.dataset.col;t[i]=Math.max(t[i]||0,a.offsetWidth)}),e.forEach((a)=>{a.style.setProperty("width",Math.ceil(t[a.dataset.col])+12+"px","important")}),p.classList.add("measuring");let r=0;p.querySelectorAll(".q").forEach((a)=>{r=Math.max(r,a.offsetWidth)});let o=0;if(p.querySelectorAll(".ln>.ctl").forEach((a)=>{o=Math.max(o,a.offsetWidth)}),p.classList.remove("measuring"),r>0)p.style.setProperty("--qw",Math.ceil(r)+2+"px");if(o>0)p.style.setProperty("--cw",Math.ceil(o)+"px")};if(window.innerWidth>0)wt();if(typeof ResizeObserver==="function"){let t=-1;new ResizeObserver(()=>{let e=p.clientWidth;if(e>0&&e!==t)t=e,wt()}).observe(p)}else if(!(window.innerWidth>0)){let t=()=>{if(window.innerWidth>0)window.removeEventListener("resize",t),wt()};window.addEventListener("resize",t)}}return Rt})();var lt="0.2.0",Mt="trw-style-"+lt;function Kt(n){let l=n.ownerDocument||document;if(l.getElementById(Mt))return;let g=l.createElement("style");g.id=Mt,g.textContent=at,(l.head||n.parentNode||l.documentElement).appendChild(g)}function kt(n,l){n.replaceChildren(),n.classList.remove("folded","kb");let g=(n.ownerDocument||document).createElement("div");g.className="err",g.setAttribute("role","alert"),g.title=l,g.textContent=l,n.append(g)}var yt=",请直接在输入框回复";function Pt(n,l){if(!n||typeof n.append!=="function")return console.error("[turn-reply] root 不是元素"),["root 不是元素"];n.classList.add("trw"),Kt(n);let g=l;if(typeof g==="string")try{g=JSON.parse(g)}catch(s){return kt(n,"面板数据不是合法 JSON"+yt),["JSON 解析失败"]}let E=ct(g);if(E.length)return console.error(`[turn-reply] spec 不合法:
12
+ `+E.join(`
13
+ `)),kt(n,"面板数据不合法("+E.length+" 处,首处 "+E[0]+")"+yt),E;try{Dt(n,g)}catch(s){console.error("[turn-reply] 渲染出错",s);let x="面板渲染出错("+(s&&s.message||s)+")"+yt;return kt(n,x),[x]}return[]}var Et=typeof window<"u"?window:globalThis;if(!Et.TR||Et.TR.version!==lt)Et.TR={render:Pt,validate:ct,version:lt,css:at};})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@npmjsdnt/turn-reply",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "turn-report 回复面板:TR.render(root, spec),供 show_widget 每轮只贴引导代码+spec",
5
5
  "license": "UNLICENSED",
6
6
  "main": "dist/tr.js",