@pickaxeproject/react 0.0.37 → 0.0.38
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/cjs/common/api/streamer.js +1 -1
- package/dist/cjs/common/utils.js +1 -1
- package/dist/cjs/components/Core/Modal/CloseButton.js +1 -0
- package/dist/cjs/components/Pickaxe/Chat/Input.js +1 -1
- package/dist/cjs/components/Pickaxe/Form/Questions/Submit.js +1 -1
- package/dist/cjs/components/Pickaxe/Provider.js +1 -1
- package/dist/cjs/components/Pickaxe/ResponseProvider.js +1 -1
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Custom/A/index.js +1 -1
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Custom/Code/index.js +1 -0
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Custom/Iframe/index.js +1 -0
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Custom/Img/ImgModal.js +1 -0
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Custom/Img/index.js +1 -1
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Custom/common/Action.js +1 -1
- package/dist/cjs/components/Pickaxe/common/PickaxeMarkdown/Renderer.js +1 -1
- package/dist/cjs/components/Pickaxe/index.js +1 -1
- package/dist/cjs/src/common/utils.d.ts +1 -0
- package/dist/cjs/src/components/Pickaxe/Provider.d.ts +8 -4
- package/dist/cjs/src/components/Pickaxe/ResponseProvider.d.ts +0 -1
- package/dist/cjs/src/components/Pickaxe/common/PickaxeMarkdown/Custom/Code/index.d.ts +4 -0
- package/dist/cjs/src/components/Pickaxe/common/PickaxeMarkdown/Custom/Iframe/index.d.ts +4 -0
- package/dist/cjs/src/components/Pickaxe/common/PickaxeMarkdown/Custom/Img/ImgModal.d.ts +8 -0
- package/dist/cjs/src/hooks/pickaxe/usePickaxeContext.d.ts +3 -1
- package/dist/cjs/src/hooks/pickaxe/useResponseContext.d.ts +0 -1
- package/dist/esm/common/api/streamer.js +1 -1
- package/dist/esm/common/utils.js +1 -1
- package/dist/esm/components/Core/Modal/CloseButton.js +1 -0
- package/dist/esm/components/Pickaxe/Chat/Input.js +1 -1
- package/dist/esm/components/Pickaxe/Form/Questions/Submit.js +1 -1
- package/dist/esm/components/Pickaxe/Provider.js +1 -1
- package/dist/esm/components/Pickaxe/ResponseProvider.js +1 -1
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Custom/A/index.js +1 -1
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Custom/Code/index.js +1 -0
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Custom/Iframe/index.js +1 -0
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Custom/Img/ImgModal.js +1 -0
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Custom/Img/index.js +1 -1
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Custom/common/Action.js +1 -1
- package/dist/esm/components/Pickaxe/common/PickaxeMarkdown/Renderer.js +1 -1
- package/dist/esm/components/Pickaxe/index.js +1 -1
- package/dist/esm/src/common/utils.d.ts +1 -0
- package/dist/esm/src/components/Pickaxe/Provider.d.ts +8 -4
- package/dist/esm/src/components/Pickaxe/ResponseProvider.d.ts +0 -1
- package/dist/esm/src/components/Pickaxe/common/PickaxeMarkdown/Custom/Code/index.d.ts +4 -0
- package/dist/esm/src/components/Pickaxe/common/PickaxeMarkdown/Custom/Iframe/index.d.ts +4 -0
- package/dist/esm/src/components/Pickaxe/common/PickaxeMarkdown/Custom/Img/ImgModal.d.ts +8 -0
- package/dist/esm/src/hooks/pickaxe/usePickaxeContext.d.ts +3 -1
- package/dist/esm/src/hooks/pickaxe/useResponseContext.d.ts +0 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js");exports.streamer=r=>e.__awaiter(void 0,void 0,void 0,(function*(){const e=yield fetch(`${process.env.NEXT_PUBLIC_API_UTILS_URL}/streamer`,{method:"POST",body:JSON.stringify(r)});if(200!==e.status){const r=yield e.json();throw new Error(r.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js");exports.streamer=r=>e.__awaiter(void 0,void 0,void 0,(function*(){const e=yield fetch(`${process.env.NEXT_PUBLIC_API_UTILS_URL}/streamer`,{method:"POST",body:JSON.stringify(r)});if(200!==e.status){const r=yield e.json();throw new Error(r.error)}return e}));
|
package/dist/cjs/common/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.extractUrlsFromText=t=>{const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.extractUrlsFromText=t=>{const r=t.match(/(https?:\/\/[^\s]+)/g)||[];return Array.from(new Set(r))},exports.generateId=(t,r="",e="")=>{let o="";for(let r=0;r<t;r++){o+="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[Math.floor(36*Math.random())]}return r+o+e},exports.getContrastColor=t=>{if(!t)return"#FFFFFF";return(299*parseInt(t.substring(1,2),16)+587*parseInt(t.substring(3,2),16)+114*parseInt(t.substring(5,2),16))/1e3>=128?"#000000":"#FFFFFF"},exports.randomStr=(t,r=!1)=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";r&&(e=e.replace(/[0-9]/g,""));let o="";for(let r=0;r<t;r++)o+=e.charAt(Math.floor(Math.random()*e.length));return o};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("react"),t=require("./index.js"),r=require("../../Icons/x.svg.js"),n=require("../../../common/cn.js");exports.default=({className:o,iconClassName:a,icon:i,onClick:c})=>{const{setIsOpen:u}=s.useContext(t.ModalContext);return e.jsx("button",Object.assign({className:n.default("outline-none hover:opacity-70 hover:duration-300 active:opacity-100",o),onClick:()=>{u(!1),c&&c()}},{children:i||e.jsx(r.default,{className:n.default("h-6 w-6 shrink-0",a)})}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),t=require("react"),o=require("../../../hooks/core/useMediaQuery.js"),r=require("../../../hooks/pickaxe/usePickaxeContext.js"),i=require("../../../hooks/pickaxe/useResponseContext.js"),n=require("../../../hooks/studio/useStyleInput.js"),a=require("../../../hooks/studio/useStyleFontSize.js"),l=require("../../../hooks/pickaxe/useConversation.js"),d=require("../../../hooks/pickaxe/useSubmit.js"),u=require("../../../hooks/pickaxe/useSubmitResult.js"),c=require("../Addons/Document/hooks/useDocument.js"),m=require("../Addons/Scroll/hooks/useScroll.js"),p=require("../../../common/documents.js"),h=require("../../../common/api/streamer.js"),x=require("../../../node_modules/.pnpm/react-textarea-autosize@8.5.7_@types_react@18.3.18_react@18.3.1/node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),t=require("react"),o=require("../../../hooks/core/useMediaQuery.js"),r=require("../../../hooks/pickaxe/usePickaxeContext.js"),i=require("../../../hooks/pickaxe/useResponseContext.js"),n=require("../../../hooks/studio/useStyleInput.js"),a=require("../../../hooks/studio/useStyleFontSize.js"),l=require("../../../hooks/pickaxe/useConversation.js"),d=require("../../../hooks/pickaxe/useSubmit.js"),u=require("../../../hooks/pickaxe/useSubmitResult.js"),c=require("../Addons/Document/hooks/useDocument.js"),m=require("../Addons/Scroll/hooks/useScroll.js"),p=require("../../../common/documents.js"),h=require("../../../common/api/streamer.js"),x=require("../../../node_modules/.pnpm/react-textarea-autosize@8.5.7_@types_react@18.3.18_react@18.3.1/node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js"),f=require("../../Icons/attach.svg.js"),g=require("../../Icons/send.svg.js"),v=require("../Addons/IceBreaker/index.js"),b=require("../../../common/error.js"),j=require("../../../common/cn.js");exports.default=()=>{var y;const{formId:k,chatId:I,userId:w,studioUserId:q,pickaxe:S,colors:D,responsiveBy:O,isNewChat:C,forceMobile:N,setIsNewChat:_,setIsShowIceBreaker:A,onGenerateComplete:E}=r.usePickaxeContext(),{messages:M,status:R,limits:U,setMessages:z,setStatus:B,setLimitData:F,setError:T}=i.useResponseContext(),{documents:P,isUploading:L,isImageUploadAllowed:K,upsertDocuments:Q,onFileUpload:W,onEditDocumentByDocId:G}=c.useDocument(),{isScrollIncreasing:V,scrollToBottom:H,scrollStart:J,scrollEnd:X}=m.useScroll(),Y=l.useConversation(),Z=d.useSubmit(),$=u.useSubmitResult(),[ee,se]=t.useState(""),te=t.useRef(null),[oe]=o.useMediaQuery("(max-width: 767px)"),re=n.useStyleInput(),ie=a.useStyleFontSize({type:"body"}),ne=t.useMemo((()=>{var e,s,t;return!!C&&(!!S&&(!Y.isLoading&&(!((null!==(s=null===(e=Y.data)||void 0===e?void 0:e.messages.length)&&void 0!==s?s:0)>1)&&!!(null===(t=S.icebreakers)||void 0===t?void 0:t.length))))}),[S,C,Y.data,Y.isLoading]);t.useEffect((()=>{A(ne)}),[ne]);const ae=s=>e.__awaiter(void 0,void 0,void 0,(function*(){try{if(L)return;F(null),T(""),_(!1);const e=null!=s?s:ee;if(!e||"fetching"===R||"streaming"===R)return;const t=new Date;se("");const o="enduserupload"===(null==S?void 0:S.documentuploadtype),r=P.filter((e=>"finished"===e.status&&!e.isInsertedAsRaw)),i=r.length?r[r.length-1].documentId:"";B("fetching");const n=[...M,{id:M.length+1,role:"user",content:e}];z(n),J(),H();const{success:a,data:l,usedDocumentIds:d,newDocumentId:u,newDocumentName:c,isInsertedFile:m,error:p}=yield Z.mutateAsync(Object.assign(Object.assign({formId:k,responseId:I,value:e},o&&i&&{documentId:i}),q&&{studioUserId:q}));if(!a)throw new Error(null!=p?p:"An error occurred, please try again.");m&&i&&G({documentId:i,isInsertedAsRaw:!0}),u&&c&&Q([{type:"website",id:c,name:c,status:"finished",documentId:u}]),H();const x=(yield h.streamer({formId:k,responseId:I,data:l})).body;if(!x)throw new Error("Streaming error");const f=x.getReader(),g=new TextDecoder,v=n.length;let b="",j=!0;for(B("streaming");j;){const{value:e,done:s}=yield f.read();j=!s;if(b+=g.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",b),b)z([...n.slice(0,v),{id:M.length+1,role:"assistant",content:b}]),V&&H();else if(!j&&!b)throw new Error("Server error")}const y=new Date;b&&(H(),B("idle"),yield $.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:k,responseId:I,documentIds:d},w&&{userId:w}),q&&{studioUserId:q}),q&&(null==S?void 0:S.studioid)&&{studioId:S.studioid}),{messages:[{role:"user",message:e,sentAt:t},{role:"assistant",message:b,sentAt:y}]})),null==E||E(I))}catch(e){let s=b.default(e);s.includes("Unexpected token 'A',")&&(s="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(U).find((([e])=>s.includes(e)));t?F(t[1]):T(s),H()}finally{B("idle"),X()}}));return s.jsxs("div",Object.assign({className:j.default("fixed flex w-full flex-col bottom-0 left-0","viewport"===O?"min-[767px]:relative min-[767px]:bottom-auto min-[767px]:left-auto":"absolute @[767px]/pickaxe-root:relative @[767px]/pickaxe-root:bottom-auto @[767px]/pickaxe-root:left-auto")},{children:[ne&&s.jsx(v.default,{data:(null==S?void 0:S.icebreakers)||[],style:{backgroundColor:D.secondary,color:D.secondaryText},isMobile:N||oe,onSend:ae}),s.jsxs("div",Object.assign({style:re,className:"flex min-h-[56px] items-end gap-x-2 px-4 py-3 pb-[15px] shadow"},{children:["enduserupload"===(null==S?void 0:S.documentuploadtype)&&s.jsxs("div",Object.assign({className:"tooltip"},{children:[s.jsx("input",{id:"file-upload",ref:te,type:"file",accept:[...p.allowedFileMimeTypes,...K?p.allowedImageMimeTypes:[]].join(", "),multiple:!0,hidden:!0,className:"hidden",onChange:s=>e.__awaiter(void 0,void 0,void 0,(function*(){yield W(Array.from(s.target.files||[])),s.target.value=""}))}),s.jsx("button",Object.assign({className:"flex items-center disabled:cursor-wait disabled:opacity-50",disabled:L,onClick:()=>{var e;return null===(e=te.current)||void 0===e?void 0:e.click()}},{children:s.jsx(f.default,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:D.accent}})}))]})),s.jsx(x.default,{className:j.default(ie("max-h-60 w-full resize-none border-transparent bg-transparent outline-none ring-0 scrollbar scrollbar-thin placeholder:font-semilight"),!ee.length&&"max-h-6 overflow-hidden text-ellipsis whitespace-nowrap"),value:ee,placeholder:null!==(y=null==S?void 0:S.placeholdertext)&&void 0!==y?y:"What do you want to talk about?",onChange:e=>se(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),ae())}}),s.jsx("button",Object.assign({className:"outline-none disabled:cursor-default disabled:opacity-50",disabled:"idle"!==R||L,onClick:()=>ae()},{children:s.jsx(g.default,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:D.accent}})}))]}))]}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),t=require("react"),o=require("../../../../hooks/pickaxe/usePickaxeContext.js"),r=require("../../../../hooks/pickaxe/useResponseContext.js"),i=require("../../../../hooks/pickaxe/useSubmit.js"),n=require("../../../../hooks/pickaxe/useSubmitResult.js"),u=require("../../Addons/Document/hooks/useDocument.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),t=require("react"),o=require("../../../../hooks/pickaxe/usePickaxeContext.js"),r=require("../../../../hooks/pickaxe/useResponseContext.js"),i=require("../../../../hooks/pickaxe/useSubmit.js"),n=require("../../../../hooks/pickaxe/useSubmitResult.js"),u=require("../../Addons/Document/hooks/useDocument.js"),l=require("../../Addons/Scroll/hooks/useScroll.js"),a=require("../../../../common/api/streamer.js"),d=require("../../../../common/utils.js"),c=require("@nem035/gpt-3-encoder"),m=require("../../common/PickaxeButton.js"),p=require("../../../../common/error.js"),g=require("../../../../common/cn.js");exports.default=({questions:f})=>{const{formId:x,userId:h,studioUserId:w,pickaxe:j,isShowHistory:b,responsiveBy:q,setIsShowHistory:v,onGenerateComplete:k}=o.usePickaxeContext(),{status:I,limits:y,setResponse:O,setStatus:S,setLimitData:E,setError:R}=r.useResponseContext(),{documents:C,websiteLink:D,isUploading:P,onWebsiteUpload:U,setDocumentError:A}=u.useDocument(),{isScrollIncreasing:_,scrollToContainer:N,scrollToBottom:T,scrollStart:L,scrollEnd:B}=l.useScroll(),H=i.useSubmit(),M=n.useSubmitResult(),[W,F]=t.useState(!1);return s.jsxs("div",Object.assign({className:"mt-4 flex flex-wrap gap-2"},{children:[s.jsx(m.default,Object.assign({className:g.default("w-full","viewport"===q?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),isDisabled:P||W||"fetching"===I||"streaming"===I,onClick:()=>e.__awaiter(void 0,void 0,void 0,(function*(){var e;try{if(P||W||"fetching"===I||"streaming"===I)return;E(null),A("");const s="enduserupload"===(null==j?void 0:j.documentuploadtype),t=f.some((e=>"userinput:documentupload"===e.id&&e.isRequired)),o=C.filter((e=>"finished"===e.status)),r=d.extractUrlsFromText(D),i=C.map((e=>e.name)),n=r.filter((e=>!i.includes(e)));if(n.length){const e=n[n.length-1],s=yield U(e);s&&(o.push(s),F(!0),yield new Promise((e=>setTimeout(e,5e3))),F(!1))}else if(t&&s&&!o.length)return void A("Please paste a valid website/video link or drag a file to add to the knowledge base.");R("");const u=["Multiple Choice","Checkbox"];for(const e of f){if(c.encode(e.input).length>e.maxLength&&!u.includes(e.type))throw new Error("One or more of your responses is too long!");if(e.isRequired&&!e.input.trim()&&"userinput:documentupload"!==e.id)throw new Error("You must fill out all required fields.")}const l=o.length?o[o.length-1]:null;let m={};f.forEach((e=>m=Object.assign(Object.assign({},m),{[e.id]:"Knowledge Upload"===e.type||e.id.includes("documentupload")?(null==l?void 0:l.name)||"":e.input}))),S("fetching");const{success:p,responseId:g,data:b,usedDocumentIds:q,rawUserInput:v,error:y}=yield H.mutateAsync(Object.assign(Object.assign({formId:x,valueObj:m},s&&l&&{documentId:null!==(e=l.documentId)&&void 0!==e?e:""}),w&&{studioUserId:w}));if(!p)throw new Error(null!=y?y:"An error occurred, please try again.");L();const N=(yield a.streamer({formId:x,responseId:g,data:b})).body;if(!N)throw new Error("Streaming error");const B=N.getReader(),G=new TextDecoder;let K="",V=!0;O(null);const Y=f.map((e=>({id:e.id,question:e.main,answer:e.input})));for(;V;){const{value:e,done:s}=yield B.read();V=!s;if(K+=G.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",K),K)S("streaming"),O({formId:x,responseId:g,documentIds:q,messages:[],questions:Y,questionPrompt:v,questionResponse:K,createdAt:new Date}),_&&T();else if(!V&&!K)throw new Error("Server error")}K&&(T(),S("idle"),yield M.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:x,responseId:g,documentIds:q},h&&{userId:h}),w&&{studioUserId:w}),w&&(null==j?void 0:j.studioid)&&{studioId:j.studioid}),{questions:Y,questionPrompt:v,questionResponse:K})),null==k||k(g))}catch(e){let s=p.default(e);s.includes("Unexpected token 'A',")&&(s="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(y).find((([e])=>s.includes(e)));t?E(t[1]):R(s),F(!1),N()}finally{S("idle"),B()}}))},{children:W?"Processing...":P?"Uploading...":"fetching"===I||"streaming"===I?"Loading...":"Submit"})),!b&&s.jsx(m.default,Object.assign({variant:"transparent-text",className:g.default("w-full","viewport"===q?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>v(!0)},{children:"See history"}))]}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),s=require("./Addons/Document/Provider.js"),r=require("./ResponseProvider.js");const o=t.createContext({});exports.PickaxeContext=o,exports.PickaxeProvider=({children:i,userId:a="",studioUserId:n="",styles:c,colors:d,responsiveBy:l="viewport",limits:u={},loadFont:F=!0,forceMobile:x=!1,onGenerateComplete:h})=>{const[I,S]=t.useState(""),[j,m]=t.useState(""),[p,y]=t.useState(null),[b,f]=t.useState(!0),[v,P]=t.useState(!0),[k,w]=t.useState(!1);return e.jsx(o.Provider,Object.assign({value:Object.assign({formId:I,chatId:j,userId:a,studioUserId:n,pickaxe:p,styles:Object.assign({theme:"light",font:"Real Head Pro",fontSize:"md",formFieldStyle:"box",btnStyle:"filled",outlineThickness:1,cornerRadius:4},c),colors:Object.assign({primary:"#F6F8FA",text:"#000000",secondary:"#FFFFFF",secondaryText:"#000000",accent:"#228DD7",accentText:"#FFFFFF",error:"#EF4444"},d),responsiveBy:l,isNewChat:b,isShowIceBreaker:v,isShowHistory:k,loadFont:F,forceMobile:x,setFormId:S,setChatId:m,setPickaxe:y,setIsNewChat:f,setIsShowIceBreaker:P,setIsShowHistory:w},h&&{onGenerateComplete:h})},{children:e.jsx(r.default,Object.assign({limits:u},{children:e.jsx(s.default,{children:i})}))}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");const s=t.createContext({});exports.ResponseContext=s,exports.default=({limits:r,children:a})=>{const[i,n]=t.useState([]),[u,o]=t.useState(null),[l,c]=t.useState("idle"),[d,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");const s=t.createContext({});exports.ResponseContext=s,exports.default=({limits:r,children:a})=>{const[i,n]=t.useState([]),[u,o]=t.useState(null),[l,c]=t.useState("idle"),[d,p]=t.useState(null),[x,S]=t.useState(""),[m,g]=t.useState(!1);return e.jsx(s.Provider,Object.assign({value:{messages:i,response:u,status:l,limits:r,limitData:d,error:x,isGenerating:m,setMessages:n,setResponse:o,setStatus:c,setLimitData:p,setError:S,setIsGenerating:g}},{children:a}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("../../hooks/usePickaxeMarkdownContext.js"),r=require("../common/Action.js"),s=require("../Img/index.js");exports.default=({node:i,href:n="",children:o})=>{const{accentColor:a,linkPreviews:l,actions:c}=t.usePickaxeMarkdownContext(),u=(n||"").startsWith("www.")?`https://${n}`:n,d=u.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([\w-]+)/i);if(d&&(null==d?void 0:d[1]))return e.jsx("div",Object.assign({style:{marginTop:"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("../../hooks/usePickaxeMarkdownContext.js"),r=require("../common/Action.js"),s=require("../Img/index.js");exports.default=({node:i,href:n="",children:o})=>{const{accentColor:a,linkPreviews:l,actions:c}=t.usePickaxeMarkdownContext(),u=(n||"").startsWith("www.")?`https://${n}`:n,d=u.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([\w-]+)/i);if(d&&(null==d?void 0:d[1]))return e.jsx("div",Object.assign({style:{marginTop:"2rem",marginBottom:"2rem",display:"flex",width:"100%",justifyContent:"center"}},{children:e.jsx("iframe",Object.assign({title:"youtube-embed",src:`https://www.youtube.com/embed/${d[1]}`,style:{width:"100%",maxWidth:"560px"},allowFullScreen:!0},{children:"Iframe not supported, use a different browser."}))}));return u.match(/\.(jpeg|jpg|gif|bmp|webp|svg|tiff|avif)$/)?e.jsx(s.default,{src:u,alt:"string"==typeof o?o:"Markdown Image"}):c&&u.includes("pickaxe")&&(u.includes("/api/fn/result")||u.includes("/api/function_call_results"))?e.jsx(r.default,{jobUrl:u}):e.jsx("a",Object.assign({href:u,target:"_blank",rel:"noopener noreferrer"},l&&{className:"marked-link-possible-preview-render"},{style:{color:a,fontWeight:600}},{children:o}))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../../../_virtual/_tslib.js"),r=require("react/jsx-runtime"),s=require("react-syntax-highlighter"),a=require("../../hooks/usePickaxeMarkdownContext.js");exports.default=t=>{var{node:i,children:n,className:c}=t,l=e.__rest(t,["node","children","className"]);const{syntaxTheme:u}=a.usePickaxeMarkdownContext(),o=/language-(\w+)/.exec(c||"");return o?r.jsx(s.Prism,Object.assign({},l,{PreTag:"div",language:o[1],style:u,showLineNumbers:!0},{children:String(n).replace(/\n$/,"")})):r.jsx("code",Object.assign({},l,{className:c},{children:n}))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../../../_virtual/_tslib.js"),r=require("react/jsx-runtime");exports.default=t=>{var{node:i,title:l="Random Iframe",children:s}=t,a=e.__rest(t,["node","title","children"]);return r.jsx("iframe",Object.assign({title:l,style:{borderRadius:"8px"},allowFullScreen:!0},a,{children:s}))};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("../../../../../../hooks/pickaxe/usePickaxeContext.js"),r=require("../../../../../Core/Modal/index.js"),o=require("../../../../../Core/Modal/Body.js"),t=require("../../../../../Core/Modal/CloseButton.js");exports.default=({children:l,isOpen:a,onChangeIsOpen:i})=>{const{colors:n}=s.usePickaxeContext();return e.jsx(r.default,Object.assign({isOpen:a,onChange:i},{children:e.jsxs(o.default,Object.assign({className:"border-0 w-full h-full",style:{backgroundColor:n.primary,color:n.text,borderColor:n.text+"4D"},avoidOverflow:!0},{children:[e.jsx("div",Object.assign({className:"flex items-start justify-end gap-4"},{children:e.jsx(t.default,{})})),e.jsx("div",Object.assign({className:"mt-4 flex flex-col flex-grow"},{children:l}))]}))}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../../../_virtual/_tslib.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../../../_virtual/_tslib.js"),o=require("react/jsx-runtime"),r=require("react"),s=require("../../hooks/usePickaxeMarkdownContext.js"),t=require("../../../../../../hooks/core/useHover.js"),i=require("framer-motion"),n=require("../../../../../../common/utils.js"),a=require("../../../../../Icons/download.svg.js"),l=require("../../../PickaxeCopyButton.js"),d=require("./ImgModal.js");exports.default=({node:c,src:u,alt:x})=>{const{accentColor:p}=s.usePickaxeMarkdownContext(),[b,g]=r.useState(!1),[h,j]=r.useState(!1),m=t.useHover(),{isHover:k}=m,v=e.__rest(m,["isHover"]),w={hidden:{opacity:0,y:-10,pointerEvents:"none"},visible:{opacity:1,y:0,pointerEvents:"auto"}},y=()=>o.jsxs("div",Object.assign({style:{position:"relative"}},{children:[o.jsxs(i.motion.div,Object.assign({initial:"hidden",animate:k?"visible":"hidden",variants:w,style:{position:"absolute",display:"flex",gap:"0.4rem",top:"10px",right:"10px",color:"#FFF"}},{children:[o.jsx(i.motion.button,Object.assign({style:{outline:"none",padding:"0.5rem 0.65rem",borderRadius:"4px",boxShadow:"0px 4px 6px rgba(0, 0, 0, 0.1)",transition:"background-color 0.2s ease",backgroundColor:p+"07"},whileHover:{backgroundColor:p||"#000000"},whileTap:{scale:.95},onClick:e=>{e.stopPropagation(),window.open(u,"_blank")}},{children:o.jsx(a.default,{width:24,height:24,style:{color:n.getContrastColor(p||"#000000"),flexShrink:0}})})),o.jsx(i.motion.button,Object.assign({style:{outline:"none",padding:"0.5rem 0.65rem",borderRadius:"4px",boxShadow:"0px 4px 6px rgba(0, 0, 0, 0.1)",transition:"background-color 0.2s ease",backgroundColor:p+"07"},whileHover:{backgroundColor:p||"#000000"},whileTap:{scale:.95},onClick:e=>e.stopPropagation()},{children:o.jsx(l.default,{color:n.getContrastColor(p||"#000000"),iconClassName:"w-6 h-6",text:u||""})}))]})),o.jsx("img",{src:u,alt:x,style:{borderRadius:"8px",width:"100%",transition:"box-shadow 0.3s ease",boxShadow:k?"inset 0px 4px 10px rgba(0, 0, 0, 0.5)":"none"},onError:()=>g(!0),onClick:()=>j(!0)})]}));return o.jsxs("div",Object.assign({style:{marginTop:"2rem",marginBottom:"2rem",display:"flex",width:"100%",justifyContent:"center",overflow:"hidden",borderRadius:"8px",transition:"transform 0.3s ease, box-shadow 0.3s ease",transform:k?"translateY(-5px)":"translateY(0)"}},v,{children:[b?o.jsx("p",Object.assign({style:{userSelect:"none",opacity:.5,fontStyle:"italic"}},{children:"[Image link is broken]"})):o.jsx(y,{}),h&&o.jsx(d.default,Object.assign({isOpen:h,onChangeIsOpen:j},{children:o.jsx(y,{})}))]}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../../../_virtual/_tslib.js"),t=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../../../_virtual/_tslib.js"),t=require("react/jsx-runtime"),r=require("react"),i=require("@tanstack/react-query"),o=require("../../hooks/usePickaxeMarkdownContext.js"),a=require("../../../../../../common/lotties/loader-black.js"),n=require("../../../../../../common/lotties/loader-white.js"),s=require("../../../PickaxeLottie.js"),d=require("../../../../../../common/api/streamer.js"),c=require("../../Renderer.js"),l=require("framer-motion"),u=require("../../../../../../common/api/utils.js"),m=require("../../../../../../common/error.js");exports.default=({jobUrl:v})=>{var j,p,x,y;const{theme:f}=o.usePickaxeMarkdownContext(),[h,b]=r.useState(""),[g,k]=r.useState(""),q=r.useRef(null),w=i.useQuery({queryKey:[v],queryFn:()=>(t=>e.__awaiter(void 0,void 0,void 0,(function*(){try{if(!t||t.includes("undefined"))throw new Error("Invalid action job URL");const e=yield fetch(t);return yield e.json()}catch(e){const t=m.default(e);return"development"===process.env.NODE_ENV&&console.error("[getJobResult]",t),{success:!1,error:t}}})))(v),enabled:"undefined"!=typeof window,retry:10,onSuccess:t=>e.__awaiter(void 0,void 0,void 0,(function*(){try{if(k(""),!t.success)return;if("text"in t)return void b(t.text||"");if(!("fcid"in t)){const e=(yield d.streamer({formId:t.formId,responseId:t.responseId,data:t.encodedData})).body;if(!e)return;let r=!0,i="";const o=e.getReader(),a=new TextDecoder;for(;r;){const{value:e,done:t}=yield o.read();r=!t;i+=a.decode(e),b(i)}return b(i),yield u.default.post("/fn/update",{id:t.jobId,data:Object.assign(Object.assign({},t),{text:i})}),void console.log("[Action] streaming done")}yield new Promise((e=>setTimeout(e,3e3))),w.refetch(),"development"===process.env.NODE_ENV&&console.log(`[Action] refetching <${v}>`)}catch(e){k(m.default(e))}}))});return t.jsx("div",Object.assign({ref:q,className:"pxe-action"},{children:t.jsx(l.AnimatePresence,{children:g||w.error||(null===(j=w.data)||void 0===j?void 0:j.error)?t.jsxs(l.motion.div,Object.assign({initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},className:"mt-4"},{children:[t.jsx("blockquote",Object.assign({style:{lineHeight:"20px",borderLeft:"4px solid #FF0000",color:"#FF0000",paddingLeft:"1rem",marginBottom:"1rem"}},{children:g||(null===(p=w.data)||void 0===p?void 0:p.error)||"Failed to process, please try again."})),(null===(x=w.data)||void 0===x?void 0:x.traceback)&&t.jsxs(t.Fragment,{children:[t.jsxs("p",Object.assign({style:{color:"#FF0000"}},{children:["Traceback:"," "]})),t.jsx(c.PickaxeMarkdownRenderer,{value:`\`\`\`js\n${null===(y=w.data)||void 0===y?void 0:y.traceback}\n\`\`\``})]})]})):h?t.jsx(l.motion.div,Object.assign({initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},className:"mt-4"},{children:t.jsx(c.PickaxeMarkdownRenderer,{value:h})})):t.jsx(l.motion.div,Object.assign({initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3}},{children:t.jsx(s.PickaxeLottie,{id:"dark"===f?"loader-white":"loader-black",getJson:()=>e.__awaiter(void 0,void 0,void 0,(function*(){return"dark"===f?n.loaderWhite:a.loaderBlack})),autoplay:!0,loop:!0,style:{cursor:"default",pointerEvents:"none",width:"100%",maxWidth:"150px",height:"150px"}})}))})}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),t=require("./hooks/usePickaxeMarkdownContext.js"),r=require("react-markdown"),s=require("remark-gfm"),n=require("remark-math"),l=require("rehype-katex"),d=require("./Custom/A/index.js"),a=require("./Custom/P/index.js"),o=require("./Custom/Img/index.js"),c=require("./Custom/Iframe/index.js"),h=require("./Custom/Code/index.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=u(r),j=u(s),x=u(n),g=u(l);exports.PickaxeMarkdownRenderer=({className:r,style:s,value:n})=>{const{theme:l}=t.usePickaxeMarkdownContext(),u=i.useRef(null),f={h1:({node:i,children:t})=>e.jsx("h1",Object.assign({style:{fontSize:"2.25rem",lineHeight:"2.5rem"}},{children:t})),h2:({node:i,children:t})=>e.jsx("h2",Object.assign({style:{fontSize:"1.875rem",lineHeight:"2.25rem"}},{children:t})),h3:({node:i,children:t})=>e.jsx("h3",Object.assign({style:{fontSize:"1.5rem",lineHeight:"2rem"}},{children:t})),h4:({node:i,children:t})=>e.jsx("h4",Object.assign({className:"mt-2 text-xl",style:{fontSize:"1.25rem",lineHeight:"1.75rem"}},{children:t})),h5:({node:i,children:t})=>e.jsx("h5",Object.assign({style:{fontSize:"1.125rem",lineHeight:"1.75rem"}},{children:t})),p:a.default,a:d.default,ol:({node:i,children:t})=>e.jsx("ol",Object.assign({style:{listStyleType:"decimal",listStylePosition:"inside",paddingLeft:"1.5rem"}},{children:t})),ul:({node:i,children:t})=>e.jsx("ul",Object.assign({style:{listStyleType:"disc",listStylePosition:"inside",paddingLeft:"1.5rem"}},{children:t})),li:({node:i,children:t})=>e.jsx("li",{children:t}),table:({children:i})=>e.jsx("div",Object.assign({className:"overflow-auto"},{children:e.jsx("table",Object.assign({style:{tableLayout:"fixed",fontSize:"0.875rem",lineHeight:"1.24rem"}},{children:i}))})),th:({node:i,children:t})=>e.jsx("th",Object.assign({style:{padding:"0.75em 1em",fontWeight:600,textAlign:"left"}},{children:t})),tr:({node:i,children:t})=>e.jsx("tr",Object.assign({style:{border:"dark"===l?"1px solid #30363D":"1px solid #D0D7DE"}},{children:t})),td:({node:i,children:t})=>e.jsx("td",Object.assign({style:{padding:"0.75em 1em"}},{children:t})),code:h.default,blockquote:({node:i,children:t})=>e.jsx("blockquote",Object.assign({style:{lineHeight:"15px",borderLeft:"dark"===l?"4px solid #30363D":"4px solid #D0D7DE",color:"dark"===l?"#8B8B8B":"#656D76",paddingLeft:"1rem",marginBottom:"1rem"}},{children:t})),img:o.default,iframe:c.default};return e.jsx("div",Object.assign({className:"pxe-markdown",ref:u,style:Object.assign({position:"relative",whiteSpace:"pre-wrap"},s)},{children:e.jsx(m.default,Object.assign({},r&&{className:r},{components:f,remarkPlugins:[j.default,x.default],rehypePlugins:[g.default]},{children:(null!=n?n:"").replace(/\u200B/g,"")}))}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("../../hooks/pickaxe/usePickaxe.js"),r=require("react"),s=require("../../hooks/pickaxe/usePickaxeContext.js"),a=require("../../hooks/pickaxe/useResponseContext.js"),o=require("../../common/utils.js"),i=require("webfontloader"),l=require("./Addons/Scroll/Provider.js"),u=require("./Chat/index.js"),n=require("./Form/index.js"),d=require("../../common/cn.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=c(i);exports.Pickaxe=({formId:i,className:c})=>{const{chatId:x,styles:j,colors:k,loadFont:m,setFormId:p,setChatId:h,setPickaxe:q}=s.usePickaxeContext(),{setMessages:P,setResponse:g}=a.useResponseContext(),[y,C]=r.useState(!1),v=t.usePickaxe();return r.useEffect((()=>{p(i)}),[i]),r.useEffect((()=>{if(!v.data)return;const e=v.data.chatflag;h(e?o.generateId(15):""),e?P([]):g(null),q(v.data)}),[v.data]),r.useEffect((()=>{"undefined"!=typeof window&&(y||m&&"Real Head Pro"!==j.font&&(f.default.load({google:{families:[j.font]}}),C(!0)))}),[j.font,y]),v.data?e.jsx("div",Object.assign({className:d.default("relative @container/pickaxe-root flex flex-col flex-grow w-full h-full",c,"dark"===j.theme&&"dark"),style:{backgroundColor:k.primary,color:k.text,fontFamily:j.font}},{children:x?e.jsx(l.default,{children:e.jsx(u.default,{})}):e.jsx(l.default,{children:e.jsx(n.default,{})})})):null};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const generateId: (length: number, prefix?: string, suffix?: string) => string;
|
|
2
2
|
export declare const randomStr: (len: number, charOnly?: boolean) => string;
|
|
3
3
|
export declare const extractUrlsFromText: (text: string) => string[];
|
|
4
|
+
export declare const getContrastColor: (hex: string) => "#FFFFFF" | "#000000";
|
|
@@ -34,24 +34,28 @@ type PickaxeContextType = {
|
|
|
34
34
|
isNewChat: boolean;
|
|
35
35
|
isShowIceBreaker: boolean;
|
|
36
36
|
isShowHistory: boolean;
|
|
37
|
-
|
|
37
|
+
loadFont: boolean;
|
|
38
|
+
forceMobile: boolean;
|
|
38
39
|
setFormId: SetState<string>;
|
|
39
40
|
setChatId: SetState<string>;
|
|
40
41
|
setPickaxe: SetState<Pickaxe | null>;
|
|
41
42
|
setIsNewChat: SetState<boolean>;
|
|
42
43
|
setIsShowIceBreaker: SetState<boolean>;
|
|
43
44
|
setIsShowHistory: SetState<boolean>;
|
|
45
|
+
onGenerateComplete?: (responseId: string) => void;
|
|
44
46
|
};
|
|
45
47
|
export interface IPickaxeProviderProps {
|
|
48
|
+
children: ReactNode;
|
|
46
49
|
userId?: string;
|
|
47
50
|
studioUserId?: string;
|
|
48
51
|
styles?: Partial<PickaxeProviderStyles>;
|
|
49
52
|
colors?: Partial<PickaxeProviderColors>;
|
|
50
53
|
responsiveBy?: PickaxeResponsiveBy;
|
|
51
54
|
limits?: Record<string, PickaxeLimitData>;
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
loadFont?: boolean;
|
|
56
|
+
forceMobile?: boolean;
|
|
57
|
+
onGenerateComplete?: (responseId: string) => void;
|
|
54
58
|
}
|
|
55
59
|
export declare const PickaxeContext: import("react").Context<PickaxeContextType>;
|
|
56
|
-
export declare const PickaxeProvider: ({ userId, studioUserId, styles, colors, responsiveBy, limits,
|
|
60
|
+
export declare const PickaxeProvider: ({ children, userId, studioUserId, styles, colors, responsiveBy, limits, loadFont, forceMobile, onGenerateComplete, }: IPickaxeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
57
61
|
export {};
|
|
@@ -17,7 +17,6 @@ type ResponseContextType = {
|
|
|
17
17
|
error: string;
|
|
18
18
|
isGenerating: boolean;
|
|
19
19
|
setMessages: SetState<MemoryStoredChatMessage[]>;
|
|
20
|
-
setMessage: (message: MemoryStoredChatMessage) => void;
|
|
21
20
|
setResponse: SetState<MemoryStoredResponse | null>;
|
|
22
21
|
setStatus: SetState<ResponseStatus>;
|
|
23
22
|
setLimitData: SetState<PickaxeLimitData | null>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface ImgModalProps {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onChangeIsOpen: (isOpen: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const ImgModal: ({ children, isOpen, onChangeIsOpen }: ImgModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default ImgModal;
|
|
@@ -10,11 +10,13 @@ export declare const usePickaxeContext: () => {
|
|
|
10
10
|
isNewChat: boolean;
|
|
11
11
|
isShowIceBreaker: boolean;
|
|
12
12
|
isShowHistory: boolean;
|
|
13
|
-
|
|
13
|
+
loadFont: boolean;
|
|
14
|
+
forceMobile: boolean;
|
|
14
15
|
setFormId: import("../../types/common").SetState<string>;
|
|
15
16
|
setChatId: import("../../types/common").SetState<string>;
|
|
16
17
|
setPickaxe: import("../../types/common").SetState<import("../../types/pickaxe").Pickaxe | null>;
|
|
17
18
|
setIsNewChat: import("../../types/common").SetState<boolean>;
|
|
18
19
|
setIsShowIceBreaker: import("../../types/common").SetState<boolean>;
|
|
19
20
|
setIsShowHistory: import("../../types/common").SetState<boolean>;
|
|
21
|
+
onGenerateComplete?: ((responseId: string) => void) | undefined;
|
|
20
22
|
};
|
|
@@ -7,7 +7,6 @@ export declare const useResponseContext: () => {
|
|
|
7
7
|
error: string;
|
|
8
8
|
isGenerating: boolean;
|
|
9
9
|
setMessages: import("../../types/common").SetState<import("../../types/chat").MemoryStoredChatMessage[]>;
|
|
10
|
-
setMessage: (message: import("../../types/chat").MemoryStoredChatMessage) => void;
|
|
11
10
|
setResponse: import("../../types/common").SetState<import("../../types/form").MemoryStoredResponse | null>;
|
|
12
11
|
setStatus: import("../../types/common").SetState<import("../../components/Pickaxe/ResponseProvider").ResponseStatus>;
|
|
13
12
|
setLimitData: import("../../types/common").SetState<import("../../components/Pickaxe/ResponseProvider").PickaxeLimitData | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as
|
|
1
|
+
import{__awaiter as o}from"../../_virtual/_tslib.js";const r=r=>o(void 0,void 0,void 0,(function*(){const o=yield fetch(`${process.env.NEXT_PUBLIC_API_UTILS_URL}/streamer`,{method:"POST",body:JSON.stringify(r)});if(200!==o.status){const r=yield o.json();throw new Error(r.error)}return o}));export{r as streamer};
|
package/dist/esm/common/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=(t,r="",e="")=>{let
|
|
1
|
+
const t=(t,r="",e="")=>{let n="";for(let r=0;r<t;r++){n+="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"[Math.floor(36*Math.random())]}return r+n+e},r=(t,r=!1)=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";r&&(e=e.replace(/[0-9]/g,""));let n="";for(let r=0;r<t;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n},e=t=>{const r=t.match(/(https?:\/\/[^\s]+)/g)||[];return Array.from(new Set(r))},n=t=>{if(!t)return"#FFFFFF";return(299*parseInt(t.substring(1,2),16)+587*parseInt(t.substring(3,2),16)+114*parseInt(t.substring(5,2),16))/1e3>=128?"#000000":"#FFFFFF"};export{e as extractUrlsFromText,t as generateId,n as getContrastColor,r as randomStr};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useContext as s}from"react";import{ModalContext as t}from"./index.js";import n from"../../Icons/x.svg.js";import r from"../../../common/cn.js";const e=({className:e,iconClassName:c,icon:i,onClick:a})=>{const{setIsOpen:m}=s(t);return o("button",Object.assign({className:r("outline-none hover:opacity-70 hover:duration-300 active:opacity-100",e),onClick:()=>{m(!1),a&&a()}},{children:i||o(n,{className:r("h-6 w-6 shrink-0",c)})}))};export{e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{jsxs as o,jsx as t}from"react/jsx-runtime";import{useState as s,useRef as r,useMemo as
|
|
1
|
+
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{jsxs as o,jsx as t}from"react/jsx-runtime";import{useState as s,useRef as r,useMemo as n,useEffect as i}from"react";import{useMediaQuery as a}from"../../../hooks/core/useMediaQuery.js";import{usePickaxeContext as l}from"../../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as d}from"../../../hooks/pickaxe/useResponseContext.js";import{useStyleInput as c}from"../../../hooks/studio/useStyleInput.js";import{useStyleFontSize as m}from"../../../hooks/studio/useStyleFontSize.js";import{useConversation as u}from"../../../hooks/pickaxe/useConversation.js";import{useSubmit as p}from"../../../hooks/pickaxe/useSubmit.js";import{useSubmitResult as f}from"../../../hooks/pickaxe/useSubmitResult.js";import{useDocument as h}from"../Addons/Document/hooks/useDocument.js";import{useScroll as g}from"../Addons/Scroll/hooks/useScroll.js";import{allowedFileMimeTypes as v,allowedImageMimeTypes as x}from"../../../common/documents.js";import{streamer as b}from"../../../common/api/streamer.js";import y from"../../../node_modules/.pnpm/react-textarea-autosize@8.5.7_@types_react@18.3.18_react@18.3.1/node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js";import k from"../../Icons/attach.svg.js";import I from"../../Icons/send.svg.js";import j from"../Addons/IceBreaker/index.js";import w from"../../../common/error.js";import D from"../../../common/cn.js";const N=()=>{var N;const{formId:O,chatId:S,userId:A,studioUserId:C,pickaxe:E,colors:_,responsiveBy:U,isNewChat:R,forceMobile:z,setIsNewChat:B,setIsShowIceBreaker:M,onGenerateComplete:F}=l(),{messages:L,status:T,limits:K,setMessages:P,setStatus:W,setLimitData:G,setError:Q}=d(),{documents:V,isUploading:q,isImageUploadAllowed:H,upsertDocuments:J,onFileUpload:X,onEditDocumentByDocId:Y}=h(),{isScrollIncreasing:Z,scrollToBottom:$,scrollStart:ee,scrollEnd:oe}=g(),te=u(),se=p(),re=f(),[ne,ie]=s(""),ae=r(null),[le]=a("(max-width: 767px)"),de=c(),ce=m({type:"body"}),me=n((()=>{var e,o,t;return!!R&&(!!E&&(!te.isLoading&&(!((null!==(o=null===(e=te.data)||void 0===e?void 0:e.messages.length)&&void 0!==o?o:0)>1)&&!!(null===(t=E.icebreakers)||void 0===t?void 0:t.length))))}),[E,R,te.data,te.isLoading]);i((()=>{M(me)}),[me]);const ue=o=>e(void 0,void 0,void 0,(function*(){try{if(q)return;G(null),Q(""),B(!1);const e=null!=o?o:ne;if(!e||"fetching"===T||"streaming"===T)return;const t=new Date;ie("");const s="enduserupload"===(null==E?void 0:E.documentuploadtype),r=V.filter((e=>"finished"===e.status&&!e.isInsertedAsRaw)),n=r.length?r[r.length-1].documentId:"";W("fetching");const i=[...L,{id:L.length+1,role:"user",content:e}];P(i),ee(),$();const{success:a,data:l,usedDocumentIds:d,newDocumentId:c,newDocumentName:m,isInsertedFile:u,error:p}=yield se.mutateAsync(Object.assign(Object.assign({formId:O,responseId:S,value:e},s&&n&&{documentId:n}),C&&{studioUserId:C}));if(!a)throw new Error(null!=p?p:"An error occurred, please try again.");u&&n&&Y({documentId:n,isInsertedAsRaw:!0}),c&&m&&J([{type:"website",id:m,name:m,status:"finished",documentId:c}]),$();const f=(yield b({formId:O,responseId:S,data:l})).body;if(!f)throw new Error("Streaming error");const h=f.getReader(),g=new TextDecoder,v=i.length;let x="",y=!0;for(W("streaming");y;){const{value:e,done:o}=yield h.read();y=!o;if(x+=g.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",x),x)P([...i.slice(0,v),{id:L.length+1,role:"assistant",content:x}]),Z&&$();else if(!y&&!x)throw new Error("Server error")}const k=new Date;x&&($(),W("idle"),yield re.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:O,responseId:S,documentIds:d},A&&{userId:A}),C&&{studioUserId:C}),C&&(null==E?void 0:E.studioid)&&{studioId:E.studioid}),{messages:[{role:"user",message:e,sentAt:t},{role:"assistant",message:x,sentAt:k}]})),null==F||F(S))}catch(e){let o=w(e);o.includes("Unexpected token 'A',")&&(o="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(K).find((([e])=>o.includes(e)));t?G(t[1]):Q(o),$()}finally{W("idle"),oe()}}));return o("div",Object.assign({className:D("fixed flex w-full flex-col bottom-0 left-0","viewport"===U?"min-[767px]:relative min-[767px]:bottom-auto min-[767px]:left-auto":"absolute @[767px]/pickaxe-root:relative @[767px]/pickaxe-root:bottom-auto @[767px]/pickaxe-root:left-auto")},{children:[me&&t(j,{data:(null==E?void 0:E.icebreakers)||[],style:{backgroundColor:_.secondary,color:_.secondaryText},isMobile:z||le,onSend:ue}),o("div",Object.assign({style:de,className:"flex min-h-[56px] items-end gap-x-2 px-4 py-3 pb-[15px] shadow"},{children:["enduserupload"===(null==E?void 0:E.documentuploadtype)&&o("div",Object.assign({className:"tooltip"},{children:[t("input",{id:"file-upload",ref:ae,type:"file",accept:[...v,...H?x:[]].join(", "),multiple:!0,hidden:!0,className:"hidden",onChange:o=>e(void 0,void 0,void 0,(function*(){yield X(Array.from(o.target.files||[])),o.target.value=""}))}),t("button",Object.assign({className:"flex items-center disabled:cursor-wait disabled:opacity-50",disabled:q,onClick:()=>{var e;return null===(e=ae.current)||void 0===e?void 0:e.click()}},{children:t(k,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:_.accent}})}))]})),t(y,{className:D(ce("max-h-60 w-full resize-none border-transparent bg-transparent outline-none ring-0 scrollbar scrollbar-thin placeholder:font-semilight"),!ne.length&&"max-h-6 overflow-hidden text-ellipsis whitespace-nowrap"),value:ne,placeholder:null!==(N=null==E?void 0:E.placeholdertext)&&void 0!==N?N:"What do you want to talk about?",onChange:e=>ie(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),ue())}}),t("button",Object.assign({className:"outline-none disabled:cursor-default disabled:opacity-50",disabled:"idle"!==T||q,onClick:()=>ue()},{children:t(I,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:_.accent}})}))]}))]}))};export{N as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as e}from"../../../../_virtual/_tslib.js";import{jsxs as o,jsx as t}from"react/jsx-runtime";import{useState as s}from"react";import{usePickaxeContext as i}from"../../../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as r}from"../../../../hooks/pickaxe/useResponseContext.js";import{useSubmit as n}from"../../../../hooks/pickaxe/useSubmit.js";import{useSubmitResult as d}from"../../../../hooks/pickaxe/useSubmitResult.js";import{useDocument as
|
|
1
|
+
import{__awaiter as e}from"../../../../_virtual/_tslib.js";import{jsxs as o,jsx as t}from"react/jsx-runtime";import{useState as s}from"react";import{usePickaxeContext as i}from"../../../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as r}from"../../../../hooks/pickaxe/useResponseContext.js";import{useSubmit as n}from"../../../../hooks/pickaxe/useSubmit.js";import{useSubmitResult as d}from"../../../../hooks/pickaxe/useSubmitResult.js";import{useDocument as l}from"../../Addons/Document/hooks/useDocument.js";import{useScroll as a}from"../../Addons/Scroll/hooks/useScroll.js";import{streamer as m}from"../../../../common/api/streamer.js";import{extractUrlsFromText as c}from"../../../../common/utils.js";import{encode as u}from"@nem035/gpt-3-encoder";import p from"../../common/PickaxeButton.js";import f from"../../../../common/error.js";import g from"../../../../common/cn.js";const h=({questions:h})=>{const{formId:x,userId:w,studioUserId:j,pickaxe:b,isShowHistory:I,responsiveBy:k,setIsShowHistory:v,onGenerateComplete:y}=i(),{status:O,limits:S,setResponse:q,setStatus:E,setLimitData:D,setError:R}=r(),{documents:U,websiteLink:C,isUploading:P,onWebsiteUpload:A,setDocumentError:N}=l(),{isScrollIncreasing:L,scrollToContainer:T,scrollToBottom:B,scrollStart:_,scrollEnd:H}=a(),W=n(),G=d(),[K,M]=s(!1);return o("div",Object.assign({className:"mt-4 flex flex-wrap gap-2"},{children:[t(p,Object.assign({className:g("w-full","viewport"===k?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),isDisabled:P||K||"fetching"===O||"streaming"===O,onClick:()=>e(void 0,void 0,void 0,(function*(){var e;try{if(P||K||"fetching"===O||"streaming"===O)return;D(null),N("");const o="enduserupload"===(null==b?void 0:b.documentuploadtype),t=h.some((e=>"userinput:documentupload"===e.id&&e.isRequired)),s=U.filter((e=>"finished"===e.status)),i=c(C),r=U.map((e=>e.name)),n=i.filter((e=>!r.includes(e)));if(n.length){const e=n[n.length-1],o=yield A(e);o&&(s.push(o),M(!0),yield new Promise((e=>setTimeout(e,5e3))),M(!1))}else if(t&&o&&!s.length)return void N("Please paste a valid website/video link or drag a file to add to the knowledge base.");R("");const d=["Multiple Choice","Checkbox"];for(const e of h){if(u(e.input).length>e.maxLength&&!d.includes(e.type))throw new Error("One or more of your responses is too long!");if(e.isRequired&&!e.input.trim()&&"userinput:documentupload"!==e.id)throw new Error("You must fill out all required fields.")}const l=s.length?s[s.length-1]:null;let a={};h.forEach((e=>a=Object.assign(Object.assign({},a),{[e.id]:"Knowledge Upload"===e.type||e.id.includes("documentupload")?(null==l?void 0:l.name)||"":e.input}))),E("fetching");const{success:p,responseId:f,data:g,usedDocumentIds:I,rawUserInput:k,error:v}=yield W.mutateAsync(Object.assign(Object.assign({formId:x,valueObj:a},o&&l&&{documentId:null!==(e=l.documentId)&&void 0!==e?e:""}),j&&{studioUserId:j}));if(!p)throw new Error(null!=v?v:"An error occurred, please try again.");_();const S=(yield m({formId:x,responseId:f,data:g})).body;if(!S)throw new Error("Streaming error");const T=S.getReader(),H=new TextDecoder;let V="",Y=!0;q(null);const z=h.map((e=>({id:e.id,question:e.main,answer:e.input})));for(;Y;){const{value:e,done:o}=yield T.read();Y=!o;if(V+=H.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",V),V)E("streaming"),q({formId:x,responseId:f,documentIds:I,messages:[],questions:z,questionPrompt:k,questionResponse:V,createdAt:new Date}),L&&B();else if(!Y&&!V)throw new Error("Server error")}V&&(B(),E("idle"),yield G.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:x,responseId:f,documentIds:I},w&&{userId:w}),j&&{studioUserId:j}),j&&(null==b?void 0:b.studioid)&&{studioId:b.studioid}),{questions:z,questionPrompt:k,questionResponse:V})),null==y||y(f))}catch(e){let o=f(e);o.includes("Unexpected token 'A',")&&(o="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(S).find((([e])=>o.includes(e)));t?D(t[1]):R(o),M(!1),T()}finally{E("idle"),H()}}))},{children:K?"Processing...":P?"Uploading...":"fetching"===O||"streaming"===O?"Loading...":"Submit"})),!I&&t(p,Object.assign({variant:"transparent-text",className:g("w-full","viewport"===k?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>v(!0)},{children:"See history"}))]}))};export{h as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{createContext as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{createContext as o,useState as r}from"react";import t from"./Addons/Document/Provider.js";import s from"./ResponseProvider.js";const i=o({}),n=({children:o,userId:n="",studioUserId:c="",styles:a,colors:d,responsiveBy:l="viewport",limits:m={},loadFont:F=!0,forceMobile:h=!1,onGenerateComplete:p})=>{const[I,f]=r(""),[u,y]=r(""),[b,j]=r(null),[x,v]=r(!0),[w,S]=r(!0),[g,k]=r(!1);return e(i.Provider,Object.assign({value:Object.assign({formId:I,chatId:u,userId:n,studioUserId:c,pickaxe:b,styles:Object.assign({theme:"light",font:"Real Head Pro",fontSize:"md",formFieldStyle:"box",btnStyle:"filled",outlineThickness:1,cornerRadius:4},a),colors:Object.assign({primary:"#F6F8FA",text:"#000000",secondary:"#FFFFFF",secondaryText:"#000000",accent:"#228DD7",accentText:"#FFFFFF",error:"#EF4444"},d),responsiveBy:l,isNewChat:x,isShowIceBreaker:w,isShowHistory:g,loadFont:F,forceMobile:h,setFormId:f,setChatId:y,setPickaxe:j,setIsNewChat:v,setIsShowIceBreaker:S,setIsShowHistory:k},p&&{onGenerateComplete:p})},{children:e(s,Object.assign({limits:m},{children:e(t,{children:o})}))}))};export{i as PickaxeContext,n as PickaxeProvider};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{createContext as s,useState as t}from"react";const r=s({}),i=({limits:s,children:i})=>{const[a,n]=t([]),[l,o]=t(null),[m,
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{createContext as s,useState as t}from"react";const r=s({}),i=({limits:s,children:i})=>{const[a,n]=t([]),[l,o]=t(null),[m,u]=t("idle"),[c,d]=t(null),[g,p]=t(""),[f,h]=t(!1);return e(r.Provider,Object.assign({value:{messages:a,response:l,status:m,limits:s,limitData:c,error:g,isGenerating:f,setMessages:n,setResponse:o,setStatus:u,setLimitData:d,setError:p,setIsGenerating:h}},{children:i}))};export{r as ResponseContext,i as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{usePickaxeMarkdownContext as t}from"../../hooks/usePickaxeMarkdownContext.js";import r from"../common/Action.js";import i from"../Img/index.js";const o=({node:o,href:n="",children:s})=>{const{accentColor:a,linkPreviews:l,actions:c}=t(),m=(n||"").startsWith("www.")?`https://${n}`:n,d=m.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([\w-]+)/i);if(d&&(null==d?void 0:d[1]))return e("div",Object.assign({style:{marginTop:"
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{usePickaxeMarkdownContext as t}from"../../hooks/usePickaxeMarkdownContext.js";import r from"../common/Action.js";import i from"../Img/index.js";const o=({node:o,href:n="",children:s})=>{const{accentColor:a,linkPreviews:l,actions:c}=t(),m=(n||"").startsWith("www.")?`https://${n}`:n,d=m.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([\w-]+)/i);if(d&&(null==d?void 0:d[1]))return e("div",Object.assign({style:{marginTop:"2rem",marginBottom:"2rem",display:"flex",width:"100%",justifyContent:"center"}},{children:e("iframe",Object.assign({title:"youtube-embed",src:`https://www.youtube.com/embed/${d[1]}`,style:{width:"100%",maxWidth:"560px"},allowFullScreen:!0},{children:"Iframe not supported, use a different browser."}))}));return m.match(/\.(jpeg|jpg|gif|bmp|webp|svg|tiff|avif)$/)?e(i,{src:m,alt:"string"==typeof s?s:"Markdown Image"}):c&&m.includes("pickaxe")&&(m.includes("/api/fn/result")||m.includes("/api/function_call_results"))?e(r,{jobUrl:m}):e("a",Object.assign({href:m,target:"_blank",rel:"noopener noreferrer"},l&&{className:"marked-link-possible-preview-render"},{style:{color:a,fontWeight:600}},{children:s}))};export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__rest as e}from"../../../../../../_virtual/_tslib.js";import{jsx as r}from"react/jsx-runtime";import{Prism as a}from"react-syntax-highlighter";import{usePickaxeMarkdownContext as s}from"../../hooks/usePickaxeMarkdownContext.js";const t=t=>{var{node:n,children:i,className:o}=t,c=e(t,["node","children","className"]);const{syntaxTheme:l}=s(),m=/language-(\w+)/.exec(o||"");return m?r(a,Object.assign({},c,{PreTag:"div",language:m[1],style:l,showLineNumbers:!0},{children:String(i).replace(/\n$/,"")})):r("code",Object.assign({},c,{className:o},{children:i}))};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__rest as e}from"../../../../../../_virtual/_tslib.js";import{jsx as r}from"react/jsx-runtime";const t=t=>{var{node:i,title:l="Random Iframe",children:a}=t,n=e(t,["node","title","children"]);return r("iframe",Object.assign({title:l,style:{borderRadius:"8px"},allowFullScreen:!0},n,{children:a}))};export{t as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{usePickaxeContext as r}from"../../../../../../hooks/pickaxe/usePickaxeContext.js";import s from"../../../../../Core/Modal/index.js";import t from"../../../../../Core/Modal/Body.js";import l from"../../../../../Core/Modal/CloseButton.js";const i=({children:i,isOpen:a,onChangeIsOpen:n})=>{const{colors:c}=r();return e(s,Object.assign({isOpen:a,onChange:n},{children:o(t,Object.assign({className:"border-0 w-full h-full",style:{backgroundColor:c.primary,color:c.text,borderColor:c.text+"4D"},avoidOverflow:!0},{children:[e("div",Object.assign({className:"flex items-start justify-end gap-4"},{children:e(l,{})})),e("div",Object.assign({className:"mt-4 flex flex-col flex-grow"},{children:i}))]}))}))};export{i as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__rest as o}from"../../../../../../_virtual/_tslib.js";import{
|
|
1
|
+
import{__rest as o}from"../../../../../../_virtual/_tslib.js";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useState as i}from"react";import{usePickaxeMarkdownContext as t}from"../../hooks/usePickaxeMarkdownContext.js";import{useHover as n}from"../../../../../../hooks/core/useHover.js";import{motion as s}from"framer-motion";import{getContrastColor as a}from"../../../../../../common/utils.js";import l from"../../../../../Icons/download.svg.js";import d from"../../../PickaxeCopyButton.js";import p from"./ImgModal.js";const c=({node:c,src:m,alt:b})=>{const{accentColor:h}=t(),[g,x]=i(!1),[u,f]=i(!1),k=n(),{isHover:w}=k,y=o(k,["isHover"]),v={hidden:{opacity:0,y:-10,pointerEvents:"none"},visible:{opacity:1,y:0,pointerEvents:"auto"}},j=()=>e("div",Object.assign({style:{position:"relative"}},{children:[e(s.div,Object.assign({initial:"hidden",animate:w?"visible":"hidden",variants:v,style:{position:"absolute",display:"flex",gap:"0.4rem",top:"10px",right:"10px",color:"#FFF"}},{children:[r(s.button,Object.assign({style:{outline:"none",padding:"0.5rem 0.65rem",borderRadius:"4px",boxShadow:"0px 4px 6px rgba(0, 0, 0, 0.1)",transition:"background-color 0.2s ease",backgroundColor:h+"07"},whileHover:{backgroundColor:h||"#000000"},whileTap:{scale:.95},onClick:o=>{o.stopPropagation(),window.open(m,"_blank")}},{children:r(l,{width:24,height:24,style:{color:a(h||"#000000"),flexShrink:0}})})),r(s.button,Object.assign({style:{outline:"none",padding:"0.5rem 0.65rem",borderRadius:"4px",boxShadow:"0px 4px 6px rgba(0, 0, 0, 0.1)",transition:"background-color 0.2s ease",backgroundColor:h+"07"},whileHover:{backgroundColor:h||"#000000"},whileTap:{scale:.95},onClick:o=>o.stopPropagation()},{children:r(d,{color:a(h||"#000000"),iconClassName:"w-6 h-6",text:m||""})}))]})),r("img",{src:m,alt:b,style:{borderRadius:"8px",width:"100%",transition:"box-shadow 0.3s ease",boxShadow:w?"inset 0px 4px 10px rgba(0, 0, 0, 0.5)":"none"},onError:()=>x(!0),onClick:()=>f(!0)})]}));return e("div",Object.assign({style:{marginTop:"2rem",marginBottom:"2rem",display:"flex",width:"100%",justifyContent:"center",overflow:"hidden",borderRadius:"8px",transition:"transform 0.3s ease, box-shadow 0.3s ease",transform:w?"translateY(-5px)":"translateY(0)"}},y,{children:[g?r("p",Object.assign({style:{userSelect:"none",opacity:.5,fontStyle:"italic"}},{children:"[Image link is broken]"})):r(j,{}),u&&r(p,Object.assign({isOpen:u,onChangeIsOpen:f},{children:r(j,{})}))]}))};export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as e}from"../../../../../../_virtual/_tslib.js";import{jsx as o}from"react/jsx-runtime";import{useState as
|
|
1
|
+
import{__awaiter as e}from"../../../../../../_virtual/_tslib.js";import{jsx as o,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useState as r,useRef as n}from"react";import{useQuery as a}from"@tanstack/react-query";import{usePickaxeMarkdownContext as d}from"../../hooks/usePickaxeMarkdownContext.js";import{loaderBlack as c}from"../../../../../../common/lotties/loader-black.js";import{loaderWhite as s}from"../../../../../../common/lotties/loader-white.js";import{PickaxeLottie as l}from"../../../PickaxeLottie.js";import{streamer as m}from"../../../../../../common/api/streamer.js";import{PickaxeMarkdownRenderer as p}from"../../Renderer.js";import{AnimatePresence as u,motion as f}from"framer-motion";import v from"../../../../../../common/api/utils.js";import y from"../../../../../../common/error.js";const h=({jobUrl:h})=>{var j,b,g,x;const{theme:k}=d(),[w,O]=r(""),[F,N]=r(""),E=n(null),I=a({queryKey:[h],queryFn:()=>(o=>e(void 0,void 0,void 0,(function*(){try{if(!o||o.includes("undefined"))throw new Error("Invalid action job URL");const e=yield fetch(o);return yield e.json()}catch(e){const o=y(e);return"development"===process.env.NODE_ENV&&console.error("[getJobResult]",o),{success:!1,error:o}}})))(h),enabled:"undefined"!=typeof window,retry:10,onSuccess:o=>e(void 0,void 0,void 0,(function*(){try{if(N(""),!o.success)return;if("text"in o)return void O(o.text||"");if(!("fcid"in o)){const e=(yield m({formId:o.formId,responseId:o.responseId,data:o.encodedData})).body;if(!e)return;let t=!0,i="";const r=e.getReader(),n=new TextDecoder;for(;t;){const{value:e,done:o}=yield r.read();t=!o;i+=n.decode(e),O(i)}return O(i),yield v.post("/fn/update",{id:o.jobId,data:Object.assign(Object.assign({},o),{text:i})}),void console.log("[Action] streaming done")}yield new Promise((e=>setTimeout(e,3e3))),I.refetch(),"development"===process.env.NODE_ENV&&console.log(`[Action] refetching <${h}>`)}catch(e){N(y(e))}}))});return o("div",Object.assign({ref:E,className:"pxe-action"},{children:o(u,{children:F||I.error||(null===(j=I.data)||void 0===j?void 0:j.error)?t(f.div,Object.assign({initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},className:"mt-4"},{children:[o("blockquote",Object.assign({style:{lineHeight:"20px",borderLeft:"4px solid #FF0000",color:"#FF0000",paddingLeft:"1rem",marginBottom:"1rem"}},{children:F||(null===(b=I.data)||void 0===b?void 0:b.error)||"Failed to process, please try again."})),(null===(g=I.data)||void 0===g?void 0:g.traceback)&&t(i,{children:[t("p",Object.assign({style:{color:"#FF0000"}},{children:["Traceback:"," "]})),o(p,{value:`\`\`\`js\n${null===(x=I.data)||void 0===x?void 0:x.traceback}\n\`\`\``})]})]})):o(f.div,w?Object.assign({initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},className:"mt-4"},{children:o(p,{value:w})}):Object.assign({initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3}},{children:o(l,{id:"dark"===k?"loader-white":"loader-black",getJson:()=>e(void 0,void 0,void 0,(function*(){return"dark"===k?s:c})),autoplay:!0,loop:!0,style:{cursor:"default",pointerEvents:"none",width:"100%",maxWidth:"150px",height:"150px"}})}))})}))};export{h as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{useRef as i}from"react";import{usePickaxeMarkdownContext as t}from"./hooks/usePickaxeMarkdownContext.js";import r from"react-markdown";import n from"remark-gfm";import l from"remark-math";import s from"rehype-katex";import o from"./Custom/A/index.js";import d from"./Custom/P/index.js";import m from"./Custom/Img/index.js";import c from"./Custom/Iframe/index.js";import a from"./Custom/Code/index.js";const h=({className:h,style:g,value:p})=>{const{theme:f}=t(),b=i(null),j={h1:({node:i,children:t})=>e("h1",Object.assign({style:{fontSize:"2.25rem",lineHeight:"2.5rem"}},{children:t})),h2:({node:i,children:t})=>e("h2",Object.assign({style:{fontSize:"1.875rem",lineHeight:"2.25rem"}},{children:t})),h3:({node:i,children:t})=>e("h3",Object.assign({style:{fontSize:"1.5rem",lineHeight:"2rem"}},{children:t})),h4:({node:i,children:t})=>e("h4",Object.assign({className:"mt-2 text-xl",style:{fontSize:"1.25rem",lineHeight:"1.75rem"}},{children:t})),h5:({node:i,children:t})=>e("h5",Object.assign({style:{fontSize:"1.125rem",lineHeight:"1.75rem"}},{children:t})),p:d,a:o,ol:({node:i,children:t})=>e("ol",Object.assign({style:{listStyleType:"decimal",listStylePosition:"inside",paddingLeft:"1.5rem"}},{children:t})),ul:({node:i,children:t})=>e("ul",Object.assign({style:{listStyleType:"disc",listStylePosition:"inside",paddingLeft:"1.5rem"}},{children:t})),li:({node:i,children:t})=>e("li",{children:t}),table:({children:i})=>e("div",Object.assign({className:"overflow-auto"},{children:e("table",Object.assign({style:{tableLayout:"fixed",fontSize:"0.875rem",lineHeight:"1.24rem"}},{children:i}))})),th:({node:i,children:t})=>e("th",Object.assign({style:{padding:"0.75em 1em",fontWeight:600,textAlign:"left"}},{children:t})),tr:({node:i,children:t})=>e("tr",Object.assign({style:{border:"dark"===f?"1px solid #30363D":"1px solid #D0D7DE"}},{children:t})),td:({node:i,children:t})=>e("td",Object.assign({style:{padding:"0.75em 1em"}},{children:t})),code:a,blockquote:({node:i,children:t})=>e("blockquote",Object.assign({style:{lineHeight:"15px",borderLeft:"dark"===f?"4px solid #30363D":"4px solid #D0D7DE",color:"dark"===f?"#8B8B8B":"#656D76",paddingLeft:"1rem",marginBottom:"1rem"}},{children:t})),img:m,iframe:c};return e("div",Object.assign({className:"pxe-markdown",ref:b,style:Object.assign({position:"relative",whiteSpace:"pre-wrap"},g)},{children:e(r,Object.assign({},h&&{className:h},{components:j,remarkPlugins:[n,l],rehypePlugins:[s]},{children:(null!=p?p:"").replace(/\u200B/g,"")}))}))};export{h as PickaxeMarkdownRenderer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{usePickaxe as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{usePickaxe as e}from"../../hooks/pickaxe/usePickaxe.js";import{useState as t,useEffect as r}from"react";import{usePickaxeContext as a}from"../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as s}from"../../hooks/pickaxe/useResponseContext.js";import{generateId as i}from"../../common/utils.js";import m from"webfontloader";import n from"./Addons/Scroll/Provider.js";import l from"./Chat/index.js";import c from"./Form/index.js";import d from"../../common/cn.js";const f=({formId:f,className:p})=>{const{chatId:x,styles:k,colors:u,loadFont:h,setFormId:j,setChatId:g,setPickaxe:w}=a(),{setMessages:y,setResponse:C}=s(),[P,F]=t(!1),I=e();return r((()=>{j(f)}),[f]),r((()=>{if(!I.data)return;const o=I.data.chatflag;g(o?i(15):""),o?y([]):C(null),w(I.data)}),[I.data]),r((()=>{"undefined"!=typeof window&&(P||h&&"Real Head Pro"!==k.font&&(m.load({google:{families:[k.font]}}),F(!0)))}),[k.font,P]),I.data?o("div",Object.assign({className:d("relative @container/pickaxe-root flex flex-col flex-grow w-full h-full",p,"dark"===k.theme&&"dark"),style:{backgroundColor:u.primary,color:u.text,fontFamily:k.font}},{children:o(n,x?{children:o(l,{})}:{children:o(c,{})})})):null};export{f as Pickaxe};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const generateId: (length: number, prefix?: string, suffix?: string) => string;
|
|
2
2
|
export declare const randomStr: (len: number, charOnly?: boolean) => string;
|
|
3
3
|
export declare const extractUrlsFromText: (text: string) => string[];
|
|
4
|
+
export declare const getContrastColor: (hex: string) => "#FFFFFF" | "#000000";
|
|
@@ -34,24 +34,28 @@ type PickaxeContextType = {
|
|
|
34
34
|
isNewChat: boolean;
|
|
35
35
|
isShowIceBreaker: boolean;
|
|
36
36
|
isShowHistory: boolean;
|
|
37
|
-
|
|
37
|
+
loadFont: boolean;
|
|
38
|
+
forceMobile: boolean;
|
|
38
39
|
setFormId: SetState<string>;
|
|
39
40
|
setChatId: SetState<string>;
|
|
40
41
|
setPickaxe: SetState<Pickaxe | null>;
|
|
41
42
|
setIsNewChat: SetState<boolean>;
|
|
42
43
|
setIsShowIceBreaker: SetState<boolean>;
|
|
43
44
|
setIsShowHistory: SetState<boolean>;
|
|
45
|
+
onGenerateComplete?: (responseId: string) => void;
|
|
44
46
|
};
|
|
45
47
|
export interface IPickaxeProviderProps {
|
|
48
|
+
children: ReactNode;
|
|
46
49
|
userId?: string;
|
|
47
50
|
studioUserId?: string;
|
|
48
51
|
styles?: Partial<PickaxeProviderStyles>;
|
|
49
52
|
colors?: Partial<PickaxeProviderColors>;
|
|
50
53
|
responsiveBy?: PickaxeResponsiveBy;
|
|
51
54
|
limits?: Record<string, PickaxeLimitData>;
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
loadFont?: boolean;
|
|
56
|
+
forceMobile?: boolean;
|
|
57
|
+
onGenerateComplete?: (responseId: string) => void;
|
|
54
58
|
}
|
|
55
59
|
export declare const PickaxeContext: import("react").Context<PickaxeContextType>;
|
|
56
|
-
export declare const PickaxeProvider: ({ userId, studioUserId, styles, colors, responsiveBy, limits,
|
|
60
|
+
export declare const PickaxeProvider: ({ children, userId, studioUserId, styles, colors, responsiveBy, limits, loadFont, forceMobile, onGenerateComplete, }: IPickaxeProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
57
61
|
export {};
|
|
@@ -17,7 +17,6 @@ type ResponseContextType = {
|
|
|
17
17
|
error: string;
|
|
18
18
|
isGenerating: boolean;
|
|
19
19
|
setMessages: SetState<MemoryStoredChatMessage[]>;
|
|
20
|
-
setMessage: (message: MemoryStoredChatMessage) => void;
|
|
21
20
|
setResponse: SetState<MemoryStoredResponse | null>;
|
|
22
21
|
setStatus: SetState<ResponseStatus>;
|
|
23
22
|
setLimitData: SetState<PickaxeLimitData | null>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface ImgModalProps {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onChangeIsOpen: (isOpen: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const ImgModal: ({ children, isOpen, onChangeIsOpen }: ImgModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export default ImgModal;
|
|
@@ -10,11 +10,13 @@ export declare const usePickaxeContext: () => {
|
|
|
10
10
|
isNewChat: boolean;
|
|
11
11
|
isShowIceBreaker: boolean;
|
|
12
12
|
isShowHistory: boolean;
|
|
13
|
-
|
|
13
|
+
loadFont: boolean;
|
|
14
|
+
forceMobile: boolean;
|
|
14
15
|
setFormId: import("../../types/common").SetState<string>;
|
|
15
16
|
setChatId: import("../../types/common").SetState<string>;
|
|
16
17
|
setPickaxe: import("../../types/common").SetState<import("../../types/pickaxe").Pickaxe | null>;
|
|
17
18
|
setIsNewChat: import("../../types/common").SetState<boolean>;
|
|
18
19
|
setIsShowIceBreaker: import("../../types/common").SetState<boolean>;
|
|
19
20
|
setIsShowHistory: import("../../types/common").SetState<boolean>;
|
|
21
|
+
onGenerateComplete?: ((responseId: string) => void) | undefined;
|
|
20
22
|
};
|
|
@@ -7,7 +7,6 @@ export declare const useResponseContext: () => {
|
|
|
7
7
|
error: string;
|
|
8
8
|
isGenerating: boolean;
|
|
9
9
|
setMessages: import("../../types/common").SetState<import("../../types/chat").MemoryStoredChatMessage[]>;
|
|
10
|
-
setMessage: (message: import("../../types/chat").MemoryStoredChatMessage) => void;
|
|
11
10
|
setResponse: import("../../types/common").SetState<import("../../types/form").MemoryStoredResponse | null>;
|
|
12
11
|
setStatus: import("../../types/common").SetState<import("../../components/Pickaxe/ResponseProvider").ResponseStatus>;
|
|
13
12
|
setLimitData: import("../../types/common").SetState<import("../../components/Pickaxe/ResponseProvider").PickaxeLimitData | null>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pickaxeproject/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.38",
|
|
4
4
|
"description": "Client utility library for Pickaxe",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"@types/react": "^18.0.26",
|
|
71
71
|
"@types/react-dom": "^18.0.10",
|
|
72
72
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
73
|
+
"@types/webfontloader": "^1.6.38",
|
|
73
74
|
"@typescript-eslint/eslint-plugin": "^5.48.1",
|
|
74
75
|
"@typescript-eslint/parser": "^5.48.1",
|
|
75
76
|
"@zerollup/ts-transform-paths": "^1.7.18",
|
|
@@ -123,6 +124,7 @@
|
|
|
123
124
|
"vite": "^6.0.7",
|
|
124
125
|
"vite-plugin-svgr": "^4.3.0",
|
|
125
126
|
"vite-tsconfig-paths": "^5.1.4",
|
|
127
|
+
"webfontloader": "^1.6.28",
|
|
126
128
|
"webpack": "^5.75.0",
|
|
127
129
|
"webpack-cli": "^5.0.1"
|
|
128
130
|
},
|
|
@@ -150,7 +152,8 @@
|
|
|
150
152
|
"remark-gfm": "^4.0.0",
|
|
151
153
|
"remark-math": "^6.0.0",
|
|
152
154
|
"tailwind-merge": "^2.6.0",
|
|
153
|
-
"tailwind-scrollbar": "^3.1.0"
|
|
155
|
+
"tailwind-scrollbar": "^3.1.0",
|
|
156
|
+
"webfontloader": "^1.6.28"
|
|
154
157
|
},
|
|
155
158
|
"engines": {
|
|
156
159
|
"node": ">=18"
|