@nebulars/sseengine 1.0.0 → 1.3.44

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.
Files changed (40) hide show
  1. package/.prettierignore +0 -0
  2. package/.prettierrc.cjs +8 -0
  3. package/dist/sseengine.css +1 -0
  4. package/dist/sseengine.umd.js +1 -0
  5. package/package.json +19 -4
  6. package/src/components/{fqa-answer → sse-answer}/index.vue +7 -6
  7. package/src/components/{fqa-chat → sse-chat}/index.vue +9 -9
  8. package/src/components/sse-drawer/index.vue +256 -0
  9. package/src/components/sse-drawer/modify.less +38 -0
  10. package/src/components/sse-enter/index.vue +210 -0
  11. package/src/components/sse-enter/modify.less +101 -0
  12. package/src/components/{fqa-hub → sse-hub}/index.vue +4 -4
  13. package/src/components/sse-menus/index.vue +288 -0
  14. package/src/components/sse-menus/popover-modify.less +26 -0
  15. package/src/components/sse-notes/index.vue +236 -0
  16. package/src/components/sse-notes/modify.less +3 -0
  17. package/src/components/{fqa-query → sse-query}/index.vue +12 -12
  18. package/src/components/{fqa-recursion → sse-recursion}/index.vue +4 -4
  19. package/src/components/{fqa-root → sse-root}/index.vue +1 -1
  20. package/src/components/sse-submit/index.vue +63 -0
  21. package/src/components/sse-submit/modify.less +8 -0
  22. package/src/index.js +11 -2
  23. package/src/index.vue +2 -2
  24. package/src/store/feedback.js +8 -0
  25. package/src/store/index.js +166 -3
  26. package/src/store/info.js +20 -0
  27. package/src/store/launch.js +18 -0
  28. package/src/store/menus.js +45 -0
  29. package/src/store/modify.less +127 -0
  30. package/src/store/presets.js +95 -0
  31. package/src/store/remote.js +34 -0
  32. package/src/store/session.js +57 -0
  33. package/src/store/sevani.js +15 -0
  34. package/src/store/sse.js +223 -0
  35. package/src/store/sup.js +7 -0
  36. package/sseengine.zip +0 -0
  37. package/src/components/fqa-icon/index.vue +0 -36
  38. /package/src/components/{fqa-chat → sse-chat}/conversation.less +0 -0
  39. /package/src/components/{fqa-chat → sse-chat}/sup.less +0 -0
  40. /package/src/components/{fqa-flip → sse-flip}/index.vue +0 -0
