@qfei-design/make-ai-assistant 0.2.14 → 0.2.15
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/react/icons.d.ts +19 -0
- package/dist/react.cjs +4 -62
- package/dist/react.mjs +1787 -2747
- package/package.ai.json +1 -1
- package/package.json +2 -4
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SVGProps } from "react";
|
|
2
|
+
type IconProps = Omit<SVGProps<SVGSVGElement>, "children">;
|
|
3
|
+
export declare const AddIcon: (props: IconProps) => import("react").JSX.Element;
|
|
4
|
+
export declare const CheckIcon: (props: IconProps) => import("react").JSX.Element;
|
|
5
|
+
export declare const CloseIcon: (props: IconProps) => import("react").JSX.Element;
|
|
6
|
+
export declare const DeleteIcon: (props: IconProps) => import("react").JSX.Element;
|
|
7
|
+
export declare const EditIcon: (props: IconProps) => import("react").JSX.Element;
|
|
8
|
+
export declare const LikeIcon: (props: IconProps) => import("react").JSX.Element;
|
|
9
|
+
export declare const UnlikeIcon: (props: IconProps) => import("react").JSX.Element;
|
|
10
|
+
export declare const PinIcon: (props: IconProps) => import("react").JSX.Element;
|
|
11
|
+
export declare const RefreshIcon: (props: IconProps) => import("react").JSX.Element;
|
|
12
|
+
export declare const WarningIcon: (props: IconProps) => import("react").JSX.Element;
|
|
13
|
+
export declare const ContractIcon: (props: IconProps) => import("react").JSX.Element;
|
|
14
|
+
export declare const CopyIcon: (props: IconProps) => import("react").JSX.Element;
|
|
15
|
+
export declare const DownIcon: (props: IconProps) => import("react").JSX.Element;
|
|
16
|
+
export declare const FullScreenIcon: (props: IconProps) => import("react").JSX.Element;
|
|
17
|
+
export declare const ListIcon: (props: IconProps) => import("react").JSX.Element;
|
|
18
|
+
export declare const UpIcon: (props: IconProps) => import("react").JSX.Element;
|
|
19
|
+
export {};
|
package/dist/react.cjs
CHANGED
|
@@ -1,63 +1,5 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),f=require("react"),Ce=require("./index.cjs"),I=require("./conversation-BpmWa2VL.cjs"),wt=require("./conversation-management-f1y0yRvt.cjs"),gs=require("react-dom");function ra(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const s in t)if(s!=="default"){const n=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,n.get?n:{enumerable:!0,get:()=>t[s]})}}return e.default=t,Object.freeze(e)}const S=ra(f),_s=t=>t?.trim()||void 0,_e=(t,e)=>_s(t)??e,$t=t=>{const e=_s(t?.primary);if(e)return{"--make-ai-theme-primary":e,"--make-ai-theme-primary-hover":_e(t?.primaryHover,"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"),"--make-ai-theme-on-primary":_e(t?.onPrimary,"#fcfcff"),"--make-ai-theme-bg":_e(t?.background,"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"),"--make-ai-theme-surface":_e(t?.surface,"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"),"--make-ai-theme-surface-strong":_e(t?.surfaceStrong,"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"),"--make-ai-theme-text":_e(t?.text,"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"),"--make-ai-theme-text-secondary":_e(t?.textSecondary,"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"),"--make-ai-theme-border":_e(t?.border,"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"),"--make-ai-theme-overlay":_e(t?.overlay,"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"),"--make-ai-theme-on-overlay":_e(t?.onOverlay,"#fcfcff")}},Xt=(t,e)=>!e||!f.isValidElement(t)||typeof t.type!="string"?t:f.cloneElement(t,{style:{...t.props.style,...e}});function bs({artifact:t,context:e,fallback:s,onAction:n,onActionError:r,registry:i,theme:o}){const u=$t(o),c=Ce.resolveArtifactTemplate(i,t,e);if(!c){const y=s?s(t):a.jsxs("section",{className:"make-ai-artifact make-ai-artifact--unsupported",role:"status",children:[a.jsx("strong",{children:"暂不支持展示此结果"}),a.jsxs("span",{children:["结果类型:",t.kind]})]});return Xt(y,u)}const m={context:e,onAction:n,onActionError:r,theme:o,themeStyle:u},_=c.template.render(t,e,m);return Xt(_,u)}const Ne=(t,e,s)=>{if(t==null||t==="")return"—";if(typeof t=="boolean")return t?"是":"否";if(typeof t!="number")return`${t}${e?.unit??""}`;const n=e?.precision,r={maximumFractionDigits:n??2,minimumFractionDigits:n};e?.style==="currency"&&e.currency?(r.style="currency",r.currency=e.currency):e?.style==="percent"&&(r.style="percent");try{const i=e?.style==="percent"?t/100:t;return`${new Intl.NumberFormat(s,r).format(i)}${e?.unit??""}`}catch{return`${t}${e?.unit??""}`}},ys=t=>{let e=Number.POSITIVE_INFINITY,s=Number.NEGATIVE_INFINITY;for(const n of t)e=Math.min(e,n),s=Math.max(s,n);return Number.isFinite(e)&&Number.isFinite(s)?{min:e,max:s}:{min:0,max:0}},xs=(t,e,s)=>{if(!s.onAction)return;const n=i=>{console.error("[make-ai-assistant] host action error handler failed",{actionId:t.id,artifactId:e.artifact.id,errorType:i instanceof Error?i.name:typeof i,intent:t.intent})},r=i=>{if(s.onActionError){try{Promise.resolve(s.onActionError(i,t,e)).catch(n)}catch(o){n(o)}return}console.error("[make-ai-assistant] host action failed",{actionId:t.id,artifactId:e.artifact.id,errorType:i instanceof Error?i.name:typeof i,intent:t.intent})};try{Promise.resolve(s.onAction(t,e)).catch(r)}catch(i){r(i)}},Ue=(t,e)=>t.actions?.length&&e.onAction?a.jsx("div",{className:"make-ai-artifact__actions",children:t.actions.map(s=>a.jsxs("button",{className:`make-ai-artifact__action make-ai-artifact__action--${s.appearance??"link"}`,type:"button",onClick:()=>xs(s,{artifact:t,context:e.context},e),children:[s.label,a.jsx("span",{"aria-hidden":"true",children:"→"})]},s.id))}):null,Be=(t,e,s="",n)=>a.jsxs("section",{"aria-label":t.title??`${t.kind} result`,className:`make-ai-artifact ${s}`.trim(),"data-artifact-density":t.presentation?.density,"data-artifact-kind":t.kind,style:n,children:[t.title?a.jsx("h4",{className:"make-ai-artifact__title",children:t.title}):null,t.summary?a.jsx("p",{className:"make-ai-artifact__summary",children:t.summary}):null,e]}),ia=({artifact:t,renderContext:e})=>{const s=t.data.delta,n=s?Ne(s.value,s.format==="percent"?{style:"percent"}:void 0,e.context.locale):void 0;return Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__metric-value",children:Ne(t.data.value,t.data.format,e.context.locale)}),s?a.jsxs("div",{className:`make-ai-artifact__delta make-ai-artifact__delta--${s.direction??"flat"}`,children:[a.jsx("span",{"aria-hidden":"true",children:s.direction==="up"?"↗":s.direction==="down"?"↘":"→"}),a.jsx("span",{children:n}),s.label?a.jsx("span",{children:s.label}):null]}):null,t.data.context?a.jsx("p",{className:"make-ai-artifact__context",children:t.data.context}):null,Ue(t,e)]}),"make-ai-artifact--metric",e.themeStyle)},oa=({artifact:t,renderContext:e})=>Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__comparison",children:t.data.items.map(s=>a.jsxs("div",{className:"make-ai-artifact__comparison-item",children:[a.jsx("span",{children:s.label}),a.jsx("strong",{children:Ne(s.value,s.format,e.context.locale)}),s.hint?a.jsx("small",{children:s.hint}):null]},s.id))}),Ue(t,e)]}),"make-ai-artifact--comparison",e.themeStyle),ca=({artifact:t,renderContext:e})=>{const s=t.data.series.flatMap(o=>o.points.map(u=>u.y)),{max:n,min:r}=ys(s),i=n-r||1;return Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__trend",children:t.data.series.map(o=>a.jsxs("div",{className:"make-ai-artifact__trend-series",children:[a.jsx("div",{className:"make-ai-artifact__trend-label",children:o.label}),a.jsx("div",{className:"make-ai-artifact__trend-bars",children:o.points.map((u,c)=>{const m=18+(u.y-r)/i*70;return a.jsxs("div",{className:"make-ai-artifact__trend-point",children:[a.jsx("span",{"aria-label":`${u.x}: ${Ne(u.y,o.format,e.context.locale)}`,className:"make-ai-artifact__trend-bar",role:"img",style:{height:`${m}%`},title:`${u.x}: ${Ne(u.y,o.format,e.context.locale)}`}),a.jsx("small",{children:u.x})]},`${u.x}-${c}`)})})]},o.id))}),Ue(t,e)]}),"make-ai-artifact--trend",e.themeStyle)},la=({artifact:t,renderContext:e})=>{const{max:s}=ys(t.data.items.map(r=>Math.abs(r.value))),n=Math.max(s,1);return Be(t,a.jsxs(a.Fragment,{children:[a.jsx("ol",{className:"make-ai-artifact__ranking",children:t.data.items.map((r,i)=>a.jsxs("li",{children:[a.jsx("span",{className:"make-ai-artifact__rank",children:i+1}),a.jsxs("span",{className:"make-ai-artifact__ranking-label",children:[a.jsx("span",{children:r.label}),r.description?a.jsx("small",{children:r.description}):null]}),a.jsx("span",{className:"make-ai-artifact__ranking-track","aria-hidden":"true",children:a.jsx("span",{style:{width:`${Math.abs(r.value)/n*100}%`}})}),a.jsx("strong",{children:Ne(r.value,r.format,e.context.locale)})]},r.id))}),Ue(t,e)]}),"make-ai-artifact--ranking",e.themeStyle)},da=(t,e)=>e.action??{id:`open-${e.id}`,label:e.title??e.id,intent:"open-record",target:{entityKey:t.data.entity.key,recordId:e.id}},ua=({artifact:t,renderContext:e})=>Be(t,a.jsxs(a.Fragment,{children:[a.jsx("div",{className:"make-ai-artifact__record-list",children:t.data.records.length===0?a.jsx("p",{className:"make-ai-artifact__empty",children:"没有符合条件的记录"}):t.data.records.map(s=>{const n=da(t,s),r=a.jsxs(a.Fragment,{children:[a.jsx("strong",{children:s.title??s.id}),a.jsx("span",{className:"make-ai-artifact__record-values",children:t.data.columns.map(i=>a.jsxs("span",{children:[a.jsx("small",{children:i.label}),Ne(s.values[i.key],i.format,e.context.locale)]},i.key))}),e.onAction?a.jsx("span",{"aria-hidden":"true",children:"›"}):null]});return e.onAction?a.jsx("button",{className:"make-ai-artifact__record",type:"button",onClick:()=>xs(n,{artifact:t,context:e.context},e),children:r},s.id):a.jsx("div",{className:"make-ai-artifact__record",children:r},s.id)})}),t.data.total!==void 0?a.jsxs("p",{className:"make-ai-artifact__record-total",children:["共 ",t.data.total," 条"]}):null,Ue(t,e)]}),"make-ai-artifact--record-list",e.themeStyle),fa=({artifact:t,renderContext:e})=>Be(t,a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:`make-ai-artifact__notice make-ai-artifact__notice--${t.data.tone}`,children:[a.jsx("span",{"aria-hidden":"true",children:t.data.tone==="success"?"✓":t.data.tone==="warning"?"!":t.data.tone==="danger"?"×":"i"}),a.jsx("p",{children:t.data.body})]}),Ue(t,e)]}),"make-ai-artifact--notice",e.themeStyle),De=(t,e,s)=>({id:t,kinds:[e],priority:0,render:s}),ma=[De("platform.metric.default","metric",(t,e,s)=>a.jsx(ia,{artifact:t,renderContext:s})),De("platform.comparison.default","comparison",(t,e,s)=>a.jsx(oa,{artifact:t,renderContext:s})),De("platform.trend.default","trend",(t,e,s)=>a.jsx(ca,{artifact:t,renderContext:s})),De("platform.ranking.default","ranking",(t,e,s)=>a.jsx(la,{artifact:t,renderContext:s})),De("platform.record-list.default","record-list",(t,e,s)=>a.jsx(ua,{artifact:t,renderContext:s})),De("platform.notice.default","notice",(t,e,s)=>a.jsx(fa,{artifact:t,renderContext:s}))],ks=Ce.createArtifactTemplateRegistry(ma).templates,ws=(t=ks)=>Ce.createArtifactTemplateRegistry(t);var js=f.createContext({});function X(){return X=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var s=arguments[e];for(var n in s)({}).hasOwnProperty.call(s,n)&&(t[n]=s[n])}return t},X.apply(null,arguments)}function ha(t){if(Array.isArray(t))return t}function pa(t,e){var s=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(s!=null){var n,r,i,o,u=[],c=!0,m=!1;try{if(i=(s=s.call(t)).next,e!==0)for(;!(c=(n=i.call(s)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(_){m=!0,r=_}finally{try{if(!c&&s.return!=null&&(o=s.return(),Object(o)!==o))return}finally{if(m)throw r}}return u}}function Yt(t,e){(e==null||e>t.length)&&(e=t.length);for(var s=0,n=Array(e);s<e;s++)n[s]=t[s];return n}function va(t,e){if(t){if(typeof t=="string")return Yt(t,e);var s={}.toString.call(t).slice(8,-1);return s==="Object"&&t.constructor&&(s=t.constructor.name),s==="Map"||s==="Set"?Array.from(t):s==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?Yt(t,e):void 0}}function ga(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Is(t,e){return ha(t)||pa(t,e)||va(t,e)||ga()}function Te(t){"@babel/helpers - typeof";return Te=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Te(t)}function _a(t,e){if(Te(t)!="object"||!t)return t;var s=t[Symbol.toPrimitive];if(s!==void 0){var n=s.call(t,e);if(Te(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function ba(t){var e=_a(t,"string");return Te(e)=="symbol"?e:e+""}function oe(t,e,s){return(e=ba(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}function ya(t,e){if(t==null)return{};var s={};for(var n in t)if({}.hasOwnProperty.call(t,n)){if(e.indexOf(n)!==-1)continue;s[n]=t[n]}return s}function Ns(t,e){if(t==null)return{};var s,n,r=ya(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)s=i[n],e.indexOf(s)===-1&&{}.propertyIsEnumerable.call(t,s)&&(r[s]=t[s])}return r}function xa(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var jt={exports:{}};var Zt;function ka(){return Zt||(Zt=1,(function(t){(function(){var e={}.hasOwnProperty;function s(){for(var i="",o=0;o<arguments.length;o++){var u=arguments[o];u&&(i=r(i,n(u)))}return i}function n(i){if(typeof i=="string"||typeof i=="number")return i;if(typeof i!="object")return"";if(Array.isArray(i))return s.apply(null,i);if(i.toString!==Object.prototype.toString&&!i.toString.toString().includes("[native code]"))return i.toString();var o="";for(var u in i)e.call(i,u)&&i[u]&&(o=r(o,u));return o}function r(i,o){return o?i?i+" "+o:i+o:i}t.exports?(s.default=s,t.exports=s):window.classNames=s})()})(jt)),jt.exports}var wa=ka();const ja=xa(wa),ee=Math.round;function It(t,e){const s=t.replace(/^[^(]*\((.*)/,"$1").replace(/\).*/,"").match(/\d*\.?\d+%?/g)||[],n=s.map(r=>parseFloat(r));for(let r=0;r<3;r+=1)n[r]=e(n[r]||0,s[r]||"",r);return s[3]?n[3]=s[3].includes("%")?n[3]/100:n[3]:n[3]=1,n}const Jt=(t,e,s)=>s===0?t:t/100;function st(t,e){const s=e||255;return t>s?s:t<0?0:t}class Ve{constructor(e){oe(this,"isValid",!0),oe(this,"r",0),oe(this,"g",0),oe(this,"b",0),oe(this,"a",1),oe(this,"_h",void 0),oe(this,"_s",void 0),oe(this,"_l",void 0),oe(this,"_v",void 0),oe(this,"_max",void 0),oe(this,"_min",void 0),oe(this,"_brightness",void 0);function s(n){return n[0]in e&&n[1]in e&&n[2]in e}if(e)if(typeof e=="string"){let r=function(i){return n.startsWith(i)};const n=e.trim();/^#?[A-F\d]{3,8}$/i.test(n)?this.fromHexString(n):r("rgb")?this.fromRgbString(n):r("hsl")?this.fromHslString(n):(r("hsv")||r("hsb"))&&this.fromHsvString(n)}else if(e instanceof Ve)this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this._h=e._h,this._s=e._s,this._l=e._l,this._v=e._v;else if(s("rgb"))this.r=st(e.r),this.g=st(e.g),this.b=st(e.b),this.a=typeof e.a=="number"?st(e.a,1):1;else if(s("hsl"))this.fromHsl(e);else if(s("hsv"))this.fromHsv(e);else throw new Error("@ant-design/fast-color: unsupported input "+JSON.stringify(e))}setR(e){return this._sc("r",e)}setG(e){return this._sc("g",e)}setB(e){return this._sc("b",e)}setA(e){return this._sc("a",e,1)}setHue(e){const s=this.toHsv();return s.h=e,this._c(s)}getLuminance(){function e(i){const o=i/255;return o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4)}const s=e(this.r),n=e(this.g),r=e(this.b);return .2126*s+.7152*n+.0722*r}getHue(){if(typeof this._h>"u"){const e=this.getMax()-this.getMin();e===0?this._h=0:this._h=ee(60*(this.r===this.getMax()?(this.g-this.b)/e+(this.g<this.b?6:0):this.g===this.getMax()?(this.b-this.r)/e+2:(this.r-this.g)/e+4))}return this._h}getSaturation(){if(typeof this._s>"u"){const e=this.getMax()-this.getMin();e===0?this._s=0:this._s=e/this.getMax()}return this._s}getLightness(){return typeof this._l>"u"&&(this._l=(this.getMax()+this.getMin())/510),this._l}getValue(){return typeof this._v>"u"&&(this._v=this.getMax()/255),this._v}getBrightness(){return typeof this._brightness>"u"&&(this._brightness=(this.r*299+this.g*587+this.b*114)/1e3),this._brightness}darken(e=10){const s=this.getHue(),n=this.getSaturation();let r=this.getLightness()-e/100;return r<0&&(r=0),this._c({h:s,s:n,l:r,a:this.a})}lighten(e=10){const s=this.getHue(),n=this.getSaturation();let r=this.getLightness()+e/100;return r>1&&(r=1),this._c({h:s,s:n,l:r,a:this.a})}mix(e,s=50){const n=this._c(e),r=s/100,i=u=>(n[u]-this[u])*r+this[u],o={r:ee(i("r")),g:ee(i("g")),b:ee(i("b")),a:ee(i("a")*100)/100};return this._c(o)}tint(e=10){return this.mix({r:255,g:255,b:255,a:1},e)}shade(e=10){return this.mix({r:0,g:0,b:0,a:1},e)}onBackground(e){const s=this._c(e),n=this.a+s.a*(1-this.a),r=i=>ee((this[i]*this.a+s[i]*s.a*(1-this.a))/n);return this._c({r:r("r"),g:r("g"),b:r("b"),a:n})}isDark(){return this.getBrightness()<128}isLight(){return this.getBrightness()>=128}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}clone(){return this._c(this)}toHexString(){let e="#";const s=(this.r||0).toString(16);e+=s.length===2?s:"0"+s;const n=(this.g||0).toString(16);e+=n.length===2?n:"0"+n;const r=(this.b||0).toString(16);if(e+=r.length===2?r:"0"+r,typeof this.a=="number"&&this.a>=0&&this.a<1){const i=ee(this.a*255).toString(16);e+=i.length===2?i:"0"+i}return e}toHsl(){return{h:this.getHue(),s:this.getSaturation(),l:this.getLightness(),a:this.a}}toHslString(){const e=this.getHue(),s=ee(this.getSaturation()*100),n=ee(this.getLightness()*100);return this.a!==1?`hsla(${e},${s}%,${n}%,${this.a})`:`hsl(${e},${s}%,${n}%)`}toHsv(){return{h:this.getHue(),s:this.getSaturation(),v:this.getValue(),a:this.a}}toRgb(){return{r:this.r,g:this.g,b:this.b,a:this.a}}toRgbString(){return this.a!==1?`rgba(${this.r},${this.g},${this.b},${this.a})`:`rgb(${this.r},${this.g},${this.b})`}toString(){return this.toRgbString()}_sc(e,s,n){const r=this.clone();return r[e]=st(s,n),r}_c(e){return new this.constructor(e)}getMax(){return typeof this._max>"u"&&(this._max=Math.max(this.r,this.g,this.b)),this._max}getMin(){return typeof this._min>"u"&&(this._min=Math.min(this.r,this.g,this.b)),this._min}fromHexString(e){const s=e.replace("#","");function n(r,i){return parseInt(s[r]+s[i||r],16)}s.length<6?(this.r=n(0),this.g=n(1),this.b=n(2),this.a=s[3]?n(3)/255:1):(this.r=n(0,1),this.g=n(2,3),this.b=n(4,5),this.a=s[6]?n(6,7)/255:1)}fromHsl({h:e,s,l:n,a:r}){if(this._h=e%360,this._s=s,this._l=n,this.a=typeof r=="number"?r:1,s<=0){const M=ee(n*255);this.r=M,this.g=M,this.b=M}let i=0,o=0,u=0;const c=e/60,m=(1-Math.abs(2*n-1))*s,_=m*(1-Math.abs(c%2-1));c>=0&&c<1?(i=m,o=_):c>=1&&c<2?(i=_,o=m):c>=2&&c<3?(o=m,u=_):c>=3&&c<4?(o=_,u=m):c>=4&&c<5?(i=_,u=m):c>=5&&c<6&&(i=m,u=_);const y=n-m/2;this.r=ee((i+y)*255),this.g=ee((o+y)*255),this.b=ee((u+y)*255)}fromHsv({h:e,s,v:n,a:r}){this._h=e%360,this._s=s,this._v=n,this.a=typeof r=="number"?r:1;const i=ee(n*255);if(this.r=i,this.g=i,this.b=i,s<=0)return;const o=e/60,u=Math.floor(o),c=o-u,m=ee(n*(1-s)*255),_=ee(n*(1-s*c)*255),y=ee(n*(1-s*(1-c))*255);switch(u){case 0:this.g=y,this.b=m;break;case 1:this.r=_,this.b=m;break;case 2:this.r=m,this.b=y;break;case 3:this.r=m,this.g=_;break;case 4:this.r=y,this.g=m;break;default:this.g=m,this.b=_;break}}fromHsvString(e){const s=It(e,Jt);this.fromHsv({h:s[0],s:s[1],v:s[2],a:s[3]})}fromHslString(e){const s=It(e,Jt);this.fromHsl({h:s[0],s:s[1],l:s[2],a:s[3]})}fromRgbString(e){const s=It(e,(n,r)=>r.includes("%")?ee(n/100*255):n);this.r=s[0],this.g=s[1],this.b=s[2],this.a=s[3]}}var vt=2,es=.16,Ia=.05,Na=.05,Ca=.15,Cs=5,As=4,Aa=[{index:7,amount:15},{index:6,amount:25},{index:5,amount:30},{index:5,amount:45},{index:5,amount:65},{index:5,amount:85},{index:4,amount:90},{index:3,amount:95},{index:2,amount:97},{index:1,amount:98}];function ts(t,e,s){var n;return Math.round(t.h)>=60&&Math.round(t.h)<=240?n=s?Math.round(t.h)-vt*e:Math.round(t.h)+vt*e:n=s?Math.round(t.h)+vt*e:Math.round(t.h)-vt*e,n<0?n+=360:n>=360&&(n-=360),n}function ss(t,e,s){if(t.h===0&&t.s===0)return t.s;var n;return s?n=t.s-es*e:e===As?n=t.s+es:n=t.s+Ia*e,n>1&&(n=1),s&&e===Cs&&n>.1&&(n=.1),n<.06&&(n=.06),Math.round(n*100)/100}function as(t,e,s){var n;return s?n=t.v+Na*e:n=t.v-Ca*e,n=Math.max(0,Math.min(1,n)),Math.round(n*100)/100}function Ea(t){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=[],n=new Ve(t),r=n.toHsv(),i=Cs;i>0;i-=1){var o=new Ve({h:ts(r,i,!0),s:ss(r,i,!0),v:as(r,i,!0)});s.push(o)}s.push(n);for(var u=1;u<=As;u+=1){var c=new Ve({h:ts(r,u),s:ss(r,u),v:as(r,u)});s.push(c)}return e.theme==="dark"?Aa.map(function(m){var _=m.index,y=m.amount;return new Ve(e.backgroundColor||"#141414").mix(s[_],y).toHexString()}):s.map(function(m){return m.toHexString()})}var Et=["#e6f4ff","#bae0ff","#91caff","#69b1ff","#4096ff","#1677ff","#0958d9","#003eb3","#002c8c","#001d66"];Et.primary=Et[5];function ns(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),s.push.apply(s,n)}return s}function be(t){for(var e=1;e<arguments.length;e++){var s=arguments[e]!=null?arguments[e]:{};e%2?ns(Object(s),!0).forEach(function(n){oe(t,n,s[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(s)):ns(Object(s)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(s,n))})}return t}function Sa(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Ra(t,e){if(!t)return!1;if(t.contains)return t.contains(e);for(var s=e;s;){if(s===t)return!0;s=s.parentNode}return!1}var rs="data-rc-order",is="data-rc-priority",Ma="rc-util-key",St=new Map;function Es(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.mark;return e?e.startsWith("data-")?e:"data-".concat(e):Ma}function Ht(t){if(t.attachTo)return t.attachTo;var e=document.querySelector("head");return e||document.body}function Ta(t){return t==="queue"?"prependQueue":t?"prepend":"append"}function Pt(t){return Array.from((St.get(t)||t).children).filter(function(e){return e.tagName==="STYLE"})}function Ss(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Sa())return null;var s=e.csp,n=e.prepend,r=e.priority,i=r===void 0?0:r,o=Ta(n),u=o==="prependQueue",c=document.createElement("style");c.setAttribute(rs,o),u&&i&&c.setAttribute(is,"".concat(i)),s!=null&&s.nonce&&(c.nonce=s?.nonce),c.innerHTML=t;var m=Ht(e),_=m.firstChild;if(n){if(u){var y=(e.styles||Pt(m)).filter(function(M){if(!["prepend","prependQueue"].includes(M.getAttribute(rs)))return!1;var H=Number(M.getAttribute(is)||0);return i>=H});if(y.length)return m.insertBefore(c,y[y.length-1].nextSibling),c}m.insertBefore(c,_)}else m.appendChild(c);return c}function Oa(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=Ht(e);return(e.styles||Pt(s)).find(function(n){return n.getAttribute(Es(e))===t})}function La(t,e){var s=St.get(t);if(!s||!Ra(document,s)){var n=Ss("",e),r=n.parentNode;St.set(t,r),t.removeChild(n)}}function $a(t,e){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=Ht(s),r=Pt(n),i=be(be({},s),{},{styles:r});La(n,i);var o=Oa(e,i);if(o){var u,c;if((u=i.csp)!==null&&u!==void 0&&u.nonce&&o.nonce!==((c=i.csp)===null||c===void 0?void 0:c.nonce)){var m;o.nonce=(m=i.csp)===null||m===void 0?void 0:m.nonce}return o.innerHTML!==t&&(o.innerHTML=t),o}var _=Ss(t,i);return _.setAttribute(Es(i),e),_}function Rs(t){var e;return t==null||(e=t.getRootNode)===null||e===void 0?void 0:e.call(t)}function Ha(t){return Rs(t)instanceof ShadowRoot}function Pa(t){return Ha(t)?Rs(t):null}var Rt={},zt=[],za=function(e){zt.push(e)};function Da(t,e){if(process.env.NODE_ENV!=="production"&&!t&&console!==void 0){var s=zt.reduce(function(n,r){return r(n??"","warning")},e);s&&console.error("Warning: ".concat(s))}}function Va(t,e){if(process.env.NODE_ENV!=="production"&&!t&&console!==void 0){var s=zt.reduce(function(n,r){return r(n??"","note")},e);s&&console.warn("Note: ".concat(s))}}function Fa(){Rt={}}function Ms(t,e,s){!e&&!Rt[s]&&(t(!1,s),Rt[s]=!0)}function bt(t,e){Ms(Da,t,e)}function Ua(t,e){Ms(Va,t,e)}bt.preMessage=za;bt.resetWarned=Fa;bt.noteOnce=Ua;function Ba(t){return t.replace(/[:-](.)/g,function(e,s){return s.toUpperCase()})}function Qa(t){return t.startsWith("data-")||t.startsWith("aria-")?t:Ba(t)}function qa(t,e){bt(t,"[@qfei-design/icons] ".concat(e))}function os(t){return Te(t)==="object"&&typeof t.name=="string"&&typeof t.theme=="string"&&(Te(t.icon)==="object"||typeof t.icon=="function")}function cs(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.keys(t).reduce(function(e,s){var n=t[s];return s==="class"?(e.className=n,delete e.class):(delete e[s],e[Qa(s)]=n),e},{})}function Mt(t,e,s){return s?f.createElement(t.tag,be(be({key:e},cs(t.attrs)),s),(t.children||[]).map(function(n,r){return Mt(n,"".concat(e,"-").concat(t.tag,"-").concat(r))})):f.createElement(t.tag,be({key:e},cs(t.attrs)),(t.children||[]).map(function(n,r){return Mt(n,"".concat(e,"-").concat(t.tag,"-").concat(r))}))}function Ts(t){return Ea(t)[0]}function Os(t){return t?Array.isArray(t)?t:[t]:[]}var Ka=`
|
|
3
|
-
.qfei-icon {
|
|
4
|
-
display: inline-flex;
|
|
5
|
-
align-items: center;
|
|
6
|
-
color: inherit;
|
|
7
|
-
font-style: normal;
|
|
8
|
-
line-height: 0;
|
|
9
|
-
text-align: center;
|
|
10
|
-
text-transform: none;
|
|
11
|
-
vertical-align: -0.125em;
|
|
12
|
-
text-rendering: optimizeLegibility;
|
|
13
|
-
-webkit-font-smoothing: antialiased;
|
|
14
|
-
-moz-osx-font-smoothing: grayscale;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.qfei-icon > * {
|
|
18
|
-
line-height: 1;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.qfei-icon svg {
|
|
22
|
-
display: inline-block;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.qfei-icon::before {
|
|
26
|
-
display: none;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.qfei-icon .qfei-icon-icon {
|
|
30
|
-
display: block;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.qfei-icon[tabindex] {
|
|
34
|
-
cursor: pointer;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.qfei-icon-spin::before,
|
|
38
|
-
.qfei-icon-spin {
|
|
39
|
-
display: inline-block;
|
|
40
|
-
-webkit-animation: loadingCircle 1s infinite linear;
|
|
41
|
-
animation: loadingCircle 1s infinite linear;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@-webkit-keyframes loadingCircle {
|
|
45
|
-
100% {
|
|
46
|
-
-webkit-transform: rotate(360deg);
|
|
47
|
-
transform: rotate(360deg);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
@keyframes loadingCircle {
|
|
52
|
-
100% {
|
|
53
|
-
-webkit-transform: rotate(360deg);
|
|
54
|
-
transform: rotate(360deg);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
`,Wa=function(e){var s=f.useContext(js),n=s.csp,r=s.prefixCls,i=s.layer,o=Ka;r&&(o=o.replace(/qfei-icon/g,r)),i&&(o="@layer ".concat(i,` {
|
|
58
|
-
`).concat(o,`
|
|
59
|
-
}`)),f.useEffect(function(){var u=e.current,c=Pa(u);$a(o,"@qfei-design-icons",{prepend:!i,csp:n,attachTo:c})},[])},Ga=["icon","className","onClick","style","primaryColor","secondaryColor"],nt={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};function Xa(t){var e=t.primaryColor,s=t.secondaryColor;nt.primaryColor=e,nt.secondaryColor=s||Ts(e),nt.calculated=!!s}function Ya(){return be({},nt)}var Qe=function(e){var s=e.icon,n=e.className,r=e.onClick,i=e.style,o=e.primaryColor,u=e.secondaryColor,c=Ns(e,Ga),m=S.useRef(),_=nt;if(o&&(_={primaryColor:o,secondaryColor:u||Ts(o)}),Wa(m),qa(os(s),"icon should be icon definiton, but got ".concat(s)),!os(s))return null;var y=s;return y&&typeof y.icon=="function"&&(y=be(be({},y),{},{icon:y.icon(_.primaryColor,_.secondaryColor)})),Mt(y.icon,"svg-".concat(y.name),be(be({className:n,onClick:r,style:i,"data-icon":y.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},c),{},{ref:m}))};Qe.displayName="IconReact";Qe.getTwoToneColors=Ya;Qe.setTwoToneColors=Xa;function Ls(t){var e=Os(t),s=Is(e,2),n=s[0],r=s[1];return Qe.setTwoToneColors({primaryColor:n,secondaryColor:r})}function Za(){var t=Qe.getTwoToneColors();return t.calculated?[t.primaryColor,t.secondaryColor]:t.primaryColor}var Ja=["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"];Ls(Et.primary);var Y=S.forwardRef(function(t,e){var s=t.className,n=t.icon,r=t.spin,i=t.rotate,o=t.tabIndex,u=t.onClick,c=t.twoToneColor,m=Ns(t,Ja),_=S.useContext(js),y=_.prefixCls,M=y===void 0?"anticon":y,H=_.rootClassName,b=ja(H,M,oe(oe({},"".concat(M,"-").concat(n.name),!!n.name),"".concat(M,"-spin"),!!r||n.name==="loading"),s),z=o;z===void 0&&u&&(z=-1);var $=i?{msTransform:"rotate(".concat(i,"deg)"),transform:"rotate(".concat(i,"deg)")}:void 0,D=Os(c),k=Is(D,2),p=k[0],l=k[1];return S.createElement("span",X({role:"img","aria-label":n.name},m,{ref:e,tabIndex:z,onClick:u,className:b}),S.createElement(Qe,{icon:n,primaryColor:p,secondaryColor:l,style:$}))});Y.displayName="AntdIcon";Y.getTwoToneColor=Za;Y.setTwoToneColor=Ls;var en={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22 11h-9V2c0-.6-.4-1-1-1s-1 .4-1 1v9H2c-.6 0-1 .4-1 1s.4 1 1 1h9v9c0 .6.4 1 1 1s1-.4 1-1v-9h9c.6 0 1-.4 1-1s-.4-1-1-1z","data-follow-fill":"#4e5969"}}]},name:"add-two__加1__tip",theme:"outlined"},tn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:en}))},yt=S.forwardRef(tn);process.env.NODE_ENV!=="production"&&(yt.displayName="QfeiIconAddTwoOutlined");var sn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22.7 4.3c-.4-.4-1-.4-1.4 0L8 17.6l-5.3-5.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4l6 6c.2.2.4.3.7.3s.5-.1.7-.3l14-14c.4-.4.4-1 0-1.4z","data-follow-fill":"#4e5969"}}]},name:"checkmark-one__对勾0__tip",theme:"outlined"},an=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:sn}))},$s=S.forwardRef(an);process.env.NODE_ENV!=="production"&&($s.displayName="QfeiIconCheckmarkOneOutlined");var nn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M13.4 12l9.3-9.3c.4-.4.4-1 0-1.4s-1-.4-1.4 0L12 10.6 2.7 1.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4l9.3 9.3-9.3 9.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3l9.3-9.3 9.3 9.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1 0-1.4L13.4 12z","data-follow-fill":"#4e5969"}}]},name:"close-one__关闭0__tip",theme:"outlined"},rn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:nn}))},Tt=S.forwardRef(rn);process.env.NODE_ENV!=="production"&&(Tt.displayName="QfeiIconCloseOneOutlined");var on={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"g",attrs:{"data-follow-fill":"#4e5969"},children:[{tag:"path",attrs:{d:"M16.7 7.3c-.4-.4-1-.4-1.4 0L12 10.6 8.7 7.3c-.4-.4-1-.4-1.4 0s-.4 1 0 1.4l3.3 3.3-3.3 3.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3l3.3-3.3 3.3 3.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1 0-1.4L13.4 12l3.3-3.3c.4-.4.4-1 0-1.4z"}},{tag:"path",attrs:{d:"M12 1C5.9 1 1 5.9 1 12s4.9 11 11 11 11-4.9 11-11S18.1 1 12 1zm0 20c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9z"}}]}]},name:"close-two__关闭1__tip",theme:"outlined"},cn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:on}))},Ot=S.forwardRef(cn);process.env.NODE_ENV!=="production"&&(Ot.displayName="QfeiIconCloseTwoOutlined");var ln={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M7.5 14H3c-.6 0-1 .4-1 1s.4 1 1 1h3.6l-5.3 5.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3L8 17.4v4.4c0 .6.4 1 1 1s1-.4 1-1v-5.3c0-1.4-1.1-2.5-2.5-2.5zM22 15.9c-.6 0-1 .4-1 1v3.6c0 .3-.2.5-.5.5H16c-.6 0-1 .4-1 1s.4 1 1 1h4.5c1.4 0 2.5-1.1 2.5-2.5v-3.6c0-.6-.4-1-1-1zm-20-6c.6 0 1-.4 1-1V3.5c0-.3.2-.5.5-.5H8c.6 0 1-.4 1-1s-.4-1-1-1H3.5C2.1 1 1 2.1 1 3.5v5.4c0 .5.4 1 1 1zm19.3-8.6l-5.6 5.6V4.2c0-.6-.4-1-1-1s-1 .4-1 1v3.6c0 1.4 1.1 2.5 2.5 2.5h4.5c.6 0 1-.4 1-1s-.4-1-1-1h-3.6l5.6-5.6c.4-.4.4-1 0-1.4s-1-.4-1.4 0z","data-follow-fill":"#4e5969"}}]},name:"contract__收缩__direction",theme:"outlined"},dn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:ln}))},Hs=S.forwardRef(dn);process.env.NODE_ENV!=="production"&&(Hs.displayName="QfeiIconContractOutlined");var un={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M20 1h-8.5a3 3 0 00-3 2.5h2.1c.2-.3.6-.5.9-.5H20c.5 0 1 .5 1 1v10.9c0 .5-.5 1-1 1h-2.1v2H20a3 3 0 003-3V4c0-1.7-1.3-3-3-3zm-7.1 4.5H4c-1.7 0-3 1.3-3 3V20c0 1.7 1.3 3 3 3h8.9c1.7 0 3-1.3 3-3V8.5c0-1.7-1.3-3-3-3zm1 14.5c0 .5-.4 1-1 1H4c-.5 0-1-.5-1-1V8.5c0-.5.5-1 1-1h8.9c.6 0 1 .5 1 1V20z","data-follow-fill":"#4e5969"}}]},name:"copy__复制__common",theme:"outlined"},fn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:un}))},Ps=S.forwardRef(fn);process.env.NODE_ENV!=="production"&&(Ps.displayName="QfeiIconCopyOutlined");var mn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"g",attrs:{"data-follow-fill":"#4e5969"},children:[{tag:"path",attrs:{d:"M22 4.5h-5.3v-.4c0-1.7-1.4-3.1-3.1-3.1h-3.1C8.7 1 7.3 2.4 7.3 4.1v.4H2c-.5 0-1 .4-1 1s.4 1 1 1h1.8v11.8c0 2.6 2.1 4.7 4.7 4.7h7.1c2.6 0 4.7-2.1 4.7-4.7V6.5H22c.5 0 1-.4 1-1s-.4-1-1-1zM9.3 4.1c0-.6.5-1.1 1.1-1.1h3.1c.6 0 1.2.5 1.2 1.2v.4H9.3v-.5zm9 14.2c0 1.5-1.2 2.8-2.7 2.8H8.5c-1.5 0-2.7-1.2-2.7-2.8V6.5h12.6v11.8h-.1z"}},{tag:"path",attrs:{d:"M9.4 10.8a1 1 0 00-1 1v3.9a1 1 0 002 0v-3.9c0-.5-.4-1-1-1zm5.2 0a1 1 0 00-1 1v3.9a1 1 0 002 0v-3.9c-.1-.5-.5-1-1-1z"}}]}]},name:"delete__删除__common",theme:"outlined"},hn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:mn}))},Lt=S.forwardRef(hn);process.env.NODE_ENV!=="production"&&(Lt.displayName="QfeiIconDeleteOutlined");var pn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M1.3 7.7l10 10c.4.4 1 .4 1.4 0l10-10c.4-.4.4-1 0-1.4-.2-.2-.4-.3-.7-.3s-.5.1-.7.3L12 15.6 2.7 6.3C2.5 6.1 2.3 6 2 6s-.5.1-.7.3c-.4.4-.4 1 0 1.4z","data-follow-fill":"#4e5969"}}]},name:"down__下__direction",theme:"outlined"},vn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:pn}))},zs=S.forwardRef(vn);process.env.NODE_ENV!=="production"&&(zs.displayName="QfeiIconDownOutlined");var gn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22 22.9H2c-.6 0-1-.4-1-1s.4-1 1-1h20c.6 0 1 .4 1 1s-.4 1-1 1zM20 4.4L17.6 2l-.6-.6c-.4-.4-1.1-.4-1.6 0l-.7.6-1.5 1.5L11.7 5l-5.5 5.5-1 1-2.1 2.1v5.1h5.2l8.5-8.5 1.5-1.5 1.5-1.5.7-.7a1 1 0 00.1-1.5l-.6-.6zM7.6 16.7H5.2v-2.4l1-1 6.9-6.9 2.4 2.4-7.9 7.9zM17 7.3L14.6 5l1.5-1.5 2.4 2.4L17 7.3z","data-follow-fill":"#4e5969"}}]},name:"edit__编辑__common",theme:"outlined"},_n=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:gn}))},Ds=S.forwardRef(_n);process.env.NODE_ENV!=="production"&&(Ds.displayName="QfeiIconEditOutlined");var bn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M20.5 1H16c-.6 0-1 .4-1 1s.4 1 1 1h3.6l-5.3 5.3c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3L21 4.4v4.4c0 .6.4 1 1 1s1-.4 1-1V3.5C23 2.1 21.9 1 20.5 1zM22 15.9c-.6 0-1 .4-1 1v3.6c0 .3-.2.5-.5.5H16c-.6 0-1 .4-1 1s.4 1 1 1h4.5c1.4 0 2.5-1.1 2.5-2.5v-3.6c0-.6-.4-1-1-1zm-20-6c.6 0 1-.4 1-1V3.5c0-.3.2-.5.5-.5H8c.6 0 1-.4 1-1s-.4-1-1-1H3.5C2.1 1 1 2.1 1 3.5v5.4c0 .5.4 1 1 1zM8.6 14L3 19.6v-2.7c0-.6-.4-1-1-1s-1 .4-1 1v3.6C1 21.9 2.1 23 3.5 23H8c.6 0 1-.4 1-1s-.4-1-1-1H4.4l5.6-5.6c.4-.4.4-1 0-1.4s-1-.4-1.4 0z","data-follow-fill":"#4e5969"}}]},name:"full-screen__全屏__direction",theme:"outlined"},yn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:bn}))},Vs=S.forwardRef(yn);process.env.NODE_ENV!=="production"&&(Vs.displayName="QfeiIconFullScreenOutlined");var xn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M4.29 22.99A3.3 3.3 0 011 20.11v-7.12c.31-1.79 1.7-3.1 3.29-3.1h2.08l3.72-8.3c.24-.36.57-.58.91-.58 1.05 0 2.08.45 2.83 1.23A3.73 3.73 0 0114.89 5v3.01h5.09c.88 0 1.73.39 2.27 1.04.57.57.83 1.47.72 2.47l-1.38 8.98a2.9 2.9 0 01-2.9 2.49H4.29zm3.68-11.72v9.77H18.6c.53 0 .96-.36 1.05-.87l1.38-8.97c0-.33-.09-.61-.27-.89-.16-.25-.51-.33-.77-.33h-6.02a.92.92 0 01-.93-.93V5.01a2 2 0 00-1.37-1.89l-.09-.03-3.6 8.18zm-3.68.57c-.64 0-1.26.58-1.34 1.26v6.89c.09.51.65 1.04 1.34 1.04h1.74v-9.19H4.29z"}}]},name:"like__点赞__common",theme:"outlined"},kn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:xn}))},Fs=S.forwardRef(kn);process.env.NODE_ENV!=="production"&&(Fs.displayName="QfeiIconLikeOutlined");var wn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M14 4h8c.6 0 1-.4 1-1s-.4-1-1-1h-8c-.6 0-1 .4-1 1s.4 1 1 1zm8 16h-8c-.6 0-1 .4-1 1s.4 1 1 1h8c.6 0 1-.4 1-1s-.4-1-1-1zm0-12h-8c-.6 0-1 .4-1 1s.4 1 1 1h8c.6 0 1-.4 1-1s-.4-1-1-1zm0 6h-8c-.6 0-1 .4-1 1s.4 1 1 1h8c.6 0 1-.4 1-1s-.4-1-1-1zM10 1H2c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h8c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM9 9H3V3h6v6zm1 4H2c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h8c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1zm-1 8H3v-6h6v6z","data-follow-fill":"#4e5969"}}]},name:"list__列表__common",theme:"outlined"},jn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:wn}))},Us=S.forwardRef(jn);process.env.NODE_ENV!=="production"&&(Us.displayName="QfeiIconListOutlined");var In={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M11.4 5.3l-8 8c-.4.4-.4 1 0 1.4s1 .4 1.4 0l6.3-6.3V22c0 .6.5 1 1 1s1-.5 1-1V8.4l6.3 6.3c.4.4 1 .4 1.4 0 .2-.2.3-.5.3-.7 0-.2-.1-.5-.3-.7l-8-8c-.2-.2-.5-.4-.8-.4s-.4.2-.6.4zM23 1.9c0-.6-.4-1-1-1H2c-.6 0-1 .4-1 1s.4 1 1 1h20c.6 0 1-.4 1-1z","data-follow-fill":"#4e5969"}},{tag:"path",attrs:{d:"M7.7 12.7v-.2"}}]},name:"pin__置顶__direction",theme:"outlined"},Nn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:In}))},Bs=S.forwardRef(Nn);process.env.NODE_ENV!=="production"&&(Bs.displayName="QfeiIconPinOutlined");var Cn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M18.6 3.2A11.24 11.24 0 0012 1c-1.6 0-3.1.3-4.5 1-.6.2-1.2.6-1.8 1-1 .7-2 1.7-2.7 2.7-.4.6-.8 1.2-1 1.8-.7 1.4-1 2.9-1 4.5s.3 3.2 1 4.7c.3.6 1.1.8 1.6.3.4-.4.4-.8.2-1.2-.5-1.2-.8-2.5-.8-3.8 0-1 .2-2 .5-3A8.7 8.7 0 019 3.5c1-.3 2-.5 3-.5 1.6 0 3.1.4 4.4 1.2l-2.6 2.6c-.4.4-.4 1 0 1.4.4.4 1 .4 1.4 0L19.5 4c-.3-.3-.6-.6-.9-.8zM5.4 20.8A11.24 11.24 0 0012 23c1.6 0 3.1-.3 4.5-1 .6-.3 1.2-.6 1.8-1 1-.7 2-1.7 2.7-2.7.4-.6.7-1.2 1-1.8a11.04 11.04 0 000-9.2c-.3-.6-1.1-.8-1.6-.3-.4.4-.4.8-.2 1.2.5 1.2.8 2.5.8 3.8 0 1-.2 2-.5 3a8.7 8.7 0 01-5.5 5.5c-1 .3-2 .5-3 .5-1.6 0-3.1-.4-4.4-1.2l2.6-2.6c.4-.4.4-1 0-1.4-.4-.4-1-.4-1.4 0L4.5 20c.3.3.6.6.9.8z","data-follow-fill":"#4e5969"}}]},name:"refresh__刷新__common",theme:"outlined"},An=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:Cn}))},Qs=S.forwardRef(An);process.env.NODE_ENV!=="production"&&(Qs.displayName="QfeiIconRefreshOutlined");var En={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M19.71 1.01A3.3 3.3 0 0123 3.89v7.12c-.31 1.79-1.7 3.1-3.29 3.1h-2.08l-3.71 8.3c-.24.36-.57.58-.91.58a3.96 3.96 0 01-2.83-1.23A3.73 3.73 0 019.12 19v-3.01H4.03c-.88 0-1.73-.39-2.27-1.04a2.99 2.99 0 01-.72-2.47L2.41 3.5a2.9 2.9 0 012.9-2.49h14.4zm-3.68 11.72V2.97H5.4c-.53 0-.96.36-1.05.87l-1.38 8.97c0 .33.09.61.27.89.16.25.51.33.77.33h6.02c.46 0 .93.35.93.93V19a2 2 0 001.37 1.89l.09.03 3.6-8.18zm3.68-.57c.64 0 1.26-.58 1.34-1.26V4.01c-.09-.51-.65-1.04-1.34-1.04h-1.74v9.19h1.74z"}}]},name:"unlike__点踩__common",theme:"outlined"},Sn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:En}))},qs=S.forwardRef(Sn);process.env.NODE_ENV!=="production"&&(qs.displayName="QfeiIconUnlikeOutlined");var Rn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22.7 16.3l-10-10c-.4-.4-1-.4-1.4 0l-10 10c-.4.4-.4 1 0 1.4.2.2.4.3.7.3s.5-.1.7-.3L12 8.4l9.3 9.3c.2.2.5.3.7.3s.5-.1.7-.3c.4-.4.4-1 0-1.4z","data-follow-fill":"#4e5969"}}]},name:"up__上__direction",theme:"outlined"},Mn=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:Rn}))},Ks=S.forwardRef(Mn);process.env.NODE_ENV!=="production"&&(Ks.displayName="QfeiIconUpOutlined");var Tn={icon:{tag:"svg",attrs:{viewBox:"0 0 24 24",focusable:"false"},children:[{tag:"path",attrs:{d:"M22.7 18.9L14.1 2.4c-.9-1.9-3.3-1.9-4.2 0L1.3 18.9c-.9 1.9.2 4.1 2.1 4.1h17.1c1.9-.1 3.1-2.4 2.2-4.1zM13 19c0 .6-.4 1-1 1s-1-.4-1-1v-.8c0-.6.4-1 1-1s1 .4 1 1v.8zm0-4c0 .6-.4 1-1 1s-1-.4-1-1V7c0-.6.4-1 1-1s1 .4 1 1v8z"}}]},name:"warning__警告__tip",theme:"outlined"},On=function(e,s){return S.createElement(Y,X({},e,{ref:s,icon:Tn}))},Ws=S.forwardRef(On);process.env.NODE_ENV!=="production"&&(Ws.displayName="QfeiIconWarningOutlined");const Fe=()=>globalThis.crypto.randomUUID(),ls=1e3,Nt=(t,e)=>t?.chatId===e.chatId&&t.revision>e.revision?t:e,Dt=t=>{const e=t,s=e?.status??e?.response?.status;return s===410||e?.code==="AI_UPLOAD_EXPIRED"?"上传已过期,请移除后重新选择文件":s===409?"数据已变化或对话仍在运行,请刷新后重试":s===401||e?.code==="AI_AUTH_REQUIRED"||e?.code==="AI_AUTH_EXPIRED"?"登录已失效,请重新登录":s===403?"当前账号无权访问该对话":s===404?"对话或回答已不可见,请刷新列表":e?.message?.startsWith("输入内容过长")?e.message:"操作未完成,请重试或刷新对话"};function Ln(t,e){const s=e.features?.conversationManagement===!0,n=s?e.scopeKey?.(t)??t.app.id:"",r=f.useRef(n);r.current=n;const i=f.useRef(n),[o,u]=f.useState(I.createAssistantConversationState),c=f.useRef(o),m=d=>{const h=typeof d=="function"?d(c.current):d;c.current=h,u(h)},[_,y]=f.useState([]),[M,H]=f.useState(),b=f.useRef(void 0),[z,$]=f.useState(""),[D,k]=f.useState(void 0),[p,l]=f.useState(!1),[x,A]=f.useState(!1),[Z,N]=f.useState(s),[q,te]=f.useState(!1),[ie,W]=f.useState(),[fe,ve]=f.useState([]),[Ae,qe]=f.useState([]),V=f.useRef(new Set),B=f.useRef(new Map),P=f.useRef(0),J=f.useRef(0),le=f.useRef(0),ye=f.useRef(void 0),me=f.useRef(void 0),Ee=f.useRef(new Map),L=(d,h=n)=>J.current===d&&r.current===h,ne=()=>{const d=new AbortController;return V.current.add(d),d},se=d=>V.current.delete(d),ae=d=>{const h=d?Nt(b.current,d):void 0;b.current=h,H(h)},Ke=d=>{y(h=>h.map(g=>g.chatId===d.chatId?Nt(g,d):g))},We=d=>{y(h=>h.filter(g=>g.chatId!==d))},rt=()=>{le.current+=1},de=()=>{for(const d of B.current.values())d.abort();B.current.clear()},K=d=>{d instanceof Error&&d.name==="AbortError"||(console.warn("[make-ai-assistant] conversation operation failed",{errorType:d instanceof Error?d.name:typeof d}),W(Dt(d)))},ue=async d=>{if(!s||!e.listConversations)return;const h=J.current,g=++le.current,w=ne();try{const C=await e.listConversations(t,{cursor:d},{signal:w.signal});if(!L(h)||w.signal.aborted||g!==le.current)return;y(T=>{const j=new Map(T.map(E=>[E.chatId,E])),R=C.chats.map(E=>Nt(j.get(E.chatId),E));return[...new Map([...d?T:[],...R].map(E=>[E.chatId,E])).values()]}),$(C.nextCursor)}catch(C){L(h)&&!w.signal.aborted&&g===le.current&&K(C)}finally{se(w),L(h)&&g===le.current&&N(!1)}},we=async d=>{if(!e.getConversation)return;const h=J.current,g=ne();try{const w=await e.getConversation(t,{chatId:d},{signal:g.signal});if(!L(h)||g.signal.aborted||w.chatId!==d)return;Ke(w),b.current?.chatId===d&&ae(w)}catch(w){L(h)&&!g.signal.aborted&&K(w)}finally{se(g)}},Se=async(d,h,g)=>{const w=J.current,C=P.current;let T;try{for await(const j of d){if(!L(w)||h.signal.aborted||C!==P.current||b.current?.chatId!==g)return;const R=I.parseAssistantEvent(j);if(R.type==="response.accepted"||R.type==="response.state"){T=R.responseId;const E=B.current.get(T);if(E&&E!==h){R.type==="response.accepted"&&m(F=>I.reduceAssistantEvent(F,R)),h.abort();return}B.current.set(T,h)}m(E=>I.reduceAssistantEvent(E,R)),R.type==="response.accepted"&&we(g),R.type==="response.terminal"&&(ve(E=>E.filter(F=>F!==R.responseId)),ue())}}catch(j){L(w)&&!h.signal.aborted&&C===P.current&&(K(j),T||m(R=>({...R,status:Object.values(R.responses??{}).some(E=>!wt.isResponseTerminal(E))?"streaming":"error"})))}finally{T&&B.current.get(T)===h&&B.current.delete(T),se(h)}},je=async(d,h,g,w)=>{if(!e.getResponse||!e.watchResponse)return;const C=new Set(d.filter(j=>j.role==="assistant"&&j.persistent).map(j=>j.responseId)),T=[...new Map(d.filter(j=>j.role==="user"&&j.responseId&&!C.has(j.responseId)).map(j=>[j.responseId,j.cursor])).entries()].slice(-20);for(const[j,R]of T){if(!L(w)||g!==P.current)return;if(B.current.has(j))continue;const E=ne();try{const F=await e.getResponse(t,{chatId:h,responseId:j},{signal:E.signal});if(!L(w)||E.signal.aborted||g!==P.current||B.current.has(j))continue;m(xe=>I.reduceAssistantEvent(xe,wt.isResponseTerminal(F)?{type:"response.snapshot",snapshot:F}:{type:"response.state",chatId:h,responseId:j,status:F.status})),F.status==="failed"||F.status==="cancelled"?m(xe=>I.reduceAssistantEvent(xe,{type:"response.terminal",chatId:h,responseId:j,status:F.status})):(B.current.set(j,E),Se(e.watchResponse(t,{chatId:h,responseId:j,historyCursor:R},{signal:E.signal}),E,h))}catch(F){L(w)&&!E.signal.aborted&&K(F)}finally{B.current.get(j)!==E&&se(E)}}},Oe=async d=>{const h=++P.current,g=J.current,w=ne();de(),W(void 0),N(!0),ve([]),me.current=void 0,ae(d),m({messages:[],status:"idle",threadId:d.chatId}),k(void 0),l(!1),A(!1);try{const[C,T]=await Promise.all([e.getConversation(t,{chatId:d.chatId},{signal:w.signal}),e.loadConversation(t,{threadId:d.chatId,cursor:void 0,signal:w.signal})]);if(!L(g)||w.signal.aborted||h!==P.current)return;if(C.chatId!==d.chatId||T.threadId!==d.chatId)throw new Error("Conversation mismatch");ae(C),m(I.createAssistantConversationState(T)),k(T.nextCursor??-1),l(T.hasMore??!1),je(T.messages,d.chatId,h,g)}catch(C){L(g)&&!w.signal.aborted&&h===P.current&&K(C)}finally{se(w),L(g)&&h===P.current&&N(!1)}},Le=async()=>{if(b.current)return b.current;if(ye.current??={requestId:Fe()},ye.current.promise)return ye.current.promise;const d=J.current,h=P.current,g=ne(),w=ye.current;return te(!0),w.promise=e.createConversation(t,{requestId:w.requestId},{signal:g.signal}).then(C=>{if(!L(d)||g.signal.aborted||h!==P.current)throw Object.assign(new Error("Stale create"),{name:"AbortError"});return ye.current=void 0,ae(C),m({messages:[],status:"idle",threadId:C.chatId}),ue(),C}).finally(()=>{se(g),w.promise=void 0,L(d)&&te(!1)}),w.promise},Ge=async()=>{if(!(q||ye.current?.promise)){P.current+=1,de(),ae(void 0),W(void 0),me.current=void 0,m(I.createAssistantConversationState()),l(!1),k(void 0);try{await Le()}catch(d){K(d)}}},Xe=async d=>{const h=ne();me.current=d,W(void 0),c.current.messages.some(g=>g.id===d.message.id)||m(g=>I.appendUserMessage(g,d.message)),await Se(e.run(d,{signal:h.signal}),h,d.threadId)},ge=async(d,h)=>{if(!(!d.trim()&&!h?.length))try{const g=await Le(),w={id:Fe(),content:d,...h?{parts:h}:{}};await Xe({threadId:g.chatId,message:w,context:t,capabilities:{artifactSchemaVersions:[],artifactKinds:[],templates:[]}})}catch(g){K(g)}},it=async()=>{const d=me.current;if(!d||d.threadId!==b.current?.chatId){b.current&&await Oe(b.current);return}const h=c.current.messages.find(g=>g.id===d.message.id);if(h?.responseId&&e.watchResponse){const g=h.responseId;if(B.current.has(g))return;const w=ne();B.current.set(g,w),W(void 0),await Se(e.watchResponse(t,{chatId:d.threadId,responseId:g,historyCursor:h.cursor},{signal:w.signal}),w,d.threadId)}else await Xe(d)},ot=async(d=c.current.activeRunId)=>{const h=b.current;if(!h||!d||!e.cancelResponse||fe.includes(d))return;const g=J.current,w=P.current,C=ne();ve(T=>[...T,d]),W(void 0);try{const T=await e.cancelResponse(t,{chatId:h.chatId,responseId:d},{signal:C.signal});if(!L(g)||w!==P.current)return;if(wt.isResponseTerminal(T))m(j=>I.reduceAssistantEvent(j,{type:"response.snapshot",snapshot:T})),ve(j=>j.filter(R=>R!==d));else if(!B.current.has(d)&&e.watchResponse){const j=ne();B.current.set(d,j),Se(e.watchResponse(t,{chatId:h.chatId,responseId:d},{signal:j.signal}),j,h.chatId)}}catch(T){L(g)&&w===P.current&&(K(T),ve(j=>j.filter(R=>R!==d)))}finally{se(C)}},ct=async(d,h=b.current)=>{if(!h||q)return!1;const g=J.current,w=ne();te(!0),W(void 0);try{const C=await e.updateConversation(t,{chatId:h.chatId,expectedRevision:h.revision,...d},{signal:w.signal});return L(g)?(rt(),Ke(C),b.current?.chatId===C.chatId&&ae(C),!0):!1}catch(C){if(L(g)){K(C);try{const T=await e.getConversation(t,{chatId:h.chatId},{signal:w.signal});L(g)&&b.current?.chatId===h.chatId&&ae(T)}catch{}ue()}return!1}finally{se(w),L(g)&&te(!1)}},lt=async(d=b.current)=>{if(!d||q)return!1;const h=J.current,g=ne();te(!0),W(void 0);try{return await e.deleteConversation(t,{chatId:d.chatId,expectedRevision:d.revision},{signal:g.signal}),L(h)?(rt(),We(d.chatId),b.current?.chatId===d.chatId&&(P.current+=1,de(),ae(void 0),m(I.createAssistantConversationState())),!0):!1}catch(w){return L(h)&&K(w),!1}finally{se(g),L(h)&&te(!1)}},dt=async(d,h,g="",w="")=>{const C=b.current;if(!C||!d.persistent||!e.setFeedback||Ae.includes(d.id))return;const T={chatId:C.chatId,messageId:d.id,rating:h,...g?{reason:g}:{},...w?{comment:w}:{}},j=Ee.current.get(d.id),{requestId:R,...E}=j??{requestId:""},F=j&&JSON.stringify(E)===JSON.stringify(T)?j:{...T,requestId:Fe()};Ee.current.set(d.id,F);const xe=J.current,Me=P.current,ut=ne();qe(he=>[...he,d.id]),W(void 0);try{const he=await e.setFeedback(t,F,{signal:ut.signal});return!L(xe)||Me!==P.current||Ee.current.get(d.id)!==F?void 0:(m(He=>({...He,messages:He.messages.map(v=>v.id===d.id&&he.revision>=(v.feedback?.revision??0)?{...v,feedback:he}:v)})),Ee.current.delete(d.id),!0)}catch(he){return L(xe)&&Me===P.current&&K(he),!1}finally{se(ut),L(xe)&&qe(he=>he.filter(He=>He!==d.id))}},$e=async()=>{if(!b.current||!p||Z)return;const d=J.current,h=P.current,g=b.current,w=ne();N(!0);try{const C=await e.loadConversation(t,{threadId:g.chatId,cursor:D,signal:w.signal});if(!L(d)||h!==P.current)return;const T=I.createAssistantConversationState(C),j=[...new Map([...c.current.messages,...T.messages].map(F=>[F.id,F])).values()];let R=0;const E=[];for(const F of j.slice(-200).reverse()){if(R+=[...F.content].length,R>1e6)break;E.unshift(F)}E.length<j.length&&A(!0),m(F=>({...F,messages:E})),k(C.nextCursor??D),l(C.hasMore??!1),je(C.messages,g.chatId,h,d)}catch(C){L(d)&&K(C)}finally{se(w),L(d)&&N(!1)}},Ye=[...new Set([..._.filter(d=>d.titlePending).map(d=>d.chatId),...M?.titlePending?[M.chatId]:[]])].sort().join("\0");f.useEffect(()=>{if(!s||!e.getConversation||!Ye)return;const d=J.current,h=ne(),g=Ye.split("\0"),w=new Set;let C;console.debug("[make-ai-assistant] watching pending conversation titles",{count:g.length});const T=async()=>{await Promise.all(g.map(async j=>{if(!w.has(j))try{const R=await e.getConversation(t,{chatId:j},{signal:h.signal});if(!L(d)||h.signal.aborted||R.chatId!==j)return;Ke(R),b.current?.chatId===j&&ae(R)}catch(R){if(!L(d)||h.signal.aborted)return;console.warn("[make-ai-assistant] title metadata refresh failed",{errorType:R instanceof Error?R.name:typeof R});const E=R?.status;E===401?(h.abort(),K(R)):(E===403||E===404)&&(w.add(j),b.current?.chatId===j&&K(R))}})),L(d)&&!h.signal.aborted&&g.some(j=>!w.has(j))&&(C=setTimeout(()=>{T()},ls))};return C=setTimeout(()=>{T()},ls),()=>{clearTimeout(C),h.abort(),se(h)}},[s,n,e,Ye]),f.useEffect(()=>(J.current+=1,i.current=n,ye.current=void 0,me.current=void 0,Ee.current.clear(),ae(void 0),y([]),$(""),m(I.createAssistantConversationState()),W(void 0),N(s),te(!1),ve([]),qe([]),s&&ue(),()=>{J.current+=1,P.current+=1;for(const d of V.current)d.abort();V.current.clear(),B.current.clear()}),[s,n,e]);const Re=i.current===n;return{enabled:s,canEdit:e.features?.conversationEditing!==!1,state:Re?o:I.createAssistantConversationState(),setState:m,chats:Re?_:[],chat:Re?M:void 0,listCursor:z,historyMore:p,historyTruncated:x,loading:!Re||Z,busy:q,error:Re?ie:void 0,cancelling:fe,feedbackBusy:Ae,refresh:ue,select:Oe,create:Ge,ensureChat:Le,send:ge,retry:it,stop:ot,update:ct,remove:lt,feedback:dt,moreHistory:$e,setError:W}}const $n=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M5 5.5h14v10H9l-4 3v-13Z"}),a.jsx("path",{d:"M8 9h8M8 12h6"})]}),Hn=({anchor:t,label:e,onDismiss:s})=>{const[n,r]=f.useState();if(f.useLayoutEffect(()=>{const o=()=>{if(!t.isConnected){s();return}const u=t.getBoundingClientRect(),c=u.top>=48?"above":"below";r({left:u.left+u.width/2,placement:c,top:c==="above"?u.top-8:u.bottom+8})};return o(),window.addEventListener("resize",o),document.addEventListener("scroll",o,!0),()=>{window.removeEventListener("resize",o),document.removeEventListener("scroll",o,!0)}},[t,s]),!n||typeof document>"u")return null;const i=t.closest(".make-ai-assistant")??document.body;return gs.createPortal(a.jsx("span",{className:"make-ai-assistant__conversation-tooltip","data-placement":n.placement,role:"tooltip",style:{left:n.left,top:n.top},children:e}),i)};function Pn({id:t,manager:e,onDismiss:s,onNewConversation:n,triggerRef:r}){const[i,o]=f.useState(),[u,c]=f.useState(""),[m,_]=f.useState(),[y,M]=f.useState(),H=f.useRef(null),b=(l,x)=>{M(A=>A?.anchor===x&&A.label===l?A:{anchor:x,label:l})},z=l=>{M(x=>x?.anchor===l?void 0:x)},$=l=>({"data-tooltip":l,onBlur:x=>z(x.currentTarget),onFocus:x=>b(l,x.currentTarget),onPointerEnter:x=>b(l,x.currentTarget),onPointerLeave:x=>z(x.currentTarget)}),D=()=>{o(void 0),c("")},k=async l=>{const x=u.trim();x&&await e.update({title:x},l)&&D()},p=async l=>{await e.remove(l)&&_(void 0)};return f.useEffect(()=>{const l=x=>{const A=x.target;A instanceof Node&&(H.current?.contains(A)||r.current?.contains(A)||s())};return document.addEventListener("pointerdown",l),()=>{document.removeEventListener("pointerdown",l)}},[s,r]),a.jsxs("div",{"aria-label":"任务列表",className:"make-ai-assistant__conversation-controls",id:t,ref:H,role:"dialog",children:[a.jsxs("div",{className:"make-ai-assistant__conversation-heading",children:[a.jsx("span",{children:"最近对话"}),a.jsx("button",{"aria-label":"刷新任务列表",className:"make-ai-assistant__conversation-refresh",disabled:e.busy,type:"button",...$("刷新"),onClick:()=>{e.refresh()},children:a.jsx(Qs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-refresh-icon"})})]}),a.jsxs("nav",{"aria-label":"对话列表",className:"make-ai-assistant__conversation-list",children:[e.chats.map(l=>{const x=i===l.chatId,A=m===l.chatId,Z=l.title||"未命名对话";return a.jsxs("div",{className:"make-ai-assistant__conversation-row","data-active":e.chat?.chatId===l.chatId||void 0,"data-editing":x||A||void 0,children:[A?a.jsxs("div",{"aria-label":"确认删除对话",className:"make-ai-assistant__conversation-delete-confirmation",role:"group",children:[a.jsx(Ws,{"aria-hidden":"true",className:"make-ai-assistant__conversation-delete-confirmation-icon"}),a.jsxs("span",{className:"make-ai-assistant__conversation-delete-confirmation-message",children:["确认删除“",Z,"”?"]}),a.jsx("button",{"aria-label":`确认删除:${Z}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger make-ai-assistant__conversation-delete-confirmation-confirm",disabled:e.busy||!e.canEdit,type:"button",...$("确认删除"),onClick:()=>{p(l)},children:a.jsx(Lt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`取消删除:${Z}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-delete-confirmation-cancel",disabled:e.busy,type:"button",...$("取消"),onClick:()=>_(void 0),children:a.jsx(Tt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):x?a.jsx("input",{"aria-label":"对话标题",autoFocus:!0,className:"make-ai-assistant__conversation-row-title-input",disabled:e.busy,maxLength:255,value:u,onChange:N=>c(N.currentTarget.value),onKeyDown:N=>{N.nativeEvent.isComposing||(N.key==="Escape"&&(N.preventDefault(),D()),N.key==="Enter"&&(N.preventDefault(),k(l)))}}):a.jsxs("button",{"aria-pressed":e.chat?.chatId===l.chatId,className:"make-ai-assistant__conversation-row-select",type:"button",onClick:()=>{s(),e.select(l)},children:[a.jsx($n,{}),a.jsx("span",{children:Z})]}),x?a.jsxs("div",{"aria-label":"修改标题操作",className:"make-ai-assistant__conversation-row-actions",role:"group",children:[a.jsx("button",{"aria-label":"确认修改标题",className:"make-ai-assistant__conversation-row-action",disabled:e.busy||!u.trim(),type:"button",...$("保存标题"),onClick:()=>{k(l)},children:a.jsx($s,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":"取消修改标题",className:"make-ai-assistant__conversation-row-action",disabled:e.busy,type:"button",...$("取消"),onClick:D,children:a.jsx(Tt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):A?null:a.jsxs("div",{className:"make-ai-assistant__conversation-row-actions",children:[a.jsx("button",{"aria-label":`${l.pinned?"取消置顶":"置顶"} ${Z}`,"aria-pressed":l.pinned,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-pin",disabled:e.busy||!e.canEdit,type:"button",...$(l.pinned?"取消置顶":"置顶"),onClick:()=>{e.update({pinned:!l.pinned},l)},children:a.jsx(Bs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`修改标题:${Z}`,className:"make-ai-assistant__conversation-row-action",disabled:e.busy||!e.canEdit,type:"button",...$("修改标题"),onClick:()=>{_(void 0),o(l.chatId),c(l.title)},children:a.jsx(Ds,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),a.jsx("button",{"aria-label":`删除:${Z}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger",disabled:e.busy,type:"button",...$("删除"),onClick:()=>{D(),_(l.chatId)},children:a.jsx(Lt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]})]},l.chatId)}),!e.loading&&!e.chats.length?a.jsx("p",{children:"暂无对话,发送消息即可新建"}):null,e.listCursor?a.jsx("button",{className:"make-ai-assistant__conversation-more",type:"button",onClick:()=>{e.refresh(e.listCursor)},children:"更多对话"}):null]}),e.chat&&(e.historyMore||e.historyTruncated||e.state.historyTruncated)?a.jsxs("div",{className:"make-ai-assistant__conversation-history-actions",children:[e.historyMore?a.jsx("button",{type:"button",disabled:e.loading,onClick:()=>{e.moreHistory()},children:"继续加载历史"}):null,e.historyTruncated||e.state.historyTruncated?a.jsx("p",{children:"当前展示有界消息窗口,可重新选择对话从头读取。"}):null]}):null,e.error?a.jsxs("div",{className:"make-ai-assistant__conversation-error",role:"alert",children:[a.jsx("span",{children:e.error}),a.jsx("button",{type:"button",onClick:()=>{e.retry()},children:"恢复对话"})]}):null,n?a.jsxs("button",{className:"make-ai-assistant__conversation-new",type:"button",onClick:n,children:[a.jsx(yt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-new-icon"}),a.jsx("span",{children:"新建对话"})]}):null,y?a.jsx(Hn,{anchor:y.anchor,label:y.label,onDismiss:()=>M(void 0)}):null]})}function zn({message:t,manager:e}){const[s,n]=f.useState(!1),[r,i]=f.useState(""),[o,u]=f.useState(""),c=e.feedbackBusy.includes(t.id);if(!t.persistent||t.role!=="assistant"||t.intermediate)return null;const m=t.feedback?.rating??"none";return a.jsxs("div",{"aria-label":"回答反馈",className:"make-ai-assistant__feedback",role:"group",children:[a.jsx("button",{type:"button","aria-label":"喜欢","aria-pressed":m==="like",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"喜欢",disabled:c,onClick:()=>{e.feedback(t,m==="like"?"none":"like")},children:a.jsx(Fs,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),a.jsx("button",{type:"button","aria-label":"不喜欢","aria-pressed":m==="dislike",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"不喜欢",disabled:c,onClick:()=>{if(m==="dislike"){e.feedback(t,"none");return}i(t.feedback?.reason??""),u(t.feedback?.comment??""),n(!0)},children:a.jsx(qs,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),m==="dislike"?a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",disabled:c,onClick:()=>{i(t.feedback?.reason??""),u(t.feedback?.comment??""),n(!0)},children:"修改反馈"}):null,s?a.jsxs("form",{onSubmit:_=>{_.preventDefault(),e.feedback(t,"dislike",r,o).then(y=>{y&&n(!1)})},children:[a.jsx("input",{"aria-label":"反馈原因",maxLength:128,value:r,onChange:_=>i(_.currentTarget.value),placeholder:"原因(可选)"}),a.jsx("textarea",{"aria-label":"反馈说明",maxLength:4e3,value:o,onChange:_=>u(_.currentTarget.value),placeholder:"补充说明(可选)"}),a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"submit",disabled:c,children:"提交反馈"}),a.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",onClick:()=>n(!1),children:"取消"})]}):null]})}const ds=new Set(["image/png","image/jpeg","image/webp","image/gif","audio/mpeg","audio/wav","audio/ogg","audio/webm","video/mp4","video/webm","video/ogg"]);function Dn({part:t,context:e,transport:s,chatId:n}){const[r,i]=f.useState(),[o,u]=f.useState(),[c,m]=f.useState(!1),_=f.useRef([]),y=f.useRef(void 0);f.useEffect(()=>()=>{y.current?.abort(),_.current.forEach(H=>URL.revokeObjectURL(H))},[]);const M=async H=>{if(!s.readContent||c)return;const b=new AbortController;y.current=b,m(!0),u(void 0);try{const z=await s.readContent(e,{chatId:n,contentRef:t.media.contentRef},{signal:b.signal});if(b.signal.aborted)return;const $=new Blob([new Uint8Array(z).buffer],{type:H&&ds.has(t.media.contentType)?t.media.contentType:"application/octet-stream"}),D=URL.createObjectURL($);if(_.current.push(D),H)i(D);else{const k=document.createElement("a");k.href=D,k.download=t.name??"attachment",k.click()}}catch(z){b.signal.aborted||u(Dt(z))}finally{b.signal.aborted||m(!1)}};return a.jsxs("div",{className:"make-ai-assistant__attachment",children:[a.jsxs("span",{children:[t.name??"附件"," · ",t.media.sizeBytes," 字节"]}),s.readContent?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",disabled:c,onClick:()=>{M(!1)},children:"下载附件"}),ds.has(t.media.contentType)?a.jsx("button",{type:"button",disabled:c,onClick:()=>{M(!0)},children:"预览附件"}):null]}):null,o?a.jsx("span",{role:"alert",children:o}):null,r&&t.kind==="image"?a.jsx("img",{src:r,alt:t.name??"附件图片"}):null,r&&t.kind==="audio"?a.jsx("audio",{src:r,controls:!0}):null,r&&t.kind==="video"?a.jsx("video",{src:r,controls:!0}):null]})}function Vn({message:t,context:e,transport:s,chatId:n}){return a.jsx(a.Fragment,{children:t.parts?.map((r,i)=>r.kind==="text"?null:r.kind==="unknown"?a.jsx("span",{className:"make-ai-assistant__attachment",children:r.textFallback??"此内容类型暂不支持展示"},r.id??`${t.id}:${i}`):a.jsx(Dn,{part:r,context:e,transport:s,chatId:n},r.id??`${t.id}:${i}`))})}const Gs=t=>t.type.split(";")[0].trim().toLowerCase()||"application/octet-stream",Fn=t=>t.startsWith("image/")&&t!=="image/svg+xml"?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file",Un=t=>{const e=Gs(t);if(!(!e.startsWith("image/")||e==="image/svg+xml"||typeof URL>"u"||typeof URL.createObjectURL!="function"))return URL.createObjectURL(t)},us=t=>{t&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(t)},Bn=(t,e)=>new Promise((s,n)=>{const r=new FileReader,i=()=>e.removeEventListener("abort",o),o=()=>{r.abort(),i(),n(Object.assign(new Error("Read aborted"),{name:"AbortError"}))};if(e.aborted){o();return}e.addEventListener("abort",o,{once:!0}),r.onload=()=>{i(),s(new Uint8Array(r.result))},r.onerror=()=>{i(),n(new Error("无法读取文件"))},r.readAsArrayBuffer(t)});function Qn(t,e,s){const[n,r]=f.useState([]),i=f.useRef(new Map),o=f.useRef(Promise.resolve()),u=e.scopeKey?.(t)??t.app.id,c=f.useRef(u);c.current=u;const m=f.useRef(void 0),_=s.enabled&&e.features?.attachments===!0,y=(p,l)=>{!i.current.has(p.draft.id)||p.scope!==c.current||(p.draft={...p.draft,...l},r([...i.current.values()].map(x=>x.draft)))},M=()=>{for(const p of i.current.values())p.controller.abort(),us(p.draft.previewUrl);i.current.clear(),r([]),m.current=void 0,o.current=Promise.resolve()};f.useEffect(()=>(M(),M),[u,e]),f.useEffect(()=>{m.current&&s.chat?.chatId!==m.current&&M()},[s.chat?.chatId]);const H=async p=>{const l=p.controller.signal,x=()=>{if(l.aborted||p.scope!==c.current||!i.current.has(p.draft.id))throw Object.assign(new Error("Upload aborted"),{name:"AbortError"})};try{if(x(),p.file.size>64<<20)throw new Error("文件不能超过 64 MiB");const A=await s.ensureChat();x(),m.current=A.chatId;const Z=Gs(p.file);y(p,{status:"uploading",error:void 0});let N=p.draft.upload?await e.getUpload(t,{chatId:A.chatId,uploadId:p.draft.upload.id},{signal:l}):await e.startUpload(t,{chatId:A.chatId,fileId:p.draft.fileId,name:p.file.name,contentType:Z,sizeBytes:p.file.size},{signal:l});if(x(),y(p,{upload:N}),N.name!==p.file.name||N.contentType!==Z||N.sizeBytes!==p.file.size)throw new Error("上传文件身份不一致");if(N.status!=="ready"){if(N=await e.getUpload(t,{chatId:A.chatId,uploadId:N.id},{signal:l}),x(),N.status!=="uploading"||!Number.isSafeInteger(N.partSize)||N.partSize<=0||N.partSize>1<<20)throw new Error("当前上传状态无法继续,请重新选择文件");const q=new Set(N.completedParts),te=Math.ceil(p.file.size/N.partSize);for(let ie=0;ie<te;ie+=1){if(x(),!q.has(ie)){const W=await Bn(p.file.slice(ie*N.partSize,Math.min(p.file.size,(ie+1)*N.partSize)),l);x(),await e.uploadPart(t,{chatId:A.chatId,uploadId:N.id,part:ie,bytes:W},{signal:l}),x(),q.add(ie)}y(p,{progress:q.size/Math.max(te,1)})}y(p,{status:"completing"}),N=await e.completeUpload(t,{chatId:A.chatId,uploadId:N.id},{signal:l}),x()}if(N.status!=="ready"||!N.content)throw new Error("上传尚未完成");y(p,{status:"ready",progress:1,upload:N})}catch(A){y(p,{status:l.aborted?"paused":"failed",error:l.aborted?void 0:Dt(A)})}},b=p=>{if(_){if(p.length+i.current.size>32){s.setError("每条消息最多包含 32 个附件或文本片段");return}for(const l of p){const x={id:Fe(),fileId:Fe(),name:l.name,size:l.size,status:"queued",progress:0,previewUrl:Un(l)},A={draft:x,file:l,controller:new AbortController,scope:u};i.current.set(x.id,A),o.current=o.current.then(()=>H(A))}r([...i.current.values()].map(l=>l.draft))}},z=p=>{const l=i.current.get(p);!l||!["paused","failed"].includes(l.draft.status)||(l.controller=new AbortController,y(l,{status:"queued"}),o.current=o.current.then(()=>H(l)))},$=p=>{const l=i.current.get(p);l?.controller.abort(),us(l?.draft.previewUrl),i.current.delete(p),r([...i.current.values()].map(x=>x.draft))},D=p=>i.current.get(p)?.controller.abort(),k=n.flatMap(p=>{const l=p.upload;if(p.status!=="ready"||!l?.content)return[];const x=Fn(l.contentType);return[{id:p.id,kind:x,name:l.name,media:{contentRef:l.content.contentRef,contentType:l.contentType,sizeBytes:l.content.sizeBytes,digestSha256:l.content.digestSha256}}]});return{enabled:_,drafts:n,parts:k,pending:n.some(p=>p.status!=="ready"),add:b,retry:z,remove:$,pause:D,clear:M}}function qn({attachments:t,onOpenChange:e,open:s,triggerRef:n}){const r=f.useRef(null),i=f.useRef(null);f.useEffect(()=>{if(!s)return;const u=c=>{const m=c.target;m instanceof Node&&!r.current?.contains(m)&&e(!1)};return document.addEventListener("pointerdown",u),()=>{document.removeEventListener("pointerdown",u)}},[e,s]);const o=u=>{t.add(Array.from(u.files??[])),u.value="",e(!1)};return a.jsxs("div",{className:"make-ai-assistant__attachment-composer",ref:r,children:[a.jsx("button",{"aria-expanded":s,"aria-haspopup":"menu","aria-label":"添加附件",className:"make-ai-assistant__attachment-trigger",ref:n,title:"添加附件",type:"button",onClick:()=>e(!s),children:a.jsx(yt,{"aria-hidden":"true",className:"make-ai-assistant__attachment-trigger-icon"})}),s?a.jsx("div",{"aria-label":"附件选项",className:"make-ai-assistant__attachment-menu",role:"menu",children:a.jsxs("button",{role:"menuitem",type:"button",onClick:()=>i.current?.click(),children:[a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M12 15V4M7.5 8.5 12 4l4.5 4.5"}),a.jsx("path",{d:"M5 14v5h14v-5"})]}),a.jsx("span",{children:"上传文件或图片"})]})}):null,a.jsx("input",{"aria-label":"上传文件或图片",hidden:!0,multiple:!0,ref:i,type:"file",onChange:u=>o(u.currentTarget)})]})}function Kn({attachments:t,visible:e}){const[s,n]=f.useState(),r=f.useRef(null),i=f.useRef(null),o=f.useCallback(()=>{n(void 0),i.current?.focus()},[]);if(f.useEffect(()=>{if(!s)return;const c=m=>{m.key==="Escape"&&(m.preventDefault(),m.stopImmediatePropagation(),o())};return document.addEventListener("keydown",c,!0),()=>document.removeEventListener("keydown",c,!0)},[o,s]),f.useEffect(()=>{e||n(void 0)},[e]),!t.drafts.length)return null;const u=typeof document>"u"?void 0:r.current?.closest(".make-ai-assistant")??document.body;return a.jsxs("div",{"aria-label":"待发送附件",className:"make-ai-assistant__attachment-drafts",ref:r,children:[a.jsx("ul",{children:t.drafts.map(c=>a.jsxs("li",{"data-status":c.status,children:[c.previewUrl?a.jsx("button",{"aria-label":`预览附件 ${c.name}`,className:"make-ai-assistant__attachment-draft-preview-button",type:"button",onClick:m=>{i.current=m.currentTarget,n(c)},children:a.jsx("img",{alt:"",className:"make-ai-assistant__attachment-draft-preview",src:c.previewUrl})}):a.jsx("span",{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-file",children:a.jsxs("svg",{viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M6 3h8l4 4v14H6z"}),a.jsx("path",{d:"M14 3v5h5M9 13h6M9 16h6"})]})}),a.jsxs("span",{className:"make-ai-assistant__attachment-draft-details",children:[a.jsx("span",{className:"make-ai-assistant__attachment-draft-name",title:c.name,children:c.name}),a.jsx("span",{className:"make-ai-assistant__attachment-draft-status",children:c.status==="ready"?"已上传":c.status==="completing"?"校验中":c.status==="paused"?"已暂停":c.status==="failed"?"上传失败":`${Math.round(c.progress*100)}%`})]}),c.error?a.jsx("span",{role:"alert",children:c.error}):null,c.status==="failed"||c.status==="paused"?a.jsx("button",{type:"button",onClick:()=>t.retry(c.id),children:"重试上传"}):null,c.status==="uploading"?a.jsx("button",{type:"button",onClick:()=>t.pause(c.id),children:"暂停上传"}):null,a.jsx("button",{"aria-label":`移除附件 ${c.name}`,className:"make-ai-assistant__attachment-draft-remove",type:"button",onClick:()=>{s?.id===c.id&&o(),t.remove(c.id)},children:a.jsx(Ot,{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-remove-icon"})})]},c.id))}),s?.previewUrl&&u?gs.createPortal(a.jsx("div",{className:"make-ai-assistant__attachment-preview-backdrop",onPointerDown:c=>{c.target===c.currentTarget&&o()},children:a.jsxs("div",{"aria-label":`预览附件 ${s.name}`,"aria-modal":"true",className:"make-ai-assistant__attachment-preview-dialog",role:"dialog",onKeyDown:c=>{c.key==="Tab"&&c.preventDefault()},children:[a.jsx("button",{"aria-label":`关闭图片预览 ${s.name}`,autoFocus:!0,className:"make-ai-assistant__attachment-preview-close",type:"button",onClick:o,children:a.jsx(Ot,{"aria-hidden":"true",className:"make-ai-assistant__attachment-preview-close-icon"})}),a.jsx("img",{alt:s.name,src:s.previewUrl})]})}),u):null]})}const Wn=t=>`${t}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,Gn="Make",Xn=["总结当前页面数据","找出需要关注的记录","列出我有权限查看的数据对象"],Yn=72,Zn=192,Xs=(t,e)=>e??`${t?.trim()||Gn} AI 助手`,Jn=t=>t??Xn,er=t=>typeof t=="number"&&Number.isFinite(t)&&t>0?t:void 0,tr=t=>typeof t=="number"?Number.isFinite(t)?`${t}px`:void 0:t?.trim()||void 0;class G extends Error{}const gt=(t,e)=>{if(!(typeof t!="object"||t===null))return t[e]},sr=t=>{const e=gt(t,"status");return typeof e=="number"?e:gt(gt(t,"response"),"status")},ar=t=>{const e=gt(t,"code"),s=sr(t),n=t instanceof Error?t.message:"",r=[e,n].filter(c=>typeof c=="string").join(" ").toLowerCase(),o=globalThis.navigator?.onLine===!1||/network|fetch|timeout|offline|connection|网络|连接|超时/.test(r),u=typeof s=="number"&&s>=500||/server|service|服务器|服务异常/.test(r);return o?{actionLabel:"重新连接",description:"请检查网络后再试。",kind:"network",label:"网络连接",title:"网络连接不可用"}:u?{actionLabel:"重新加载",description:"服务暂时未能响应,请稍后重试。",kind:"service",label:"服务异常",title:"服务暂时不可用"}:{actionLabel:"重新加载",description:"请稍后重试;若问题持续出现,请联系管理员。",kind:"unknown",label:"加载异常",title:"暂时无法加载对话"}},fs=t=>{try{const e=t?.return?.();if(!e)return;Promise.resolve(e).catch(s=>{console.error("[make-ai-assistant] transport iterator close failed",{errorType:s instanceof Error?s.name:typeof s})})}catch(e){console.error("[make-ai-assistant] transport iterator close failed",{errorType:e instanceof Error?e.name:typeof e})}},nr=async t=>{if(globalThis.navigator?.clipboard?.writeText){await globalThis.navigator.clipboard.writeText(t);return}if(typeof document>"u"||!document.body)throw new Error("Clipboard API is unavailable");const e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="fixed",e.style.inset="0 auto auto 0",e.style.opacity="0",document.body.append(e),e.select();const s=document.execCommand("copy");if(e.remove(),!s)throw new Error("Clipboard copy failed")},Ys=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M12 2.8c.5 4.4 2.8 6.8 7.2 7.2-4.4.5-6.8 2.8-7.2 7.2-.5-4.4-2.8-6.8-7.2-7.2 4.4-.5 6.8-2.8 7.2-7.2Z"}),a.jsx("path",{d:"M18.3 16.1c.2 1.8 1.2 2.8 3 3-1.8.2-2.8 1.2-3 3-.2-1.8-1.2-2.8-3-3 1.8-.2 2.8-1.2 3-3Z"})]}),rr=()=>a.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:a.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),ir=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),a.jsx("path",{d:"M4 4v4h4"}),a.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),a.jsx("path",{d:"M20 20v-4h-4"})]}),or=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M12 4v11"}),a.jsx("path",{d:"m7 10 5 5 5-5"}),a.jsx("path",{d:"M5 20h14"})]}),ms=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"m4 4 17 8-17 8 3-8-3-8Z"}),a.jsx("path",{d:"M7 12h14"})]}),Zs=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),a.jsx("path",{d:"M4 4v4h4"}),a.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),a.jsx("path",{d:"M20 20v-4h-4"})]}),cr=()=>a.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[a.jsx("circle",{cx:"12",cy:"12",r:"8"}),a.jsx("path",{d:"M12 8v4.5"}),a.jsx("path",{d:"M12 16h.01"})]}),_t=({className:t=""})=>a.jsx("span",{className:`make-ai-assistant__avatar ${t}`.trim(),"aria-hidden":"true",children:a.jsx(Ys,{})}),lr=({src:t})=>t?a.jsx("span",{className:"make-ai-assistant__user-avatar","aria-hidden":"true",children:a.jsx("img",{alt:"",src:t})}):null,dr=({userAvatarUrl:t,userName:e})=>{const s=e?.trim();return!s&&!t?null:a.jsxs("div",{className:"make-ai-assistant__message-identity",children:[s?a.jsx("span",{className:"make-ai-assistant__message-sender",children:s}):null,a.jsx(lr,{src:t})]})},Ct=t=>{const e=t.trim();if(!(!e.startsWith("|")||!e.endsWith("|")))return e.slice(1,-1).split("|").map(s=>s.trim())},ur=t=>t.length>0&&t.every(e=>/^:?-{3,}:?$/.test(e)),fr=(t,e)=>{const s=Ct(t[e]??""),n=Ct(t[e+1]??"");if(!s||!n||s.length!==n.length||!ur(n))return;const r=[];let i=e+2;for(;i<t.length;){const o=Ct(t[i]??"");if(!o||o.length!==s.length)break;r.push(o),i+=1}return{headers:s,lastIndex:i-1,rows:r}},mr=t=>{const e=[],s=[],n=[],r=[],i=t.replace(/\r\n?/g,`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("react"),ke=require("./index.cjs"),j=require("./conversation-BpmWa2VL.cjs"),ut=require("./conversation-management-f1y0yRvt.cjs"),Ft=require("react-dom"),Pt=t=>t?.trim()||void 0,fe=(t,s)=>Pt(t)??s,pt=t=>{const s=Pt(t?.primary);if(s)return{"--make-ai-theme-primary":s,"--make-ai-theme-primary-hover":fe(t?.primaryHover,"color-mix(in srgb, var(--make-ai-theme-primary) 84%, #15233d)"),"--make-ai-theme-on-primary":fe(t?.onPrimary,"#fcfcff"),"--make-ai-theme-bg":fe(t?.background,"color-mix(in srgb, var(--make-ai-theme-primary) 2%, #fcfcff)"),"--make-ai-theme-surface":fe(t?.surface,"color-mix(in srgb, var(--make-ai-theme-primary) 4%, var(--make-ai-theme-bg))"),"--make-ai-theme-surface-strong":fe(t?.surfaceStrong,"color-mix(in srgb, var(--make-ai-theme-primary) 8%, var(--make-ai-theme-bg))"),"--make-ai-theme-text":fe(t?.text,"color-mix(in srgb, var(--make-ai-theme-primary) 12%, #252631)"),"--make-ai-theme-text-secondary":fe(t?.textSecondary,"color-mix(in srgb, var(--make-ai-theme-text) 74%, var(--make-ai-theme-primary))"),"--make-ai-theme-border":fe(t?.border,"color-mix(in srgb, var(--make-ai-theme-primary) 14%, var(--make-ai-theme-bg))"),"--make-ai-theme-overlay":fe(t?.overlay,"color-mix(in srgb, var(--make-ai-theme-text) 88%, var(--make-ai-theme-primary))"),"--make-ai-theme-on-overlay":fe(t?.onOverlay,"#fcfcff")}},Nt=(t,s)=>!s||!c.isValidElement(t)||typeof t.type!="string"?t:c.cloneElement(t,{style:{...t.props.style,...s}});function Ut({artifact:t,context:s,fallback:a,onAction:o,onActionError:i,registry:l,theme:u}){const p=pt(u),d=ke.resolveArtifactTemplate(l,t,s);if(!d){const R=a?a(t):e.jsxs("section",{className:"make-ai-artifact make-ai-artifact--unsupported",role:"status",children:[e.jsx("strong",{children:"暂不支持展示此结果"}),e.jsxs("span",{children:["结果类型:",t.kind]})]});return Nt(R,p)}const v={context:s,onAction:o,onActionError:i,theme:u,themeStyle:p},S=d.template.render(t,s,v);return Nt(S,p)}const xe=(t,s,a)=>{if(t==null||t==="")return"—";if(typeof t=="boolean")return t?"是":"否";if(typeof t!="number")return`${t}${s?.unit??""}`;const o=s?.precision,i={maximumFractionDigits:o??2,minimumFractionDigits:o};s?.style==="currency"&&s.currency?(i.style="currency",i.currency=s.currency):s?.style==="percent"&&(i.style="percent");try{const l=s?.style==="percent"?t/100:t;return`${new Intl.NumberFormat(a,i).format(l)}${s?.unit??""}`}catch{return`${t}${s?.unit??""}`}},Dt=t=>{let s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;for(const o of t)s=Math.min(s,o),a=Math.max(a,o);return Number.isFinite(s)&&Number.isFinite(a)?{min:s,max:a}:{min:0,max:0}},Kt=(t,s,a)=>{if(!a.onAction)return;const o=l=>{console.error("[make-ai-assistant] host action error handler failed",{actionId:t.id,artifactId:s.artifact.id,errorType:l instanceof Error?l.name:typeof l,intent:t.intent})},i=l=>{if(a.onActionError){try{Promise.resolve(a.onActionError(l,t,s)).catch(o)}catch(u){o(u)}return}console.error("[make-ai-assistant] host action failed",{actionId:t.id,artifactId:s.artifact.id,errorType:l instanceof Error?l.name:typeof l,intent:t.intent})};try{Promise.resolve(a.onAction(t,s)).catch(i)}catch(l){i(l)}},Oe=(t,s)=>t.actions?.length&&s.onAction?e.jsx("div",{className:"make-ai-artifact__actions",children:t.actions.map(a=>e.jsxs("button",{className:`make-ai-artifact__action make-ai-artifact__action--${a.appearance??"link"}`,type:"button",onClick:()=>Kt(a,{artifact:t,context:s.context},s),children:[a.label,e.jsx("span",{"aria-hidden":"true",children:"→"})]},a.id))}):null,Fe=(t,s,a="",o)=>e.jsxs("section",{"aria-label":t.title??`${t.kind} result`,className:`make-ai-artifact ${a}`.trim(),"data-artifact-density":t.presentation?.density,"data-artifact-kind":t.kind,style:o,children:[t.title?e.jsx("h4",{className:"make-ai-artifact__title",children:t.title}):null,t.summary?e.jsx("p",{className:"make-ai-artifact__summary",children:t.summary}):null,s]}),es=({artifact:t,renderContext:s})=>{const a=t.data.delta,o=a?xe(a.value,a.format==="percent"?{style:"percent"}:void 0,s.context.locale):void 0;return Fe(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__metric-value",children:xe(t.data.value,t.data.format,s.context.locale)}),a?e.jsxs("div",{className:`make-ai-artifact__delta make-ai-artifact__delta--${a.direction??"flat"}`,children:[e.jsx("span",{"aria-hidden":"true",children:a.direction==="up"?"↗":a.direction==="down"?"↘":"→"}),e.jsx("span",{children:o}),a.label?e.jsx("span",{children:a.label}):null]}):null,t.data.context?e.jsx("p",{className:"make-ai-artifact__context",children:t.data.context}):null,Oe(t,s)]}),"make-ai-artifact--metric",s.themeStyle)},ts=({artifact:t,renderContext:s})=>Fe(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__comparison",children:t.data.items.map(a=>e.jsxs("div",{className:"make-ai-artifact__comparison-item",children:[e.jsx("span",{children:a.label}),e.jsx("strong",{children:xe(a.value,a.format,s.context.locale)}),a.hint?e.jsx("small",{children:a.hint}):null]},a.id))}),Oe(t,s)]}),"make-ai-artifact--comparison",s.themeStyle),ss=({artifact:t,renderContext:s})=>{const a=t.data.series.flatMap(u=>u.points.map(p=>p.y)),{max:o,min:i}=Dt(a),l=o-i||1;return Fe(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__trend",children:t.data.series.map(u=>e.jsxs("div",{className:"make-ai-artifact__trend-series",children:[e.jsx("div",{className:"make-ai-artifact__trend-label",children:u.label}),e.jsx("div",{className:"make-ai-artifact__trend-bars",children:u.points.map((p,d)=>{const v=18+(p.y-i)/l*70;return e.jsxs("div",{className:"make-ai-artifact__trend-point",children:[e.jsx("span",{"aria-label":`${p.x}: ${xe(p.y,u.format,s.context.locale)}`,className:"make-ai-artifact__trend-bar",role:"img",style:{height:`${v}%`},title:`${p.x}: ${xe(p.y,u.format,s.context.locale)}`}),e.jsx("small",{children:p.x})]},`${p.x}-${d}`)})})]},u.id))}),Oe(t,s)]}),"make-ai-artifact--trend",s.themeStyle)},as=({artifact:t,renderContext:s})=>{const{max:a}=Dt(t.data.items.map(i=>Math.abs(i.value))),o=Math.max(a,1);return Fe(t,e.jsxs(e.Fragment,{children:[e.jsx("ol",{className:"make-ai-artifact__ranking",children:t.data.items.map((i,l)=>e.jsxs("li",{children:[e.jsx("span",{className:"make-ai-artifact__rank",children:l+1}),e.jsxs("span",{className:"make-ai-artifact__ranking-label",children:[e.jsx("span",{children:i.label}),i.description?e.jsx("small",{children:i.description}):null]}),e.jsx("span",{className:"make-ai-artifact__ranking-track","aria-hidden":"true",children:e.jsx("span",{style:{width:`${Math.abs(i.value)/o*100}%`}})}),e.jsx("strong",{children:xe(i.value,i.format,s.context.locale)})]},i.id))}),Oe(t,s)]}),"make-ai-artifact--ranking",s.themeStyle)},ns=(t,s)=>s.action??{id:`open-${s.id}`,label:s.title??s.id,intent:"open-record",target:{entityKey:t.data.entity.key,recordId:s.id}},rs=({artifact:t,renderContext:s})=>Fe(t,e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"make-ai-artifact__record-list",children:t.data.records.length===0?e.jsx("p",{className:"make-ai-artifact__empty",children:"没有符合条件的记录"}):t.data.records.map(a=>{const o=ns(t,a),i=e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:a.title??a.id}),e.jsx("span",{className:"make-ai-artifact__record-values",children:t.data.columns.map(l=>e.jsxs("span",{children:[e.jsx("small",{children:l.label}),xe(a.values[l.key],l.format,s.context.locale)]},l.key))}),s.onAction?e.jsx("span",{"aria-hidden":"true",children:"›"}):null]});return s.onAction?e.jsx("button",{className:"make-ai-artifact__record",type:"button",onClick:()=>Kt(o,{artifact:t,context:s.context},s),children:i},a.id):e.jsx("div",{className:"make-ai-artifact__record",children:i},a.id)})}),t.data.total!==void 0?e.jsxs("p",{className:"make-ai-artifact__record-total",children:["共 ",t.data.total," 条"]}):null,Oe(t,s)]}),"make-ai-artifact--record-list",s.themeStyle),is=({artifact:t,renderContext:s})=>Fe(t,e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`make-ai-artifact__notice make-ai-artifact__notice--${t.data.tone}`,children:[e.jsx("span",{"aria-hidden":"true",children:t.data.tone==="success"?"✓":t.data.tone==="warning"?"!":t.data.tone==="danger"?"×":"i"}),e.jsx("p",{children:t.data.body})]}),Oe(t,s)]}),"make-ai-artifact--notice",s.themeStyle),Le=(t,s,a)=>({id:t,kinds:[s],priority:0,render:a}),os=[Le("platform.metric.default","metric",(t,s,a)=>e.jsx(es,{artifact:t,renderContext:a})),Le("platform.comparison.default","comparison",(t,s,a)=>e.jsx(ts,{artifact:t,renderContext:a})),Le("platform.trend.default","trend",(t,s,a)=>e.jsx(ss,{artifact:t,renderContext:a})),Le("platform.ranking.default","ranking",(t,s,a)=>e.jsx(as,{artifact:t,renderContext:a})),Le("platform.record-list.default","record-list",(t,s,a)=>e.jsx(rs,{artifact:t,renderContext:a})),Le("platform.notice.default","notice",(t,s,a)=>e.jsx(is,{artifact:t,renderContext:a}))],Ht=ke.createArtifactTemplateRegistry(os).templates,Bt=(t=Ht)=>ke.createArtifactTemplateRegistry(t),se=({children:t,...s})=>e.jsx("svg",{"aria-hidden":"true",fill:"none",focusable:"false",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.8",viewBox:"0 0 24 24",...s,children:t}),vt=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M12 5v14M5 12h14"})}),cs=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"m5 12 4.5 4.5L19 7"})}),ct=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),Mt=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M4 7h16M9 7V5h6v2M7 7l1 13h8l1-13M10 11v5M14 11v5"})}),ls=t=>e.jsxs(se,{...t,children:[e.jsx("path",{d:"m4 20 4.2-1 10.7-10.7a2.1 2.1 0 0 0-3-3L5.2 16 4 20Z"}),e.jsx("path",{d:"m13.8 7.3 3 3"})]}),ds=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M7 10v10H4V10h3ZM7 20h9.4a2 2 0 0 0 2-1.6l1.1-5A2 2 0 0 0 17.6 11H14l.5-3.2A2.5 2.5 0 0 0 12 5l-5 5v10Z"})}),us=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M7 4v10H4V4h3ZM7 4h9.4a2 2 0 0 1 2 1.6l1.1 5a2 2 0 0 1-1.9 2.4H14l.5 3.2A2.5 2.5 0 0 1 12 19l-5-5V4Z"})}),ms=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M9 4h6l-1 6 3 3v2H7v-2l3-3-1-6ZM12 15v5"})}),hs=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M20 11a8 8 0 1 0 1.3 4.4M20 5v6h-6"})}),fs=t=>e.jsxs(se,{...t,children:[e.jsx("path",{d:"M12 4 3.5 19h17L12 4Z"}),e.jsx("path",{d:"M12 9v4M12 16h.01"})]}),ps=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M9 4H4v5M4 4l6 6M15 4h5v5M20 4l-6 6M9 20H4v-5M4 20l6-6M15 20h5v-5M20 20l-6-6"})}),vs=t=>e.jsxs(se,{...t,children:[e.jsx("rect",{height:"12",rx:"2",width:"12",x:"8",y:"8"}),e.jsx("path",{d:"M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"})]}),gs=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"m6 9 6 6 6-6"})}),_s=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M9 4H4v5M15 4h5v5M9 20H4v-5M15 20h5v-5"})}),bs=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"M9 6h11M9 12h11M9 18h11M4 6h.01M4 12h.01M4 18h.01"})}),ys=t=>e.jsx(se,{...t,children:e.jsx("path",{d:"m6 15 6-6 6 6"})}),$e=()=>globalThis.crypto.randomUUID(),Ct=1e3,mt=(t,s)=>t?.chatId===s.chatId&&t.revision>s.revision?t:s,gt=t=>{const s=t,a=s?.status??s?.response?.status;return a===410||s?.code==="AI_UPLOAD_EXPIRED"?"上传已过期,请移除后重新选择文件":a===409?"数据已变化或对话仍在运行,请刷新后重试":a===401||s?.code==="AI_AUTH_REQUIRED"||s?.code==="AI_AUTH_EXPIRED"?"登录已失效,请重新登录":a===403?"当前账号无权访问该对话":a===404?"对话或回答已不可见,请刷新列表":s?.message?.startsWith("输入内容过长")?s.message:"操作未完成,请重试或刷新对话"};function xs(t,s){const a=s.features?.conversationManagement===!0,o=a?s.scopeKey?.(t)??t.app.id:"",i=c.useRef(o);i.current=o;const l=c.useRef(o),[u,p]=c.useState(j.createAssistantConversationState),d=c.useRef(u),v=r=>{const m=typeof r=="function"?r(d.current):r;d.current=m,p(m)},[S,R]=c.useState([]),[O,F]=c.useState(),b=c.useRef(void 0),[B,L]=c.useState(""),[D,k]=c.useState(void 0),[f,n]=c.useState(!1),[_,A]=c.useState(!1),[G,I]=c.useState(a),[z,J]=c.useState(!1),[ae,Z]=c.useState(),[ce,me]=c.useState([]),[je,Pe]=c.useState([]),P=c.useRef(new Set),H=c.useRef(new Map),$=c.useRef(0),X=c.useRef(0),re=c.useRef(0),pe=c.useRef(void 0),le=c.useRef(void 0),Ie=c.useRef(new Map),T=(r,m=o)=>X.current===r&&i.current===m,ee=()=>{const r=new AbortController;return P.current.add(r),r},Y=r=>P.current.delete(r),Q=r=>{const m=r?mt(b.current,r):void 0;b.current=m,F(m)},Ue=r=>{R(m=>m.map(g=>g.chatId===r.chatId?mt(g,r):g))},De=r=>{R(m=>m.filter(g=>g.chatId!==r))},Ge=()=>{re.current+=1},ie=()=>{for(const r of H.current.values())r.abort();H.current.clear()},q=r=>{r instanceof Error&&r.name==="AbortError"||(console.warn("[make-ai-assistant] conversation operation failed",{errorType:r instanceof Error?r.name:typeof r}),Z(gt(r)))},oe=async r=>{if(!a||!s.listConversations)return;const m=X.current,g=++re.current,y=ee();try{const w=await s.listConversations(t,{cursor:r},{signal:y.signal});if(!T(m)||y.signal.aborted||g!==re.current)return;R(C=>{const x=new Map(C.map(N=>[N.chatId,N])),M=w.chats.map(N=>mt(x.get(N.chatId),N));return[...new Map([...r?C:[],...M].map(N=>[N.chatId,N])).values()]}),L(w.nextCursor)}catch(w){T(m)&&!y.signal.aborted&&g===re.current&&q(w)}finally{Y(y),T(m)&&g===re.current&&I(!1)}},_e=async r=>{if(!s.getConversation)return;const m=X.current,g=ee();try{const y=await s.getConversation(t,{chatId:r},{signal:g.signal});if(!T(m)||g.signal.aborted||y.chatId!==r)return;Ue(y),b.current?.chatId===r&&Q(y)}catch(y){T(m)&&!g.signal.aborted&&q(y)}finally{Y(g)}},we=async(r,m,g)=>{const y=X.current,w=$.current;let C;try{for await(const x of r){if(!T(y)||m.signal.aborted||w!==$.current||b.current?.chatId!==g)return;const M=j.parseAssistantEvent(x);if(M.type==="response.accepted"||M.type==="response.state"){C=M.responseId;const N=H.current.get(C);if(N&&N!==m){M.type==="response.accepted"&&v(U=>j.reduceAssistantEvent(U,M)),m.abort();return}H.current.set(C,m)}v(N=>j.reduceAssistantEvent(N,M)),M.type==="response.accepted"&&_e(g),M.type==="response.terminal"&&(me(N=>N.filter(U=>U!==M.responseId)),oe())}}catch(x){T(y)&&!m.signal.aborted&&w===$.current&&(q(x),C||v(M=>({...M,status:Object.values(M.responses??{}).some(N=>!ut.isResponseTerminal(N))?"streaming":"error"})))}finally{C&&H.current.get(C)===m&&H.current.delete(C),Y(m)}},be=async(r,m,g,y)=>{if(!s.getResponse||!s.watchResponse)return;const w=new Set(r.filter(x=>x.role==="assistant"&&x.persistent).map(x=>x.responseId)),C=[...new Map(r.filter(x=>x.role==="user"&&x.responseId&&!w.has(x.responseId)).map(x=>[x.responseId,x.cursor])).entries()].slice(-20);for(const[x,M]of C){if(!T(y)||g!==$.current)return;if(H.current.has(x))continue;const N=ee();try{const U=await s.getResponse(t,{chatId:m,responseId:x},{signal:N.signal});if(!T(y)||N.signal.aborted||g!==$.current||H.current.has(x))continue;v(ve=>j.reduceAssistantEvent(ve,ut.isResponseTerminal(U)?{type:"response.snapshot",snapshot:U}:{type:"response.state",chatId:m,responseId:x,status:U.status})),U.status==="failed"||U.status==="cancelled"?v(ve=>j.reduceAssistantEvent(ve,{type:"response.terminal",chatId:m,responseId:x,status:U.status})):(H.current.set(x,N),we(s.watchResponse(t,{chatId:m,responseId:x,historyCursor:M},{signal:N.signal}),N,m))}catch(U){T(y)&&!N.signal.aborted&&q(U)}finally{H.current.get(x)!==N&&Y(N)}}},Me=async r=>{const m=++$.current,g=X.current,y=ee();ie(),Z(void 0),I(!0),me([]),le.current=void 0,Q(r),v({messages:[],status:"idle",threadId:r.chatId}),k(void 0),n(!1),A(!1);try{const[w,C]=await Promise.all([s.getConversation(t,{chatId:r.chatId},{signal:y.signal}),s.loadConversation(t,{threadId:r.chatId,cursor:void 0,signal:y.signal})]);if(!T(g)||y.signal.aborted||m!==$.current)return;if(w.chatId!==r.chatId||C.threadId!==r.chatId)throw new Error("Conversation mismatch");Q(w),v(j.createAssistantConversationState(C)),k(C.nextCursor??-1),n(C.hasMore??!1),be(C.messages,r.chatId,m,g)}catch(w){T(g)&&!y.signal.aborted&&m===$.current&&q(w)}finally{Y(y),T(g)&&m===$.current&&I(!1)}},Ce=async()=>{if(b.current)return b.current;if(pe.current??={requestId:$e()},pe.current.promise)return pe.current.promise;const r=X.current,m=$.current,g=ee(),y=pe.current;return J(!0),y.promise=s.createConversation(t,{requestId:y.requestId},{signal:g.signal}).then(w=>{if(!T(r)||g.signal.aborted||m!==$.current)throw Object.assign(new Error("Stale create"),{name:"AbortError"});return pe.current=void 0,Q(w),v({messages:[],status:"idle",threadId:w.chatId}),oe(),w}).finally(()=>{Y(g),y.promise=void 0,T(r)&&J(!1)}),y.promise},Ke=async()=>{if(!(z||pe.current?.promise)){$.current+=1,ie(),Q(void 0),Z(void 0),le.current=void 0,v(j.createAssistantConversationState()),n(!1),k(void 0);try{await Ce()}catch(r){q(r)}}},He=async r=>{const m=ee();le.current=r,Z(void 0),d.current.messages.some(g=>g.id===r.message.id)||v(g=>j.appendUserMessage(g,r.message)),await we(s.run(r,{signal:m.signal}),m,r.threadId)},he=async(r,m)=>{if(!(!r.trim()&&!m?.length))try{const g=await Ce(),y={id:$e(),content:r,...m?{parts:m}:{}};await He({threadId:g.chatId,message:y,context:t,capabilities:{artifactSchemaVersions:[],artifactKinds:[],templates:[]}})}catch(g){q(g)}},Xe=async()=>{const r=le.current;if(!r||r.threadId!==b.current?.chatId){b.current&&await Me(b.current);return}const m=d.current.messages.find(g=>g.id===r.message.id);if(m?.responseId&&s.watchResponse){const g=m.responseId;if(H.current.has(g))return;const y=ee();H.current.set(g,y),Z(void 0),await we(s.watchResponse(t,{chatId:r.threadId,responseId:g,historyCursor:m.cursor},{signal:y.signal}),y,r.threadId)}else await He(r)},Je=async(r=d.current.activeRunId)=>{const m=b.current;if(!m||!r||!s.cancelResponse||ce.includes(r))return;const g=X.current,y=$.current,w=ee();me(C=>[...C,r]),Z(void 0);try{const C=await s.cancelResponse(t,{chatId:m.chatId,responseId:r},{signal:w.signal});if(!T(g)||y!==$.current)return;if(ut.isResponseTerminal(C))v(x=>j.reduceAssistantEvent(x,{type:"response.snapshot",snapshot:C})),me(x=>x.filter(M=>M!==r));else if(!H.current.has(r)&&s.watchResponse){const x=ee();H.current.set(r,x),we(s.watchResponse(t,{chatId:m.chatId,responseId:r},{signal:x.signal}),x,m.chatId)}}catch(C){T(g)&&y===$.current&&(q(C),me(x=>x.filter(M=>M!==r)))}finally{Y(w)}},Ye=async(r,m=b.current)=>{if(!m||z)return!1;const g=X.current,y=ee();J(!0),Z(void 0);try{const w=await s.updateConversation(t,{chatId:m.chatId,expectedRevision:m.revision,...r},{signal:y.signal});return T(g)?(Ge(),Ue(w),b.current?.chatId===w.chatId&&Q(w),!0):!1}catch(w){if(T(g)){q(w);try{const C=await s.getConversation(t,{chatId:m.chatId},{signal:y.signal});T(g)&&b.current?.chatId===m.chatId&&Q(C)}catch{}oe()}return!1}finally{Y(y),T(g)&&J(!1)}},Qe=async(r=b.current)=>{if(!r||z)return!1;const m=X.current,g=ee();J(!0),Z(void 0);try{return await s.deleteConversation(t,{chatId:r.chatId,expectedRevision:r.revision},{signal:g.signal}),T(m)?(Ge(),De(r.chatId),b.current?.chatId===r.chatId&&($.current+=1,ie(),Q(void 0),v(j.createAssistantConversationState())),!0):!1}catch(y){return T(m)&&q(y),!1}finally{Y(g),T(m)&&J(!1)}},et=async(r,m,g="",y="")=>{const w=b.current;if(!w||!r.persistent||!s.setFeedback||je.includes(r.id))return;const C={chatId:w.chatId,messageId:r.id,rating:m,...g?{reason:g}:{},...y?{comment:y}:{}},x=Ie.current.get(r.id),{requestId:M,...N}=x??{requestId:""},U=x&&JSON.stringify(N)===JSON.stringify(C)?x:{...C,requestId:$e()};Ie.current.set(r.id,U);const ve=X.current,Ne=$.current,tt=ee();Pe(de=>[...de,r.id]),Z(void 0);try{const de=await s.setFeedback(t,U,{signal:tt.signal});return!T(ve)||Ne!==$.current||Ie.current.get(r.id)!==U?void 0:(v(Se=>({...Se,messages:Se.messages.map(h=>h.id===r.id&&de.revision>=(h.feedback?.revision??0)?{...h,feedback:de}:h)})),Ie.current.delete(r.id),!0)}catch(de){return T(ve)&&Ne===$.current&&q(de),!1}finally{Y(tt),T(ve)&&Pe(de=>de.filter(Se=>Se!==r.id))}},Ee=async()=>{if(!b.current||!f||G)return;const r=X.current,m=$.current,g=b.current,y=ee();I(!0);try{const w=await s.loadConversation(t,{threadId:g.chatId,cursor:D,signal:y.signal});if(!T(r)||m!==$.current)return;const C=j.createAssistantConversationState(w),x=[...new Map([...d.current.messages,...C.messages].map(U=>[U.id,U])).values()];let M=0;const N=[];for(const U of x.slice(-200).reverse()){if(M+=[...U.content].length,M>1e6)break;N.unshift(U)}N.length<x.length&&A(!0),v(U=>({...U,messages:N})),k(w.nextCursor??D),n(w.hasMore??!1),be(w.messages,g.chatId,m,r)}catch(w){T(r)&&q(w)}finally{Y(y),T(r)&&I(!1)}},Be=[...new Set([...S.filter(r=>r.titlePending).map(r=>r.chatId),...O?.titlePending?[O.chatId]:[]])].sort().join("\0");c.useEffect(()=>{if(!a||!s.getConversation||!Be)return;const r=X.current,m=ee(),g=Be.split("\0"),y=new Set;let w;console.debug("[make-ai-assistant] watching pending conversation titles",{count:g.length});const C=async()=>{await Promise.all(g.map(async x=>{if(!y.has(x))try{const M=await s.getConversation(t,{chatId:x},{signal:m.signal});if(!T(r)||m.signal.aborted||M.chatId!==x)return;Ue(M),b.current?.chatId===x&&Q(M)}catch(M){if(!T(r)||m.signal.aborted)return;console.warn("[make-ai-assistant] title metadata refresh failed",{errorType:M instanceof Error?M.name:typeof M});const N=M?.status;N===401?(m.abort(),q(M)):(N===403||N===404)&&(y.add(x),b.current?.chatId===x&&q(M))}})),T(r)&&!m.signal.aborted&&g.some(x=>!y.has(x))&&(w=setTimeout(()=>{C()},Ct))};return w=setTimeout(()=>{C()},Ct),()=>{clearTimeout(w),m.abort(),Y(m)}},[a,o,s,Be]),c.useEffect(()=>(X.current+=1,l.current=o,pe.current=void 0,le.current=void 0,Ie.current.clear(),Q(void 0),R([]),L(""),v(j.createAssistantConversationState()),Z(void 0),I(a),J(!1),me([]),Pe([]),a&&oe(),()=>{X.current+=1,$.current+=1;for(const r of P.current)r.abort();P.current.clear(),H.current.clear()}),[a,o,s]);const Ae=l.current===o;return{enabled:a,canEdit:s.features?.conversationEditing!==!1,state:Ae?u:j.createAssistantConversationState(),setState:v,chats:Ae?S:[],chat:Ae?O:void 0,listCursor:B,historyMore:f,historyTruncated:_,loading:!Ae||G,busy:z,error:Ae?ae:void 0,cancelling:ce,feedbackBusy:je,refresh:oe,select:Me,create:Ke,ensureChat:Ce,send:he,retry:Xe,stop:Je,update:Ye,remove:Qe,feedback:et,moreHistory:Ee,setError:Z}}const ks=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M5 5.5h14v10H9l-4 3v-13Z"}),e.jsx("path",{d:"M8 9h8M8 12h6"})]}),js=({anchor:t,label:s,onDismiss:a})=>{const[o,i]=c.useState();if(c.useLayoutEffect(()=>{const u=()=>{if(!t.isConnected){a();return}const p=t.getBoundingClientRect(),d=p.top>=48?"above":"below";i({left:p.left+p.width/2,placement:d,top:d==="above"?p.top-8:p.bottom+8})};return u(),window.addEventListener("resize",u),document.addEventListener("scroll",u,!0),()=>{window.removeEventListener("resize",u),document.removeEventListener("scroll",u,!0)}},[t,a]),!o||typeof document>"u")return null;const l=t.closest(".make-ai-assistant")??document.body;return Ft.createPortal(e.jsx("span",{className:"make-ai-assistant__conversation-tooltip","data-placement":o.placement,role:"tooltip",style:{left:o.left,top:o.top},children:s}),l)};function Is({id:t,manager:s,onDismiss:a,onNewConversation:o,triggerRef:i}){const[l,u]=c.useState(),[p,d]=c.useState(""),[v,S]=c.useState(),[R,O]=c.useState(),F=c.useRef(null),b=(n,_)=>{O(A=>A?.anchor===_&&A.label===n?A:{anchor:_,label:n})},B=n=>{O(_=>_?.anchor===n?void 0:_)},L=n=>({"data-tooltip":n,onBlur:_=>B(_.currentTarget),onFocus:_=>b(n,_.currentTarget),onPointerEnter:_=>b(n,_.currentTarget),onPointerLeave:_=>B(_.currentTarget)}),D=()=>{u(void 0),d("")},k=async n=>{const _=p.trim();_&&await s.update({title:_},n)&&D()},f=async n=>{await s.remove(n)&&S(void 0)};return c.useEffect(()=>{const n=_=>{const A=_.target;A instanceof Node&&(F.current?.contains(A)||i.current?.contains(A)||a())};return document.addEventListener("pointerdown",n),()=>{document.removeEventListener("pointerdown",n)}},[a,i]),e.jsxs("div",{"aria-label":"任务列表",className:"make-ai-assistant__conversation-controls",id:t,ref:F,role:"dialog",children:[e.jsxs("div",{className:"make-ai-assistant__conversation-heading",children:[e.jsx("span",{children:"最近对话"}),e.jsx("button",{"aria-label":"刷新任务列表",className:"make-ai-assistant__conversation-refresh",disabled:s.busy,type:"button",...L("刷新"),onClick:()=>{s.refresh()},children:e.jsx(hs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-refresh-icon"})})]}),e.jsxs("nav",{"aria-label":"对话列表",className:"make-ai-assistant__conversation-list",children:[s.chats.map(n=>{const _=l===n.chatId,A=v===n.chatId,G=n.title||"未命名对话";return e.jsxs("div",{className:"make-ai-assistant__conversation-row","data-active":s.chat?.chatId===n.chatId||void 0,"data-editing":_||A||void 0,children:[A?e.jsxs("div",{"aria-label":"确认删除对话",className:"make-ai-assistant__conversation-delete-confirmation",role:"group",children:[e.jsx(fs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-delete-confirmation-icon"}),e.jsxs("span",{className:"make-ai-assistant__conversation-delete-confirmation-message",children:["确认删除“",G,"”?"]}),e.jsx("button",{"aria-label":`确认删除:${G}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger make-ai-assistant__conversation-delete-confirmation-confirm",disabled:s.busy||!s.canEdit,type:"button",...L("确认删除"),onClick:()=>{f(n)},children:e.jsx(Mt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),e.jsx("button",{"aria-label":`取消删除:${G}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-delete-confirmation-cancel",disabled:s.busy,type:"button",...L("取消"),onClick:()=>S(void 0),children:e.jsx(ct,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):_?e.jsx("input",{"aria-label":"对话标题",autoFocus:!0,className:"make-ai-assistant__conversation-row-title-input",disabled:s.busy,maxLength:255,value:p,onChange:I=>d(I.currentTarget.value),onKeyDown:I=>{I.nativeEvent.isComposing||(I.key==="Escape"&&(I.preventDefault(),D()),I.key==="Enter"&&(I.preventDefault(),k(n)))}}):e.jsxs("button",{"aria-pressed":s.chat?.chatId===n.chatId,className:"make-ai-assistant__conversation-row-select",type:"button",onClick:()=>{a(),s.select(n)},children:[e.jsx(ks,{}),e.jsx("span",{children:G})]}),_?e.jsxs("div",{"aria-label":"修改标题操作",className:"make-ai-assistant__conversation-row-actions",role:"group",children:[e.jsx("button",{"aria-label":"确认修改标题",className:"make-ai-assistant__conversation-row-action",disabled:s.busy||!p.trim(),type:"button",...L("保存标题"),onClick:()=>{k(n)},children:e.jsx(cs,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),e.jsx("button",{"aria-label":"取消修改标题",className:"make-ai-assistant__conversation-row-action",disabled:s.busy,type:"button",...L("取消"),onClick:D,children:e.jsx(ct,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]}):A?null:e.jsxs("div",{className:"make-ai-assistant__conversation-row-actions",children:[e.jsx("button",{"aria-label":`${n.pinned?"取消置顶":"置顶"} ${G}`,"aria-pressed":n.pinned,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-pin",disabled:s.busy||!s.canEdit,type:"button",...L(n.pinned?"取消置顶":"置顶"),onClick:()=>{s.update({pinned:!n.pinned},n)},children:e.jsx(ms,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),e.jsx("button",{"aria-label":`修改标题:${G}`,className:"make-ai-assistant__conversation-row-action",disabled:s.busy||!s.canEdit,type:"button",...L("修改标题"),onClick:()=>{S(void 0),u(n.chatId),d(n.title)},children:e.jsx(ls,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})}),e.jsx("button",{"aria-label":`删除:${G}`,className:"make-ai-assistant__conversation-row-action make-ai-assistant__conversation-row-action--danger",disabled:s.busy,type:"button",...L("删除"),onClick:()=>{D(),S(n.chatId)},children:e.jsx(Mt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-row-action-icon"})})]})]},n.chatId)}),!s.loading&&!s.chats.length?e.jsx("p",{children:"暂无对话,发送消息即可新建"}):null,s.listCursor?e.jsx("button",{className:"make-ai-assistant__conversation-more",type:"button",onClick:()=>{s.refresh(s.listCursor)},children:"更多对话"}):null]}),s.chat&&(s.historyMore||s.historyTruncated||s.state.historyTruncated)?e.jsxs("div",{className:"make-ai-assistant__conversation-history-actions",children:[s.historyMore?e.jsx("button",{type:"button",disabled:s.loading,onClick:()=>{s.moreHistory()},children:"继续加载历史"}):null,s.historyTruncated||s.state.historyTruncated?e.jsx("p",{children:"当前展示有界消息窗口,可重新选择对话从头读取。"}):null]}):null,s.error?e.jsxs("div",{className:"make-ai-assistant__conversation-error",role:"alert",children:[e.jsx("span",{children:s.error}),e.jsx("button",{type:"button",onClick:()=>{s.retry()},children:"恢复对话"})]}):null,o?e.jsxs("button",{className:"make-ai-assistant__conversation-new",type:"button",onClick:o,children:[e.jsx(vt,{"aria-hidden":"true",className:"make-ai-assistant__conversation-new-icon"}),e.jsx("span",{children:"新建对话"})]}):null,R?e.jsx(js,{anchor:R.anchor,label:R.label,onDismiss:()=>O(void 0)}):null]})}function ws({message:t,manager:s}){const[a,o]=c.useState(!1),[i,l]=c.useState(""),[u,p]=c.useState(""),d=s.feedbackBusy.includes(t.id);if(!t.persistent||t.role!=="assistant"||t.intermediate)return null;const v=t.feedback?.rating??"none";return e.jsxs("div",{"aria-label":"回答反馈",className:"make-ai-assistant__feedback",role:"group",children:[e.jsx("button",{type:"button","aria-label":"喜欢","aria-pressed":v==="like",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"喜欢",disabled:d,onClick:()=>{s.feedback(t,v==="like"?"none":"like")},children:e.jsx(ds,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),e.jsx("button",{type:"button","aria-label":"不喜欢","aria-pressed":v==="dislike",className:"make-ai-assistant__reply-action make-ai-assistant__reply-feedback-action","data-tooltip":"不喜欢",disabled:d,onClick:()=>{if(v==="dislike"){s.feedback(t,"none");return}l(t.feedback?.reason??""),p(t.feedback?.comment??""),o(!0)},children:e.jsx(us,{"aria-hidden":"true",className:"make-ai-assistant__reply-feedback-icon"})}),v==="dislike"?e.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",disabled:d,onClick:()=>{l(t.feedback?.reason??""),p(t.feedback?.comment??""),o(!0)},children:"修改反馈"}):null,a?e.jsxs("form",{onSubmit:S=>{S.preventDefault(),s.feedback(t,"dislike",i,u).then(R=>{R&&o(!1)})},children:[e.jsx("input",{"aria-label":"反馈原因",maxLength:128,value:i,onChange:S=>l(S.currentTarget.value),placeholder:"原因(可选)"}),e.jsx("textarea",{"aria-label":"反馈说明",maxLength:4e3,value:u,onChange:S=>p(S.currentTarget.value),placeholder:"补充说明(可选)"}),e.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"submit",disabled:d,children:"提交反馈"}),e.jsx("button",{className:"make-ai-assistant__feedback-text-action",type:"button",onClick:()=>o(!1),children:"取消"})]}):null]})}const Et=new Set(["image/png","image/jpeg","image/webp","image/gif","audio/mpeg","audio/wav","audio/ogg","audio/webm","video/mp4","video/webm","video/ogg"]);function As({part:t,context:s,transport:a,chatId:o}){const[i,l]=c.useState(),[u,p]=c.useState(),[d,v]=c.useState(!1),S=c.useRef([]),R=c.useRef(void 0);c.useEffect(()=>()=>{R.current?.abort(),S.current.forEach(F=>URL.revokeObjectURL(F))},[]);const O=async F=>{if(!a.readContent||d)return;const b=new AbortController;R.current=b,v(!0),p(void 0);try{const B=await a.readContent(s,{chatId:o,contentRef:t.media.contentRef},{signal:b.signal});if(b.signal.aborted)return;const L=new Blob([new Uint8Array(B).buffer],{type:F&&Et.has(t.media.contentType)?t.media.contentType:"application/octet-stream"}),D=URL.createObjectURL(L);if(S.current.push(D),F)l(D);else{const k=document.createElement("a");k.href=D,k.download=t.name??"attachment",k.click()}}catch(B){b.signal.aborted||p(gt(B))}finally{b.signal.aborted||v(!1)}};return e.jsxs("div",{className:"make-ai-assistant__attachment",children:[e.jsxs("span",{children:[t.name??"附件"," · ",t.media.sizeBytes," 字节"]}),a.readContent?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",disabled:d,onClick:()=>{O(!1)},children:"下载附件"}),Et.has(t.media.contentType)?e.jsx("button",{type:"button",disabled:d,onClick:()=>{O(!0)},children:"预览附件"}):null]}):null,u?e.jsx("span",{role:"alert",children:u}):null,i&&t.kind==="image"?e.jsx("img",{src:i,alt:t.name??"附件图片"}):null,i&&t.kind==="audio"?e.jsx("audio",{src:i,controls:!0}):null,i&&t.kind==="video"?e.jsx("video",{src:i,controls:!0}):null]})}function Ns({message:t,context:s,transport:a,chatId:o}){return e.jsx(e.Fragment,{children:t.parts?.map((i,l)=>i.kind==="text"?null:i.kind==="unknown"?e.jsx("span",{className:"make-ai-assistant__attachment",children:i.textFallback??"此内容类型暂不支持展示"},i.id??`${t.id}:${l}`):e.jsx(As,{part:i,context:s,transport:a,chatId:o},i.id??`${t.id}:${l}`))})}const Vt=t=>t.type.split(";")[0].trim().toLowerCase()||"application/octet-stream",Ms=t=>t.startsWith("image/")&&t!=="image/svg+xml"?"image":t.startsWith("audio/")?"audio":t.startsWith("video/")?"video":"file",Cs=t=>{const s=Vt(t);if(!(!s.startsWith("image/")||s==="image/svg+xml"||typeof URL>"u"||typeof URL.createObjectURL!="function"))return URL.createObjectURL(t)},St=t=>{t&&typeof URL<"u"&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(t)},Es=(t,s)=>new Promise((a,o)=>{const i=new FileReader,l=()=>s.removeEventListener("abort",u),u=()=>{i.abort(),l(),o(Object.assign(new Error("Read aborted"),{name:"AbortError"}))};if(s.aborted){u();return}s.addEventListener("abort",u,{once:!0}),i.onload=()=>{l(),a(new Uint8Array(i.result))},i.onerror=()=>{l(),o(new Error("无法读取文件"))},i.readAsArrayBuffer(t)});function Ss(t,s,a){const[o,i]=c.useState([]),l=c.useRef(new Map),u=c.useRef(Promise.resolve()),p=s.scopeKey?.(t)??t.app.id,d=c.useRef(p);d.current=p;const v=c.useRef(void 0),S=a.enabled&&s.features?.attachments===!0,R=(f,n)=>{!l.current.has(f.draft.id)||f.scope!==d.current||(f.draft={...f.draft,...n},i([...l.current.values()].map(_=>_.draft)))},O=()=>{for(const f of l.current.values())f.controller.abort(),St(f.draft.previewUrl);l.current.clear(),i([]),v.current=void 0,u.current=Promise.resolve()};c.useEffect(()=>(O(),O),[p,s]),c.useEffect(()=>{v.current&&a.chat?.chatId!==v.current&&O()},[a.chat?.chatId]);const F=async f=>{const n=f.controller.signal,_=()=>{if(n.aborted||f.scope!==d.current||!l.current.has(f.draft.id))throw Object.assign(new Error("Upload aborted"),{name:"AbortError"})};try{if(_(),f.file.size>64<<20)throw new Error("文件不能超过 64 MiB");const A=await a.ensureChat();_(),v.current=A.chatId;const G=Vt(f.file);R(f,{status:"uploading",error:void 0});let I=f.draft.upload?await s.getUpload(t,{chatId:A.chatId,uploadId:f.draft.upload.id},{signal:n}):await s.startUpload(t,{chatId:A.chatId,fileId:f.draft.fileId,name:f.file.name,contentType:G,sizeBytes:f.file.size},{signal:n});if(_(),R(f,{upload:I}),I.name!==f.file.name||I.contentType!==G||I.sizeBytes!==f.file.size)throw new Error("上传文件身份不一致");if(I.status!=="ready"){if(I=await s.getUpload(t,{chatId:A.chatId,uploadId:I.id},{signal:n}),_(),I.status!=="uploading"||!Number.isSafeInteger(I.partSize)||I.partSize<=0||I.partSize>1<<20)throw new Error("当前上传状态无法继续,请重新选择文件");const z=new Set(I.completedParts),J=Math.ceil(f.file.size/I.partSize);for(let ae=0;ae<J;ae+=1){if(_(),!z.has(ae)){const Z=await Es(f.file.slice(ae*I.partSize,Math.min(f.file.size,(ae+1)*I.partSize)),n);_(),await s.uploadPart(t,{chatId:A.chatId,uploadId:I.id,part:ae,bytes:Z},{signal:n}),_(),z.add(ae)}R(f,{progress:z.size/Math.max(J,1)})}R(f,{status:"completing"}),I=await s.completeUpload(t,{chatId:A.chatId,uploadId:I.id},{signal:n}),_()}if(I.status!=="ready"||!I.content)throw new Error("上传尚未完成");R(f,{status:"ready",progress:1,upload:I})}catch(A){R(f,{status:n.aborted?"paused":"failed",error:n.aborted?void 0:gt(A)})}},b=f=>{if(S){if(f.length+l.current.size>32){a.setError("每条消息最多包含 32 个附件或文本片段");return}for(const n of f){const _={id:$e(),fileId:$e(),name:n.name,size:n.size,status:"queued",progress:0,previewUrl:Cs(n)},A={draft:_,file:n,controller:new AbortController,scope:p};l.current.set(_.id,A),u.current=u.current.then(()=>F(A))}i([...l.current.values()].map(n=>n.draft))}},B=f=>{const n=l.current.get(f);!n||!["paused","failed"].includes(n.draft.status)||(n.controller=new AbortController,R(n,{status:"queued"}),u.current=u.current.then(()=>F(n)))},L=f=>{const n=l.current.get(f);n?.controller.abort(),St(n?.draft.previewUrl),l.current.delete(f),i([...l.current.values()].map(_=>_.draft))},D=f=>l.current.get(f)?.controller.abort(),k=o.flatMap(f=>{const n=f.upload;if(f.status!=="ready"||!n?.content)return[];const _=Ms(n.contentType);return[{id:f.id,kind:_,name:n.name,media:{contentRef:n.content.contentRef,contentType:n.contentType,sizeBytes:n.content.sizeBytes,digestSha256:n.content.digestSha256}}]});return{enabled:S,drafts:o,parts:k,pending:o.some(f=>f.status!=="ready"),add:b,retry:B,remove:L,pause:D,clear:O}}function Ts({attachments:t,onOpenChange:s,open:a,triggerRef:o}){const i=c.useRef(null),l=c.useRef(null);c.useEffect(()=>{if(!a)return;const p=d=>{const v=d.target;v instanceof Node&&!i.current?.contains(v)&&s(!1)};return document.addEventListener("pointerdown",p),()=>{document.removeEventListener("pointerdown",p)}},[s,a]);const u=p=>{t.add(Array.from(p.files??[])),p.value="",s(!1)};return e.jsxs("div",{className:"make-ai-assistant__attachment-composer",ref:i,children:[e.jsx("button",{"aria-expanded":a,"aria-haspopup":"menu","aria-label":"添加附件",className:"make-ai-assistant__attachment-trigger",ref:o,title:"添加附件",type:"button",onClick:()=>s(!a),children:e.jsx(vt,{"aria-hidden":"true",className:"make-ai-assistant__attachment-trigger-icon"})}),a?e.jsx("div",{"aria-label":"附件选项",className:"make-ai-assistant__attachment-menu",role:"menu",children:e.jsxs("button",{role:"menuitem",type:"button",onClick:()=>l.current?.click(),children:[e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 15V4M7.5 8.5 12 4l4.5 4.5"}),e.jsx("path",{d:"M5 14v5h14v-5"})]}),e.jsx("span",{children:"上传文件或图片"})]})}):null,e.jsx("input",{"aria-label":"上传文件或图片",hidden:!0,multiple:!0,ref:l,type:"file",onChange:p=>u(p.currentTarget)})]})}function Rs({attachments:t,visible:s}){const[a,o]=c.useState(),i=c.useRef(null),l=c.useRef(null),u=c.useCallback(()=>{o(void 0),l.current?.focus()},[]);if(c.useEffect(()=>{if(!a)return;const d=v=>{v.key==="Escape"&&(v.preventDefault(),v.stopImmediatePropagation(),u())};return document.addEventListener("keydown",d,!0),()=>document.removeEventListener("keydown",d,!0)},[u,a]),c.useEffect(()=>{s||o(void 0)},[s]),!t.drafts.length)return null;const p=typeof document>"u"?void 0:i.current?.closest(".make-ai-assistant")??document.body;return e.jsxs("div",{"aria-label":"待发送附件",className:"make-ai-assistant__attachment-drafts",ref:i,children:[e.jsx("ul",{children:t.drafts.map(d=>e.jsxs("li",{"data-status":d.status,children:[d.previewUrl?e.jsx("button",{"aria-label":`预览附件 ${d.name}`,className:"make-ai-assistant__attachment-draft-preview-button",type:"button",onClick:v=>{l.current=v.currentTarget,o(d)},children:e.jsx("img",{alt:"",className:"make-ai-assistant__attachment-draft-preview",src:d.previewUrl})}):e.jsx("span",{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-file",children:e.jsxs("svg",{viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M6 3h8l4 4v14H6z"}),e.jsx("path",{d:"M14 3v5h5M9 13h6M9 16h6"})]})}),e.jsxs("span",{className:"make-ai-assistant__attachment-draft-details",children:[e.jsx("span",{className:"make-ai-assistant__attachment-draft-name",title:d.name,children:d.name}),e.jsx("span",{className:"make-ai-assistant__attachment-draft-status",children:d.status==="ready"?"已上传":d.status==="completing"?"校验中":d.status==="paused"?"已暂停":d.status==="failed"?"上传失败":`${Math.round(d.progress*100)}%`})]}),d.error?e.jsx("span",{role:"alert",children:d.error}):null,d.status==="failed"||d.status==="paused"?e.jsx("button",{type:"button",onClick:()=>t.retry(d.id),children:"重试上传"}):null,d.status==="uploading"?e.jsx("button",{type:"button",onClick:()=>t.pause(d.id),children:"暂停上传"}):null,e.jsx("button",{"aria-label":`移除附件 ${d.name}`,className:"make-ai-assistant__attachment-draft-remove",type:"button",onClick:()=>{a?.id===d.id&&u(),t.remove(d.id)},children:e.jsx(ct,{"aria-hidden":"true",className:"make-ai-assistant__attachment-draft-remove-icon"})})]},d.id))}),a?.previewUrl&&p?Ft.createPortal(e.jsx("div",{className:"make-ai-assistant__attachment-preview-backdrop",onPointerDown:d=>{d.target===d.currentTarget&&u()},children:e.jsxs("div",{"aria-label":`预览附件 ${a.name}`,"aria-modal":"true",className:"make-ai-assistant__attachment-preview-dialog",role:"dialog",onKeyDown:d=>{d.key==="Tab"&&d.preventDefault()},children:[e.jsx("button",{"aria-label":`关闭图片预览 ${a.name}`,autoFocus:!0,className:"make-ai-assistant__attachment-preview-close",type:"button",onClick:u,children:e.jsx(ct,{"aria-hidden":"true",className:"make-ai-assistant__attachment-preview-close-icon"})}),e.jsx("img",{alt:a.name,src:a.previewUrl})]})}),p):null]})}const Ls=t=>`${t}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,$s="Make",Os=["总结当前页面数据","找出需要关注的记录","列出我有权限查看的数据对象"],Fs=72,Ps=192,zt=(t,s)=>s??`${t?.trim()||$s} AI 助手`,Us=t=>t??Os,Ds=t=>typeof t=="number"&&Number.isFinite(t)&&t>0?t:void 0,Ks=t=>typeof t=="number"?Number.isFinite(t)?`${t}px`:void 0:t?.trim()||void 0;class W extends Error{}const it=(t,s)=>{if(!(typeof t!="object"||t===null))return t[s]},Hs=t=>{const s=it(t,"status");return typeof s=="number"?s:it(it(t,"response"),"status")},Bs=t=>{const s=it(t,"code"),a=Hs(t),o=t instanceof Error?t.message:"",i=[s,o].filter(d=>typeof d=="string").join(" ").toLowerCase(),u=globalThis.navigator?.onLine===!1||/network|fetch|timeout|offline|connection|网络|连接|超时/.test(i),p=typeof a=="number"&&a>=500||/server|service|服务器|服务异常/.test(i);return u?{actionLabel:"重新连接",description:"请检查网络后再试。",kind:"network",label:"网络连接",title:"网络连接不可用"}:p?{actionLabel:"重新加载",description:"服务暂时未能响应,请稍后重试。",kind:"service",label:"服务异常",title:"服务暂时不可用"}:{actionLabel:"重新加载",description:"请稍后重试;若问题持续出现,请联系管理员。",kind:"unknown",label:"加载异常",title:"暂时无法加载对话"}},Tt=t=>{try{const s=t?.return?.();if(!s)return;Promise.resolve(s).catch(a=>{console.error("[make-ai-assistant] transport iterator close failed",{errorType:a instanceof Error?a.name:typeof a})})}catch(s){console.error("[make-ai-assistant] transport iterator close failed",{errorType:s instanceof Error?s.name:typeof s})}},Vs=async t=>{if(globalThis.navigator?.clipboard?.writeText){await globalThis.navigator.clipboard.writeText(t);return}if(typeof document>"u"||!document.body)throw new Error("Clipboard API is unavailable");const s=document.createElement("textarea");s.value=t,s.setAttribute("readonly",""),s.style.position="fixed",s.style.inset="0 auto auto 0",s.style.opacity="0",document.body.append(s),s.select();const a=document.execCommand("copy");if(s.remove(),!a)throw new Error("Clipboard copy failed")},qt=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 2.8c.5 4.4 2.8 6.8 7.2 7.2-4.4.5-6.8 2.8-7.2 7.2-.5-4.4-2.8-6.8-7.2-7.2 4.4-.5 6.8-2.8 7.2-7.2Z"}),e.jsx("path",{d:"M18.3 16.1c.2 1.8 1.2 2.8 3 3-1.8.2-2.8 1.2-3 3-.2-1.8-1.2-2.8-3-3 1.8-.2 2.8-1.2 3-3Z"})]}),zs=()=>e.jsx("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:e.jsx("path",{d:"m6 6 12 12M18 6 6 18"})}),qs=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),e.jsx("path",{d:"M4 4v4h4"}),e.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),e.jsx("path",{d:"M20 20v-4h-4"})]}),Zs=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M12 4v11"}),e.jsx("path",{d:"m7 10 5 5 5-5"}),e.jsx("path",{d:"M5 20h14"})]}),Rt=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"m4 4 17 8-17 8 3-8-3-8Z"}),e.jsx("path",{d:"M7 12h14"})]}),Zt=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M20 11a8 8 0 0 0-14.7-4.4L4 8"}),e.jsx("path",{d:"M4 4v4h4"}),e.jsx("path",{d:"M4 13a8 8 0 0 0 14.7 4.4L20 16"}),e.jsx("path",{d:"M20 20v-4h-4"})]}),Ws=()=>e.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 24 24",children:[e.jsx("circle",{cx:"12",cy:"12",r:"8"}),e.jsx("path",{d:"M12 8v4.5"}),e.jsx("path",{d:"M12 16h.01"})]}),ot=({className:t=""})=>e.jsx("span",{className:`make-ai-assistant__avatar ${t}`.trim(),"aria-hidden":"true",children:e.jsx(qt,{})}),Gs=({src:t})=>t?e.jsx("span",{className:"make-ai-assistant__user-avatar","aria-hidden":"true",children:e.jsx("img",{alt:"",src:t})}):null,Xs=({userAvatarUrl:t,userName:s})=>{const a=s?.trim();return!a&&!t?null:e.jsxs("div",{className:"make-ai-assistant__message-identity",children:[a?e.jsx("span",{className:"make-ai-assistant__message-sender",children:a}):null,e.jsx(Gs,{src:t})]})},ht=t=>{const s=t.trim();if(!(!s.startsWith("|")||!s.endsWith("|")))return s.slice(1,-1).split("|").map(a=>a.trim())},Js=t=>t.length>0&&t.every(s=>/^:?-{3,}:?$/.test(s)),Ys=(t,s)=>{const a=ht(t[s]??""),o=ht(t[s+1]??"");if(!a||!o||a.length!==o.length||!Js(o))return;const i=[];let l=s+2;for(;l<t.length;){const u=ht(t[l]??"");if(!u||u.length!==a.length)break;i.push(u),l+=1}return{headers:a,lastIndex:l-1,rows:i}},Qs=t=>{const s=[],a=[],o=[],i=[],l=t.replace(/\r\n?/g,`
|
|
60
2
|
`).split(`
|
|
61
|
-
`),
|
|
62
|
-
`).trim();
|
|
63
|
-
`).trim();r.length=0,m&&e.push({type:"pre",text:m})};for(let m=0;m<i.length;m+=1){const _=i[m]??"",y=_.trim();if(!y){o(),u(),c();continue}const M=fr(i,m);if(M){o(),u(),c(),e.push({headers:M.headers,rows:M.rows,type:"table"}),m=M.lastIndex;continue}const H=/^(#{1,6})\s+(.+)$/.exec(y);if(H){o(),u(),c();const z=(H[2]??"").replace(/\s+#+\s*$/,"").trim();z&&e.push({type:"heading",level:H[1]?.length,text:z});continue}if(/^\s*\|.+\|\s*$/.test(_)){o(),u(),r.push(_.trim());continue}const b=/^\s*[-*]\s+(.+)$/.exec(_);if(b){o(),c(),n.push(b[1]?.trim()??"");continue}u(),c(),s.push(y)}return o(),u(),c(),e},at=t=>{const e=[],s=/(\*\*[^*]+\*\*|`[^`]+`)/g;let n=0;for(const r of t.matchAll(s)){const i=r[0],o=r.index??0;o>n&&e.push(t.slice(n,o)),i.startsWith("**")?e.push(a.jsx("strong",{children:i.slice(2,-2)},`${o}-strong`)):e.push(a.jsx("code",{children:i.slice(1,-1)},`${o}-code`)),n=o+i.length}return n<t.length&&e.push(t.slice(n)),e},hs=({content:t})=>{const e=mr(t);return e.length?a.jsx("div",{className:"make-ai-assistant__bubble make-ai-assistant__assistant-text",children:e.map((s,n)=>{if(s.type==="heading"){const r=s.level<=2?"h3":"h4";return a.jsx(r,{className:`make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${s.level}`,children:at(s.text)},`${n}-heading`)}return s.type==="paragraph"?a.jsx("p",{children:at(s.text)},`${n}-paragraph`):s.type==="pre"?a.jsx("pre",{children:a.jsx("code",{children:s.text})},`${n}-pre`):s.type==="table"?a.jsx("div",{"aria-label":"表格内容,可横向滚动",className:"make-ai-assistant__markdown-table-scroll",role:"region",tabIndex:0,children:a.jsxs("table",{className:"make-ai-assistant__markdown-table",children:[a.jsx("thead",{children:a.jsx("tr",{children:s.headers.map((r,i)=>a.jsx("th",{scope:"col",children:at(r)},`${i}-${r}`))})}),a.jsx("tbody",{children:s.rows.map((r,i)=>a.jsx("tr",{children:r.map((o,u)=>a.jsx("td",{children:at(o)},`${u}-${o}`))},`${i}-${r.join("|")}`))})]})},`${n}-table`):a.jsx("ul",{children:s.items.map((r,i)=>a.jsx("li",{children:at(r)},`${i}-${r}`))},`${n}-list`)})}):null},Js=({assistantName:t})=>a.jsxs("div",{className:"make-ai-assistant__message-identity",children:[a.jsx(_t,{className:"make-ai-assistant__avatar--message"}),a.jsx("span",{className:"make-ai-assistant__message-sender",children:t})]}),ea=t=>{for(let e=t.messages.length-1;e>=0;e-=1){const s=t.messages[e];if(s.role==="assistant"&&s.status==="streaming")return s.id}},hr=t=>{for(let e=t.messages.length-1;e>=0;e-=1)if(t.messages[e].role==="user")return e;return-1},ta=t=>{const e=hr(t);if(!(e<0))for(let s=t.messages.length-1;s>e;s-=1){const n=t.messages[s];if(n.role==="assistant")return n.id}},pr=t=>{if(t.status==="idle")for(let e=t.messages.length-1;e>=0;e-=1){const s=t.messages[e];if(s.role==="assistant"&&s.status==="complete")return s.id}},vr=t=>{for(let e=t.messages.length-1;e>=0;e-=1){const s=t.messages[e];if(s.role==="user")return s}},gr=(t,e)=>{const s=t.messages.findIndex(n=>n.id===e&&n.role==="user");return{...t,error:void 0,progress:void 0,status:"streaming",messages:s<0?t.messages:t.messages.slice(0,s+1)}},_r=t=>t.scrollHeight-t.scrollTop-t.clientHeight<=48,ps=(t="smooth")=>globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":t,At=(t,e)=>{typeof t.scrollTo=="function"?t.scrollTo({top:t.scrollHeight,behavior:e}):t.scrollTop=t.scrollHeight},sa=({error:t,onRetry:e})=>a.jsxs("div",{className:"make-ai-assistant__message-status make-ai-assistant__message-status--error","data-error-presentation":"request-failed",role:"alert",children:[a.jsxs("div",{className:"make-ai-assistant__message-status-header",children:[a.jsx("span",{className:"make-ai-assistant__message-status-icon","aria-hidden":"true",children:a.jsx(cr,{})}),a.jsx("strong",{children:"请求未完成"})]}),a.jsx("span",{className:"make-ai-assistant__message-status-message",children:t.message}),t.retryable&&e?a.jsxs("button",{className:"make-ai-assistant__retry",type:"button",onClick:e,children:[a.jsx(Zs,{}),"重新发送"]}):null]}),br=({error:t,onRetry:e})=>{const s=ar(t);return a.jsxs("section",{"aria-live":"assertive",className:"make-ai-assistant__load-failure","data-load-failure-kind":s.kind,role:"alert",children:[a.jsx("span",{className:"make-ai-assistant__load-failure-icon","aria-hidden":"true",children:a.jsxs("svg",{viewBox:"0 0 24 24",children:[a.jsx("path",{d:"M5 12a7 7 0 0 1 13.4-2.8A4.5 4.5 0 0 1 18 18H7.5A4.5 4.5 0 0 1 5 12Z"}),a.jsx("path",{d:"m9.2 14.8 5.6-5.6M9.2 9.2l5.6 5.6"})]})}),a.jsxs("div",{className:"make-ai-assistant__load-failure-copy",children:[a.jsx("span",{className:"make-ai-assistant__load-failure-label",children:s.label}),a.jsx("h3",{children:s.title}),a.jsx("p",{children:s.description})]}),a.jsxs("button",{className:"make-ai-assistant__retry make-ai-assistant__retry--primary",type:"button",onClick:e,children:[a.jsx(Zs,{}),s.actionLabel]})]})},aa=({active:t,steps:e})=>{const[s,n]=f.useState(!1);if(!t||!e?.length)return null;const r=e[e.length-1]??"处理中";return a.jsxs("details",{className:"make-ai-assistant__process",open:s,onToggle:i=>n(i.currentTarget.open),children:[a.jsxs("summary",{"aria-label":`查看处理过程,共 ${e.length} 步`,children:[a.jsxs("span",{className:"make-ai-assistant__process-summary",children:[a.jsx("span",{className:"make-ai-assistant__process-indicator","aria-hidden":"true"}),a.jsxs("span",{className:"make-ai-assistant__process-copy",children:[a.jsx("span",{className:"make-ai-assistant__process-title",children:"处理过程"}),a.jsx("span",{className:"make-ai-assistant__progress make-ai-assistant__process-latest",role:"status",children:r})]})]}),a.jsxs("span",{className:"make-ai-assistant__process-count",children:[e.length," 步"]})]}),a.jsx("ol",{children:e.map((i,o)=>a.jsxs("li",{"data-step-active":o===e.length-1?!0:void 0,children:[a.jsx("span",{"aria-hidden":"true"}),a.jsx("span",{children:i})]},`${o}-${i}`))})]})},yr=({copyFeedback:t,feedback:e,onCopy:s,onRegenerate:n})=>!e&&!s&&!n?null:a.jsxs("div",{className:"make-ai-assistant__reply-actions","aria-label":"回复操作",children:[s?a.jsx("button",{"aria-label":"复制回答",className:"make-ai-assistant__reply-action make-ai-assistant__reply-copy","data-tooltip":"复制",type:"button",onClick:s,children:a.jsx(Ps,{"aria-hidden":"true",className:"make-ai-assistant__reply-copy-icon"})}):null,e,n?a.jsx("button",{"aria-label":"重新生成",className:"make-ai-assistant__reply-action make-ai-assistant__reply-regenerate","data-tooltip":"重新生成",type:"button",onClick:n,children:a.jsx(ir,{})}):null,t?a.jsx("span",{className:"make-ai-assistant__reply-feedback","data-copy-status":t.status,role:"status",children:t.message}):null]}),vs=({assistantName:t,error:e,onRetry:s,progress:n})=>{const r=e?"error":"progress";return e?.message??n?.message?a.jsx("article",{"aria-label":`${t}的${r==="error"?"错误消息":"状态消息"}`,className:`make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${r}`,"data-message-role":"assistant","data-message-state":r,children:a.jsxs("div",{className:"make-ai-assistant__message-turn",children:[a.jsx(Js,{assistantName:t}),a.jsx("div",{className:"make-ai-assistant__message-stack",children:e?a.jsx(sa,{error:e,onRetry:s}):a.jsx(aa,{active:!0,steps:n?.steps})})]})}):null},xr=(t,e,s,n,r,i,o,u,c,m,_,y,M,H,b,z)=>{const $=ta(t),D=ea(t),k=pr(t);let p;return t.messages.map(l=>{if(l.intermediate)return a.jsxs("details",{className:"make-ai-assistant__process",children:[a.jsx("summary",{children:"处理过程"}),a.jsx(hs,{content:l.content})]},l.id);const x=l.role==="assistant",A=p;x||(p=l);const Z=l.id===D,N=l.id===$?t.error:void 0,q=l.error??N,te=!x&&!!(c?.trim()||m),ie=x?o:c?.trim()||"用户",W=x&&l.status==="complete"&&!q&&(l.content.trim()||l.id===k),fe=!!(b&&z?.features?.feedback&&x&&l.persistent),ve=W||fe;return a.jsx("article",{"aria-label":`${ie}的消息`,className:`make-ai-assistant__message make-ai-assistant__message--${l.role}`,"data-message-role":l.role,"data-message-state":q?"error":void 0,"data-message-status":l.status,"data-message-has-identity":x||te?!0:void 0,children:a.jsxs("div",{className:"make-ai-assistant__message-turn",children:[x?a.jsx(Js,{assistantName:o}):te?a.jsx(dr,{userAvatarUrl:m,userName:c}):null,a.jsxs("div",{className:"make-ai-assistant__message-stack",children:[x&&l.responseId&&t.responses?.[l.responseId]?.status==="cancelled"?a.jsx("p",{className:"make-ai-assistant__response-status",role:"status",children:"已停止生成"}):null,l.content?x?a.jsx(hs,{content:l.content}):a.jsx("div",{className:"make-ai-assistant__bubble",children:l.content}):l.status==="streaming"?a.jsxs("div",{className:"make-ai-assistant__typing","aria-label":`${o}正在思考`,children:[a.jsx("span",{}),a.jsx("span",{}),a.jsx("span",{})]}):null,x?a.jsx(aa,{active:Z&&t.status==="streaming",steps:l.progressSteps}):null,q?a.jsx(sa,{error:q,onRetry:N?u:void 0}):null,l.artifacts.map(Ae=>a.jsx(bs,{artifact:Ae,context:e,onAction:r,onActionError:i,registry:s,theme:n},Ae.id)),b&&z&&t.threadId?a.jsx(Vn,{message:l,context:e,transport:z,chatId:t.threadId}):null,ve?a.jsx(yr,{copyFeedback:_?.messageId===l.id?{message:_.message,status:_.status}:void 0,onCopy:l.content.trim()?()=>M(l.id,l.content):void 0,feedback:b&&fe?a.jsx(zn,{message:l,manager:b}):void 0,onRegenerate:y&&l.id===k&&A?()=>H({userMessage:A,assistantMessage:l}):void 0}):null]})]})},`${t.threadId??"local"}:${l.id}`)})};function na({assistantName:t="AI 助手",brandName:e,context:s,onAction:n,onActionError:r,onClose:i,onNewConversation:o,onToggleFullscreen:u,headerHeight:c,isFullscreen:m=!1,registry:_,suggestions:y,title:M,theme:H,transport:b,userAvatarUrl:z,userName:$,visible:D}){const k=Ln(s,b),p=Qn(s,b,k),l=Xs(e,M),x=tr(c),A=$t(H),Z=A||x?{...A,...x?{"--make-ai-internal-header-height":x}:{}}:void 0,[N,q]=f.useState(""),[te,ie]=f.useState(!1),[W,fe]=f.useState(!1),ve=k.enabled?b.scopeKey?.(s)??s.app.id:"";f.useLayoutEffect(()=>{k.enabled&&q("")},[ve,k.enabled]);const[Ae,qe]=f.useState(I.createAssistantConversationState),V=k.enabled?k.state:Ae,B=k.enabled?k.setState:qe,P=f.useRef(V);P.current=V;const[J,le]=f.useState(void 0),[ye,me]=f.useState(void 0),[Ee,L]=f.useState(0),[ne,se]=f.useState(()=>b.loadConversation?"loading":"ready"),ae=k.enabled?k.loading&&!V.messages.length?"loading":"ready":ne,[Ke,We]=f.useState(void 0),[rt,de]=f.useState(!1),K=f.useRef(void 0),ue=f.useRef(void 0),we=f.useRef(0),Se=f.useRef(null),je=f.useRef(null),Oe=f.useRef(null),Le=f.useRef(null),Ge=f.useRef(null),Xe=f.useRef(null),ge=f.useRef(!0),it=f.useRef(s.app.id),ot=f.useRef(D),ct=f.useId();f.useLayoutEffect(()=>{const v=Oe.current;v&&(v.style.height="auto",v.style.height=`${Math.min(Math.max(v.scrollHeight,Yn),Zn)}px`)},[N]);const lt=f.useMemo(()=>_??ws(),[_]),dt=f.useMemo(()=>Jn(y),[y]),$e=v=>{const U=K.current,Q=ue.current?.iterator;return!U&&!Q?!1:(we.current+=1,K.current=void 0,ue.current=void 0,console.info("[make-ai-assistant] local run cancellation requested",{reason:v}),U?.abort(),fs(Q),!0)};f.useEffect(()=>()=>{$e("unmount")},[]),f.useEffect(()=>{if(k.enabled)return;const v=b.loadConversation,U=it.current!==s.app.id;if(it.current=s.app.id,$e("reinitialize"),U&&(q(""),ge.current=!0),le(void 0),me(void 0),de(!1),B(I.createAssistantConversationState()),!v){We(void 0),se("ready");return}const Q=new AbortController;return We(void 0),se("loading"),console.info("[make-ai-assistant] conversation load start",{appId:s.app.id}),v.call(b,s,{signal:Q.signal}).then(re=>{Q.signal.aborted||(B(I.createAssistantConversationState(re)),se("ready"),console.info("[make-ai-assistant] conversation load success",{appId:s.app.id,messageCount:re.messages.length}))}).catch(re=>{Q.signal.aborted||(console.error("[make-ai-assistant] conversation load failed",{appId:s.app.id,errorType:re instanceof Error?re.name:typeof re}),We(re),se("error"))}),()=>Q.abort()},[s.app.id,Ee,b,k.enabled]),f.useEffect(()=>{const v=je.current;if(!v||!ge.current)return;de(!1);const U=requestAnimationFrame(()=>{if(!ge.current)return;const Q=V.status==="streaming"||globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";At(v,Q)});return()=>cancelAnimationFrame(U)},[V.messages,V.progress,V.status]),f.useEffect(()=>{D||(ie(!1),fe(!1))},[D]),f.useEffect(()=>{const v=D&&!ot.current;if(ot.current=D,!v)return;const U=requestAnimationFrame(()=>{const Q=je.current;if(Q&&ge.current){de(!1);const Ze=P.current.status==="streaming"?"auto":ps();At(Q,Ze)}else Q&&de(P.current.messages.length>0);const re=Oe.current;(re&&!re.disabled?re:Xe.current??Se.current?.querySelector("button:not(:disabled)"))?.focus()});return()=>cancelAnimationFrame(U)},[D]);const Ye=()=>{const v=je.current;if(!v)return;const U=_r(v);ge.current=U,de(!U&&P.current.messages.length>0)},Re=()=>{const v=je.current;if(!v)return;ge.current=!0,de(!1);const U=ps();At(v,U)},d=async(v,U)=>{const Q=v.trim(),re=P.current,ke=U?.regenerateFrom,Ze=b.regenerate;if(!Q||ae!=="ready"||re.status==="streaming"||K.current||ke&&!Ze)return;if(I.countCodePointsUpTo(Q,I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)>I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters){le(`输入内容过长,请控制在 ${I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters} 个字符以内`);return}const ft={id:ke?.userMessage.id??Wn("user"),content:Q},mt=ke?gr(re,ke.userMessage.id):I.appendUserMessage(re,ft),ht=new AbortController,Pe=we.current+1;we.current=Pe,K.current=ht,le(void 0),me(void 0),de(!ge.current&&re.messages.length>0),ke||q(""),B(mt);try{let Ie=!1,ce,Vt=0,Ft=0,Ut=0,xt=0,Je=0;const et=new Map,Bt=new Set,Qt=new Set([...mt.messages.map(pt=>pt.id),ft.id]),tt=new Set,qt=Ce.createArtifactCapabilities(lt),Kt={signal:ht.signal};let kt;if(ke){if(!Ze)throw new G("当前 AI 助手不支持重新生成");kt=Ze({threadId:mt.threadId,message:ft,assistantMessage:{id:ke.assistantMessage.id,content:ke.assistantMessage.content},context:s,capabilities:qt},Kt)}else kt=b.run({threadId:mt.threadId,message:ft,context:s,capabilities:qt},Kt);const Wt=kt[Symbol.asyncIterator]();for(ue.current={iterator:Wt,requestVersion:Pe};;){const pt=await Wt.next();if(we.current!==Pe||pt.done)break;let O;try{O=I.parseAssistantEvent(pt.value)}catch(pe){throw new G(pe instanceof Error?pe.message:"Invalid assistant event")}if(O.type==="message.start"){if(ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(ce??=O.runId,Ft+=1,Ft>I.MAKE_AI_CONVERSATION_LIMITS.assistantMessagesPerRun)throw new G("AI 助手单次响应消息数量超过限制");if(Qt.has(O.messageId))throw new G("AI 助手响应包含重复的 message id");Qt.add(O.messageId),tt.add(O.messageId),et.set(O.messageId,0)}if(O.type==="message.delta"){if(!tt.has(O.messageId))throw new G("AI 助手响应事件顺序无效");const pe=et.get(O.messageId)??0,ze=I.countCodePointsUpTo(O.delta,I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters-Je);if(Je+ze>I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new G("AI 助手响应文本超过大小限制");Je+=ze,et.set(O.messageId,pe+ze)}if(O.type==="message.replace"){if(!tt.has(O.messageId))throw new G("AI 助手响应事件顺序无效");const pe=et.get(O.messageId)??0,ze=I.countCodePointsUpTo(O.content,I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters),Gt=Je-pe+ze;if(Gt>I.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new G("AI 助手响应文本超过大小限制");Je=Gt,et.set(O.messageId,ze)}if(O.type==="run.progress"){if(ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(ce??=O.runId,Ut+=1,Ut>I.MAKE_AI_CONVERSATION_LIMITS.progressStepsPerRun)throw new G("AI 助手处理过程数量超过限制");const pe=I.countCodePointsUpTo(O.message,I.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun-xt);if(xt+pe>I.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun)throw new G("AI 助手处理过程文本超过大小限制");xt+=pe}if(O.type==="artifact"){if(!tt.has(O.messageId))throw new G("AI 助手响应事件顺序无效");if(Vt+=1,Vt>I.MAKE_AI_CONVERSATION_LIMITS.artifactsPerRun)throw new G("AI 助手单次响应 Artifact 数量超过限制");if(Bt.has(O.artifact.id))throw new G("AI 助手响应包含重复的 Artifact id");Bt.add(O.artifact.id)}if(O.type==="message.complete"&&!tt.delete(O.messageId))throw new G("AI 助手响应事件顺序无效");if(O.type==="run.complete"&&ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(O.type==="run.cancelled"&&O.runId!==void 0&&ce!==void 0&&ce!==O.runId)throw new G("AI 助手响应 run id 不一致");if(B(pe=>I.reduceAssistantEvent(pe,O)),O.type==="error"||O.type==="run.cancelled"||O.type==="run.complete"){Ie=!0;break}}if(!Ie)throw new G("AI 助手流式响应在终止事件前结束")}catch(Ie){if(we.current!==Pe)return;if(ht.signal.aborted){B(ce=>I.reduceAssistantEvent(ce,{type:"run.cancelled"}));return}console.error("[make-ai-assistant] assistant run failed",{appId:s.app.id,errorType:Ie instanceof Error?Ie.name:typeof Ie}),B(ce=>I.reduceAssistantEvent(ce,{type:"error",code:"TRANSPORT_ERROR",message:Ie instanceof G?Ie.message:"连接失败,请重试",retryable:!0}))}finally{we.current===Pe&&K.current===ht&&(K.current=void 0),ue.current?.requestVersion===Pe&&(fs(ue.current.iterator),ue.current=void 0)}},h=v=>{if(k.enabled){if(p.pending)return le("请等待附件上传完成,或移除失败的附件"),Promise.resolve();const U=v.trim(),Q=p.parts.length?[...U?[{id:Fe(),kind:"text",text:U}]:[],...p.parts]:void 0;return q(""),p.clear(),k.send(U,Q)}return d(v)},g=v=>d(v.userMessage.content,{regenerateFrom:v}),w=async(v,U)=>{try{await nr(U),me({messageId:v,message:"已复制",status:"success"})}catch(Q){console.error("[make-ai-assistant] copy answer failed",{errorType:Q instanceof Error?Q.name:typeof Q}),me({messageId:v,message:"复制失败",status:"error"})}},C=v=>{v.preventDefault(),h(N)},T=v=>{v.key==="Enter"&&!v.shiftKey&&!v.nativeEvent.isComposing&&(v.preventDefault(),h(N))},j=()=>{if(k.enabled){k.stop();return}$e("stop")&&B(v=>I.reduceAssistantEvent(v,{type:"run.cancelled"}))},R=()=>{if(fe(!1),k.enabled){q(""),k.create(),o?.();return}$e("new-conversation"),q(""),le(void 0),me(void 0),de(!1),ge.current=!0,B(I.createAssistantConversationState()),o?.()},E=k.enabled&&k.cancelling.length?"停止中":b.features?.remoteCancellation===!1?"停止接收":"停止生成",F=ea(V),xe=ta(V),Me=vr(V),ut=typeof b.regenerate=="function"&&b.features?.regeneration!==!1,he=()=>{if(k.enabled){k.retry();return}Me&&h(Me.content)},He=v=>{if(v.key==="Escape"&&!(!te&&!W)){if(v.preventDefault(),v.stopPropagation(),te){ie(!1),Le.current?.focus();return}fe(!1),Ge.current?.focus()}};return a.jsxs("section",{className:`make-ai-assistant make-ai-assistant__panel${k.enabled?" make-ai-assistant__panel--managed":""}`,ref:Se,style:Z,onKeyDown:He,onDragOver:v=>{p.enabled&&v.dataTransfer.types.includes("Files")&&v.preventDefault()},onDrop:v=>{p.enabled&&v.dataTransfer.files.length&&(v.preventDefault(),p.add(Array.from(v.dataTransfer.files)))},children:[a.jsxs("header",{className:"make-ai-assistant__header",children:[a.jsx("div",{className:"make-ai-assistant__header-leading",children:k.enabled?a.jsxs("button",{"aria-controls":ct,"aria-expanded":W,"aria-haspopup":"dialog","aria-label":"任务列表",className:"make-ai-assistant__task-list-trigger",ref:Ge,type:"button",onClick:()=>fe(v=>!v),children:[a.jsx(Us,{"aria-hidden":"true",className:"make-ai-assistant__task-list-icon"}),a.jsx("span",{className:"make-ai-assistant__task-list-label",children:"任务列表"}),W?a.jsx(Ks,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"}):a.jsx(zs,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"})]}):null}),a.jsxs("div",{className:"make-ai-assistant__header-center",children:[a.jsx(_t,{}),a.jsx("h2",{className:"make-ai-assistant__header-title",title:l,children:l})]}),a.jsxs("div",{className:"make-ai-assistant__header-actions",children:[u?a.jsx("button",{"aria-label":m?"退出全屏":"全屏显示","aria-pressed":m,className:"make-ai-assistant__icon-button",title:m?"退出全屏":"全屏显示",type:"button",onClick:u,children:m?a.jsx(Hs,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"}):a.jsx(Vs,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,b.features?.newConversation!==!1?a.jsx("button",{"aria-label":"新建对话",className:"make-ai-assistant__icon-button",type:"button",onClick:R,children:a.jsx(yt,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,i?a.jsx("button",{"aria-label":`关闭 ${l}`,className:"make-ai-assistant__icon-button",type:"button",onClick:i,children:a.jsx(rr,{})}):null]})]}),k.enabled&&W?a.jsx(Pn,{id:ct,manager:k,triggerRef:Ge,onDismiss:()=>fe(!1),onNewConversation:b.features?.newConversation!==!1?R:void 0}):null,a.jsxs("div",{className:"make-ai-assistant__body","aria-live":"polite","aria-relevant":"additions text",ref:je,role:"log",onScroll:Ye,children:[ae==="loading"?a.jsxs("div",{className:"make-ai-assistant__empty",role:"status",children:[a.jsx(_t,{}),a.jsx("h3",{children:"正在恢复对话"}),a.jsx("p",{children:"正在读取当前 App 的历史消息…"})]}):ae==="error"?a.jsx("div",{className:"make-ai-assistant__empty",children:a.jsx(br,{error:Ke,onRetry:()=>L(v=>v+1)})}):V.messages.length===0?a.jsxs("div",{className:"make-ai-assistant__empty",children:[a.jsx(_t,{}),a.jsx("h3",{children:"有什么可以帮你?"}),a.jsx("p",{children:"我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。"})]}):xr(V,s,lt,H,n,r,t,Me?he:void 0,$,z,ye,ut,(v,U)=>{w(v,U)},v=>{g(v)},k.enabled?k:void 0,b),V.progress&&!F?a.jsx(vs,{assistantName:t,progress:V.progress}):null,V.error&&!xe?a.jsx(vs,{assistantName:t,error:V.error,onRetry:Me?he:void 0}):null]}),rt?a.jsx("button",{"aria-label":"回到最新消息",className:"make-ai-assistant__back-to-latest",type:"button",onClick:Re,children:a.jsx(or,{})}):null,a.jsxs("footer",{className:"make-ai-assistant__composer-region",children:[ae==="ready"&&dt.length>0&&V.messages.length===0?a.jsx("div",{className:"make-ai-assistant__suggestions","aria-label":"推荐问题",children:dt.map((v,U)=>a.jsx("button",{type:"button",onClick:()=>{h(v)},children:v},`${U}-${v}`))}):null,a.jsxs("form",{className:"make-ai-assistant__composer",onSubmit:C,children:[p.enabled?a.jsx(Kn,{attachments:p,visible:D}):null,a.jsx("textarea",{"aria-label":`向 ${t} 提问`,"aria-describedby":J?"make-ai-composer-error":void 0,"aria-invalid":J?!0:void 0,autoFocus:!0,disabled:ae!=="ready"||!k.enabled&&V.status==="streaming",placeholder:`询问当前 ${s.app.name??"App"} 中的数据…`,ref:Oe,rows:2,value:N,onChange:v=>{q(v.currentTarget.value),le(void 0)},onKeyDown:T,onPaste:v=>{!p.enabled||!v.clipboardData.files.length||(v.preventDefault(),p.add(Array.from(v.clipboardData.files)))}}),a.jsxs("div",{className:"make-ai-assistant__composer-toolbar",children:[p.enabled?a.jsx(qn,{attachments:p,open:te,triggerRef:Le,onOpenChange:ie}):null,a.jsxs("div",{className:"make-ai-assistant__composer-actions",children:[V.status==="streaming"?a.jsx("button",{"aria-label":E,className:"make-ai-assistant__send make-ai-assistant__send--stop","data-tooltip":E,ref:Xe,disabled:k.enabled&&k.cancelling.includes(V.activeRunId??""),type:"button",onClick:j,children:a.jsx("span",{"aria-hidden":"true"})}):a.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:ae!=="ready"||p.pending||!N.trim()&&!p.parts.length,type:"submit",children:a.jsx(ms,{})}),k.enabled&&V.status==="streaming"?a.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:k.busy||p.pending||!N.trim()&&!p.parts.length,type:"submit",children:a.jsx(ms,{})}):null]})]})]}),J?a.jsx("p",{id:"make-ai-composer-error",role:"alert",children:J}):null,a.jsx("p",{children:"AI 生成的结果可能存在偏差,重要数据请核对明细。"})]})]})}function kr(t){return a.jsx(na,{...t,visible:!0})}function wr({defaultOpen:t=!1,hideLauncher:e=!1,launcher:s,launcherPosition:n="bottom-right",maxDrawerWidth:r,onOpenChange:i,open:o,...u}){const c=Xs(u.brandName,u.title),[m,_]=f.useState(t),[y,M]=f.useState(()=>t||o===!0),[H,b]=f.useState(!1),z=f.useRef(null),$=o??m,D=$t(u.theme),k=er(r),p=k===void 0?void 0:{"--make-ai-internal-drawer-max-width":`${k}px`},l=A=>{o===void 0&&_(A),i?.(A),A||(b(!1),requestAnimationFrame(()=>z.current?.focus()))},x=()=>l(!$);return f.useEffect(()=>{$&&M(!0)},[$]),f.useEffect(()=>{if(!$)return;const A=Z=>{if(Z.key==="Escape"){if(H){b(!1);return}l(!1),requestAnimationFrame(()=>z.current?.focus())}};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[H,i,$]),a.jsxs("div",{className:"make-ai-assistant","data-open":$||void 0,style:D,children:[!e&&(!$||s)?s?s({open:$,toggle:x}):a.jsxs("button",{"aria-label":$?`关闭 ${c}`:`打开 ${c}`,"aria-expanded":$,className:"make-ai-assistant__launcher","data-launcher-position":n,ref:z,type:"button",onClick:x,children:[a.jsx("span",{className:"make-ai-assistant__launcher-orbit","aria-hidden":"true"}),a.jsx(Ys,{})]}):null,y?a.jsx("aside",{"aria-label":c,"aria-modal":"false",className:`make-ai-assistant__drawer${H?" make-ai-assistant__drawer--fullscreen":""}`,hidden:!$,role:"dialog",style:p,children:a.jsx(na,{...u,isFullscreen:H,onClose:()=>l(!1),onToggleFullscreen:()=>b(A=>!A),visible:$})}):null]})}exports.createArtifactCapabilities=Ce.createArtifactCapabilities;exports.createArtifactTemplateRegistry=Ce.createArtifactTemplateRegistry;exports.extendArtifactTemplateRegistry=Ce.extendArtifactTemplateRegistry;exports.resolveArtifactTemplate=Ce.resolveArtifactTemplate;exports.MAKE_AI_ARTIFACT_KINDS=I.MAKE_AI_ARTIFACT_KINDS;exports.MAKE_AI_ARTIFACT_LIMITS=I.MAKE_AI_ARTIFACT_LIMITS;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION=I.MAKE_AI_ARTIFACT_SCHEMA_VERSION;exports.MAKE_AI_CONVERSATION_LIMITS=I.MAKE_AI_CONVERSATION_LIMITS;exports.appendUserMessage=I.appendUserMessage;exports.createAssistantConversationState=I.createAssistantConversationState;exports.parseArtifact=I.parseArtifact;exports.parseAssistantEvent=I.parseAssistantEvent;exports.reduceAssistantEvent=I.reduceAssistantEvent;exports.validateArtifact=I.validateArtifact;exports.ArtifactRenderer=bs;exports.AssistantPanel=kr;exports.MakeAiAssistant=wr;exports.createPlatformArtifactRegistry=ws;exports.formatArtifactValue=Ne;exports.platformArtifactTemplates=ks;
|
|
3
|
+
`),u=()=>{const v=a.join(`
|
|
4
|
+
`).trim();a.length=0,v&&s.push({type:"paragraph",text:v})},p=()=>{o.length&&s.push({type:"list",items:o.splice(0)})},d=()=>{const v=i.join(`
|
|
5
|
+
`).trim();i.length=0,v&&s.push({type:"pre",text:v})};for(let v=0;v<l.length;v+=1){const S=l[v]??"",R=S.trim();if(!R){u(),p(),d();continue}const O=Ys(l,v);if(O){u(),p(),d(),s.push({headers:O.headers,rows:O.rows,type:"table"}),v=O.lastIndex;continue}const F=/^(#{1,6})\s+(.+)$/.exec(R);if(F){u(),p(),d();const B=(F[2]??"").replace(/\s+#+\s*$/,"").trim();B&&s.push({type:"heading",level:F[1]?.length,text:B});continue}if(/^\s*\|.+\|\s*$/.test(S)){u(),p(),i.push(S.trim());continue}const b=/^\s*[-*]\s+(.+)$/.exec(S);if(b){u(),d(),o.push(b[1]?.trim()??"");continue}p(),d(),a.push(R)}return u(),p(),d(),s},We=t=>{const s=[],a=/(\*\*[^*]+\*\*|`[^`]+`)/g;let o=0;for(const i of t.matchAll(a)){const l=i[0],u=i.index??0;u>o&&s.push(t.slice(o,u)),l.startsWith("**")?s.push(e.jsx("strong",{children:l.slice(2,-2)},`${u}-strong`)):s.push(e.jsx("code",{children:l.slice(1,-1)},`${u}-code`)),o=u+l.length}return o<t.length&&s.push(t.slice(o)),s},Lt=({content:t})=>{const s=Qs(t);return s.length?e.jsx("div",{className:"make-ai-assistant__bubble make-ai-assistant__assistant-text",children:s.map((a,o)=>{if(a.type==="heading"){const i=a.level<=2?"h3":"h4";return e.jsx(i,{className:`make-ai-assistant__markdown-heading make-ai-assistant__markdown-heading--${a.level}`,children:We(a.text)},`${o}-heading`)}return a.type==="paragraph"?e.jsx("p",{children:We(a.text)},`${o}-paragraph`):a.type==="pre"?e.jsx("pre",{children:e.jsx("code",{children:a.text})},`${o}-pre`):a.type==="table"?e.jsx("div",{"aria-label":"表格内容,可横向滚动",className:"make-ai-assistant__markdown-table-scroll",role:"region",tabIndex:0,children:e.jsxs("table",{className:"make-ai-assistant__markdown-table",children:[e.jsx("thead",{children:e.jsx("tr",{children:a.headers.map((i,l)=>e.jsx("th",{scope:"col",children:We(i)},`${l}-${i}`))})}),e.jsx("tbody",{children:a.rows.map((i,l)=>e.jsx("tr",{children:i.map((u,p)=>e.jsx("td",{children:We(u)},`${p}-${u}`))},`${l}-${i.join("|")}`))})]})},`${o}-table`):e.jsx("ul",{children:a.items.map((i,l)=>e.jsx("li",{children:We(i)},`${l}-${i}`))},`${o}-list`)})}):null},Wt=({assistantName:t})=>e.jsxs("div",{className:"make-ai-assistant__message-identity",children:[e.jsx(ot,{className:"make-ai-assistant__avatar--message"}),e.jsx("span",{className:"make-ai-assistant__message-sender",children:t})]}),Gt=t=>{for(let s=t.messages.length-1;s>=0;s-=1){const a=t.messages[s];if(a.role==="assistant"&&a.status==="streaming")return a.id}},ea=t=>{for(let s=t.messages.length-1;s>=0;s-=1)if(t.messages[s].role==="user")return s;return-1},Xt=t=>{const s=ea(t);if(!(s<0))for(let a=t.messages.length-1;a>s;a-=1){const o=t.messages[a];if(o.role==="assistant")return o.id}},ta=t=>{if(t.status==="idle")for(let s=t.messages.length-1;s>=0;s-=1){const a=t.messages[s];if(a.role==="assistant"&&a.status==="complete")return a.id}},sa=t=>{for(let s=t.messages.length-1;s>=0;s-=1){const a=t.messages[s];if(a.role==="user")return a}},aa=(t,s)=>{const a=t.messages.findIndex(o=>o.id===s&&o.role==="user");return{...t,error:void 0,progress:void 0,status:"streaming",messages:a<0?t.messages:t.messages.slice(0,a+1)}},na=t=>t.scrollHeight-t.scrollTop-t.clientHeight<=48,$t=(t="smooth")=>globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":t,ft=(t,s)=>{typeof t.scrollTo=="function"?t.scrollTo({top:t.scrollHeight,behavior:s}):t.scrollTop=t.scrollHeight},Jt=({error:t,onRetry:s})=>e.jsxs("div",{className:"make-ai-assistant__message-status make-ai-assistant__message-status--error","data-error-presentation":"request-failed",role:"alert",children:[e.jsxs("div",{className:"make-ai-assistant__message-status-header",children:[e.jsx("span",{className:"make-ai-assistant__message-status-icon","aria-hidden":"true",children:e.jsx(Ws,{})}),e.jsx("strong",{children:"请求未完成"})]}),e.jsx("span",{className:"make-ai-assistant__message-status-message",children:t.message}),t.retryable&&s?e.jsxs("button",{className:"make-ai-assistant__retry",type:"button",onClick:s,children:[e.jsx(Zt,{}),"重新发送"]}):null]}),ra=({error:t,onRetry:s})=>{const a=Bs(t);return e.jsxs("section",{"aria-live":"assertive",className:"make-ai-assistant__load-failure","data-load-failure-kind":a.kind,role:"alert",children:[e.jsx("span",{className:"make-ai-assistant__load-failure-icon","aria-hidden":"true",children:e.jsxs("svg",{viewBox:"0 0 24 24",children:[e.jsx("path",{d:"M5 12a7 7 0 0 1 13.4-2.8A4.5 4.5 0 0 1 18 18H7.5A4.5 4.5 0 0 1 5 12Z"}),e.jsx("path",{d:"m9.2 14.8 5.6-5.6M9.2 9.2l5.6 5.6"})]})}),e.jsxs("div",{className:"make-ai-assistant__load-failure-copy",children:[e.jsx("span",{className:"make-ai-assistant__load-failure-label",children:a.label}),e.jsx("h3",{children:a.title}),e.jsx("p",{children:a.description})]}),e.jsxs("button",{className:"make-ai-assistant__retry make-ai-assistant__retry--primary",type:"button",onClick:s,children:[e.jsx(Zt,{}),a.actionLabel]})]})},Yt=({active:t,steps:s})=>{const[a,o]=c.useState(!1);if(!t||!s?.length)return null;const i=s[s.length-1]??"处理中";return e.jsxs("details",{className:"make-ai-assistant__process",open:a,onToggle:l=>o(l.currentTarget.open),children:[e.jsxs("summary",{"aria-label":`查看处理过程,共 ${s.length} 步`,children:[e.jsxs("span",{className:"make-ai-assistant__process-summary",children:[e.jsx("span",{className:"make-ai-assistant__process-indicator","aria-hidden":"true"}),e.jsxs("span",{className:"make-ai-assistant__process-copy",children:[e.jsx("span",{className:"make-ai-assistant__process-title",children:"处理过程"}),e.jsx("span",{className:"make-ai-assistant__progress make-ai-assistant__process-latest",role:"status",children:i})]})]}),e.jsxs("span",{className:"make-ai-assistant__process-count",children:[s.length," 步"]})]}),e.jsx("ol",{children:s.map((l,u)=>e.jsxs("li",{"data-step-active":u===s.length-1?!0:void 0,children:[e.jsx("span",{"aria-hidden":"true"}),e.jsx("span",{children:l})]},`${u}-${l}`))})]})},ia=({copyFeedback:t,feedback:s,onCopy:a,onRegenerate:o})=>!s&&!a&&!o?null:e.jsxs("div",{className:"make-ai-assistant__reply-actions","aria-label":"回复操作",children:[a?e.jsx("button",{"aria-label":"复制回答",className:"make-ai-assistant__reply-action make-ai-assistant__reply-copy","data-tooltip":"复制",type:"button",onClick:a,children:e.jsx(vs,{"aria-hidden":"true",className:"make-ai-assistant__reply-copy-icon"})}):null,s,o?e.jsx("button",{"aria-label":"重新生成",className:"make-ai-assistant__reply-action make-ai-assistant__reply-regenerate","data-tooltip":"重新生成",type:"button",onClick:o,children:e.jsx(qs,{})}):null,t?e.jsx("span",{className:"make-ai-assistant__reply-feedback","data-copy-status":t.status,role:"status",children:t.message}):null]}),Ot=({assistantName:t,error:s,onRetry:a,progress:o})=>{const i=s?"error":"progress";return s?.message??o?.message?e.jsx("article",{"aria-label":`${t}的${i==="error"?"错误消息":"状态消息"}`,className:`make-ai-assistant__message make-ai-assistant__message--assistant make-ai-assistant__message--${i}`,"data-message-role":"assistant","data-message-state":i,children:e.jsxs("div",{className:"make-ai-assistant__message-turn",children:[e.jsx(Wt,{assistantName:t}),e.jsx("div",{className:"make-ai-assistant__message-stack",children:s?e.jsx(Jt,{error:s,onRetry:a}):e.jsx(Yt,{active:!0,steps:o?.steps})})]})}):null},oa=(t,s,a,o,i,l,u,p,d,v,S,R,O,F,b,B)=>{const L=Xt(t),D=Gt(t),k=ta(t);let f;return t.messages.map(n=>{if(n.intermediate)return e.jsxs("details",{className:"make-ai-assistant__process",children:[e.jsx("summary",{children:"处理过程"}),e.jsx(Lt,{content:n.content})]},n.id);const _=n.role==="assistant",A=f;_||(f=n);const G=n.id===D,I=n.id===L?t.error:void 0,z=n.error??I,J=!_&&!!(d?.trim()||v),ae=_?u:d?.trim()||"用户",Z=_&&n.status==="complete"&&!z&&(n.content.trim()||n.id===k),ce=!!(b&&B?.features?.feedback&&_&&n.persistent),me=Z||ce;return e.jsx("article",{"aria-label":`${ae}的消息`,className:`make-ai-assistant__message make-ai-assistant__message--${n.role}`,"data-message-role":n.role,"data-message-state":z?"error":void 0,"data-message-status":n.status,"data-message-has-identity":_||J?!0:void 0,children:e.jsxs("div",{className:"make-ai-assistant__message-turn",children:[_?e.jsx(Wt,{assistantName:u}):J?e.jsx(Xs,{userAvatarUrl:v,userName:d}):null,e.jsxs("div",{className:"make-ai-assistant__message-stack",children:[_&&n.responseId&&t.responses?.[n.responseId]?.status==="cancelled"?e.jsx("p",{className:"make-ai-assistant__response-status",role:"status",children:"已停止生成"}):null,n.content?_?e.jsx(Lt,{content:n.content}):e.jsx("div",{className:"make-ai-assistant__bubble",children:n.content}):n.status==="streaming"?e.jsxs("div",{className:"make-ai-assistant__typing","aria-label":`${u}正在思考`,children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}):null,_?e.jsx(Yt,{active:G&&t.status==="streaming",steps:n.progressSteps}):null,z?e.jsx(Jt,{error:z,onRetry:I?p:void 0}):null,n.artifacts.map(je=>e.jsx(Ut,{artifact:je,context:s,onAction:i,onActionError:l,registry:a,theme:o},je.id)),b&&B&&t.threadId?e.jsx(Ns,{message:n,context:s,transport:B,chatId:t.threadId}):null,me?e.jsx(ia,{copyFeedback:S?.messageId===n.id?{message:S.message,status:S.status}:void 0,onCopy:n.content.trim()?()=>O(n.id,n.content):void 0,feedback:b&&ce?e.jsx(ws,{message:n,manager:b}):void 0,onRegenerate:R&&n.id===k&&A?()=>F({userMessage:A,assistantMessage:n}):void 0}):null]})]})},`${t.threadId??"local"}:${n.id}`)})};function Qt({assistantName:t="AI 助手",brandName:s,context:a,onAction:o,onActionError:i,onClose:l,onNewConversation:u,onToggleFullscreen:p,headerHeight:d,isFullscreen:v=!1,registry:S,suggestions:R,title:O,theme:F,transport:b,userAvatarUrl:B,userName:L,visible:D}){const k=xs(a,b),f=Ss(a,b,k),n=zt(s,O),_=Ks(d),A=pt(F),G=A||_?{...A,..._?{"--make-ai-internal-header-height":_}:{}}:void 0,[I,z]=c.useState(""),[J,ae]=c.useState(!1),[Z,ce]=c.useState(!1),me=k.enabled?b.scopeKey?.(a)??a.app.id:"";c.useLayoutEffect(()=>{k.enabled&&z("")},[me,k.enabled]);const[je,Pe]=c.useState(j.createAssistantConversationState),P=k.enabled?k.state:je,H=k.enabled?k.setState:Pe,$=c.useRef(P);$.current=P;const[X,re]=c.useState(void 0),[pe,le]=c.useState(void 0),[Ie,T]=c.useState(0),[ee,Y]=c.useState(()=>b.loadConversation?"loading":"ready"),Q=k.enabled?k.loading&&!P.messages.length?"loading":"ready":ee,[Ue,De]=c.useState(void 0),[Ge,ie]=c.useState(!1),q=c.useRef(void 0),oe=c.useRef(void 0),_e=c.useRef(0),we=c.useRef(null),be=c.useRef(null),Me=c.useRef(null),Ce=c.useRef(null),Ke=c.useRef(null),He=c.useRef(null),he=c.useRef(!0),Xe=c.useRef(a.app.id),Je=c.useRef(D),Ye=c.useId();c.useLayoutEffect(()=>{const h=Me.current;h&&(h.style.height="auto",h.style.height=`${Math.min(Math.max(h.scrollHeight,Fs),Ps)}px`)},[I]);const Qe=c.useMemo(()=>S??Bt(),[S]),et=c.useMemo(()=>Us(R),[R]),Ee=h=>{const K=q.current,V=oe.current?.iterator;return!K&&!V?!1:(_e.current+=1,q.current=void 0,oe.current=void 0,console.info("[make-ai-assistant] local run cancellation requested",{reason:h}),K?.abort(),Tt(V),!0)};c.useEffect(()=>()=>{Ee("unmount")},[]),c.useEffect(()=>{if(k.enabled)return;const h=b.loadConversation,K=Xe.current!==a.app.id;if(Xe.current=a.app.id,Ee("reinitialize"),K&&(z(""),he.current=!0),re(void 0),le(void 0),ie(!1),H(j.createAssistantConversationState()),!h){De(void 0),Y("ready");return}const V=new AbortController;return De(void 0),Y("loading"),console.info("[make-ai-assistant] conversation load start",{appId:a.app.id}),h.call(b,a,{signal:V.signal}).then(te=>{V.signal.aborted||(H(j.createAssistantConversationState(te)),Y("ready"),console.info("[make-ai-assistant] conversation load success",{appId:a.app.id,messageCount:te.messages.length}))}).catch(te=>{V.signal.aborted||(console.error("[make-ai-assistant] conversation load failed",{appId:a.app.id,errorType:te instanceof Error?te.name:typeof te}),De(te),Y("error"))}),()=>V.abort()},[a.app.id,Ie,b,k.enabled]),c.useEffect(()=>{const h=be.current;if(!h||!he.current)return;ie(!1);const K=requestAnimationFrame(()=>{if(!he.current)return;const V=P.status==="streaming"||globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches?"auto":"smooth";ft(h,V)});return()=>cancelAnimationFrame(K)},[P.messages,P.progress,P.status]),c.useEffect(()=>{D||(ae(!1),ce(!1))},[D]),c.useEffect(()=>{const h=D&&!Je.current;if(Je.current=D,!h)return;const K=requestAnimationFrame(()=>{const V=be.current;if(V&&he.current){ie(!1);const Ve=$.current.status==="streaming"?"auto":$t();ft(V,Ve)}else V&&ie($.current.messages.length>0);const te=Me.current;(te&&!te.disabled?te:He.current??we.current?.querySelector("button:not(:disabled)"))?.focus()});return()=>cancelAnimationFrame(K)},[D]);const Be=()=>{const h=be.current;if(!h)return;const K=na(h);he.current=K,ie(!K&&$.current.messages.length>0)},Ae=()=>{const h=be.current;if(!h)return;he.current=!0,ie(!1);const K=$t();ft(h,K)},r=async(h,K)=>{const V=h.trim(),te=$.current,ge=K?.regenerateFrom,Ve=b.regenerate;if(!V||Q!=="ready"||te.status==="streaming"||q.current||ge&&!Ve)return;if(j.countCodePointsUpTo(V,j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)>j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters){re(`输入内容过长,请控制在 ${j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters} 个字符以内`);return}const st={id:ge?.userMessage.id??Ls("user"),content:V},at=ge?aa(te,ge.userMessage.id):j.appendUserMessage(te,st),nt=new AbortController,Te=_e.current+1;_e.current=Te,q.current=nt,re(void 0),le(void 0),ie(!he.current&&te.messages.length>0),ge||z(""),H(at);try{let ye=!1,ne,_t=0,bt=0,yt=0,lt=0,ze=0;const qe=new Map,xt=new Set,kt=new Set([...at.messages.map(rt=>rt.id),st.id]),Ze=new Set,jt=ke.createArtifactCapabilities(Qe),It={signal:nt.signal};let dt;if(ge){if(!Ve)throw new W("当前 AI 助手不支持重新生成");dt=Ve({threadId:at.threadId,message:st,assistantMessage:{id:ge.assistantMessage.id,content:ge.assistantMessage.content},context:a,capabilities:jt},It)}else dt=b.run({threadId:at.threadId,message:st,context:a,capabilities:jt},It);const wt=dt[Symbol.asyncIterator]();for(oe.current={iterator:wt,requestVersion:Te};;){const rt=await wt.next();if(_e.current!==Te||rt.done)break;let E;try{E=j.parseAssistantEvent(rt.value)}catch(ue){throw new W(ue instanceof Error?ue.message:"Invalid assistant event")}if(E.type==="message.start"){if(ne!==void 0&&ne!==E.runId)throw new W("AI 助手响应 run id 不一致");if(ne??=E.runId,bt+=1,bt>j.MAKE_AI_CONVERSATION_LIMITS.assistantMessagesPerRun)throw new W("AI 助手单次响应消息数量超过限制");if(kt.has(E.messageId))throw new W("AI 助手响应包含重复的 message id");kt.add(E.messageId),Ze.add(E.messageId),qe.set(E.messageId,0)}if(E.type==="message.delta"){if(!Ze.has(E.messageId))throw new W("AI 助手响应事件顺序无效");const ue=qe.get(E.messageId)??0,Re=j.countCodePointsUpTo(E.delta,j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters-ze);if(ze+Re>j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new W("AI 助手响应文本超过大小限制");ze+=Re,qe.set(E.messageId,ue+Re)}if(E.type==="message.replace"){if(!Ze.has(E.messageId))throw new W("AI 助手响应事件顺序无效");const ue=qe.get(E.messageId)??0,Re=j.countCodePointsUpTo(E.content,j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters),At=ze-ue+Re;if(At>j.MAKE_AI_CONVERSATION_LIMITS.messageCharacters)throw new W("AI 助手响应文本超过大小限制");ze=At,qe.set(E.messageId,Re)}if(E.type==="run.progress"){if(ne!==void 0&&ne!==E.runId)throw new W("AI 助手响应 run id 不一致");if(ne??=E.runId,yt+=1,yt>j.MAKE_AI_CONVERSATION_LIMITS.progressStepsPerRun)throw new W("AI 助手处理过程数量超过限制");const ue=j.countCodePointsUpTo(E.message,j.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun-lt);if(lt+ue>j.MAKE_AI_CONVERSATION_LIMITS.progressCharactersPerRun)throw new W("AI 助手处理过程文本超过大小限制");lt+=ue}if(E.type==="artifact"){if(!Ze.has(E.messageId))throw new W("AI 助手响应事件顺序无效");if(_t+=1,_t>j.MAKE_AI_CONVERSATION_LIMITS.artifactsPerRun)throw new W("AI 助手单次响应 Artifact 数量超过限制");if(xt.has(E.artifact.id))throw new W("AI 助手响应包含重复的 Artifact id");xt.add(E.artifact.id)}if(E.type==="message.complete"&&!Ze.delete(E.messageId))throw new W("AI 助手响应事件顺序无效");if(E.type==="run.complete"&&ne!==void 0&&ne!==E.runId)throw new W("AI 助手响应 run id 不一致");if(E.type==="run.cancelled"&&E.runId!==void 0&&ne!==void 0&&ne!==E.runId)throw new W("AI 助手响应 run id 不一致");if(H(ue=>j.reduceAssistantEvent(ue,E)),E.type==="error"||E.type==="run.cancelled"||E.type==="run.complete"){ye=!0;break}}if(!ye)throw new W("AI 助手流式响应在终止事件前结束")}catch(ye){if(_e.current!==Te)return;if(nt.signal.aborted){H(ne=>j.reduceAssistantEvent(ne,{type:"run.cancelled"}));return}console.error("[make-ai-assistant] assistant run failed",{appId:a.app.id,errorType:ye instanceof Error?ye.name:typeof ye}),H(ne=>j.reduceAssistantEvent(ne,{type:"error",code:"TRANSPORT_ERROR",message:ye instanceof W?ye.message:"连接失败,请重试",retryable:!0}))}finally{_e.current===Te&&q.current===nt&&(q.current=void 0),oe.current?.requestVersion===Te&&(Tt(oe.current.iterator),oe.current=void 0)}},m=h=>{if(k.enabled){if(f.pending)return re("请等待附件上传完成,或移除失败的附件"),Promise.resolve();const K=h.trim(),V=f.parts.length?[...K?[{id:$e(),kind:"text",text:K}]:[],...f.parts]:void 0;return z(""),f.clear(),k.send(K,V)}return r(h)},g=h=>r(h.userMessage.content,{regenerateFrom:h}),y=async(h,K)=>{try{await Vs(K),le({messageId:h,message:"已复制",status:"success"})}catch(V){console.error("[make-ai-assistant] copy answer failed",{errorType:V instanceof Error?V.name:typeof V}),le({messageId:h,message:"复制失败",status:"error"})}},w=h=>{h.preventDefault(),m(I)},C=h=>{h.key==="Enter"&&!h.shiftKey&&!h.nativeEvent.isComposing&&(h.preventDefault(),m(I))},x=()=>{if(k.enabled){k.stop();return}Ee("stop")&&H(h=>j.reduceAssistantEvent(h,{type:"run.cancelled"}))},M=()=>{if(ce(!1),k.enabled){z(""),k.create(),u?.();return}Ee("new-conversation"),z(""),re(void 0),le(void 0),ie(!1),he.current=!0,H(j.createAssistantConversationState()),u?.()},N=k.enabled&&k.cancelling.length?"停止中":b.features?.remoteCancellation===!1?"停止接收":"停止生成",U=Gt(P),ve=Xt(P),Ne=sa(P),tt=typeof b.regenerate=="function"&&b.features?.regeneration!==!1,de=()=>{if(k.enabled){k.retry();return}Ne&&m(Ne.content)},Se=h=>{if(h.key==="Escape"&&!(!J&&!Z)){if(h.preventDefault(),h.stopPropagation(),J){ae(!1),Ce.current?.focus();return}ce(!1),Ke.current?.focus()}};return e.jsxs("section",{className:`make-ai-assistant make-ai-assistant__panel${k.enabled?" make-ai-assistant__panel--managed":""}`,ref:we,style:G,onKeyDown:Se,onDragOver:h=>{f.enabled&&h.dataTransfer.types.includes("Files")&&h.preventDefault()},onDrop:h=>{f.enabled&&h.dataTransfer.files.length&&(h.preventDefault(),f.add(Array.from(h.dataTransfer.files)))},children:[e.jsxs("header",{className:"make-ai-assistant__header",children:[e.jsx("div",{className:"make-ai-assistant__header-leading",children:k.enabled?e.jsxs("button",{"aria-controls":Ye,"aria-expanded":Z,"aria-haspopup":"dialog","aria-label":"任务列表",className:"make-ai-assistant__task-list-trigger",ref:Ke,type:"button",onClick:()=>ce(h=>!h),children:[e.jsx(bs,{"aria-hidden":"true",className:"make-ai-assistant__task-list-icon"}),e.jsx("span",{className:"make-ai-assistant__task-list-label",children:"任务列表"}),Z?e.jsx(ys,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"}):e.jsx(gs,{"aria-hidden":"true",className:"make-ai-assistant__task-list-disclosure"})]}):null}),e.jsxs("div",{className:"make-ai-assistant__header-center",children:[e.jsx(ot,{}),e.jsx("h2",{className:"make-ai-assistant__header-title",title:n,children:n})]}),e.jsxs("div",{className:"make-ai-assistant__header-actions",children:[p?e.jsx("button",{"aria-label":v?"退出全屏":"全屏显示","aria-pressed":v,className:"make-ai-assistant__icon-button",title:v?"退出全屏":"全屏显示",type:"button",onClick:p,children:v?e.jsx(ps,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"}):e.jsx(_s,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,b.features?.newConversation!==!1?e.jsx("button",{"aria-label":"新建对话",className:"make-ai-assistant__icon-button",type:"button",onClick:M,children:e.jsx(vt,{"aria-hidden":"true",className:"make-ai-assistant__icon-button-icon"})}):null,l?e.jsx("button",{"aria-label":`关闭 ${n}`,className:"make-ai-assistant__icon-button",type:"button",onClick:l,children:e.jsx(zs,{})}):null]})]}),k.enabled&&Z?e.jsx(Is,{id:Ye,manager:k,triggerRef:Ke,onDismiss:()=>ce(!1),onNewConversation:b.features?.newConversation!==!1?M:void 0}):null,e.jsxs("div",{className:"make-ai-assistant__body","aria-live":"polite","aria-relevant":"additions text",ref:be,role:"log",onScroll:Be,children:[Q==="loading"?e.jsxs("div",{className:"make-ai-assistant__empty",role:"status",children:[e.jsx(ot,{}),e.jsx("h3",{children:"正在恢复对话"}),e.jsx("p",{children:"正在读取当前 App 的历史消息…"})]}):Q==="error"?e.jsx("div",{className:"make-ai-assistant__empty",children:e.jsx(ra,{error:Ue,onRetry:()=>T(h=>h+1)})}):P.messages.length===0?e.jsxs("div",{className:"make-ai-assistant__empty",children:[e.jsx(ot,{}),e.jsx("h3",{children:"有什么可以帮你?"}),e.jsx("p",{children:"我会结合当前 App、页面位置和宿主允许的上下文回答,并把过程与结果分开展示。"})]}):oa(P,a,Qe,F,o,i,t,Ne?de:void 0,L,B,pe,tt,(h,K)=>{y(h,K)},h=>{g(h)},k.enabled?k:void 0,b),P.progress&&!U?e.jsx(Ot,{assistantName:t,progress:P.progress}):null,P.error&&!ve?e.jsx(Ot,{assistantName:t,error:P.error,onRetry:Ne?de:void 0}):null]}),Ge?e.jsx("button",{"aria-label":"回到最新消息",className:"make-ai-assistant__back-to-latest",type:"button",onClick:Ae,children:e.jsx(Zs,{})}):null,e.jsxs("footer",{className:"make-ai-assistant__composer-region",children:[Q==="ready"&&et.length>0&&P.messages.length===0?e.jsx("div",{className:"make-ai-assistant__suggestions","aria-label":"推荐问题",children:et.map((h,K)=>e.jsx("button",{type:"button",onClick:()=>{m(h)},children:h},`${K}-${h}`))}):null,e.jsxs("form",{className:"make-ai-assistant__composer",onSubmit:w,children:[f.enabled?e.jsx(Rs,{attachments:f,visible:D}):null,e.jsx("textarea",{"aria-label":`向 ${t} 提问`,"aria-describedby":X?"make-ai-composer-error":void 0,"aria-invalid":X?!0:void 0,autoFocus:!0,disabled:Q!=="ready"||!k.enabled&&P.status==="streaming",placeholder:`询问当前 ${a.app.name??"App"} 中的数据…`,ref:Me,rows:2,value:I,onChange:h=>{z(h.currentTarget.value),re(void 0)},onKeyDown:C,onPaste:h=>{!f.enabled||!h.clipboardData.files.length||(h.preventDefault(),f.add(Array.from(h.clipboardData.files)))}}),e.jsxs("div",{className:"make-ai-assistant__composer-toolbar",children:[f.enabled?e.jsx(Ts,{attachments:f,open:J,triggerRef:Ce,onOpenChange:ae}):null,e.jsxs("div",{className:"make-ai-assistant__composer-actions",children:[P.status==="streaming"?e.jsx("button",{"aria-label":N,className:"make-ai-assistant__send make-ai-assistant__send--stop","data-tooltip":N,ref:He,disabled:k.enabled&&k.cancelling.includes(P.activeRunId??""),type:"button",onClick:x,children:e.jsx("span",{"aria-hidden":"true"})}):e.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:Q!=="ready"||f.pending||!I.trim()&&!f.parts.length,type:"submit",children:e.jsx(Rt,{})}),k.enabled&&P.status==="streaming"?e.jsx("button",{"aria-label":"发送",className:"make-ai-assistant__send",disabled:k.busy||f.pending||!I.trim()&&!f.parts.length,type:"submit",children:e.jsx(Rt,{})}):null]})]})]}),X?e.jsx("p",{id:"make-ai-composer-error",role:"alert",children:X}):null,e.jsx("p",{children:"AI 生成的结果可能存在偏差,重要数据请核对明细。"})]})]})}function ca(t){return e.jsx(Qt,{...t,visible:!0})}function la({defaultOpen:t=!1,hideLauncher:s=!1,launcher:a,launcherPosition:o="bottom-right",maxDrawerWidth:i,onOpenChange:l,open:u,...p}){const d=zt(p.brandName,p.title),[v,S]=c.useState(t),[R,O]=c.useState(()=>t||u===!0),[F,b]=c.useState(!1),B=c.useRef(null),L=u??v,D=pt(p.theme),k=Ds(i),f=k===void 0?void 0:{"--make-ai-internal-drawer-max-width":`${k}px`},n=A=>{u===void 0&&S(A),l?.(A),A||(b(!1),requestAnimationFrame(()=>B.current?.focus()))},_=()=>n(!L);return c.useEffect(()=>{L&&O(!0)},[L]),c.useEffect(()=>{if(!L)return;const A=G=>{if(G.key==="Escape"){if(F){b(!1);return}n(!1),requestAnimationFrame(()=>B.current?.focus())}};return document.addEventListener("keydown",A),()=>document.removeEventListener("keydown",A)},[F,l,L]),e.jsxs("div",{className:"make-ai-assistant","data-open":L||void 0,style:D,children:[!s&&(!L||a)?a?a({open:L,toggle:_}):e.jsxs("button",{"aria-label":L?`关闭 ${d}`:`打开 ${d}`,"aria-expanded":L,className:"make-ai-assistant__launcher","data-launcher-position":o,ref:B,type:"button",onClick:_,children:[e.jsx("span",{className:"make-ai-assistant__launcher-orbit","aria-hidden":"true"}),e.jsx(qt,{})]}):null,R?e.jsx("aside",{"aria-label":d,"aria-modal":"false",className:`make-ai-assistant__drawer${F?" make-ai-assistant__drawer--fullscreen":""}`,hidden:!L,role:"dialog",style:f,children:e.jsx(Qt,{...p,isFullscreen:F,onClose:()=>n(!1),onToggleFullscreen:()=>b(A=>!A),visible:L})}):null]})}exports.createArtifactCapabilities=ke.createArtifactCapabilities;exports.createArtifactTemplateRegistry=ke.createArtifactTemplateRegistry;exports.extendArtifactTemplateRegistry=ke.extendArtifactTemplateRegistry;exports.resolveArtifactTemplate=ke.resolveArtifactTemplate;exports.MAKE_AI_ARTIFACT_KINDS=j.MAKE_AI_ARTIFACT_KINDS;exports.MAKE_AI_ARTIFACT_LIMITS=j.MAKE_AI_ARTIFACT_LIMITS;exports.MAKE_AI_ARTIFACT_SCHEMA_VERSION=j.MAKE_AI_ARTIFACT_SCHEMA_VERSION;exports.MAKE_AI_CONVERSATION_LIMITS=j.MAKE_AI_CONVERSATION_LIMITS;exports.appendUserMessage=j.appendUserMessage;exports.createAssistantConversationState=j.createAssistantConversationState;exports.parseArtifact=j.parseArtifact;exports.parseAssistantEvent=j.parseAssistantEvent;exports.reduceAssistantEvent=j.reduceAssistantEvent;exports.validateArtifact=j.validateArtifact;exports.ArtifactRenderer=Ut;exports.AssistantPanel=ca;exports.MakeAiAssistant=la;exports.createPlatformArtifactRegistry=Bt;exports.formatArtifactValue=xe;exports.platformArtifactTemplates=Ht;
|