ai_co_discuss 0.2.8 → 0.2.9

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/web/modern.js CHANGED
@@ -41118,40 +41118,43 @@ var QV = {
41118
41118
  }))]
41119
41119
  }));
41120
41120
  }), et = Z(() => $e.value.flatMap((e) => e.entries));
41121
- function tt() {
41121
+ function tt(e) {
41122
+ return e.getBoundingClientRect().top + (parseFloat(getComputedStyle(e).getPropertyValue("--channel-topbar-height")) || 0);
41123
+ }
41124
+ function nt() {
41122
41125
  let e = b.value;
41123
41126
  if (!e || !e.clientHeight) return;
41124
41127
  xe.value = e.scrollHeight - e.scrollTop - e.clientHeight < $U;
41125
- let t = e.getBoundingClientRect(), n = [...e.querySelectorAll("[data-message-id]")], r = n.find((e) => Number(e.dataset.messageId) === ee.value);
41126
- if (r && r.getBoundingClientRect().bottom > t.top && r.getBoundingClientRect().top < t.bottom) {
41128
+ let t = e.getBoundingClientRect(), n = tt(e), r = [...e.querySelectorAll("[data-message-id]")], i = r.find((e) => Number(e.dataset.messageId) === ee.value);
41129
+ if (i && i.getBoundingClientRect().bottom > n && i.getBoundingClientRect().top < t.bottom) {
41127
41130
  O.value = ee.value;
41128
41131
  return;
41129
41132
  }
41130
41133
  ee.value = null;
41131
- let i = n.find((e) => e.getBoundingClientRect().bottom > t.top + eW);
41132
- O.value = i ? Number(i.dataset.messageId) : null;
41134
+ let a = r.find((e) => e.getBoundingClientRect().bottom > n + eW);
41135
+ O.value = a ? Number(a.dataset.messageId) : null;
41133
41136
  }
41134
- async function nt() {
41135
- await Qn(), xe.value && b.value && (b.value.scrollTop = b.value.scrollHeight), tt();
41137
+ async function rt() {
41138
+ await Qn(), xe.value && b.value && (b.value.scrollTop = b.value.scrollHeight), nt();
41136
41139
  }
41137
- R([() => o.value.messages, Le], nt, { immediate: !0 }), R([
41140
+ R([() => o.value.messages, Le], rt, { immediate: !0 }), R([
41138
41141
  () => o.value.room?.id,
41139
41142
  () => o.value.query,
41140
41143
  () => o.value.mention_only
41141
41144
  ], () => {
41142
- ee.value = null, O.value = null, bt(), xe.value = !0;
41145
+ ee.value = null, O.value = null, xt(), xe.value = !0;
41143
41146
  }), R(() => o.value.tab, (e) => {
41144
- bt(), e === "discussion" && nt();
41147
+ xt(), e === "discussion" && rt();
41145
41148
  }), R(() => o.value.room?.id, () => x.value.clear());
41146
- async function rt(e, t) {
41149
+ async function it(e, t) {
41147
41150
  let n = t.currentTarget.closest("[data-message-id]"), r = x.value.has(e.id), i = b.value.scrollTop;
41148
- xe.value = !1, r ? x.value.delete(e.id) : x.value.add(e.id), bt(), await Qn(), r || (b.value.scrollTop = i), r && n.getBoundingClientRect().top < b.value.getBoundingClientRect().top && (b.value.scrollTop += n.getBoundingClientRect().top - b.value.getBoundingClientRect().top - eW), tt();
41151
+ xe.value = !1, r ? x.value.delete(e.id) : x.value.add(e.id), xt(), await Qn(), r || (b.value.scrollTop = i), r && n.getBoundingClientRect().top < tt(b.value) && (b.value.scrollTop += n.getBoundingClientRect().top - tt(b.value) - eW), nt();
41149
41152
  }
41150
- function it(e) {
41153
+ function at(e) {
41151
41154
  let t = b.value, n = t?.querySelector(`[data-message-id="${e}"]`);
41152
- n && (yt(), ee.value = e, O.value = e, t.scrollTop += n.getBoundingClientRect().top - t.getBoundingClientRect().top - eW, n.focus({ preventScroll: !0 }), tt());
41155
+ n && (bt(), ee.value = e, O.value = e, t.scrollTop += n.getBoundingClientRect().top - tt(t) - eW, n.focus({ preventScroll: !0 }), nt());
41153
41156
  }
41154
- function at(e) {
41157
+ function ot(e) {
41155
41158
  (e.type !== "keydown" || [
41156
41159
  "ArrowUp",
41157
41160
  "ArrowDown",
@@ -41162,7 +41165,7 @@ var QV = {
41162
41165
  " "
41163
41166
  ].includes(e.key)) && (ee.value = null);
41164
41167
  }
41165
- function ot(e, t) {
41168
+ function st(e, t) {
41166
41169
  let n = {
41167
41170
  ArrowUp: t - 1,
41168
41171
  ArrowDown: t + 1,
@@ -41174,22 +41177,22 @@ var QV = {
41174
41177
  let r = Math.max(0, Math.min(n[e.key], et.value.length - 1));
41175
41178
  E.value.querySelectorAll("button")[r].focus({ preventScroll: !0 });
41176
41179
  }
41177
- function st(e) {
41180
+ function ct(e) {
41178
41181
  let t = E.value;
41179
41182
  if (!t?.clientHeight || !e) return;
41180
41183
  let n = t.getBoundingClientRect(), r = e.getBoundingClientRect();
41181
41184
  r.top < n.top + XU ? t.scrollTop += r.top - n.top - XU : r.bottom > n.bottom - XU && (t.scrollTop += r.bottom - n.bottom + XU);
41182
41185
  }
41183
- async function ct() {
41184
- await Qn(), st(E.value?.querySelector(`[data-jump-id="${O.value}"]`));
41185
- }
41186
- R(O, ct);
41187
- function lt(e, t) {
41188
- !le && t.currentTarget.matches(":focus-visible") && (D.value = !0, st(e.round ? t.currentTarget.parentElement.querySelector("[data-jump-id]") : t.currentTarget), vt(e, t));
41186
+ async function lt() {
41187
+ await Qn(), ct(E.value?.querySelector(`[data-jump-id="${O.value}"]`));
41189
41188
  }
41189
+ R(O, lt);
41190
41190
  function ut(e, t) {
41191
+ !le && t.currentTarget.matches(":focus-visible") && (D.value = !0, ct(e.round ? t.currentTarget.parentElement.querySelector("[data-jump-id]") : t.currentTarget), yt(e, t));
41192
+ }
41193
+ function dt(e, t) {
41191
41194
  if (ue = !1, !["touch", "pen"].includes(t.pointerType)) return;
41192
- yt(), D.value = !1;
41195
+ bt(), D.value = !1;
41193
41196
  let n = {
41194
41197
  pointer: t.pointerId,
41195
41198
  x: t.clientX,
@@ -41197,31 +41200,31 @@ var QV = {
41197
41200
  target: t.currentTarget
41198
41201
  };
41199
41202
  le = n, n.timer = setTimeout(() => {
41200
- le === n && (ue = !0, vt(e, { currentTarget: n.target }));
41203
+ le === n && (ue = !0, yt(e, { currentTarget: n.target }));
41201
41204
  }, ZU);
41202
41205
  }
41203
- function dt() {
41206
+ function ft() {
41204
41207
  le && clearTimeout(le.timer), le = null;
41205
41208
  }
41206
- function ft(e) {
41207
- le?.pointer === e.pointerId && (e.type === "pointercancel" && (ue = !0), yt());
41208
- }
41209
- function pt(e, t) {
41210
- ["touch", "pen"].includes(t.pointerType) ? le?.pointer === t.pointerId && Math.hypot(t.clientX - le.x, t.clientY - le.y) > QU && (ue = !0, yt()) : t.type === "pointerenter" && D.value || (D.value = !1, (ne.value !== e.key || !ie.value) && vt(e, t));
41209
+ function pt(e) {
41210
+ le?.pointer === e.pointerId && (e.type === "pointercancel" && (ue = !0), bt());
41211
41211
  }
41212
41212
  function mt(e, t) {
41213
- ue && t.detail !== 0 ? (ue = !1, t.preventDefault()) : it(e.message.id);
41213
+ ["touch", "pen"].includes(t.pointerType) ? le?.pointer === t.pointerId && Math.hypot(t.clientX - le.x, t.clientY - le.y) > QU && (ue = !0, bt()) : t.type === "pointerenter" && D.value || (D.value = !1, (ne.value !== e.key || !ie.value) && yt(e, t));
41214
41214
  }
41215
- function ht(e) {
41216
- le && e.preventDefault();
41215
+ function ht(e, t) {
41216
+ ue && t.detail !== 0 ? (ue = !1, t.preventDefault()) : at(e.message.id);
41217
41217
  }
41218
41218
  function gt(e) {
41219
- (e.deltaX || e.deltaY) && (D.value = !1, yt());
41219
+ le && e.preventDefault();
41220
+ }
41221
+ function _t(e) {
41222
+ (e.deltaX || e.deltaY) && (D.value = !1, bt());
41220
41223
  }
41221
- function _t() {
41222
- yt(), ee.value = null, xe.value = !0, nt();
41224
+ function vt() {
41225
+ bt(), ee.value = null, xe.value = !0, rt();
41223
41226
  }
41224
- async function vt(e, t) {
41227
+ async function yt(e, t) {
41225
41228
  let n = e.message, r = t.currentTarget.getBoundingClientRect(), i = E.value.getBoundingClientRect(), a = Math.min(PU, innerWidth - 24), o = i.right + LU;
41226
41229
  if (k.value = Math.max(IU, Math.min(o, innerWidth - a - IU)), te.value = n.id, ne.value = e.key, re.value = e.round, ie.value = !0, await Qn(), !ie.value || ne.value !== e.key) return;
41227
41230
  oe.value = ae.value.scrollHeight + FU;
@@ -41230,20 +41233,20 @@ var QV = {
41230
41233
  let c = se.value || pe.get() === 0;
41231
41234
  de[c ? "jump" : "set"](A.value), fe[c ? "jump" : "set"](oe.value);
41232
41235
  }
41233
- function yt(e) {
41234
- e?.relatedTarget?.closest?.(".channel-message-map, .channel-nav-preview") || (dt(), ie.value = !1);
41236
+ function bt(e) {
41237
+ e?.relatedTarget?.closest?.(".channel-message-map, .channel-nav-preview") || (ft(), ie.value = !1);
41235
41238
  }
41236
- function bt() {
41237
- dt(), ie.value = !1, pe.jump(0), te.value = null;
41239
+ function xt() {
41240
+ ft(), ie.value = !1, pe.jump(0), te.value = null;
41238
41241
  }
41239
- async function xt() {
41240
- bt(), Ce(), await nt(), await ct();
41242
+ async function St() {
41243
+ xt(), Ce(), await rt(), await lt();
41241
41244
  }
41242
- function St(e) {
41245
+ function Ct(e) {
41243
41246
  let t = e.entries.length - 1;
41244
41247
  return Math.max(-3, Math.min(t + WU, ye.value - e.entries[0].index));
41245
41248
  }
41246
- function Ct(e, t) {
41249
+ function wt(e, t) {
41247
41250
  let n = ye.value < 0 ? Infinity : Math.abs(t - ye.value), r = Math.max(0, 1 - n / WU), i = O.value === e.message.id, a = n === 0 || i && ye.value < 0, o = zU;
41248
41251
  return {
41249
41252
  scaleX: a ? BU / o : i ? VU / o : 1 + r * GU / o,
@@ -41254,28 +41257,28 @@ var QV = {
41254
41257
  R([ie, se], () => {
41255
41258
  let e = +!!ie.value;
41256
41259
  se.value ? (pe.jump(e), de.jump(A.value), fe.jump(oe.value)) : pe.set(e);
41257
- }), Qi(() => window.addEventListener("resize", xt)), ta(() => window.removeEventListener("resize", xt)), ta(dt);
41258
- function wt(e) {
41260
+ }), Qi(() => window.addEventListener("resize", St)), ta(() => window.removeEventListener("resize", St)), ta(ft);
41261
+ function Tt(e) {
41259
41262
  return [[{
41260
41263
  label: "复制原文链接",
41261
41264
  icon: "i-lucide-link",
41262
- onSelect: () => Ot(e)
41265
+ onSelect: () => kt(e)
41263
41266
  }, {
41264
41267
  label: "查看原文",
41265
41268
  icon: "i-lucide-expand",
41266
41269
  onSelect: () => n("detail", e.id)
41267
41270
  }]];
41268
41271
  }
41269
- async function Tt(e) {
41272
+ async function Et(e) {
41270
41273
  await l("reply", e), be.value?.textareaRef?.focus();
41271
41274
  }
41272
- async function Et() {
41273
- !d.value.trim() && !o.value.attachment_drafts.length || u.value || o.value.sending_message || (xe.value = !0, await l("send"), await nt());
41274
- }
41275
- function Dt(e) {
41276
- e.key !== "Enter" || !(e.ctrlKey || e.metaKey) || e.isComposing || d.value.trim() || o.value.attachment_drafts.length && (e.preventDefault(), e.stopPropagation(), Et());
41275
+ async function Dt() {
41276
+ !d.value.trim() && !o.value.attachment_drafts.length || u.value || o.value.sending_message || (xe.value = !0, await l("send"), await rt());
41277
41277
  }
41278
41278
  function Ot(e) {
41279
+ e.key !== "Enter" || !(e.ctrlKey || e.metaKey) || e.isComposing || d.value.trim() || o.value.attachment_drafts.length && (e.preventDefault(), e.stopPropagation(), Dt());
41280
+ }
41281
+ function kt(e) {
41279
41282
  l("copy", `${location.origin}/r/${Se.value.id}/messages/${e.id}`);
41280
41283
  }
41281
41284
  return (e, t) => {
@@ -41304,18 +41307,18 @@ var QV = {
41304
41307
  class: "channel-message-map",
41305
41308
  style: j({ "--nav-entry-height": `${RU}px` }),
41306
41309
  "aria-label": "发言快速导航",
41307
- onWheelPassive: uu(gt, ["stop"]),
41308
- onPointerleave: yt,
41309
- onFocusout: yt,
41310
- onKeydown: fu(uu(yt, ["stop"]), ["esc"]),
41311
- onContextmenu: ht
41310
+ onWheelPassive: uu(_t, ["stop"]),
41311
+ onPointerleave: bt,
41312
+ onFocusout: bt,
41313
+ onKeydown: fu(uu(bt, ["stop"]), ["esc"]),
41314
+ onContextmenu: gt
41312
41315
  }, [K("div", aH, [(U(!0), W(H, null, B($e.value, (e, t, n, r) => {
41313
41316
  let i = [
41314
41317
  e,
41315
41318
  I(se),
41316
41319
  ie.value,
41317
41320
  Ze.value === e.number ? O.value : null,
41318
- St(e)
41321
+ Ct(e)
41319
41322
  ];
41320
41323
  if (r && r.el && r.key === e.number && rc(r, i)) return r;
41321
41324
  let a = (U(), W("div", {
@@ -41333,21 +41336,21 @@ var QV = {
41333
41336
  tabindex: !e.round && e.message.id === (O.value || I(o).messages[0]?.id) ? 0 : -1,
41334
41337
  "aria-current": !e.round && O.value === e.message.id ? "location" : void 0,
41335
41338
  "aria-describedby": ie.value && ne.value === e.key ? "channel-navigation-preview" : void 0,
41336
- onPointerenter: (t) => pt(e, t),
41337
- onPointermove: (t) => pt(e, t),
41338
- onPointerdown: (t) => ut(e, t),
41339
- onPointerup: ft,
41340
- onPointercancel: ft,
41341
- onFocus: (t) => lt(e, t),
41342
- onKeydown: (t) => ot(t, e.index),
41343
- onClick: (t) => mt(e, t)
41339
+ onPointerenter: (t) => mt(e, t),
41340
+ onPointermove: (t) => mt(e, t),
41341
+ onPointerdown: (t) => dt(e, t),
41342
+ onPointerup: pt,
41343
+ onPointercancel: pt,
41344
+ onFocus: (t) => ut(e, t),
41345
+ onKeydown: (t) => st(t, e.index),
41346
+ onClick: (t) => ht(e, t)
41344
41347
  }, [e.round ? (U(), W("span", sH, P(e.number || "–"), 1)) : (U(), G(I(QB).span, {
41345
41348
  key: 1,
41346
41349
  class: "channel-jump-tick",
41347
41350
  "aria-hidden": "true",
41348
41351
  initial: !1,
41349
- animate: I(se) ? void 0 : Ct(e, e.index),
41350
- style: j(I(se) ? Ct(e, e.index) : void 0),
41352
+ animate: I(se) ? void 0 : wt(e, e.index),
41353
+ style: j(I(se) ? wt(e, e.index) : void 0),
41351
41354
  transition: ce
41352
41355
  }, null, 8, ["animate", "style"]))], 42, oH))), 128))], 4));
41353
41356
  return a.memo = i, a;
@@ -41369,9 +41372,9 @@ var QV = {
41369
41372
  height: I(fe),
41370
41373
  "--preview-gap": `${LU}px`
41371
41374
  }),
41372
- onPointerleave: yt,
41373
- onFocusout: yt,
41374
- onKeydown: fu(uu(yt, ["stop"]), ["esc"])
41375
+ onPointerleave: bt,
41376
+ onFocusout: bt,
41377
+ onKeydown: fu(uu(bt, ["stop"]), ["esc"])
41375
41378
  }, {
41376
41379
  default: L(() => [K("div", {
41377
41380
  ref_key: "preview_content",
@@ -41428,10 +41431,10 @@ var QV = {
41428
41431
  ref: b,
41429
41432
  class: "channel-transcript",
41430
41433
  "aria-label": "聊天记录",
41431
- onScroll: tt,
41432
- onWheelPassive: at,
41433
- onTouchstartPassive: at,
41434
- onKeydown: at
41434
+ onScroll: nt,
41435
+ onWheelPassive: ot,
41436
+ onTouchstartPassive: ot,
41437
+ onKeydown: ot
41435
41438
  }, [
41436
41439
  !I(o).query && !I(o).mention_only ? (U(), W("div", mH, [K("section", {
41437
41440
  class: M(["channel-message channel-topic-card", { "is-expanded": r.value }]),
@@ -41661,7 +41664,7 @@ var QV = {
41661
41664
  "aria-label": `${x.value.has(e.id) ? "收起回答" : "展开完整回答"} #${e.id}`,
41662
41665
  "aria-expanded": x.value.has(e.id),
41663
41666
  "aria-controls": `channel-answer-${e.id}`,
41664
- onClick: (t) => rt(e, t)
41667
+ onClick: (t) => it(e, t)
41665
41668
  }, null, 8, [
41666
41669
  "label",
41667
41670
  "trailing-icon",
@@ -41686,11 +41689,11 @@ var QV = {
41686
41689
  color: "neutral",
41687
41690
  variant: "ghost",
41688
41691
  "aria-label": `回复 #${e.id}`,
41689
- onClick: (t) => Tt(e)
41692
+ onClick: (t) => Et(e)
41690
41693
  }, null, 8, ["aria-label", "onClick"])]),
41691
41694
  _: 2
41692
41695
  }, 1024), q(oe, {
41693
- items: wt(e),
41696
+ items: Tt(e),
41694
41697
  content: {
41695
41698
  align: "end",
41696
41699
  sideOffset: 5
@@ -41799,14 +41802,14 @@ var QV = {
41799
41802
  variant: "outline",
41800
41803
  "aria-label": "回到最新消息",
41801
41804
  class: "channel-latest-button",
41802
- onClick: _t
41805
+ onClick: vt
41803
41806
  })])) : Y("", !0),
41804
41807
  K("div", cU, [K("div", {
41805
41808
  class: "channel-composer-column",
41806
41809
  onDragover: t[19] ||= (...e) => I(s).drop_attachments && I(s).drop_attachments(...e),
41807
41810
  onDrop: t[20] ||= (...e) => I(s).drop_attachments && I(s).drop_attachments(...e),
41808
41811
  onPaste: t[21] ||= (...e) => I(s).paste_attachments && I(s).paste_attachments(...e),
41809
- onKeydownCapture: Dt
41812
+ onKeydownCapture: Ot
41810
41813
  }, [q(Ce, {
41811
41814
  ref_key: "prompt",
41812
41815
  ref: be,
@@ -41827,7 +41830,7 @@ var QV = {
41827
41830
  base: "channel-editor",
41828
41831
  footer: "channel-composer-footer"
41829
41832
  },
41830
- onSubmit: Et
41833
+ onSubmit: Dt
41831
41834
  }, {
41832
41835
  header: L(() => [
41833
41836
  I(o).attachment_drafts.length ? (U(), W("div", lU, [(U(!0), W(H, null, B(I(o).attachment_drafts, (e) => (U(), W("div", {
@@ -41991,7 +41994,7 @@ var QV = {
41991
41994
  class: "channel-primary-button channel-send",
41992
41995
  disabled: !I(d).trim() && !I(o).attachment_drafts.length || _.value && !I(h).trim(),
41993
41996
  loading: I(u) === "send" || I(o).sending_message,
41994
- onClick: Et
41997
+ onClick: Dt
41995
41998
  }, null, 8, ["disabled", "loading"])
41996
41999
  ]),
41997
42000
  _: 1
@@ -42015,7 +42018,7 @@ var QV = {
42015
42018
  ], 2);
42016
42019
  };
42017
42020
  }
42018
- }, [["__scopeId", "data-v-2fc61e53"]]), oW = {
42021
+ }, [["__scopeId", "data-v-36350e08"]]), oW = {
42019
42022
  class: "launch-settings",
42020
42023
  "aria-label": "启动配置"
42021
42024
  }, sW = { class: "launch-connect-command" }, cW = {
@@ -47583,7 +47586,7 @@ var YG = /*#__PURE__*/ nH({
47583
47586
  key: 0,
47584
47587
  class: "info-section"
47585
47588
  }, sX = { class: "button-row" }, cX = { class: "form-footer" }, lX = {
47586
- key: 4,
47589
+ key: 1,
47587
47590
  class: "channel-empty"
47588
47591
  }, uX = ["aria-valuenow", "aria-valuetext"], dX = {
47589
47592
  key: 2,
@@ -47658,24 +47661,29 @@ var YG = /*#__PURE__*/ nH({
47658
47661
  label: "宽",
47659
47662
  width: 1240
47660
47663
  }
47661
- }, b = Ae(), x = /* @__PURE__ */ F(b.reading), S = /* @__PURE__ */ F(b.effects), C = /* @__PURE__ */ F(b.rail), w = /* @__PURE__ */ F(b.nav), T = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), E = /* @__PURE__ */ F(b.collapsed), D = /* @__PURE__ */ F(!0), O = /* @__PURE__ */ F(b.rail_collapsed), ee = Z(() => T.value >= WX), te = Z(() => t.value.tab === "discussion" && !O.value), ne = Z(() => ee.value && t.value.tab === "discussion" ? O.value ? "展开频道概览" : "收起频道概览" : "频道资料与参与者"), re = Z(() => {
47664
+ }, b = Ne(), x = /* @__PURE__ */ F(b.reading), S = /* @__PURE__ */ F(b.effects), C = /* @__PURE__ */ F(b.rail), w = /* @__PURE__ */ F(b.nav), T = /* @__PURE__ */ F(typeof window > "u" ? 728 : window.innerWidth), E = /* @__PURE__ */ F(b.collapsed), D = /* @__PURE__ */ F(!0), O = /* @__PURE__ */ F(b.rail_collapsed), ee = Z(() => T.value >= WX), te = Z(() => t.value.tab === "discussion" && !O.value), ne = Z(() => ee.value && t.value.tab === "discussion" ? O.value ? "展开频道概览" : "收起频道概览" : "频道资料与参与者"), re = Z(() => {
47662
47665
  let e = document.createElement("template");
47663
47666
  return e.innerHTML = o.value?.rendered_brief || "", e.content.textContent.replace(/\s+/g, " ").trim();
47664
- }), ie = /* @__PURE__ */ F(null), ae = /* @__PURE__ */ F(null), k = Z(() => Math.min(BX, Math.max(zX, T.value - UX - GX))), A = Z(() => Math.min(w.value, k.value)), oe = Z(() => ({
47667
+ }), ie = /* @__PURE__ */ F(null), ae = /* @__PURE__ */ F(0), k = null, A = /* @__PURE__ */ F(null), oe = /* @__PURE__ */ F(null), se = Z(() => Math.min(BX, Math.max(zX, T.value - UX - GX))), ce = Z(() => Math.min(w.value, se.value)), le = Z(() => ({
47665
47668
  "--channel-reading-width": `${y[x.value].width}px`,
47666
47669
  "--channel-rail-width": `${C.value}px`,
47667
- "--channel-main-columns": E.value ? "minmax(0, 1fr)" : `${A.value}px ${GX}px minmax(0, 1fr)`
47668
- })), se = Object.entries(y).map(([e, t]) => ({
47670
+ "--channel-topbar-height": `${ae.value}px`,
47671
+ "--channel-main-columns": E.value ? "minmax(0, 1fr)" : `${ce.value}px ${GX}px minmax(0, 1fr)`
47672
+ })), ue = Object.entries(y).map(([e, t]) => ({
47669
47673
  value: e,
47670
47674
  label: t.label
47671
47675
  }));
47672
- R(x, Me), R(S, (e) => {
47673
- document.documentElement.dataset.effects = e, Me();
47674
- }, { immediate: !0 }), R(E, Me), R(O, Me), Qi(() => window.addEventListener("resize", Pe)), ta(() => window.removeEventListener("resize", Pe)), Qi(() => document.addEventListener("pointerdown", Ie)), ta(() => document.removeEventListener("pointerdown", Ie));
47675
- let ce = Z({
47676
+ R(x, Fe), R(S, (e) => {
47677
+ document.documentElement.dataset.effects = e, Fe();
47678
+ }, { immediate: !0 }), R(E, Fe), R(O, Fe), Qi(() => window.addEventListener("resize", Le)), ta(() => window.removeEventListener("resize", Le)), Qi(() => document.addEventListener("pointerdown", ze)), Qi(() => {
47679
+ k = new ResizeObserver(([e]) => {
47680
+ D.value && (ae.value = Math.round(e.target.offsetHeight));
47681
+ }), k.observe(ie.value);
47682
+ }), ta(() => k?.disconnect()), ta(() => document.removeEventListener("pointerdown", ze));
47683
+ let de = Z({
47676
47684
  get: () => t.value.tab,
47677
47685
  set: (e) => i("tab", e)
47678
- }), le = [
47686
+ }), fe = [
47679
47687
  {
47680
47688
  value: "discussion",
47681
47689
  label: "消息",
@@ -47696,21 +47704,21 @@ var YG = /*#__PURE__*/ nH({
47696
47704
  label: "接入",
47697
47705
  icon: "i-lucide-plug"
47698
47706
  }
47699
- ], ue = Z(() => o.value?.mode === "free"), de = Z(() => ue.value ? le.slice(0, 1) : le), fe = /* @__PURE__ */ F(""), pe = /* @__PURE__ */ F("runner");
47707
+ ], pe = Z(() => o.value?.mode === "free"), me = Z(() => pe.value ? fe.slice(0, 1) : fe), he = /* @__PURE__ */ F(""), ge = /* @__PURE__ */ F("runner");
47700
47708
  R(() => o.value?.id, () => {
47701
- fe.value = "", pe.value = (o.value?.free?.members || []).some((e) => e.access === "runner") ? "runner" : "manual";
47709
+ he.value = "", ge.value = (o.value?.free?.members || []).some((e) => e.access === "runner") ? "runner" : "manual";
47702
47710
  }, { immediate: !0 });
47703
- async function me() {
47711
+ async function N() {
47704
47712
  await i("prepare_brainstorm"), l.value = null, s.value = "create";
47705
47713
  }
47706
- let he = Z(() => Object.keys(pe.value === "online" ? n.identities : n.launch_clients).filter((e) => e !== "用户").map((e) => ({
47714
+ let _e = Z(() => Object.keys(ge.value === "online" ? n.identities : n.launch_clients).filter((e) => e !== "用户").map((e) => ({
47707
47715
  label: n.display_name(e),
47708
47716
  value: e
47709
- }))), ge = (e) => e.pending > 0 || ["dispatched", "started"].includes(e.execution?.status), N = Z(() => (o.value?.free?.members || []).find((e) => e.role === "host"));
47710
- function _e(e) {
47711
- return e.status === "away" ? "idle" : e.execution?.stale ? "error" : ge(e) ? e.pending && !["dispatched", "started"].includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
47717
+ }))), ve = (e) => e.pending > 0 || ["dispatched", "started"].includes(e.execution?.status), ye = Z(() => (o.value?.free?.members || []).find((e) => e.role === "host"));
47718
+ function be(e) {
47719
+ return e.status === "away" ? "idle" : e.execution?.stale ? "error" : ve(e) ? e.pending && !["dispatched", "started"].includes(e.execution?.status) ? "warning" : "primary" : e.execution?.status === "failed" ? "error" : "success";
47712
47720
  }
47713
- function ve(e) {
47721
+ function xe(e) {
47714
47722
  let n = (t, n, r, a = {}) => ({
47715
47723
  label: t,
47716
47724
  icon: n,
@@ -47734,7 +47742,7 @@ var YG = /*#__PURE__*/ nH({
47734
47742
  onSelect: () => i("download_member_access", e.name)
47735
47743
  }]],
47736
47744
  [
47737
- ...ge(e) ? [n("停止", "i-lucide-square", "interrupt")] : [],
47745
+ ...ve(e) ? [n("停止", "i-lucide-square", "interrupt")] : [],
47738
47746
  ...e.access === "online" && e.pending ? [{
47739
47747
  label: "复制阅读通知",
47740
47748
  icon: "i-lucide-copy",
@@ -47752,60 +47760,60 @@ var YG = /*#__PURE__*/ nH({
47752
47760
  }]
47753
47761
  ];
47754
47762
  }
47755
- function ye(e) {
47763
+ function Se(e) {
47756
47764
  if (e.status === "away") return "已离开:不会被唤醒,可请回";
47757
47765
  let t = e.execution;
47758
47766
  return t && ["dispatched", "started"].includes(t.status) ? t.stale ? "执行失联,停止未确认" : "正在处理" : e.pending ? `待投递 ${e.pending} 条` : t?.status === "failed" ? `上次失败:${t.result}` : t ? "空闲" : "尚未收到消息";
47759
47767
  }
47760
- R(() => ue.value && t.value.tab !== "discussion", (e) => {
47768
+ R(() => pe.value && t.value.tab !== "discussion", (e) => {
47761
47769
  e && i("tab", "discussion");
47762
47770
  }, { immediate: !0 });
47763
- let be = Z(() => de.value.map((e) => ({
47771
+ let Ce = Z(() => me.value.map((e) => ({
47764
47772
  ...e,
47765
47773
  active: !!o.value && t.value.tab === e.value,
47766
47774
  disabled: !o.value,
47767
47775
  onSelect: () => {
47768
47776
  d.value = !1, i("tab", e.value);
47769
47777
  }
47770
- }))), xe = Z(() => [{
47778
+ }))), we = Z(() => [{
47771
47779
  name: "用户",
47772
47780
  mode: "发起与协助"
47773
47781
  }, ...Object.entries(o.value?.experts || {}).map(([e, t]) => ({
47774
47782
  name: e,
47775
47783
  mode: t === "cli" ? "CLI · 读写" : "在线 AI · 只读"
47776
47784
  }))]);
47777
- function Se({ room: e, action: t }) {
47785
+ function Te({ room: e, action: t }) {
47778
47786
  c.value = e, d.value = !1, s.value = t;
47779
47787
  }
47780
- function Ce() {
47788
+ function Ee() {
47781
47789
  d.value = !1, s.value = "archives";
47782
47790
  }
47783
- async function we(e) {
47791
+ async function De(e) {
47784
47792
  d.value = !1, await i("room", e);
47785
47793
  }
47786
- function Te(e) {
47794
+ function Oe(e) {
47787
47795
  u.value = e, s.value = "message";
47788
47796
  }
47789
- function Ee(e = null) {
47790
- i("clear_create_parent"), l.value = e, d.value = !1, s.value = "create";
47797
+ function ke(e = null) {
47798
+ n.reset_create_form(), l.value = e, d.value = !1, s.value = "create";
47791
47799
  }
47792
- function De() {
47800
+ function Ae() {
47793
47801
  l.value = null, d.value = !1, s.value = "folder";
47794
47802
  }
47795
- function Oe(e) {
47803
+ function je(e) {
47796
47804
  l.value = e, d.value = !1, s.value = "rename-folder";
47797
47805
  }
47798
- function ke(e) {
47806
+ function Me(e) {
47799
47807
  l.value = e, d.value = !1, s.value = "delete-folder";
47800
47808
  }
47801
- function Ae() {
47809
+ function Ne() {
47802
47810
  try {
47803
47811
  let e = JSON.parse(localStorage.getItem(PX)) || {};
47804
47812
  return {
47805
47813
  reading: Object.hasOwn(y, e.reading) ? e.reading : "default",
47806
47814
  effects: e.effects === "reduced" ? "reduced" : "full",
47807
47815
  rail: Number.isFinite(e.rail) ? Math.min(IX, Math.max(FX, e.rail)) : LX,
47808
- nav: Number.isFinite(e.nav) ? Math.min(BX, Math.max(zX, e.nav)) : je(),
47816
+ nav: Number.isFinite(e.nav) ? Math.min(BX, Math.max(zX, e.nav)) : Pe(),
47809
47817
  collapsed: e.collapsed === !0,
47810
47818
  brief_collapsed: e.brief_collapsed === !0,
47811
47819
  rail_collapsed: e.rail_collapsed === !0
@@ -47815,17 +47823,17 @@ var YG = /*#__PURE__*/ nH({
47815
47823
  reading: "default",
47816
47824
  effects: "full",
47817
47825
  rail: LX,
47818
- nav: je(),
47826
+ nav: Pe(),
47819
47827
  collapsed: !1,
47820
47828
  brief_collapsed: !1,
47821
47829
  rail_collapsed: !1
47822
47830
  };
47823
47831
  }
47824
47832
  }
47825
- function je() {
47833
+ function Pe() {
47826
47834
  return typeof window > "u" ? VX : window.innerWidth >= 1900 ? 280 : window.innerWidth <= 980 ? 220 : VX;
47827
47835
  }
47828
- function Me() {
47836
+ function Fe() {
47829
47837
  try {
47830
47838
  localStorage.setItem(PX, JSON.stringify({
47831
47839
  reading: x.value,
@@ -47838,71 +47846,71 @@ var YG = /*#__PURE__*/ nH({
47838
47846
  }));
47839
47847
  } catch {}
47840
47848
  }
47841
- function Ne() {
47849
+ function Ie() {
47842
47850
  ee.value && t.value.tab === "discussion" ? O.value = !O.value : p.value = !0;
47843
47851
  }
47844
- function Pe() {
47852
+ function Le() {
47845
47853
  T.value = window.innerWidth;
47846
47854
  }
47847
- function Fe() {
47855
+ function Re() {
47848
47856
  D.value = !D.value;
47849
47857
  }
47850
- function Ie(e) {
47858
+ function ze(e) {
47851
47859
  !D.value && !e.target.closest?.(".channel-host-brief") && (D.value = !0);
47852
47860
  }
47853
- function Le(e) {
47854
- e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), ie.value = {
47861
+ function Be(e) {
47862
+ e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), A.value = {
47855
47863
  pointer: e.pointerId,
47856
47864
  x: e.clientX,
47857
47865
  width: C.value
47858
47866
  }, e.currentTarget.setPointerCapture(e.pointerId));
47859
47867
  }
47860
- function Re(e) {
47861
- ie.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(IX, Math.max(FX, ie.value.width + ie.value.x - e.clientX))));
47868
+ function Ve(e) {
47869
+ A.value?.pointer === e.pointerId && (C.value = Math.round(Math.min(IX, Math.max(FX, A.value.width + A.value.x - e.clientX))));
47862
47870
  }
47863
- function ze(e) {
47864
- ie.value?.pointer === e.pointerId && (ie.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Me());
47871
+ function He(e) {
47872
+ A.value?.pointer === e.pointerId && (A.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Fe());
47865
47873
  }
47866
- function Be(e) {
47874
+ function Ue(e) {
47867
47875
  let t = {
47868
47876
  ArrowLeft: C.value + RX,
47869
47877
  ArrowRight: C.value - RX,
47870
47878
  Home: FX,
47871
47879
  End: IX
47872
47880
  };
47873
- Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(IX, Math.max(FX, t[e.key])), Me());
47881
+ Object.hasOwn(t, e.key) && (e.preventDefault(), C.value = Math.min(IX, Math.max(FX, t[e.key])), Fe());
47874
47882
  }
47875
- function Ve(e) {
47876
- e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), ae.value = {
47883
+ function We(e) {
47884
+ e.button === 0 && (e.preventDefault(), e.currentTarget.focus(), oe.value = {
47877
47885
  pointer: e.pointerId,
47878
47886
  x: e.clientX,
47879
- width: A.value
47887
+ width: ce.value
47880
47888
  }, e.currentTarget.setPointerCapture(e.pointerId));
47881
47889
  }
47882
- function He(e) {
47883
- ae.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(k.value, Math.max(zX, ae.value.width + e.clientX - ae.value.x))));
47890
+ function Ge(e) {
47891
+ oe.value?.pointer === e.pointerId && (w.value = Math.round(Math.min(se.value, Math.max(zX, oe.value.width + e.clientX - oe.value.x))));
47884
47892
  }
47885
- function Ue(e) {
47886
- ae.value?.pointer === e.pointerId && (ae.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Me());
47893
+ function Ke(e) {
47894
+ oe.value?.pointer === e.pointerId && (oe.value = null, e.currentTarget.hasPointerCapture(e.pointerId) && e.currentTarget.releasePointerCapture(e.pointerId), Fe());
47887
47895
  }
47888
- function We(e) {
47896
+ function qe(e) {
47889
47897
  let t = {
47890
- ArrowLeft: A.value - HX,
47891
- ArrowRight: A.value + HX,
47898
+ ArrowLeft: ce.value - HX,
47899
+ ArrowRight: ce.value + HX,
47892
47900
  Home: zX,
47893
- End: k.value
47901
+ End: se.value
47894
47902
  };
47895
- Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(k.value, Math.max(zX, t[e.key])), Me());
47903
+ Object.hasOwn(t, e.key) && (e.preventDefault(), w.value = Math.min(se.value, Math.max(zX, t[e.key])), Fe());
47896
47904
  }
47897
47905
  return (e, r) => {
47898
- let y = zk, b = GV, w = Gk, T = uA, O = VV, le = LV, ge = xV, Ae = zV, je = FV, Me = MV, Pe = EV, Ie = pV, Ge = dV, Ke = cV;
47906
+ let y = zk, b = GV, w = Gk, T = uA, O = VV, ae = LV, k = xV, fe = zV, ve = FV, Ne = MV, Pe = EV, Fe = pV, Le = dV, ze = cV;
47899
47907
  return U(), W("div", {
47900
47908
  class: M(["channel-shell", {
47901
- "channel-resizing": ie.value || ae.value,
47909
+ "channel-resizing": A.value || oe.value,
47902
47910
  "channel-nav-collapsed": E.value,
47903
47911
  "channel-has-rail": te.value
47904
47912
  }]),
47905
- style: j(oe.value)
47913
+ style: j(le.value)
47906
47914
  }, [
47907
47915
  K("aside", EY, [
47908
47916
  K("header", DY, [
@@ -47912,13 +47920,13 @@ var YG = /*#__PURE__*/ nH({
47912
47920
  ]),
47913
47921
  K("div", kY, [
47914
47922
  q(MJ, {
47915
- onSelect: we,
47916
- onManage: Se,
47917
- onCreate: Ee,
47918
- onCreateFolder: De,
47919
- onManageFolder: Oe,
47920
- onDeleteFolder: ke,
47921
- onArchives: Ce
47923
+ onSelect: De,
47924
+ onManage: Te,
47925
+ onCreate: ke,
47926
+ onCreateFolder: Ae,
47927
+ onManageFolder: je,
47928
+ onDeleteFolder: Me,
47929
+ onArchives: Ee
47922
47930
  }),
47923
47931
  K("div", AY, [K("button", {
47924
47932
  type: "button",
@@ -47928,7 +47936,7 @@ var YG = /*#__PURE__*/ nH({
47928
47936
  }, [q(y, { name: f.value ? "i-lucide-chevron-down" : "i-lucide-chevron-right" }, null, 8, ["name"]), r[29] ||= J("频道工具", -1)], 8, jY)]),
47929
47937
  f.value ? (U(), G(b, {
47930
47938
  key: 0,
47931
- items: be.value,
47939
+ items: Ce.value,
47932
47940
  orientation: "vertical",
47933
47941
  color: "neutral",
47934
47942
  variant: "pill",
@@ -47978,18 +47986,22 @@ var YG = /*#__PURE__*/ nH({
47978
47986
  "aria-orientation": "vertical",
47979
47987
  "aria-controls": "channel-sidebar",
47980
47988
  "aria-valuemin": zX,
47981
- "aria-valuemax": k.value,
47982
- "aria-valuenow": A.value,
47983
- "aria-valuetext": `${A.value} 像素`,
47989
+ "aria-valuemax": se.value,
47990
+ "aria-valuenow": ce.value,
47991
+ "aria-valuetext": `${ce.value} 像素`,
47984
47992
  title: "拖动调整频道栏宽度,也可使用方向键",
47985
- onPointerdown: Ve,
47986
- onPointermove: He,
47987
- onPointerup: Ue,
47988
- onPointercancel: Ue,
47989
- onLostpointercapture: Ue,
47990
- onKeydown: We
47993
+ onPointerdown: We,
47994
+ onPointermove: Ge,
47995
+ onPointerup: Ke,
47996
+ onPointercancel: Ke,
47997
+ onLostpointercapture: Ke,
47998
+ onKeydown: qe
47991
47999
  }, null, 40, FY)),
47992
- K("main", IY, [
48000
+ K("main", IY, [K("div", {
48001
+ ref_key: "topbar",
48002
+ ref: ie,
48003
+ class: M(["channel-topbar", { "is-overlay": o.value && I(t).tab === "discussion" }])
48004
+ }, [
47993
48005
  K("header", LY, [
47994
48006
  q(O, { text: E.value ? "展开频道栏" : "收起频道栏" }, {
47995
48007
  default: L(() => [q(T, {
@@ -48016,12 +48028,12 @@ var YG = /*#__PURE__*/ nH({
48016
48028
  onClick: r[3] ||= (e) => d.value = !0
48017
48029
  }, null, 8, ["aria-expanded"]),
48018
48030
  K("span", RY, [q(y, { name: "i-lucide-hash" })]),
48019
- K("div", zY, [K("div", BY, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, VY), o.value?.floor && !ue.value ? (U(), W("div", {
48031
+ K("div", zY, [K("div", BY, [K("h1", { title: o.value?.title }, P(o.value?.title || "共议"), 9, VY), o.value?.floor && !pe.value ? (U(), W("div", {
48020
48032
  key: 0,
48021
48033
  class: M(["channel-floor-status", { "is-held": o.value.floor.holder }]),
48022
48034
  role: "status",
48023
48035
  title: `发言权:${I(n).floor_status(o.value)}`
48024
- }, [q(y, { name: "i-lucide-mic" }), K("span", null, "发言权:" + P(I(n).floor_status(o.value)), 1)], 10, HY)) : Y("", !0)]), o.value?.archived ? (U(), G(le, {
48036
+ }, [q(y, { name: "i-lucide-mic" }), K("span", null, "发言权:" + P(I(n).floor_status(o.value)), 1)], 10, HY)) : Y("", !0)]), o.value?.archived ? (U(), G(ae, {
48025
48037
  key: 0,
48026
48038
  color: "neutral",
48027
48039
  variant: "subtle",
@@ -48031,7 +48043,7 @@ var YG = /*#__PURE__*/ nH({
48031
48043
  _: 1
48032
48044
  })) : Y("", !0)]),
48033
48045
  o.value ? (U(), W("span", UY, [
48034
- J(P(de.value.find((e) => e.value === I(t).tab)?.label), 1),
48046
+ J(P(me.value.find((e) => e.value === I(t).tab)?.label), 1),
48035
48047
  r[31] ||= K("span", null, "·", -1),
48036
48048
  J(P(o.value.message_count) + " 条记录", 1)
48037
48049
  ])) : Y("", !0),
@@ -48040,7 +48052,7 @@ var YG = /*#__PURE__*/ nH({
48040
48052
  key: 0,
48041
48053
  class: "channel-search",
48042
48054
  onSubmit: r[6] ||= uu((e) => I(i)("filter", { query: I(g) }), ["prevent"])
48043
- }, [q(ge, {
48055
+ }, [q(k, {
48044
48056
  modelValue: I(g),
48045
48057
  "onUpdate:modelValue": r[5] ||= (e) => /* @__PURE__ */ ln(g) ? g.value = e : null,
48046
48058
  icon: "i-lucide-search",
@@ -48105,7 +48117,7 @@ var YG = /*#__PURE__*/ nH({
48105
48117
  "aria-label": ne.value,
48106
48118
  disabled: !o.value && !(ee.value && I(t).tab === "discussion"),
48107
48119
  "aria-expanded": ee.value && I(t).tab === "discussion" ? te.value : p.value,
48108
- onClick: Ne
48120
+ onClick: Ie
48109
48121
  }, null, 8, [
48110
48122
  "aria-label",
48111
48123
  "disabled",
@@ -48152,10 +48164,10 @@ var YG = /*#__PURE__*/ nH({
48152
48164
  ]))), 128)),
48153
48165
  r[33] ||= K("small", null, "移除待办不会删除房间或停止讨论。", -1)
48154
48166
  ])) : Y("", !0),
48155
- o.value ? (U(), W("div", JY, [q(Ae, {
48156
- modelValue: ce.value,
48157
- "onUpdate:modelValue": r[8] ||= (e) => ce.value = e,
48158
- items: de.value,
48167
+ o.value ? (U(), W("div", JY, [q(fe, {
48168
+ modelValue: de.value,
48169
+ "onUpdate:modelValue": r[8] ||= (e) => de.value = e,
48170
+ items: me.value,
48159
48171
  content: !1,
48160
48172
  variant: "pill",
48161
48173
  color: "neutral",
@@ -48163,7 +48175,7 @@ var YG = /*#__PURE__*/ nH({
48163
48175
  class: "channel-tabs",
48164
48176
  "aria-label": "频道视图"
48165
48177
  }, null, 8, ["modelValue", "items"])])) : Y("", !0),
48166
- o.value && !ue.value ? (U(), W("section", {
48178
+ o.value && !pe.value ? (U(), W("section", {
48167
48179
  key: 2,
48168
48180
  class: M(["channel-host-brief", { "is-collapsed": D.value }]),
48169
48181
  "aria-label": "主持简报"
@@ -48173,7 +48185,7 @@ var YG = /*#__PURE__*/ nH({
48173
48185
  "aria-label": D.value ? "展开主持简报" : "收起主持简报",
48174
48186
  "aria-expanded": !D.value,
48175
48187
  "aria-controls": "channel-brief-content",
48176
- onClick: Fe
48188
+ onClick: Re
48177
48189
  }, [
48178
48190
  q(y, { name: D.value ? "i-lucide-chevron-right" : "i-lucide-chevron-down" }, null, 8, ["name"]),
48179
48191
  K("strong", null, "主持简报" + P(D.value ? ":" : ""), 1),
@@ -48189,96 +48201,95 @@ var YG = /*#__PURE__*/ nH({
48189
48201
  }))]), vr(K("div", $Y, [K("div", {
48190
48202
  class: "channel-brief-text markdown-body",
48191
48203
  innerHTML: o.value.rendered_brief
48192
- }, null, 8, eX), K("div", tX, [K("span", nX, P(I(n).progress_speaker(o.value)), 1), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !D.value]])])], 2)) : Y("", !0),
48193
- o.value ? (U(), W("div", {
48194
- key: 3,
48195
- class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
48196
- }, [K("div", rX, [
48197
- vr(q(aW, {
48198
- onDetail: Te,
48199
- onEdit: r[10] ||= (e) => s.value = "edit"
48200
- }, null, 512), [[Vc, I(t).tab === "discussion"]]),
48201
- I(t).tab === "context" ? (U(), W("section", iX, [
48202
- K("div", aX, [r[34] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(le, {
48204
+ }, null, 8, eX), K("div", tX, [K("span", nX, P(I(n).progress_speaker(o.value)), 1), K("small", null, P(I(n).brief_meta(o.value)), 1)])], 512), [[Vc, !D.value]])])], 2)) : Y("", !0)
48205
+ ], 2), o.value ? (U(), W("div", {
48206
+ key: 0,
48207
+ class: M(["channel-body", { "channel-body-discussion": I(t).tab === "discussion" }])
48208
+ }, [K("div", rX, [
48209
+ vr(q(aW, {
48210
+ onDetail: Oe,
48211
+ onEdit: r[10] ||= (e) => s.value = "edit"
48212
+ }, null, 512), [[Vc, I(t).tab === "discussion"]]),
48213
+ I(t).tab === "context" ? (U(), W("section", iX, [
48214
+ K("div", aX, [r[34] ||= K("div", null, [K("h2", null, "共识与分歧"), K("p", null, "整理讨论进展,用 #消息编号 保留依据。")], -1), q(ae, {
48215
+ color: "neutral",
48216
+ variant: "outline"
48217
+ }, {
48218
+ default: L(() => [J("截止 #" + P(o.value.state_until), 1)]),
48219
+ _: 1
48220
+ })]),
48221
+ Array.isArray(o.value.latest_receipts) && o.value.latest_receipts.length ? (U(), W("section", oX, [
48222
+ r[35] ||= K("h3", null, "最新运行回执", -1),
48223
+ r[36] ||= K("p", { class: "fine-print" }, "以下回执独立于摘要更新;晚于摘要的回执可能尚未整理,实际运行结果请查看原文。", -1),
48224
+ K("div", sX, [(U(!0), W(H, null, B(o.value.latest_receipts, (e) => (U(), G(T, {
48225
+ key: e.id,
48226
+ label: `${I(n).display_name(e.author)} #${e.id} · ${new Date(e.created_at).toLocaleString("zh-CN")}${e.id > o.value.state_until ? " · 晚于摘要" : ""}`,
48227
+ variant: "link",
48203
48228
  color: "neutral",
48204
- variant: "outline"
48229
+ onClick: (t) => Oe(e.id)
48230
+ }, null, 8, ["label", "onClick"]))), 128))])
48231
+ ])) : Y("", !0),
48232
+ K("form", {
48233
+ class: "summary-form",
48234
+ onSubmit: r[13] ||= uu((e) => I(i)("save_context"), ["prevent"])
48235
+ }, [
48236
+ q(Ne, {
48237
+ label: "主持简报",
48238
+ description: "简述结论、共识、歧义,以及接下来要追问或调整什么、为什么。",
48239
+ class: "channel-brief-editor"
48205
48240
  }, {
48206
- default: L(() => [J("截止 #" + P(o.value.state_until), 1)]),
48241
+ default: L(() => [q(ve, {
48242
+ modelValue: I(h),
48243
+ "onUpdate:modelValue": r[11] ||= (e) => /* @__PURE__ */ ln(h) ? h.value = e : null,
48244
+ "aria-label": "主持简报正文",
48245
+ rows: 4,
48246
+ class: "w-full summary-brief-editor",
48247
+ placeholder: "让返回房间的人快速理解讨论进展和主持意图。"
48248
+ }, null, 8, ["modelValue"])]),
48207
48249
  _: 1
48208
- })]),
48209
- Array.isArray(o.value.latest_receipts) && o.value.latest_receipts.length ? (U(), W("section", oX, [
48210
- r[35] ||= K("h3", null, "最新运行回执", -1),
48211
- r[36] ||= K("p", { class: "fine-print" }, "以下回执独立于摘要更新;晚于摘要的回执可能尚未整理,实际运行结果请查看原文。", -1),
48212
- K("div", sX, [(U(!0), W(H, null, B(o.value.latest_receipts, (e) => (U(), G(T, {
48213
- key: e.id,
48214
- label: `${I(n).display_name(e.author)} #${e.id} · ${new Date(e.created_at).toLocaleString("zh-CN")}${e.id > o.value.state_until ? " · 晚于摘要" : ""}`,
48215
- variant: "link",
48216
- color: "neutral",
48217
- onClick: (t) => Te(e.id)
48218
- }, null, 8, ["label", "onClick"]))), 128))])
48219
- ])) : Y("", !0),
48220
- K("form", {
48221
- class: "summary-form",
48222
- onSubmit: r[13] ||= uu((e) => I(i)("save_context"), ["prevent"])
48223
- }, [
48224
- q(Me, {
48225
- label: "主持简报",
48226
- description: "简述结论、共识、歧义,以及接下来要追问或调整什么、为什么。",
48227
- class: "channel-brief-editor"
48228
- }, {
48229
- default: L(() => [q(je, {
48230
- modelValue: I(h),
48231
- "onUpdate:modelValue": r[11] ||= (e) => /* @__PURE__ */ ln(h) ? h.value = e : null,
48232
- "aria-label": "主持简报正文",
48233
- rows: 4,
48234
- class: "w-full summary-brief-editor",
48235
- placeholder: "让返回房间的人快速理解讨论进展和主持意图。"
48236
- }, null, 8, ["modelValue"])]),
48237
- _: 1
48238
- }),
48239
- q(Me, {
48240
- label: "详细共识与进度",
48241
- description: "已达成的共识、尚未解决的问题与下一步,用 #消息编号 标注依据。",
48242
- class: "channel-state-field"
48243
- }, {
48244
- default: L(() => [q(je, {
48245
- modelValue: I(m),
48246
- "onUpdate:modelValue": r[12] ||= (e) => /* @__PURE__ */ ln(m) ? m.value = e : null,
48247
- "aria-label": "共识与分歧正文",
48248
- rows: 12,
48249
- maxlength: 4e3,
48250
- class: "summary-editor",
48251
- placeholder: "已达成的共识、尚未解决的问题与下一步…"
48252
- }, null, 8, ["modelValue"])]),
48253
- _: 1
48254
- }),
48255
- K("div", cX, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
48256
- type: "submit",
48257
- color: "neutral",
48258
- icon: "i-lucide-check",
48259
- label: "保存共识",
48260
- class: "channel-primary-button",
48261
- loading: I(a) === "save_context"
48262
- }, null, 8, ["loading"])])
48263
- ], 32)
48264
- ])) : Y("", !0),
48265
- I(t).tab === "topic" || I(t).tab === "access" ? (U(), G(wG, {
48266
- key: I(t).tab,
48267
- onOpen: r[14] ||= (e) => s.value = e,
48268
- onDetail: Te
48269
- })) : Y("", !0)
48270
- ])], 2)) : (U(), W("div", lX, [
48271
- q(y, { name: "i-lucide-hash" }),
48272
- r[37] ||= K("h2", null, "新建一个讨论频道", -1),
48273
- r[38] ||= K("p", null, "每个频道围绕一个议题,保留所有人的观点。", -1),
48274
- q(T, {
48275
- icon: "i-lucide-plus",
48276
- label: "新建讨论",
48277
- color: "neutral",
48278
- onClick: r[15] ||= (e) => Ee()
48279
- })
48280
- ]))
48281
- ]),
48250
+ }),
48251
+ q(Ne, {
48252
+ label: "详细共识与进度",
48253
+ description: "已达成的共识、尚未解决的问题与下一步,用 #消息编号 标注依据。",
48254
+ class: "channel-state-field"
48255
+ }, {
48256
+ default: L(() => [q(ve, {
48257
+ modelValue: I(m),
48258
+ "onUpdate:modelValue": r[12] ||= (e) => /* @__PURE__ */ ln(m) ? m.value = e : null,
48259
+ "aria-label": "共识与分歧正文",
48260
+ rows: 12,
48261
+ maxlength: 4e3,
48262
+ class: "summary-editor",
48263
+ placeholder: "已达成的共识、尚未解决的问题与下一步…"
48264
+ }, null, 8, ["modelValue"])]),
48265
+ _: 1
48266
+ }),
48267
+ K("div", cX, [K("span", null, "依据消息截止 #" + P(I(t).snapshot_id), 1), q(T, {
48268
+ type: "submit",
48269
+ color: "neutral",
48270
+ icon: "i-lucide-check",
48271
+ label: "保存共识",
48272
+ class: "channel-primary-button",
48273
+ loading: I(a) === "save_context"
48274
+ }, null, 8, ["loading"])])
48275
+ ], 32)
48276
+ ])) : Y("", !0),
48277
+ I(t).tab === "topic" || I(t).tab === "access" ? (U(), G(wG, {
48278
+ key: I(t).tab,
48279
+ onOpen: r[14] ||= (e) => s.value = e,
48280
+ onDetail: Oe
48281
+ })) : Y("", !0)
48282
+ ])], 2)) : (U(), W("div", lX, [
48283
+ q(y, { name: "i-lucide-hash" }),
48284
+ r[37] ||= K("h2", null, "新建一个讨论频道", -1),
48285
+ r[38] ||= K("p", null, "每个频道围绕一个议题,保留所有人的观点。", -1),
48286
+ q(T, {
48287
+ icon: "i-lucide-plus",
48288
+ label: "新建讨论",
48289
+ color: "neutral",
48290
+ onClick: r[15] ||= (e) => ke()
48291
+ })
48292
+ ]))]),
48282
48293
  te.value ? (U(), W("div", {
48283
48294
  key: 1,
48284
48295
  class: "channel-rail-resizer",
@@ -48292,15 +48303,15 @@ var YG = /*#__PURE__*/ nH({
48292
48303
  "aria-valuenow": C.value,
48293
48304
  "aria-valuetext": `${C.value} 像素`,
48294
48305
  title: "拖动调整右侧栏宽度,也可使用左右方向键",
48295
- onPointerdown: Le,
48296
- onPointermove: Re,
48297
- onPointerup: ze,
48298
- onPointercancel: ze,
48299
- onLostpointercapture: ze,
48300
- onKeydown: Be
48306
+ onPointerdown: Be,
48307
+ onPointermove: Ve,
48308
+ onPointerup: He,
48309
+ onPointercancel: He,
48310
+ onLostpointercapture: He,
48311
+ onKeydown: Ue
48301
48312
  }, null, 40, uX)) : Y("", !0),
48302
- te.value ? (U(), W("aside", dX, [K("section", fX, [o.value && ue.value ? (U(), W("div", pX, [
48303
- K("header", mX, [r[39] ||= K("strong", null, "自由协作", -1), K("span", hX, P(N.value ? `${I(n).display_name(N.value.name)} 协助主持` : "你来主持"), 1)]),
48313
+ te.value ? (U(), W("aside", dX, [K("section", fX, [o.value && pe.value ? (U(), W("div", pX, [
48314
+ K("header", mX, [r[39] ||= K("strong", null, "自由协作", -1), K("span", hX, P(ye.value ? `${I(n).display_name(ye.value.name)} 协助主持` : "你来主持"), 1)]),
48304
48315
  K("section", gX, [r[41] ||= K("h4", null, "成员", -1), K("ul", _X, [(U(!0), W(H, null, B(o.value.free?.members || [], (e) => (U(), W("li", {
48305
48316
  key: e.id,
48306
48317
  class: "pb-member"
@@ -48330,11 +48341,11 @@ var YG = /*#__PURE__*/ nH({
48330
48341
  online: "在线只读"
48331
48342
  }[e.access] || "本机自动"), 1)
48332
48343
  ]),
48333
- K("div", { class: M(["pb-member-status", `is-${_e(e)}`]) }, [r[40] ||= K("span", { class: "pb-dot" }, null, -1), J(P(ye(e)), 1)], 2),
48344
+ K("div", { class: M(["pb-member-status", `is-${be(e)}`]) }, [r[40] ||= K("span", { class: "pb-dot" }, null, -1), J(P(Se(e)), 1)], 2),
48334
48345
  e.session_mode === "borrowed" ? (U(), W("p", bX, "借用你正在使用的会话")) : Y("", !0)
48335
48346
  ]),
48336
48347
  q(Pe, {
48337
- items: ve(e),
48348
+ items: xe(e),
48338
48349
  content: { align: "end" },
48339
48350
  ui: { content: "channel-menu" }
48340
48351
  }, {
@@ -48367,19 +48378,19 @@ var YG = /*#__PURE__*/ nH({
48367
48378
  K("form", {
48368
48379
  class: "pb-free-invite",
48369
48380
  onSubmit: r[18] ||= uu((e) => I(i)("invite_member", {
48370
- name: fe.value,
48371
- access: pe.value
48381
+ name: he.value,
48382
+ access: ge.value
48372
48383
  }), ["prevent"])
48373
- }, [q(Ie, {
48374
- modelValue: fe.value,
48375
- "onUpdate:modelValue": r[16] ||= (e) => fe.value = e,
48376
- items: he.value,
48384
+ }, [q(Fe, {
48385
+ modelValue: he.value,
48386
+ "onUpdate:modelValue": r[16] ||= (e) => he.value = e,
48387
+ items: _e.value,
48377
48388
  placeholder: "选择 AI",
48378
48389
  size: "sm",
48379
48390
  class: "min-w-0 flex-1"
48380
- }, null, 8, ["modelValue", "items"]), q(Ie, {
48381
- modelValue: pe.value,
48382
- "onUpdate:modelValue": r[17] ||= (e) => pe.value = e,
48391
+ }, null, 8, ["modelValue", "items"]), q(Fe, {
48392
+ modelValue: ge.value,
48393
+ "onUpdate:modelValue": r[17] ||= (e) => ge.value = e,
48383
48394
  items: [
48384
48395
  {
48385
48396
  label: "本机自动",
@@ -48397,7 +48408,7 @@ var YG = /*#__PURE__*/ nH({
48397
48408
  size: "sm",
48398
48409
  class: "w-26"
48399
48410
  }, null, 8, ["modelValue"])], 32),
48400
- pe.value === "runner" && !I(t).launch.available ? (U(), W("p", DX, "程序唤醒需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0)
48411
+ ge.value === "runner" && !I(t).launch.available ? (U(), W("p", DX, "程序唤醒需要本机服务,请在运行 AI 的电脑打开本机网站。")) : Y("", !0)
48401
48412
  ]),
48402
48413
  o.value.linked_rooms?.length ? (U(), W("section", OX, [r[44] ||= K("h4", null, "头脑风暴", -1), (U(!0), W(H, null, B(o.value.linked_rooms, (e) => (U(), W("button", {
48403
48414
  key: e.id,
@@ -48412,10 +48423,10 @@ var YG = /*#__PURE__*/ nH({
48412
48423
  color: "neutral",
48413
48424
  variant: "outline",
48414
48425
  class: "pb-action",
48415
- disabled: !fe.value || pe.value === "runner" && !I(t).launch.available,
48426
+ disabled: !he.value || ge.value === "runner" && !I(t).launch.available,
48416
48427
  onClick: r[19] ||= (e) => I(i)("invite_member", {
48417
- name: fe.value,
48418
- access: pe.value
48428
+ name: he.value,
48429
+ access: ge.value
48419
48430
  })
48420
48431
  }, null, 8, ["disabled"]), q(T, {
48421
48432
  icon: "i-lucide-messages-square",
@@ -48425,13 +48436,13 @@ var YG = /*#__PURE__*/ nH({
48425
48436
  variant: "outline",
48426
48437
  class: "pb-action",
48427
48438
  title: "用当前成员新建一场讨论房间,收束后可把结论发回这里",
48428
- onClick: me
48439
+ onClick: N
48429
48440
  })])
48430
48441
  ])) : o.value ? (U(), G(bY, {
48431
48442
  key: 1,
48432
48443
  docked: ""
48433
48444
  })) : (U(), W("div", jX, [...r[45] ||= [K("header", { class: "pb-header" }, [K("strong", null, "讨论进度")], -1), K("p", { class: "channel-rail-empty" }, "暂无频道,新建讨论后在这里查看进度与参与者。", -1)]]))])])) : Y("", !0),
48434
- q(Ge, {
48445
+ q(Le, {
48435
48446
  open: d.value,
48436
48447
  "onUpdate:open": r[21] ||= (e) => d.value = e,
48437
48448
  side: "left",
@@ -48443,13 +48454,13 @@ var YG = /*#__PURE__*/ nH({
48443
48454
  }
48444
48455
  }, {
48445
48456
  body: L(() => [q(MJ, {
48446
- onSelect: we,
48447
- onManage: Se,
48448
- onCreate: Ee,
48449
- onCreateFolder: De,
48450
- onManageFolder: Oe,
48451
- onDeleteFolder: ke,
48452
- onArchives: Ce
48457
+ onSelect: De,
48458
+ onManage: Te,
48459
+ onCreate: ke,
48460
+ onCreateFolder: Ae,
48461
+ onManageFolder: je,
48462
+ onDeleteFolder: Me,
48463
+ onArchives: Ee
48453
48464
  }), q(T, {
48454
48465
  block: "",
48455
48466
  icon: "i-lucide-settings-2",
@@ -48462,7 +48473,7 @@ var YG = /*#__PURE__*/ nH({
48462
48473
  })]),
48463
48474
  _: 1
48464
48475
  }, 8, ["open"]),
48465
- q(Ge, {
48476
+ q(Le, {
48466
48477
  open: p.value,
48467
48478
  "onUpdate:open": r[23] ||= (e) => p.value = e,
48468
48479
  title: "频道资料",
@@ -48499,8 +48510,8 @@ var YG = /*#__PURE__*/ nH({
48499
48510
  key: e.key,
48500
48511
  class: "info-section"
48501
48512
  }, [K("h3", null, P(e.label), 1), K("p", null, P(o.value[e.key] || "尚未填写"), 1)])), 64)),
48502
- q(Ke),
48503
- K("section", NX, [r[46] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(xe.value, (e) => (U(), W("div", {
48513
+ q(ze),
48514
+ K("section", NX, [r[46] ||= K("h3", null, "参与身份", -1), (U(!0), W(H, null, B(we.value, (e) => (U(), W("div", {
48504
48515
  key: e.name,
48505
48516
  class: "expert-row"
48506
48517
  }, [
@@ -48540,7 +48551,7 @@ var YG = /*#__PURE__*/ nH({
48540
48551
  "onUpdate:readingWidth": r[25] ||= (e) => x.value = e,
48541
48552
  effects: S.value,
48542
48553
  "onUpdate:effects": r[26] ||= (e) => S.value = e,
48543
- "reading-options": I(se),
48554
+ "reading-options": I(ue),
48544
48555
  "effect-options": v,
48545
48556
  "detail-id": u.value,
48546
48557
  "target-room": c.value,