File without changes
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ arrowParens: 'avoid',
3
+ trailingComma: 'all',
4
+ tabWidth: 2,
5
+ semi: true,
6
+ singleQuote: true,
7
+ printWidth: 360,
8
+ };
@@ -0,0 +1 @@
1
+ #download[data-v-7496a1ff]{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll[data-v-7496a1ff]{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll[data-v-7496a1ff]::-webkit-scrollbar{width:8px}.scroll[data-v-7496a1ff]::-webkit-scrollbar-track{background:transparent}.scroll[data-v-7496a1ff]::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll[data-v-7496a1ff]:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy[data-v-7496a1ff]{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn[data-v-7496a1ff],.ant-tabs-tab[data-v-7496a1ff],.ant-menu-item[data-v-7496a1ff],.ant-select-selector[data-v-7496a1ff],.ant-radio-wrapper[data-v-7496a1ff],.ant-checkbox-wrapper[data-v-7496a1ff]{cursor:pointer!important}.fqa-answer-atte[data-v-7496a1ff]{margin-right:auto;cursor:pointer;transition:all .36s;color:#000}.fqa-answer-atte[data-v-7496a1ff]:hover{color:#484848}.fqa-chat-panel-title[data-v-7496a1ff]{flex:1}#download[data-v-46aaa707]{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll[data-v-46aaa707]{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll[data-v-46aaa707]::-webkit-scrollbar{width:8px}.scroll[data-v-46aaa707]::-webkit-scrollbar-track{background:transparent}.scroll[data-v-46aaa707]::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll[data-v-46aaa707]:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy[data-v-46aaa707]{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn[data-v-46aaa707],.ant-tabs-tab[data-v-46aaa707],.ant-menu-item[data-v-46aaa707],.ant-select-selector[data-v-46aaa707],.ant-radio-wrapper[data-v-46aaa707],.ant-checkbox-wrapper[data-v-46aaa707]{cursor:pointer!important}.fqa-chat[data-v-46aaa707]{flex-direction:column;display:flex;gap:16px;font-size:14px;padding-block:16px}.fqa-chat-produce[data-v-46aaa707]{opacity:75%}.fqa-chat-panel-title[data-v-46aaa707]{max-width:90%}.fqa-chat-blank[data-v-46aaa707]{width:100%;height:18vh}#download[data-v-8e3d6699]{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll[data-v-8e3d6699]{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll[data-v-8e3d6699]::-webkit-scrollbar{width:8px}.scroll[data-v-8e3d6699]::-webkit-scrollbar-track{background:transparent}.scroll[data-v-8e3d6699]::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll[data-v-8e3d6699]:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy[data-v-8e3d6699]{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn[data-v-8e3d6699],.ant-tabs-tab[data-v-8e3d6699],.ant-menu-item[data-v-8e3d6699],.ant-select-selector[data-v-8e3d6699],.ant-radio-wrapper[data-v-8e3d6699],.ant-checkbox-wrapper[data-v-8e3d6699]{cursor:pointer!important}.fqa-flip[data-v-8e3d6699]{color:#484848;display:flex;flex-direction:column}.fqa-flip.freeze[data-v-8e3d6699]{pointer-events:none;color:#a8a8a8!important}.fqa-flip-controller[data-v-8e3d6699]{margin-left:auto;padding:16px 0;align-self:flex-end;justify-content:flex-end}.fqa-flip-disabled[data-v-8e3d6699]{color:#a8a8a8!important}#download[data-v-9e607206]{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll[data-v-9e607206]{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll[data-v-9e607206]::-webkit-scrollbar{width:8px}.scroll[data-v-9e607206]::-webkit-scrollbar-track{background:transparent}.scroll[data-v-9e607206]::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll[data-v-9e607206]:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy[data-v-9e607206]{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn[data-v-9e607206],.ant-tabs-tab[data-v-9e607206],.ant-menu-item[data-v-9e607206],.ant-select-selector[data-v-9e607206],.ant-radio-wrapper[data-v-9e607206],.ant-checkbox-wrapper[data-v-9e607206]{cursor:pointer!important}.fqa-icon[data-v-9e607206]{transition:all .36s}#download[data-v-81f2e091]{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll[data-v-81f2e091]{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll[data-v-81f2e091]::-webkit-scrollbar{width:8px}.scroll[data-v-81f2e091]::-webkit-scrollbar-track{background:transparent}.scroll[data-v-81f2e091]::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll[data-v-81f2e091]:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy[data-v-81f2e091]{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn[data-v-81f2e091],.ant-tabs-tab[data-v-81f2e091],.ant-menu-item[data-v-81f2e091],.ant-select-selector[data-v-81f2e091],.ant-radio-wrapper[data-v-81f2e091],.ant-checkbox-wrapper[data-v-81f2e091]{cursor:pointer!important}.fqa-query[data-v-81f2e091]{align-self:flex-end;justify-content:flex-end}.fqa-query-content[data-v-81f2e091]{max-width:70%;margin-left:auto;padding:16px;white-space:pre-line;border-radius:16px;color:#003172;background-color:#d8e9ff}.fqa-query-control[data-v-81f2e091]{display:flex;flex-direction:row;padding:0 4px;margin-left:auto;transition:all .24s;opacity:0}.fqa-query-control.hover[data-v-81f2e091]{opacity:1}.fqa-query-editable[data-v-81f2e091]{border-radius:16px;background-color:#fdfeff}.fqa-query-bunny[data-v-81f2e091]{width:100%;padding:16px;justify-content:flex-end}.fqa-query-cancel[data-v-81f2e091]{background-color:#f7f8f9}.fqa-query-send[data-v-81f2e091]{color:#fdfeff;background-color:#484848}.fqa-query-send[data-v-81f2e091]:hover{color:#fdfeff;background-color:#343434}.fqa-query-input[data-v-81f2e091]{color:#484848;border-color:transparent!important;background-color:transparent!important;box-shadow:none!important;resize:none!important;transition:all .12s}.fqa-query-input[data-v-81f2e091]::placeholder{color:#000}.fqa-query-input[data-v-81f2e091]:focus::placeholder{color:#000}#download[data-v-701699c1]{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll[data-v-701699c1]{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll[data-v-701699c1]::-webkit-scrollbar{width:8px}.scroll[data-v-701699c1]::-webkit-scrollbar-track{background:transparent}.scroll[data-v-701699c1]::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll[data-v-701699c1]:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy[data-v-701699c1]{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn[data-v-701699c1],.ant-tabs-tab[data-v-701699c1],.ant-menu-item[data-v-701699c1],.ant-select-selector[data-v-701699c1],.ant-radio-wrapper[data-v-701699c1],.ant-checkbox-wrapper[data-v-701699c1]{cursor:pointer!important}.fqa-recursion[data-v-701699c1]{flex-direction:column;display:flex;gap:16px}.fqa-conversation{width:100%;flex-direction:column;display:flex;gap:16px}.markdown-notes-sup{color:#fff;background-color:#aeaeae;cursor:pointer;transition:all .24s}.markdown-notes-sup:hover{color:#fff;background-color:#194a8c}.markdown-notes-sup:focus,.markdown-notes-sup.active{color:#fff;background-color:#194a8c}#download{width:0;height:0;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;position:fixed;top:-100%;left:-100%;z-index:-100}.scroll{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent;scroll-behavior:smooth}.scroll::-webkit-scrollbar{width:8px}.scroll::-webkit-scrollbar-track{background:transparent}.scroll::-webkit-scrollbar-thumb{background-color:#fff3;border-radius:8px;transition:background-color .3s}.scroll:hover::-webkit-scrollbar-thumb{background-color:#fff6}.fantasy{top:4px;position:relative;font-family:fantasy,sans-serif}.ant-btn,.ant-tabs-tab,.ant-menu-item,.ant-select-selector,.ant-radio-wrapper,.ant-checkbox-wrapper{cursor:pointer!important}.FinQA--Container{position:relative;background-color:transparent}.FinQA--Header,.FinQA--Footer,.FinQA--Main{display:flex}.FinQA--Header,.FinQA--Footer{flex-direction:row}.FinQA--Main{flex-direction:column}.FinQA--Main,.FinQA--Chat{flex:1}.FinQA--Header,.FinQA--Footer,.FinQA--Main{align-items:center}.FinQA--Header,.FinQA--Footer{justify-content:space-between}.FinQA--Header,.FinQA--Footer,.FinQA--Main{transition:all .24s}.FinQA--Header,.FinQA--Footer,.FinQA--Chat,.FinQA--Mention{padding-inline:16px}.FinQA--Input{padding:16px}.FinQA--Header,.FinQA--Footer,.FinQA--Main{width:100%}.FinQA--Input{height:100%}.FinQA--Header{height:60px}.FinQA--Footer{height:30px}.FinQA--Chat,.FinQA--Mention{width:760px}.FinQA--Welcome{height:100%}.FinQA--Input,.FinQA--Header{background-color:#fdfeff}.FinQA--Input{border-radius:16px}.FinQA--Mention{position:relative}
@@ -0,0 +1 @@
1
+ (function(e,h){typeof exports=="object"&&typeof module<"u"?module.exports=h(require("vue")):typeof define=="function"&&define.amd?define(["vue"],h):(e=typeof globalThis<"u"?globalThis:e||self,e.sseengine=h(e.Vue))})(this,function(e){"use strict";const h="",_=(t,n)=>{const o=t.__vccOpts||t;for(const[i,r]of n)o[i]=r;return o},B={props:{item:{type:[Object],default:{}},active:{type:[Number]}},data(){return{}},computed:{thinks(){return this.item.thinks},references(){return this.item.references},workflows(){return this.item.workflows}},methods:{checkUrl(t){return/^http/.test(t)},async onAttach(t,n){await this.$store.dispatch("chat/INFO_ATTACH",{focal:t,attach:n}),await this.$store.dispatch("adapter/STATE_UPDATE",{attach:{type:!0}})}}},S=["answer-id","x-trace-id"],T={class:"fqa-chat-panel-title"},A={class:"fqa-chat-panel-link"};function O(t,n,o,i,r,c){const a=e.resolveComponent("fqa-worry"),s=e.resolveComponent("fqa-markdown"),d=e.resolveComponent("fqa-link"),f=e.resolveComponent("fqa-notes");e.resolveComponent("fqa-icon"),e.resolveComponent("a-space");const m=e.resolveComponent("fqa-feedback"),u=e.resolveComponent("fqa-recursion");return e.openBlock(),e.createElementBlock("section",{class:"fqa-answer fqa-conversation","answer-id":o.item.id,"x-trace-id":o.item.x_trace_id},[e.createVNode(a,{source:t.$util.anxious(o.item),item:o.item,type:o.item.type,produce:t.chat.produce,compliance:o.item.compliance,"onUpdate:compliance":n[0]||(n[0]=l=>o.item.compliance=l),up:o.item.id,rag:o.item.rag,finally_status:o.item.finally_status},null,8,["source","item","type","produce","compliance","up","rag","finally_status"]),e.createVNode(s,{html:o.item.content,id:o.item.id,trace:o.item.x_trace_id,references:c.references},null,8,["html","id","trace","references"]),c.references.length?(e.openBlock(),e.createBlock(f,{key:0,class:"fqa-chat-panel",id:o.item.id,references:c.references},{title:e.withCtx(({title:l})=>[e.createElementVNode("div",T,e.toDisplayString(l),1)]),content:e.withCtx(({content:l})=>[e.createVNode(s,{html:l,id:o.item.id},null,8,["html","id"])]),excerpt:e.withCtx(({url:l,source:k})=>[e.createElementVNode("div",A,[c.checkUrl(l)?(e.openBlock(),e.createBlock(d,{key:0,href:l,target:"_blank",clip:t.app.mobile},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k),1)]),_:2},1032,["href","clip"])):(e.openBlock(),e.createBlock(d,{key:1,href:l,target:"_blank"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(k),1)]),_:2},1032,["href"]))])]),_:1},8,["id","references"])):e.createCommentVNode("",!0),e.createCommentVNode("",!0),e.createVNode(m,{id:o.item.id,feedback:o.item.feedback,"onUpdate:feedback":n[4]||(n[4]=l=>o.item.feedback=l),visible:!t.chat.produce},null,8,["id","feedback","visible"]),o.item.children.length?(e.openBlock(),e.createBlock(u,{key:2,source:o.item.children,active:o.active},null,8,["source","active"])):e.createCommentVNode("",!0)],8,S)}const j=Object.freeze(Object.defineProperty({__proto__:null,default:_(B,[["render",O],["__scopeId","data-v-7496a1ff"]])},Symbol.toStringTag,{value:"Module"})),$e="",V={data(){return{noteActive:0,noteId:""}},computed:{theme(){return{main:{app:"App.vue",mount:"#app"},mock:!1,apollo:!1,registry:{host:!0,api:!0,route:!0,store:!0,mixin:!0},extract:{util:"/utils/*.js",filter:"/filters/*.js",directive:"/directives/*.js",route:"/pages/**/route.js",store:"/pages/**/store.js",component:"/components/**/*.vue",style:"/styles/*.less",i18n:"/i18n/*.js",md:"/pages/**/*.md"}}.theme}},watch:{"chat.notes":{handle(t){this.$util.sup.clean()}}},methods:{async supHandler({target:t}){if(!t.classList.contains("markdown-notes-sup"))return;if(this.$util.sup.active(t),await this.$store.dispatch("chat/SUP_UPDATE",t),this.app.mobile)return await this.$store.dispatch("chat/NOTES_UPDATE",t);const{thinks:n,references:o,workflows:i}=this.$util.deepfind(this.chat.info.history,t.id),{key:r}=t.dataset,c=this.$util.sup.group(t,".markdown-body");await this.$store.dispatch("chat/INFO_ATTACH",{focal:"references",attach:{thinks:n,references:o,workflows:i},anchor:r,explicit:c}),await this.$store.dispatch("adapter/STATE_UPDATE",{attach:{type:!0}})}},mounted(){document.addEventListener("click",this.supHandler)},beforeUnmount(){document.removeEventListener("click",this.supHandler)}},ve={key:0,class:"fqa-chat-produce"};function $(t,n,o,i,r,c){var d;const a=e.resolveComponent("fqa-recursion"),s=e.resolveComponent("fqa-icon");return e.openBlock(),e.createElementBlock("div",{class:"fqa-chat",style:e.normalizeStyle(c.theme)},[e.createVNode(a,{source:(d=t.chat.info)==null?void 0:d.history},null,8,["source"]),(t.chat.produce,e.createCommentVNode("",!0)),n[0]||(n[0]=e.createElementVNode("div",{class:"fqa-chat-blank"},null,-1))],4)}const v=Object.freeze(Object.defineProperty({__proto__:null,default:_(V,[["render",$],["__scopeId","data-v-46aaa707"]])},Symbol.toStringTag,{value:"Module"})),ze="",P={props:{source:{type:[Array],default:[]},freeze:{type:[Boolean],default:!1},active:{type:[Number]}},computed:{min(){return 1},max(){return this.source.length}},methods:{prev(){this.active>this.min&&this.$emit("update:active",this.active-1)},next(){this.active<this.max&&this.$emit("update:active",this.active+1)}}},z={class:"fqa-flip-pagination"},D={key:0,class:"fqa-flip-item"};function U(t,n,o,i,r,c){const a=e.resolveComponent("fqa-icon"),s=e.resolveComponent("a-space");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["fqa-flip",{freeze:o.freeze}])},[e.createVNode(s,{class:"fqa-flip-controller"},{default:e.withCtx(()=>[e.createVNode(a,{class:e.normalizeClass({"fqa-flip-prev":!0,"fqa-flip-disabled":o.active<=c.min}),icon:"LeftOutlined",onClick:c.prev},null,8,["class","onClick"]),e.createElementVNode("div",z,e.toDisplayString(o.active)+" / "+e.toDisplayString(c.max),1),e.createVNode(a,{class:e.normalizeClass({"fqa-flip-next":!0,"fqa-flip-disabled":o.active>=c.max}),icon:"RightOutlined",onClick:c.next},null,8,["class","onClick"])]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.source,(d,f)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[f===o.active-1?(e.openBlock(),e.createElementBlock("div",D,[e.renderSlot(t.$slots,"item",{item:d,active:o.active},void 0,!0)])):e.createCommentVNode("",!0)],64))),256))],2)}const H=Object.freeze(Object.defineProperty({__proto__:null,default:_(P,[["render",U],["__scopeId","data-v-8e3d6699"]])},Symbol.toStringTag,{value:"Module"})),M={props:{item:{type:[Object],default:{}},active:{type:[Number],default:1}},watch:{active:{handler(t){const n=this.$util.deepfind(this.chat.info.history,this.item.parent);n&&(n.active=t)},deep:!0,immediate:!0}}};function I(t,n,o,i,r,c){const a=e.resolveComponent("fqa-root"),s=e.resolveComponent("fqa-query"),d=e.resolveComponent("fqa-answer");return e.openBlock(),e.createElementBlock(e.Fragment,null,[o.item.role===0?(e.openBlock(),e.createBlock(a,{key:0,item:o.item,active:o.active,"onUpdate:active":n[0]||(n[0]=f=>t.$emit("update:active",f))},null,8,["item","active"])):e.createCommentVNode("",!0),o.item.role===1?(e.openBlock(),e.createBlock(s,{key:1,item:o.item,active:o.active,"onUpdate:active":n[1]||(n[1]=f=>t.$emit("update:active",f))},null,8,["item","active"])):e.createCommentVNode("",!0),o.item.role===2?(e.openBlock(),e.createBlock(d,{key:2,item:o.item,active:o.active,"onUpdate:active":n[2]||(n[2]=f=>t.$emit("update:active",f))},null,8,["item","active"])):e.createCommentVNode("",!0)],64)}const L=Object.freeze(Object.defineProperty({__proto__:null,default:_(M,[["render",I]])},Symbol.toStringTag,{value:"Module"})),He="",F={props:{icon:{type:String,default:""},size:{type:[Number,String],default:14},color:{type:String,default:"inherit"},cursor:{type:String,default:"default"},duration:{type:[Number,String],default:.36}}};function R(t,n,o,i,r,c){return e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.icon),{class:"fqa-icon",style:e.normalizeStyle({fontSize:`${o.size}px`,color:o.color,cursor:o.cursor,transitionDuration:`${o.duration}s`})},null,8,["style"])}const K=Object.freeze(Object.defineProperty({__proto__:null,default:_(F,[["render",R],["__scopeId","data-v-9e607206"]])},Symbol.toStringTag,{value:"Module"})),Ie="",G={props:{item:{type:[Object],default:{}},active:{type:[Number]}},data(){return{copied:!1,editable:!1,origin:""}},inject:["updateActive"],methods:{async copySuccess(t){this.copied=!0,await this.$util.kitchen.sleep(10),this.copied=!1},async intoEditable(t,n){this.origin=n.content,this.editable=!0},async cancelHandler(t){this.origin="",this.editable=!1},async submitHandler(t,n){await this.$store.dispatch("chat/SSE_CONNECT",{session_id:this.app.id,content:this.origin,parent:n.parent}),this.cancelHandler(),await this.$store.dispatch("chat/STREAM_CACHE",null);const{children:o}=this.$util.deepfind(this.chat.info.history,n.parent);this.updateActive(o.length+1)},async enterHandler(t,n){return t.shiftKey?this.submitHandler(t,n):!1},async enterHandler(t){var o;if(this.app.mobile)return;await this.$store.dispatch("chat/SEVANI_UPDATE",t),await this.$store.dispatch("chat/SEVANI_CLEAN","fqa-query-control"),await this.$util.kitchen.sleep(1);const n=await this.$store.dispatch("chat/SEVANI_FIND","fqa-query-control");(o=n==null?void 0:n.classList)==null||o.add("hover")},async leaveHandler(){this.app.mobile||(this.$store.dispatch("chat/SEVANI_UPDATE",{sevani:null}),await this.$store.dispatch("chat/SEVANI_CLEAN","fqa-query-control"))}}},J=["query-id","x-trace-id"],Q={key:0,class:"fqa-query-editable"},W={key:1,class:"fqa-query-content"};function X(t,n,o,i,r,c){const a=e.resolveComponent("a-textarea"),s=e.resolveComponent("fqa-button"),d=e.resolveComponent("a-space"),f=e.resolveComponent("fqa-icon"),m=e.resolveComponent("fqa-recursion"),u=e.resolveDirective("clipboard");return e.openBlock(),e.createElementBlock("section",{class:"fqa-query fqa-conversation","query-id":o.item.id,"x-trace-id":o.item.x_trace_id,onMouseenter:n[5]||(n[5]=e.withModifiers((...l)=>c.enterHandler&&c.enterHandler(...l),["stop"])),onMouseleave:n[6]||(n[6]=e.withModifiers((...l)=>c.leaveHandler&&c.leaveHandler(...l),["stop"]))},[r.editable&&!t.chat.produce?(e.openBlock(),e.createElementBlock("div",Q,[e.createVNode(a,{class:"fqa-query-input","auto-size":{minRows:3,maxRows:10},value:r.origin,"onUpdate:value":n[0]||(n[0]=l=>r.origin=l),onPressEnter:n[1]||(n[1]=l=>c.enterHandler(l,o.item))},null,8,["value"]),e.createVNode(d,{class:"fqa-query-bunny"},{default:e.withCtx(()=>[e.createVNode(s,{class:"fqa-query-cancel",width:80,instance:20,radius:40,hover:"#e7e8e9",onClick:n[2]||(n[2]=l=>c.cancelHandler(l,o.item))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.$t("global.cancel")),1)]),_:1}),e.createVNode(s,{class:"fqa-query-send",width:80,instance:20,radius:40,color:"#fdfeff",onClick:n[3]||(n[3]=l=>c.submitHandler(l,o.item))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.$t("global.send")),1)]),_:1})]),_:1})])):(e.openBlock(),e.createElementBlock("div",W,e.toDisplayString(o.item.content),1)),!r.editable&&!t.chat.produce?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["fqa-query-control",{hover:t.app.mobile}])},[e.withDirectives((e.openBlock(),e.createBlock(s,{size:30,hover:"#e7e8e9"},{default:e.withCtx(()=>[e.createVNode(f,{icon:r.copied?"CheckOutlined":"CopyOutlined"},null,8,["icon"])]),_:1})),[[u,o.item.content,"copy"],[u,c.copySuccess,"success"]]),e.createVNode(s,{size:30,hover:"#e7e8e9",onClick:n[4]||(n[4]=l=>c.intoEditable(l,o.item))},{default:e.withCtx(()=>[e.createVNode(f,{icon:"EditOutlined"})]),_:1})],2)):e.createCommentVNode("",!0),o.item.children.length?(e.openBlock(),e.createBlock(m,{key:3,source:o.item.children,active:o.active},null,8,["source","active"])):e.createCommentVNode("",!0)],40,J)}const Y=Object.freeze(Object.defineProperty({__proto__:null,default:_(G,[["render",X],["__scopeId","data-v-81f2e091"]])},Symbol.toStringTag,{value:"Module"})),Fe="",Z={props:{source:{type:[Array]},active:{type:[Number]}},data(){return{current:1}},provide(){return{updateActive:this.updateActive}},computed:{flip(){return this.source.length>1},first(){return this.source[0]}},watch:{active:{handler(t){this.current=t},deep:!0,immediate:!0}},methods:{updateActive(t){this.current=t}}},ee={class:"fqa-recursion"};function te(t,n,o,i,r,c){const a=e.resolveComponent("fqa-hub"),s=e.resolveComponent("fqa-flip");return e.openBlock(),e.createElementBlock("div",ee,[c.flip?(e.openBlock(),e.createBlock(s,{key:0,freeze:t.chat.produce,source:o.source,active:r.current,"onUpdate:active":c.updateActive},{item:e.withCtx(({item:d,active:f})=>[e.createVNode(a,{item:d,active:f,"onUpdate:active":c.updateActive},null,8,["item","active","onUpdate:active"])]),_:1},8,["freeze","source","active","onUpdate:active"])):(e.openBlock(),e.createBlock(a,{key:1,item:c.first},null,8,["item"]))])}const ne=Object.freeze(Object.defineProperty({__proto__:null,default:_(Z,[["render",te],["__scopeId","data-v-701699c1"]])},Symbol.toStringTag,{value:"Module"})),oe={props:{item:{type:[Object],default:{}},active:{type:[Number]}}},ce={class:"fqa-root fqa-conversation"};function ie(t,n,o,i,r,c){const a=e.resolveComponent("fqa-recursion");return e.openBlock(),e.createElementBlock("section",ce,[o.item.children.length?(e.openBlock(),e.createBlock(a,{key:0,source:o.item.children,active:o.active},null,8,["source","active"])):e.createCommentVNode("",!0)])}const re=Object.freeze(Object.defineProperty({__proto__:null,default:_(oe,[["render",ie]])},Symbol.toStringTag,{value:"Module"})),Ge="",Je="",q=()=>{},ae=(t={},n=q)=>(Object.keys(t).map(o=>{t[o]=se(n(t[o],o,t),t[o])}),t),se=(t,n)=>t===void 0?n:t,le=(t,n=Object)=>t&&t.constructor===n,de=t=>({__proto__:Object.getPrototypeOf(t),...t}),y=(t={},n=q,o=!1,i=[])=>(o&&(t=de(t)),t=ae(t,(r,c,a)=>{const s=[...i,c];return le(r)?y(r,n,o,s):n(r,c,s,a)}),t);function fe(t){return y(t,n=>n,!0)}function g(t,n,o){let i=o(n[t],t);if(i!==void 0){if(i&&i.constructor===Object){let{key:r,value:c}=i;r&&c&&(t=r,i=c)}n[t]=i}return i}function p(t,n,{clone:o=!1,deep:i=!1,stop:r=!1,step:c=1,long:a=0}={}){let s=o===!0?fe(t):t;if(i===!0)return y(s,n);if(s.constructor===Array){for(let d=0;d<s.length&&!(d%c===a&&g(d,s,n)===r);d++);return s}for(let d in s)if(!(d-0>-1&&d%c!==a)&&g(d,s,n)===r)break;return s}function b(t,n=Object){return[null,void 0].includes(t)?!1:t.constructor===n}function x(t={},n){return!b(t)||!b(n)||p(n,(o,i)=>{t[i]=b(o)?x(t[i]||{},o):o}),t}const _e=t=>[void 0,null].includes(t),ue=(t,n)=>{if(t)return t.constructor===n};function C(t,n,o,i,r){const c=t.shift();if(r(t))return n[c]=i(c),C(t,n[c],o,i,r);n[c]=i(c,!0)}const me=t=>_e(t)||!ue(t,Object)?t:p(t,(n,o)=>{const i=o.split(".");if(i.length>1){const r=i[0],c={};return C(i,c,n,(a,s)=>s?n:{},a=>a.length),{key:r,value:c[r]}}return n}),pe=(t={},n)=>x(t,me(n)),he=new Function;function ye(t,n={}){return[void 0,null,"undefined","null"].includes(t)?"":Object.assign({[String]:"",[Number]:-1,[Array]:[],[Object]:{},[Function]:()=>{},[Promise]:new Promise(he)},n)[t.constructor]}const ke=(t,n)=>y(t,o=>ye(o,n)),be=async(t,n,o)=>{let i={};try{i=await t(n,o)}catch(r){i={error:r}}return i};function qe(t={}){return{error:!1,...t}}function ge(t={}){const n={async STATE_UPDATE({commit:o},i){return await o("STATE_UPDATE",i)},async STATE_CLEAR({commit:o,state:i},r){return await o("STATE_UPDATE",ke(i[r]))}};return p(t,(o,i)=>{n[i]=async(r,c)=>{const a=await be(o,r,c);return a&&a.errMsg&&console.log(a.errMsg),r.commit("STATE_UPDATE",a),a}}),n}function xe(t={}){const n={STATE_UPDATE(o,i){return pe(o,i)}};return p(t,(o,i)=>{n[i]=(r,c)=>o(r,c)}),n}const Ce=Object.freeze(Object.defineProperty({__proto__:null,actions:ge,mutations:xe,states:qe},Symbol.toStringTag,{value:"Module"})),{states:we,mutations:Ne,actions:Ee}=Ce,Be=t=>p(t,n=>(n.state=we(n.state),n.mutations=Ne(n.mutations),n.actions=Ee(n.actions),n.namespaced=!0,n)),w=()=>{},Se=(t,n,o={})=>{let i=w;function r(a=w){return i=a,{install:c}}function c(a){const{name:s}=t;a.config.globalProperties[s]=o;const{$router:d,$store:f,$util:m}=a.config.globalProperties;try{const u=n(m);u.namespaced=!0,f.register=(l,k)=>{const{[l]:je}=Be({[l]:k});f.registerModule(l,je)},i(a,{$store:f,$router:d,$util:m,module:u,name:s},a)}catch(u){console.error(u)}}return r},Te=t=>{Object.entries(Object.assign({"../../../src/components/fqa-answer/index.vue":j,"../../../src/components/fqa-chat/index.vue":v,"../../../src/components/fqa-flip/index.vue":H,"../../../src/components/fqa-hub/index.vue":L,"../../../src/components/fqa-icon/index.vue":K,"../../../src/components/fqa-query/index.vue":Y,"../../../src/components/fqa-recursion/index.vue":ne,"../../../src/components/fqa-root/index.vue":re})).forEach(([o,i])=>{const{default:r}=i;if(!r)return;let c=r.name;c||o.replace(/([\w\-]+)\/([\w\-]+)\.vue/,(a,s,d)=>c=d==="index"?s:d),t.component(c,i.default)})},Qe="",Ae={name:"sseengine",mounted(){console.log(1e3,this.sseengine)}};function Oe(t,n,o,i,r,c){const a=e.resolveComponent("fqa-chat");return e.openBlock(),e.createBlock(a)}const N=_(Ae,[["render",Oe]]),E=Se(N,(t={})=>{const n={};return console.log(5,t),t.json.clone(n),{state:n,actions:{async CLEAN(){return{}}}}},{icon:"AppleOutlined"});return console.log(1600,E),E((t,{name:n,$store:o,$router:i,module:r})=>{o.register(n,r),t.mixin({computed:{[n](){return o.state[n]}}}),t.component(n,N),Te(t)})});
package/package.json CHANGED
@@ -1,7 +1,22 @@
1
1
  {
2
2
  "name": "@nebulars/sseengine",
3
3
  "description": "An engine for sse",
4
- "version": "1.0.0",
5
- "scripts": {},
6
- "dependencies": {}
7
- }
4
+ "version": "1.3.44",
5
+ "main": "src/index.js",
6
+ "scripts": {
7
+ "dev": "forage serve --name sseengine",
8
+ "build": "forage compile --name sseengine",
9
+ "zip": "forage compress --out sseengine",
10
+ "push:dev": "forage push --space sseengine --env dev",
11
+ "push:test": "forage push --space sseengine --env test",
12
+ "push:prod": "forage push --space sseengine --env prod"
13
+ },
14
+ "dependencies": {
15
+ "@nebulars/cmd": "^0.3.43",
16
+ "@nebulars/forage": "^0.3.43",
17
+ "@scaff/umd": "^3.7.44",
18
+ "@scaff/vite": "^3.7.38",
19
+ "axios": "^1.11.0",
20
+ "vuex-fast": "^2.2.2"
21
+ }
22
+ }
@@ -22,13 +22,14 @@
22
22
  <template>
23
23
  <section class="fqa-answer fqa-conversation" :answer-id="item.id" :x-trace-id="item.x_trace_id">
24
24
  <!-- Worry -->
25
- <fqa-worry :source="$util.anxious(item)" :item="item" :type="item.type" :produce="chat.produce" v-model:compliance="item.compliance" :up="item.id" :rag="item.rag" :finally_status="item.finally_status" />
25
+ <fqa-worry :source="$util.anxious(item)" :item="item" :type="item.type" :produce="sseengine.produce" v-model:compliance="item.compliance" :up="item.id" :rag="item.rag" :finally_status="item.finally_status" />
26
26
 
27
27
  <!-- Markdown -->
28
28
  <fqa-markdown :html="item.content" :id="item.id" :trace="item.x_trace_id" :references="references" />
29
29
 
30
30
  <!-- Notes -->
31
- <fqa-notes class="fqa-chat-panel" :id="item.id" :references="references" v-if="references.length">
31
+ references.length: {{ references.length }}
32
+ <sse-notes class="fqa-chat-panel" :id="item.id" :references="references" v-if="references.length">
32
33
  <template #title="{ title }">
33
34
  <div class="fqa-chat-panel-title">{{ title }}</div>
34
35
  </template>
@@ -43,7 +44,7 @@
43
44
  <fqa-link :href="url" target="_blank" v-else>{{ source }}</fqa-link>
44
45
  </div>
45
46
  </template>
46
- </fqa-notes>
47
+ </sse-notes>
47
48
 
48
49
  <!-- Atte -->
49
50
  <template v-if="false">
@@ -64,10 +65,10 @@
64
65
  </template>
65
66
 
66
67
  <!-- Feedback -->
67
- <fqa-feedback :id="item.id" v-model:feedback="item.feedback" :visible="!chat.produce" />
68
+ <fqa-feedback :id="item.id" v-model:feedback="item.feedback" :visible="!sseengine.produce" />
68
69
 
69
70
  <!-- Next -->
70
- <fqa-recursion v-if="item.children.length" :source="item.children" :active="active" />
71
+ <sse-recursion v-if="item.children.length" :source="item.children" :active="active" />
71
72
  </section>
72
73
  </template>
73
74
 
@@ -107,7 +108,7 @@ export default {
107
108
  },
108
109
 
109
110
  async onAttach(focal, attach) {
110
- await this.$store.dispatch('chat/INFO_ATTACH', { focal, attach });
111
+ await this.$store.dispatch('sseengine/INFO_ATTACH', { focal, attach });
111
112
  await this.$store.dispatch('adapter/STATE_UPDATE', { attach: { type: true } });
112
113
  },
113
114
  },
@@ -35,13 +35,13 @@
35
35
  <template>
36
36
  <div class="fqa-chat" :style="theme">
37
37
  <!-- Recursion -->
38
- <fqa-recursion :source="chat.info?.history" />
38
+ <sse-recursion :source="sseengine.info?.history" />
39
39
 
40
40
  <!-- Produce Loading -->
41
- <div class="fqa-chat-produce" v-if="chat.produce && false">
41
+ <div class="fqa-chat-produce" v-if="sseengine.produce && false">
42
42
  <fqa-icon icon="LoadingOutlined" />
43
- <!-- {{ $t('chat.process') }} -->
44
- {{ chat.status[chat.code] }}
43
+ <!-- {{ $t('sseengine.process') }} -->
44
+ {{ sseengine.status[sseengine.code] }}
45
45
  </div>
46
46
 
47
47
  <!-- Blank -->
@@ -65,7 +65,7 @@ export default {
65
65
  },
66
66
 
67
67
  watch: {
68
- 'chat.notes': {
68
+ 'sseengine.notes': {
69
69
  handle(value) {
70
70
  this.$util.sup.clean();
71
71
  },
@@ -83,16 +83,16 @@ export default {
83
83
  this.$util.sup.active(target);
84
84
 
85
85
  // Save Sup
86
- await this.$store.dispatch('chat/SUP_UPDATE', target);
86
+ await this.$store.dispatch('sseengine/SUP_UPDATE', target);
87
87
 
88
88
  // Check Mobile
89
89
  if (this.app.mobile) {
90
90
  // Open Notes - For Mobile
91
- return await this.$store.dispatch('chat/NOTES_UPDATE', target);
91
+ return await this.$store.dispatch('sseengine/NOTES_UPDATE', target);
92
92
  }
93
93
 
94
94
  // Get Attach
95
- const { thinks, references, workflows } = this.$util.deepfind(this.chat.info.history, target.id);
95
+ const { thinks, references, workflows } = this.$util.deepfind(this.sseengine.info.history, target.id);
96
96
 
97
97
  // Get Anchor
98
98
  const { key: anchor } = target.dataset;
@@ -101,7 +101,7 @@ export default {
101
101
  const explicit = this.$util.sup.group(target, '.markdown-body');
102
102
 
103
103
  // Update Attach
104
- await this.$store.dispatch('chat/INFO_ATTACH', { focal: 'references', attach: { thinks, references, workflows }, anchor, explicit });
104
+ await this.$store.dispatch('sseengine/INFO_ATTACH', { focal: 'references', attach: { thinks, references, workflows }, anchor, explicit });
105
105
 
106
106
  // Open Attach - For Web
107
107
  await this.$store.dispatch('adapter/STATE_UPDATE', { attach: { type: true } });
@@ -0,0 +1,256 @@
1
+ <style lang="less" scoped>
2
+ .fqa-drawer {
3
+ & {
4
+ height: 100%;
5
+ display: flex;
6
+ flex-direction: column;
7
+ }
8
+
9
+ &-toper {
10
+ width: 100%;
11
+ height: @size-header;
12
+ border-bottom: 1px solid @color-line;
13
+ }
14
+
15
+ &-container {
16
+ flex: 1;
17
+ padding: @gap;
18
+ word-break: break-all;
19
+ line-height: 1.75;
20
+ }
21
+
22
+ &-list {
23
+ &-title {
24
+ }
25
+
26
+ &-content {
27
+ max-width: 558px;
28
+ padding: @gap;
29
+ border-radius: calc(@radiu / 2);
30
+ border: @color-app;
31
+ background-color: @color-app;
32
+ }
33
+
34
+ &-source {
35
+ }
36
+ }
37
+
38
+ &-foot {
39
+ }
40
+
41
+ &-references {
42
+ transition: all @effect;
43
+ overflow: hidden;
44
+
45
+ &-no {
46
+ // color: @color-text;
47
+ }
48
+
49
+ &.close {
50
+ height: 0;
51
+ }
52
+ }
53
+ }
54
+ </style>
55
+
56
+ <template>
57
+ <div class="fqa-drawer">
58
+ <a-flex justify="center" align="center" class="fqa-drawer-toper" v-if="false">
59
+ <fqa-switcher
60
+ v-model:active="sseengine.focal"
61
+ :menus="[
62
+ { key: 'thinks', title: $t('produce.thinks') },
63
+ { key: 'references', title: $t('produce.references') },
64
+ // { key: 'workflows', title: $t('produce.workflows') },
65
+ ]"
66
+ />
67
+ </a-flex>
68
+
69
+ <div class="fqa-drawer-container scroll">
70
+ <!-- Thinks -->
71
+ <transition name="switch">
72
+ <fqa-lister class="fqa-drawer-thinks" v-if="sseengine.focal === `thinks`" :source="thinks">
73
+ <template #head="{ item }">
74
+ <a-avatar :size="30" class="fqa-drawer-num" :src="$util.uri(`logo.png`)" :data-key="`drawer_${item.id}`" />
75
+ </template>
76
+ <template #item="{ item }">
77
+ <fqa-markdown :html="item" />
78
+ </template>
79
+ </fqa-lister>
80
+ </transition>
81
+
82
+ <!-- References -->
83
+ <transition name="switch">
84
+ <div>
85
+ <!-- Show Lister -->
86
+ <fqa-lister class="fqa-drawer-references" v-if="sseengine.focal === `references`" :source="groupBeShow">
87
+ <template #head="{ item }">
88
+ <a-avatar :size="30" class="fqa-drawer-num" :data-key="`drawer_${item.id}`">
89
+ <span class="fqa-drawer-references-no">{{ item.id }}</span>
90
+ </a-avatar>
91
+ <template v-if="false">
92
+ <a-avatar :size="30" class="fqa-drawer-num" v-if="item.file_url" :src="item.file_url" :data-key="`drawer_${item.id}`" />
93
+ <a-avatar :size="30" class="fqa-drawer-num" v-else>
94
+ <fqa-icon :size="20" icon="ReadOutlined" />
95
+ </a-avatar>
96
+ </template>
97
+ </template>
98
+ <template #item="{ item }">
99
+ <a-space direction="vertical" class="fqa-drawer-list">
100
+ <div class="fqa-drawer-list-title" v-if="item.title">{{ item.title }}</div>
101
+ <fqa-markdown class="fqa-drawer-list-content markdown-body-drawer" :html="item.content" />
102
+ <a-space class="fqa-drawer-foot">
103
+ <div class="fqa-drawer-list-source" v-if="item.source">
104
+ <fqa-link :href="linkPositions(item)" target="_blank" mode="aovery" :proxy="{ positions: item.position }">{{ item.source }}</fqa-link>
105
+ </div>
106
+ <span>{{ item.announcement_date }}</span>
107
+ </a-space>
108
+ </a-space>
109
+ </template>
110
+ </fqa-lister>
111
+
112
+ <!-- Show Others -->
113
+ <a-divider orientation="left" class="fqa-drawer-more" v-if="groupUnShow.length" @click="open = !open">
114
+ <a-space>
115
+ <span>查看更多</span>
116
+ <fqa-arrow :class="{ open }" />
117
+ </a-space>
118
+ </a-divider>
119
+
120
+ <!-- Show Others -->
121
+ <fqa-lister class="fqa-drawer-references" :class="{ close: !open }" v-if="sseengine.focal === `references`" :source="groupUnShow">
122
+ <template #head="{ item }">
123
+ <a-avatar :size="30" class="fqa-drawer-num" v-if="item.file_url" :src="item.file_url" :data-key="`drawer_${item.id}`">
124
+ {{ item.id }}
125
+ </a-avatar>
126
+ <a-avatar :size="30" class="fqa-drawer-num" v-else>
127
+ <fqa-icon :size="20" icon="ReadOutlined" />
128
+ </a-avatar>
129
+ </template>
130
+ <template #item="{ item }">
131
+ <a-space direction="vertical" class="fqa-drawer-list">
132
+ <div class="fqa-drawer-list-title" v-if="item.title">{{ item.title }}</div>
133
+ <fqa-markdown class="fqa-drawer-list-content markdown-body-drawer" :html="item.content" />
134
+ <div class="fqa-drawer-list-source" v-if="item.source">
135
+ <fqa-link :href="linkPositions(item)" target="_blank" mode="aovery" :proxy="{ positions: item.position }">{{ item.source }}</fqa-link>
136
+ </div>
137
+ </a-space>
138
+ </template>
139
+ </fqa-lister>
140
+ </div>
141
+ </transition>
142
+
143
+ <!-- Workflows -->
144
+ <transition name="switch">
145
+ <fqa-lister class="fqa-drawer-workflows" v-if="sseengine.focal === `workflows`" :source="workflows">
146
+ <template #head="{ item }">
147
+ <a-avatar :size="30" class="fqa-drawer-num" v-if="item.file_url" :src="item.file_url" :data-key="`drawer_${item.id}`" />
148
+ <a-avatar :size="30" class="fqa-drawer-num" v-else>
149
+ <fqa-icon :size="20" icon="BranchesOutlined" />
150
+ </a-avatar>
151
+ </template>
152
+ <template #item="{ item }">
153
+ <a-space direction="vertical" class="fqa-drawer-list">
154
+ <div class="fqa-drawer-list-title" v-if="item.workflow_name">{{ item.workflow_name }}</div>
155
+ <fqa-markdown :html="item.content" />
156
+ </a-space>
157
+ </template>
158
+ </fqa-lister>
159
+ </transition>
160
+ </div>
161
+ </div>
162
+ </template>
163
+
164
+ <script>
165
+ import App from '@/App.vue';
166
+
167
+ export default {
168
+ props: {
169
+ thinks: {
170
+ type: [Array],
171
+ default: [],
172
+ },
173
+
174
+ references: {
175
+ type: [Array],
176
+ default: [],
177
+ },
178
+
179
+ workflows: {
180
+ type: [Array],
181
+ default: [],
182
+ },
183
+ },
184
+
185
+ data() {
186
+ return {
187
+ open: true,
188
+ };
189
+ },
190
+
191
+ watch: {
192
+ 'sseengine.anchor': {
193
+ async handler(value) {
194
+ // No Value
195
+ if (!value) {
196
+ return;
197
+ }
198
+
199
+ // Wait 1 Second
200
+ await this.$util.kitchen.sleep(4);
201
+
202
+ // Scrolling
203
+ this.$util.scrolling(`[data-key="drawer_${value}"]`, 'start');
204
+
205
+ // Reset Zero
206
+ this.$store.dispatch('sseengine/STATE_UPDATE', { anchor: 0 });
207
+ },
208
+
209
+ deep: true,
210
+ immediate: true,
211
+ },
212
+ },
213
+
214
+ computed: {
215
+ groupBeShow() {
216
+ if (this.sseengine.focal === `references`) {
217
+ return this.references.filter(({ id }) => this.sseengine.explicit.includes(id + ''));
218
+ }
219
+ return [];
220
+ },
221
+ groupUnShow() {
222
+ if (this.sseengine.focal === `references`) {
223
+ return this.references.filter(({ id }) => !this.sseengine.explicit.includes(id + ''));
224
+ }
225
+ return [];
226
+ },
227
+ },
228
+
229
+ methods: {
230
+ // Hard Code for Positions
231
+ linkPositions({ file_type, file_url, position }) {
232
+ // No Type No Url
233
+ if (!file_type || !file_url) {
234
+ return 'javascript:void(0)';
235
+ }
236
+
237
+ // Clone as Empty
238
+ let cloner = !position || !position.length ? undefined : JSON.parse(JSON.stringify(position));
239
+
240
+ // Cut Position to 2
241
+ if (cloner) {
242
+ cloner = cloner.map(item => {
243
+ if (item.pos) {
244
+ item.pos = item.pos.map(val => (val - 0).toFixed(4));
245
+ }
246
+ return item;
247
+ });
248
+ }
249
+
250
+ const positions = cloner ? `&positions=${this.$util.base64.compressToEncodedURIComponent(JSON.stringify(cloner))}` : '';
251
+
252
+ return `${file_url}${positions}`;
253
+ },
254
+ },
255
+ };
256
+ </script>
@@ -0,0 +1,38 @@
1
+ .fqa-drawer {
2
+ &-num {
3
+ color: @color-text;
4
+ background-color: @color-line;
5
+ }
6
+
7
+ &-more {
8
+ & {
9
+ border-block-start: 0 rgba(255, 255, 255, 0.1) !important;
10
+ }
11
+
12
+ .ant-divider-inner-text {
13
+ cursor: pointer;
14
+ color: @color-text;
15
+ font-size: 14px;
16
+ font-weight: normal;
17
+ }
18
+ }
19
+ }
20
+
21
+ .markdown-body-drawer {
22
+ table {
23
+ display: block; /* 让 table 可滚动 */
24
+ overflow: auto; /* 同时支持横向 + 纵向滚动 */
25
+ max-width: 528px;
26
+ max-height: 728px; /* 限制高度,触发纵向滚动 */
27
+ border-collapse: collapse;
28
+ border-width: 0;
29
+ }
30
+
31
+ thead th {
32
+ position: sticky;
33
+ top: 0;
34
+ z-index: 1;
35
+ white-space: nowrap;
36
+ background-color: @color-app;
37
+ }
38
+ }