@pickaxeproject/react 0.0.44 → 0.0.46

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.
@@ -0,0 +1 @@
1
+ "use strict";function e(e){if(e&&e.__esModule)return e;var c=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(c,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),c.default=e,Object.freeze(c)}Object.defineProperty(exports,"__esModule",{value:!0});var c,t,a,r,n=e(require("react"));function l(){return l=Object.assign?Object.assign.bind():function(e){for(var c=1;c<arguments.length;c++){var t=arguments[c];for(var a in t)({}).hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},l.apply(null,arguments)}var i=e=>n.createElement("svg",l({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 18 18"},e),c||(c=n.createElement("path",{fill:"#1C1C1C",d:"M15.014 17.998c-.74-.29-1.195-.922-1.73-1.451-1.31-1.296-2.605-2.606-3.907-3.91-.18-.18-.359-.364-.55-.533a1.45 1.45 0 0 1-.418-.633c-.161-.483-.458-.867-.829-1.208-.714-.656-1.382-1.359-2.067-2.045-.167-.166-.17-.174-.329.003-.09.1-.14.104-.237.001-.285-.302-.587-.589-.876-.887-.106-.11-.164-.11-.267.018-.658.82-.97 1.758-.991 2.799-.01.497-.005.937.002 1.435.002.125-.071.204-.215.21a27 27 0 0 0-.954.005c-.654-.03-1.138-.343-1.456-.915-.127-.211-.158-.241-.19-.342V9.68l.093-.885c.11-.964.394-1.878.778-2.765.243-.56.551-1.082.876-1.596.03-.048.055-.082.032-.145-.18-.51-.106-.99.253-1.388.344-.381.68-.784 1.131-1.05.342-.202.717-.222 1.092-.099.087.029.139.023.209-.024a9.8 9.8 0 0 1 1.872-1A10 10 0 0 1 8.702.092a10 10 0 0 1 1.434-.098c.657.01 1.123.335 1.458.878.16.262.224.55.22.856-.005.3 0 0 .002.867.006.147-.097.213-.234.212-.57-.003-1.09-.017-1.66.011a4.3 4.3 0 0 0-2.564.978c-.13.107-.116.168-.011.27.287.275.564.561.853.835.118.112.152.2-.002.305-.12.081-.12.15-.006.264q1.177 1.17 2.335 2.357c.253.259.554.428.885.554.299.114.553.286.78.515 1.507 1.518 3.022 3.03 4.533 4.544.314.315.641.617.932.956.374.436.447 1.21.196 1.72-.219.444-.6.734-.925 1.076-.24.254-.473.519-.81.659-.076.032-.166.042-.238.085 0 0-.177.044-.403.062-.18.015-.462 0-.462 0zM3.214 4.324c.005.07-.05.107-.084.153-.141.19-.293.374-.426.57a9 9 0 0 0-1.329 3.027c-.155.663-.22 1.334-.24 2.011-.008.269.128.438.375.553.145.068.174.03.175-.114 0-.485-.002-.967.098-1.449a5.9 5.9 0 0 1 .556-1.543c.364-.692.87-1.273 1.448-1.796.12-.109.196-.1.303.01.284.292.583.571.862.869.097.102.15.081.227-.005.054-.062.104-.132.192-.152.023.034.04.074.07.102 1.046 1.045 2.09 2.093 3.143 3.132.314.309.59.63.731 1.06q.125.38.424.674c1.228 1.217 2.445 2.444 3.668 3.666.546.545 1.091 1.091 1.647 1.626.23.222.519.213.754-.01q.449-.425.88-.867c.272-.28.259-.582-.024-.865-1.593-1.594-3.188-3.184-4.774-4.784-.432-.435-.862-.857-1.472-1.035a.7.7 0 0 1-.307-.18Q8.997 7.857 7.88 6.74c-.468-.467-.94-.928-1.41-1.392a.33.33 0 0 1 .133-.163c.115-.084.112-.152.008-.252-.294-.284-.577-.581-.869-.869-.098-.097-.114-.172-.003-.278.188-.18.359-.378.551-.557a5.75 5.75 0 0 1 3.137-1.514c.364-.054.73-.039 1.096-.035.15.001.174-.037.115-.177-.107-.254-.28-.384-.566-.377-.925.023-1.831.152-2.715.444a9.2 9.2 0 0 0-2.434 1.218c-.198.139-.366.32-.59.42-.109-.11-.212-.224-.326-.327-.12-.107-.261-.104-.373.001q-.383.362-.745.745c-.112.12-.11.26.01.384q.156.158.315.313"})),t||(t=n.createElement("path",{fill:"#EBA300",d:"M6.474 5.344c.47.464.943.926 1.41 1.393q1.117 1.116 2.232 2.237a.7.7 0 0 0 .306.18c.61.177 1.04.6 1.472 1.034 1.586 1.6 3.182 3.191 4.774 4.785.283.283.296.584.023.864a30 30 0 0 1-.879.868c-.234.222-.523.232-.754.01-.555-.535-1.1-1.081-1.647-1.626-1.223-1.222-2.44-2.45-3.668-3.666a1.7 1.7 0 0 1-.423-.674c-.142-.43-.418-.751-.731-1.06-1.053-1.04-2.097-2.087-3.144-3.132-.029-.029-.047-.068-.07-.103.095-.201.289-.312.434-.467.21-.225.423-.45.664-.643"})),a||(a=n.createElement("path",{fill:"#CCC",d:"M6.472 5.347a6.4 6.4 0 0 0-.665.643c-.145.155-.339.266-.434.467-.088.02-.138.091-.192.153-.076.086-.13.107-.226.004-.28-.297-.578-.576-.863-.869-.107-.11-.183-.118-.303-.01-.578.524-1.084 1.104-1.448 1.797q-.385.729-.555 1.543c-.101.482-.099.964-.1 1.449 0 .145-.029.182-.174.114-.246-.115-.383-.284-.375-.553.02-.677.085-1.348.24-2.011a9 9 0 0 1 1.33-3.027c.132-.197.284-.38.425-.57.035-.046.09-.084.085-.153.006 0 .015.003.017 0q.529-.57 1.1-1.099c.003-.003 0-.012 0-.018.225-.1.394-.28.591-.42A9.2 9.2 0 0 1 7.36 1.57c.883-.292 1.789-.421 2.714-.444.287-.007.459.123.566.377.06.14.035.179-.115.177-.366-.003-.733-.018-1.096.035a5.75 5.75 0 0 0-3.137 1.515c-.192.178-.363.376-.551.557-.111.106-.095.18.004.278.29.288.574.584.868.868.104.1.107.169-.007.253a.34.34 0 0 0-.134.162"})),r||(r=n.createElement("path",{fill:"#EBA300",d:"M4.338 3.21q.002.012-.001.018-.571.529-1.1 1.099c-.002.003-.011 0-.017 0q-.159-.155-.316-.313c-.12-.124-.121-.264-.009-.384q.362-.383.745-.745c.112-.105.253-.109.373 0 .114.102.217.216.325.326"})));exports.default=i;
@@ -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"),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
+ "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"),j=require("../common/PickaxeBranding.js"),v=require("../Addons/IceBreaker/index.js"),b=require("../../../common/error.js"),y=require("../../../common/cn.js");exports.default=()=>{var k;const{formId:I,chatId:w,userId:q,studioUserId:S,pickaxe:D,colors:O,misc:N,responsiveBy:C,isNewChat:_,forceMobile:A,setIsNewChat:E,setIsShowIceBreaker:M,onGenerateComplete:R}=r.usePickaxeContext(),{messages:U,status:z,limits:B,setMessages:F,setStatus:P,setLimitData:T,setError:L}=i.useResponseContext(),{documents:W,isUploading:K,isImageUploadAllowed:Q,upsertDocuments:G,onFileUpload:H,onEditDocumentByDocId:V}=c.useDocument(),{isScrollIncreasing:J,scrollToBottom:X,scrollStart:Y,scrollEnd:Z}=m.useScroll(),$=l.useConversation(),ee=d.useSubmit(),se=u.useSubmitResult(),[te,oe]=t.useState(""),re=t.useRef(null),[ie]=o.useMediaQuery("(max-width: 767px)"),ne=n.useStyleInput(),ae=a.useStyleFontSize({type:"body"}),le=t.useMemo((()=>{var e,s,t;return!!_&&(!!D&&(!$.isLoading&&(!((null!==(s=null===(e=$.data)||void 0===e?void 0:e.messages.length)&&void 0!==s?s:0)>1)&&!!(null===(t=D.icebreakers)||void 0===t?void 0:t.length))))}),[D,_,$.data,$.isLoading]);t.useEffect((()=>{M(le)}),[le]);const de=s=>e.__awaiter(void 0,void 0,void 0,(function*(){try{if(K)return;T(null),L(""),E(!1);const e=null!=s?s:te;if(!e||"fetching"===z||"streaming"===z)return;const t=new Date;oe("");const o="enduserupload"===(null==D?void 0:D.documentuploadtype),r=W.filter((e=>"finished"===e.status&&!e.isInsertedAsRaw)),i=r.length?r[r.length-1].documentId:"";P("fetching");const n=[...U,{id:U.length+1,role:"user",content:e}];F(n),Y(),X();const{success:a,data:l,usedDocumentIds:d,newDocumentId:u,newDocumentName:c,isInsertedFile:m,error:p}=yield ee.mutateAsync(Object.assign(Object.assign({formId:I,responseId:w,value:e},o&&i&&{documentId:i}),S&&{studioUserId:S}));if(!a)throw new Error(null!=p?p:"An error occurred, please try again.");m&&i&&V({documentId:i,isInsertedAsRaw:!0}),u&&c&&G([{type:"website",id:c,name:c,status:"finished",documentId:u}]),X();const x=(yield h.streamer({formId:I,responseId:w,data:l})).body;if(!x)throw new Error("Streaming error");const f=x.getReader(),g=new TextDecoder,j=n.length;let v="",b=!0;for(P("streaming");b;){const{value:e,done:s}=yield f.read();b=!s;if(v+=g.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",v),v)F([...n.slice(0,j),{id:U.length+1,role:"assistant",content:v}]),J&&X();else if(!b&&!v)throw new Error("Server error")}const y=new Date;v&&(X(),P("idle"),yield se.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:I,responseId:w,documentIds:d},q&&{userId:q}),S&&{studioUserId:S}),S&&(null==D?void 0:D.studioid)&&{studioId:D.studioid}),{messages:[{role:"user",message:e,sentAt:t},{role:"assistant",message:v,sentAt:y}]})),null==R||R(w))}catch(e){let s=b.default(e)||"";s&&!s.includes("Unexpected token 'A',")||(s="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(B).find((([e])=>s.includes(e)));t?T(t[1]):L(s),X()}finally{P("idle"),Z()}}));return s.jsxs("div",Object.assign({className:y.default("fixed flex w-full flex-col bottom-0 left-0","viewport"===C?"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:[!N.isWhiteLabel&&s.jsx("div",Object.assign({className:"flex justify-end pr-3"},{children:s.jsx(j.default,{animateHover:!0})})),le&&s.jsx(v.default,{data:(null==D?void 0:D.icebreakers)||[],style:{backgroundColor:O.secondary,color:O.secondaryText},isMobile:A||ie,onSend:de}),s.jsxs("div",Object.assign({style:ne,className:"flex min-h-[56px] items-end gap-x-2 px-4 py-3 pb-[15px] shadow"},{children:["enduserupload"===(null==D?void 0:D.documentuploadtype)&&s.jsxs("div",Object.assign({className:"tooltip"},{children:[s.jsx("input",{id:"file-upload",ref:re,type:"file",accept:[...p.allowedFileMimeTypes,...Q?p.allowedImageMimeTypes:[]].join(", "),multiple:!0,hidden:!0,className:"hidden",onChange:s=>e.__awaiter(void 0,void 0,void 0,(function*(){yield H(Array.from(s.target.files||[])),s.target.value=""}))}),s.jsx("button",Object.assign({className:"flex items-center disabled:cursor-wait disabled:opacity-50",disabled:K,onClick:()=>{var e;return null===(e=re.current)||void 0===e?void 0:e.click()}},{children:s.jsx(f.default,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:O.accent}})}))]})),s.jsx(x.default,{className:y.default(ae("max-h-60 w-full resize-none border-transparent bg-transparent outline-none ring-0 scrollbar scrollbar-thin placeholder:font-semilight"),!te.length&&"max-h-6 overflow-hidden text-ellipsis whitespace-nowrap"),value:te,placeholder:null!==(k=null==D?void 0:D.placeholdertext)&&void 0!==k?k:"What do you want to talk about?",onChange:e=>oe(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),de())}}),s.jsx("button",Object.assign({className:"outline-none disabled:cursor-default disabled:opacity-50",disabled:"idle"!==z||K,onClick:()=>de()},{children:s.jsx(g.default,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:O.accent}})}))]}))]}))};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("../../../hooks/pickaxe/usePickaxeContext.js"),s=require("../../../common/utils.js"),r=require("../common/PickaxeButton.js"),a=require("../../../common/cn.js");exports.default=()=>{const{isShowHistory:i,responsiveBy:o,setChatId:x,setIsNewChat:n,setIsShowHistory:c}=t.usePickaxeContext();return e.jsxs("div",Object.assign({className:"mt-6 flex flex-wrap gap-2"},{children:[e.jsx(r.default,Object.assign({className:a.default("w-full","viewport"===o?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>{return e=s.generateId(20),n(!0),void x(e);var e}},{children:"New chat"})),!i&&e.jsx(r.default,Object.assign({variant:"transparent-text",className:a.default("w-full","viewport"===o?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>c(!0)},{children:"See history"}))]}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("../../../hooks/pickaxe/usePickaxeContext.js"),t=require("../../../common/utils.js"),i=require("../common/PickaxeButton.js"),a=require("../common/PickaxeBranding.js"),r=require("../../../common/cn.js");exports.default=()=>{const{misc:x,responsiveBy:o,isShowHistory:c,setChatId:n,setIsNewChat:l,setIsShowHistory:p}=s.usePickaxeContext();return e.jsxs("div",Object.assign({className:r.default("mt-4 flex flex-wrap flex-col justify-between gap-2","viewport"===o?"min-[767px]:flex-row":"@[767px]/pickaxe-root:flex-row")},{children:[e.jsxs("div",Object.assign({className:"flex items-center flex-grow flex-wrap gap-2"},{children:[e.jsx(i.default,Object.assign({className:r.default("w-full","viewport"===o?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>{return e=t.generateId(20),l(!0),void n(e);var e}},{children:"New chat"})),!c&&e.jsx(i.default,Object.assign({variant:"transparent-text",className:r.default("w-full","viewport"===o?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>p(!0)},{children:"See history"}))]})),!x.isWhiteLabel&&e.jsx("div",Object.assign({className:"flex justify-end pr-3"},{children:e.jsx(a.default,{})}))]}))};
@@ -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"),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
+ "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"),i=require("../../../../hooks/pickaxe/useResponseContext.js"),r=require("../../../../hooks/pickaxe/useSubmit.js"),n=require("../../../../hooks/pickaxe/useSubmitResult.js"),l=require("../../Addons/Document/hooks/useDocument.js"),u=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/PickaxeBranding.js"),p=require("../../common/PickaxeButton.js"),f=require("../../../../common/error.js"),x=require("../../../../common/cn.js");exports.default=({questions:g})=>{const{formId:h,userId:j,studioUserId:w,pickaxe:b,misc:q,responsiveBy:v,isShowHistory:k,setIsShowHistory:y,onGenerateComplete:I}=o.usePickaxeContext(),{status:O,limits:S,setResponse:E,setStatus:P,setLimitData:R,setError:C}=i.useResponseContext(),{documents:D,websiteLink:U,isUploading:A,onWebsiteUpload:N,setDocumentError:_}=l.useDocument(),{isScrollIncreasing:L,scrollToContainer:T,scrollToBottom:B,scrollStart:W,scrollEnd:H}=u.useScroll(),M=r.useSubmit(),F=n.useSubmitResult(),[G,K]=t.useState(!1);return s.jsxs("div",Object.assign({className:x.default("mt-4 flex flex-wrap flex-col justify-between gap-2","viewport"===v?"min-[767px]:flex-row":"@[767px]/pickaxe-root:flex-row")},{children:[s.jsxs("div",Object.assign({className:"flex items-center flex-grow flex-wrap gap-2"},{children:[s.jsx(p.default,Object.assign({className:x.default("w-full","viewport"===v?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),isDisabled:A||G||"fetching"===O||"streaming"===O,onClick:()=>e.__awaiter(void 0,void 0,void 0,(function*(){var e;try{if(A||G||"fetching"===O||"streaming"===O)return;R(null),_("");const s="enduserupload"===(null==b?void 0:b.documentuploadtype),t=g.some((e=>"userinput:documentupload"===e.id&&e.isRequired)),o=D.filter((e=>"finished"===e.status)),i=d.extractUrlsFromText(U),r=D.map((e=>e.name)),n=i.filter((e=>!r.includes(e)));if(n.length){const e=n[n.length-1],s=yield N(e);s&&(o.push(s),K(!0),yield new Promise((e=>setTimeout(e,5e3))),K(!1))}else if(t&&s&&!o.length)return void _("Please paste a valid website/video link or drag a file to add to the knowledge base.");C("");const l=["Multiple Choice","Checkbox"];for(const e of g){if(c.encode(e.input).length>e.maxLength&&!l.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 u=o.length?o[o.length-1]:null;let m={};g.forEach((e=>m=Object.assign(Object.assign({},m),{[e.id]:"Knowledge Upload"===e.type||e.id.includes("documentupload")?(null==u?void 0:u.name)||"":e.input}))),P("fetching");const{success:p,responseId:f,data:x,usedDocumentIds:q,rawUserInput:v,error:k}=yield M.mutateAsync(Object.assign(Object.assign({formId:h,valueObj:m},s&&u&&{documentId:null!==(e=u.documentId)&&void 0!==e?e:""}),w&&{studioUserId:w}));if(!p)throw new Error(null!=k?k:"An error occurred, please try again.");W();const y=(yield a.streamer({formId:h,responseId:f,data:x})).body;if(!y)throw new Error("Streaming error");const S=y.getReader(),T=new TextDecoder;let H="",V=!0;E(null);const Y=g.map((e=>({id:e.id,question:e.main,answer:e.input})));for(;V;){const{value:e,done:s}=yield S.read();V=!s;if(H+=T.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",H),H)P("streaming"),E({formId:h,responseId:f,documentIds:q,messages:[],questions:Y,questionPrompt:v,questionResponse:H,createdAt:new Date}),L&&B();else if(!V&&!H)throw new Error("Server error")}H&&(B(),P("idle"),yield F.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:h,responseId:f,documentIds:q},j&&{userId:j}),w&&{studioUserId:w}),w&&(null==b?void 0:b.studioid)&&{studioId:b.studioid}),{questions:Y,questionPrompt:v,questionResponse:H})),null==I||I(f))}catch(e){let s=f.default(e)||"";s&&!s.includes("Unexpected token 'A',")||(s="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(S).find((([e])=>s.includes(e)));t?R(t[1]):C(s),K(!1),T()}finally{P("idle"),H()}}))},{children:G?"Processing...":A?"Uploading...":"fetching"===O||"streaming"===O?"Loading...":"Submit"})),!k&&s.jsx(p.default,Object.assign({variant:"transparent-text",className:x.default("w-full","viewport"===v?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>y(!0)},{children:"See history"}))]})),!q.isWhiteLabel&&s.jsx("div",Object.assign({className:"flex justify-end pr-3"},{children:s.jsx(m.default,{})}))]}))};
@@ -1 +1 @@
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:d,colors:c,responsiveBy:l="viewport",limits:u={},loadFont:F=!0,forceMobile:x=!1,onGenerateComplete:h})=>{const[I,S]=t.useState(""),[f,j]=t.useState(""),[m,p]=t.useState(null),[y,v]=t.useState(!1),[b,P]=t.useState(!0),[k,w]=t.useState(!0),[C,g]=t.useState(!1);return t.useEffect((()=>{v(!1)}),[null==d?void 0:d.font]),e.jsx(o.Provider,Object.assign({value:Object.assign({formId:I,chatId:f,userId:a,studioUserId:n,pickaxe:m,styles:Object.assign({theme:"light",font:"Real Head Pro",fontSize:"md",formFieldStyle:"box",btnStyle:"filled",outlineThickness:1,cornerRadius:4},d),colors:Object.assign({primary:"#F6F8FA",text:"#000000",secondary:"#FFFFFF",secondaryText:"#000000",accent:"#228DD7",accentText:"#FFFFFF",error:"#EF4444"},c),responsiveBy:l,isFontLoaded:y,isNewChat:b,isShowIceBreaker:k,isShowHistory:C,loadFont:F,forceMobile:x,setIsFontLoaded:v,setFormId:S,setChatId:j,setPickaxe:p,setIsNewChat:P,setIsShowIceBreaker:w,setIsShowHistory:g},h&&{onGenerateComplete:h})},{children:e.jsx(r.default,Object.assign({limits:u},{children:e.jsx(s.default,{children:i})}))}))};
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,limits:l={},misc:u,responsiveBy:F="viewport",loadFont:h=!0,forceMobile:x=!1,onGenerateComplete:m})=>{const[I,S]=t.useState(""),[f,p]=t.useState(""),[j,y]=t.useState(null),[b,v]=t.useState(null!=u?u:{isWhiteLabel:!0,isProfileImage:!0,isChatImage:!0,isDescription:!0}),[P,g]=t.useState(!1),[C,k]=t.useState(!0),[w,O]=t.useState(!0),[q,B]=t.useState(!1);return t.useEffect((()=>{g(!1)}),[null==c?void 0:c.font]),e.jsx(o.Provider,Object.assign({value:Object.assign({formId:I,chatId:f,userId:a,studioUserId:n,pickaxe:j,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),misc:b,responsiveBy:F,isFontLoaded:P,isNewChat:C,isShowIceBreaker:w,isShowHistory:q,loadFont:h,forceMobile:x,setIsFontLoaded:g,setFormId:S,setChatId:p,setPickaxe:y,setMisc:v,setIsNewChat:k,setIsShowIceBreaker:O,setIsShowHistory:B},m&&{onGenerateComplete:m})},{children:e.jsx(r.default,Object.assign({limits:l},{children:e.jsx(s.default,{children:i})}))}))};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("../../../hooks/pickaxe/usePickaxeContext.js"),a=require("framer-motion"),r=require("../../Icons/pickaxe.svg.js"),i=require("../../../common/cn.js");exports.default=({className:t,animateHover:c=!0})=>{const{misc:n}=s.usePickaxeContext();return n.isWhiteLabel?null:e.jsxs(a.motion.a,Object.assign({href:`https://${process.env.NEXT_PUBLIC_PICKAXE_DOMAIN}`,className:i.default("flex items-center gap-2 select-none overflow-hidden px-2 py-1 rounded",t)},c&&{initial:{scale:1},whileHover:{scale:1.05},whileTap:{scale:.95}},{children:[e.jsx(r.default,{className:"h-3.5 w-3.5 shrink-0"}),e.jsx("span",Object.assign({className:"text-xs opacity-50"},{children:"Powered by Pickaxe"}))]}))};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../pickaxe/usePickaxeContext.js");exports.useStyleButton=({variant:t="primary"})=>{const{styles:o,colors:n}=r.usePickaxeContext();return e.useMemo((()=>Object.assign(Object.assign(Object.assign({},"primary"===t&&Object.assign(Object.assign(Object.assign({borderWidth:`${o.outlineThickness}px`},"filled"===o.btnStyle&&{borderColor:n.accent,backgroundColor:n.accent,color:n.accentText}),"outlined"===o.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:n.accent}),"transparent"===o.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:"transparent"})),"secondary"===t&&{backgroundColor:"transparent",color:n.accent}),"transparent-text"===t&&{color:n.accent})),[o,n,t])};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("../pickaxe/usePickaxeContext.js");exports.useStyleButton=({variant:t="primary"})=>{const{styles:o,colors:n}=r.usePickaxeContext();return e.useMemo((()=>Object.assign(Object.assign(Object.assign({borderRadius:`${o.cornerRadius}px`},"primary"===t&&Object.assign(Object.assign(Object.assign({borderWidth:`${o.outlineThickness}px`},"filled"===o.btnStyle&&{borderColor:n.accent,backgroundColor:n.accent,color:n.accentText}),"outlined"===o.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:n.accent}),"transparent"===o.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:"transparent"})),"secondary"===t&&{backgroundColor:"transparent",color:n.accent}),"transparent-text"===t&&{color:n.accent})),[o,n,t])};
@@ -22,6 +22,12 @@ export type PickaxeProviderColors = {
22
22
  error: string;
23
23
  };
24
24
  export type PickaxeResponsiveBy = "viewport" | "container";
25
+ export type PickaxeMisc = {
26
+ isWhiteLabel: boolean;
27
+ isProfileImage: boolean;
28
+ isChatImage: boolean;
29
+ isDescription: boolean;
30
+ };
25
31
  type PickaxeContextType = {
26
32
  formId: string;
27
33
  chatId: string;
@@ -30,6 +36,7 @@ type PickaxeContextType = {
30
36
  pickaxe: Pickaxe | null;
31
37
  styles: PickaxeProviderStyles;
32
38
  colors: PickaxeProviderColors;
39
+ misc: PickaxeMisc;
33
40
  responsiveBy: PickaxeResponsiveBy;
34
41
  isFontLoaded: boolean;
35
42
  isNewChat: boolean;
@@ -40,6 +47,7 @@ type PickaxeContextType = {
40
47
  setFormId: SetState<string>;
41
48
  setChatId: SetState<string>;
42
49
  setPickaxe: SetState<Pickaxe | null>;
50
+ setMisc: SetState<PickaxeMisc>;
43
51
  setIsFontLoaded: SetState<boolean>;
44
52
  setIsNewChat: SetState<boolean>;
45
53
  setIsShowIceBreaker: SetState<boolean>;
@@ -52,12 +60,13 @@ export interface IPickaxeProviderProps {
52
60
  studioUserId?: string;
53
61
  styles?: Partial<PickaxeProviderStyles>;
54
62
  colors?: Partial<PickaxeProviderColors>;
55
- responsiveBy?: PickaxeResponsiveBy;
56
63
  limits?: Record<string, PickaxeLimitData>;
64
+ misc?: PickaxeMisc;
65
+ responsiveBy?: PickaxeResponsiveBy;
57
66
  loadFont?: boolean;
58
67
  forceMobile?: boolean;
59
68
  onGenerateComplete?: (responseId: string) => void;
60
69
  }
61
70
  export declare const PickaxeContext: import("react").Context<PickaxeContextType>;
62
- export declare const PickaxeProvider: ({ children, userId, studioUserId, styles, colors, responsiveBy, limits, loadFont, forceMobile, onGenerateComplete, }: IPickaxeProviderProps) => import("react/jsx-runtime").JSX.Element;
71
+ export declare const PickaxeProvider: ({ children, userId, studioUserId, styles, colors, limits, misc: _misc, responsiveBy, loadFont, forceMobile, onGenerateComplete, }: IPickaxeProviderProps) => import("react/jsx-runtime").JSX.Element;
63
72
  export {};
@@ -0,0 +1,6 @@
1
+ interface PickaxeBrandingProps {
2
+ className?: string;
3
+ animateHover?: boolean;
4
+ }
5
+ declare const PickaxeBranding: ({ className, animateHover, }: PickaxeBrandingProps) => import("react/jsx-runtime").JSX.Element | null;
6
+ export default PickaxeBranding;
@@ -6,6 +6,7 @@ export declare const usePickaxeContext: () => {
6
6
  pickaxe: import("../../types/pickaxe").Pickaxe | null;
7
7
  styles: import("../../components/Pickaxe/Provider").PickaxeProviderStyles;
8
8
  colors: import("../../components/Pickaxe/Provider").PickaxeProviderColors;
9
+ misc: import("../../components/Pickaxe/Provider").PickaxeMisc;
9
10
  responsiveBy: import("../../components/Pickaxe/Provider").PickaxeResponsiveBy;
10
11
  isFontLoaded: boolean;
11
12
  isNewChat: boolean;
@@ -16,6 +17,7 @@ export declare const usePickaxeContext: () => {
16
17
  setFormId: import("../../types/common").SetState<string>;
17
18
  setChatId: import("../../types/common").SetState<string>;
18
19
  setPickaxe: import("../../types/common").SetState<import("../../types/pickaxe").Pickaxe | null>;
20
+ setMisc: import("../../types/common").SetState<import("../../components/Pickaxe/Provider").PickaxeMisc>;
19
21
  setIsFontLoaded: import("../../types/common").SetState<boolean>;
20
22
  setIsNewChat: import("../../types/common").SetState<boolean>;
21
23
  setIsShowIceBreaker: import("../../types/common").SetState<boolean>;
@@ -0,0 +1 @@
1
+ import*as a from"react";var c,e,t,l;function r(){return r=Object.assign?Object.assign.bind():function(a){for(var c=1;c<arguments.length;c++){var e=arguments[c];for(var t in e)({}).hasOwnProperty.call(e,t)&&(a[t]=e[t])}return a},r.apply(null,arguments)}var n=n=>a.createElement("svg",r({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 18 18"},n),c||(c=a.createElement("path",{fill:"#1C1C1C",d:"M15.014 17.998c-.74-.29-1.195-.922-1.73-1.451-1.31-1.296-2.605-2.606-3.907-3.91-.18-.18-.359-.364-.55-.533a1.45 1.45 0 0 1-.418-.633c-.161-.483-.458-.867-.829-1.208-.714-.656-1.382-1.359-2.067-2.045-.167-.166-.17-.174-.329.003-.09.1-.14.104-.237.001-.285-.302-.587-.589-.876-.887-.106-.11-.164-.11-.267.018-.658.82-.97 1.758-.991 2.799-.01.497-.005.937.002 1.435.002.125-.071.204-.215.21a27 27 0 0 0-.954.005c-.654-.03-1.138-.343-1.456-.915-.127-.211-.158-.241-.19-.342V9.68l.093-.885c.11-.964.394-1.878.778-2.765.243-.56.551-1.082.876-1.596.03-.048.055-.082.032-.145-.18-.51-.106-.99.253-1.388.344-.381.68-.784 1.131-1.05.342-.202.717-.222 1.092-.099.087.029.139.023.209-.024a9.8 9.8 0 0 1 1.872-1A10 10 0 0 1 8.702.092a10 10 0 0 1 1.434-.098c.657.01 1.123.335 1.458.878.16.262.224.55.22.856-.005.3 0 0 .002.867.006.147-.097.213-.234.212-.57-.003-1.09-.017-1.66.011a4.3 4.3 0 0 0-2.564.978c-.13.107-.116.168-.011.27.287.275.564.561.853.835.118.112.152.2-.002.305-.12.081-.12.15-.006.264q1.177 1.17 2.335 2.357c.253.259.554.428.885.554.299.114.553.286.78.515 1.507 1.518 3.022 3.03 4.533 4.544.314.315.641.617.932.956.374.436.447 1.21.196 1.72-.219.444-.6.734-.925 1.076-.24.254-.473.519-.81.659-.076.032-.166.042-.238.085 0 0-.177.044-.403.062-.18.015-.462 0-.462 0zM3.214 4.324c.005.07-.05.107-.084.153-.141.19-.293.374-.426.57a9 9 0 0 0-1.329 3.027c-.155.663-.22 1.334-.24 2.011-.008.269.128.438.375.553.145.068.174.03.175-.114 0-.485-.002-.967.098-1.449a5.9 5.9 0 0 1 .556-1.543c.364-.692.87-1.273 1.448-1.796.12-.109.196-.1.303.01.284.292.583.571.862.869.097.102.15.081.227-.005.054-.062.104-.132.192-.152.023.034.04.074.07.102 1.046 1.045 2.09 2.093 3.143 3.132.314.309.59.63.731 1.06q.125.38.424.674c1.228 1.217 2.445 2.444 3.668 3.666.546.545 1.091 1.091 1.647 1.626.23.222.519.213.754-.01q.449-.425.88-.867c.272-.28.259-.582-.024-.865-1.593-1.594-3.188-3.184-4.774-4.784-.432-.435-.862-.857-1.472-1.035a.7.7 0 0 1-.307-.18Q8.997 7.857 7.88 6.74c-.468-.467-.94-.928-1.41-1.392a.33.33 0 0 1 .133-.163c.115-.084.112-.152.008-.252-.294-.284-.577-.581-.869-.869-.098-.097-.114-.172-.003-.278.188-.18.359-.378.551-.557a5.75 5.75 0 0 1 3.137-1.514c.364-.054.73-.039 1.096-.035.15.001.174-.037.115-.177-.107-.254-.28-.384-.566-.377-.925.023-1.831.152-2.715.444a9.2 9.2 0 0 0-2.434 1.218c-.198.139-.366.32-.59.42-.109-.11-.212-.224-.326-.327-.12-.107-.261-.104-.373.001q-.383.362-.745.745c-.112.12-.11.26.01.384q.156.158.315.313"})),e||(e=a.createElement("path",{fill:"#EBA300",d:"M6.474 5.344c.47.464.943.926 1.41 1.393q1.117 1.116 2.232 2.237a.7.7 0 0 0 .306.18c.61.177 1.04.6 1.472 1.034 1.586 1.6 3.182 3.191 4.774 4.785.283.283.296.584.023.864a30 30 0 0 1-.879.868c-.234.222-.523.232-.754.01-.555-.535-1.1-1.081-1.647-1.626-1.223-1.222-2.44-2.45-3.668-3.666a1.7 1.7 0 0 1-.423-.674c-.142-.43-.418-.751-.731-1.06-1.053-1.04-2.097-2.087-3.144-3.132-.029-.029-.047-.068-.07-.103.095-.201.289-.312.434-.467.21-.225.423-.45.664-.643"})),t||(t=a.createElement("path",{fill:"#CCC",d:"M6.472 5.347a6.4 6.4 0 0 0-.665.643c-.145.155-.339.266-.434.467-.088.02-.138.091-.192.153-.076.086-.13.107-.226.004-.28-.297-.578-.576-.863-.869-.107-.11-.183-.118-.303-.01-.578.524-1.084 1.104-1.448 1.797q-.385.729-.555 1.543c-.101.482-.099.964-.1 1.449 0 .145-.029.182-.174.114-.246-.115-.383-.284-.375-.553.02-.677.085-1.348.24-2.011a9 9 0 0 1 1.33-3.027c.132-.197.284-.38.425-.57.035-.046.09-.084.085-.153.006 0 .015.003.017 0q.529-.57 1.1-1.099c.003-.003 0-.012 0-.018.225-.1.394-.28.591-.42A9.2 9.2 0 0 1 7.36 1.57c.883-.292 1.789-.421 2.714-.444.287-.007.459.123.566.377.06.14.035.179-.115.177-.366-.003-.733-.018-1.096.035a5.75 5.75 0 0 0-3.137 1.515c-.192.178-.363.376-.551.557-.111.106-.095.18.004.278.29.288.574.584.868.868.104.1.107.169-.007.253a.34.34 0 0 0-.134.162"})),l||(l=a.createElement("path",{fill:"#EBA300",d:"M4.338 3.21q.002.012-.001.018-.571.529-1.1 1.099c-.002.003-.011 0-.017 0q-.159-.155-.316-.313c-.12-.124-.121-.264-.009-.384q.362-.383.745-.745c.112-.105.253-.109.373 0 .114.102.217.216.325.326"})));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,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
+ 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 i,useEffect as n}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 j from"../../Icons/attach.svg.js";import k from"../../Icons/send.svg.js";import I from"../common/PickaxeBranding.js";import w from"../Addons/IceBreaker/index.js";import D from"../../../common/error.js";import N from"../../../common/cn.js";const O=()=>{var O;const{formId:S,chatId:A,userId:C,studioUserId:E,pickaxe:_,colors:U,misc:B,responsiveBy:R,isNewChat:z,forceMobile:L,setIsNewChat:M,setIsShowIceBreaker:F,onGenerateComplete:P}=l(),{messages:T,status:W,limits:K,setMessages:G,setStatus:H,setLimitData:Q,setError:V}=d(),{documents:q,isUploading:J,isImageUploadAllowed:X,upsertDocuments:Y,onFileUpload:Z,onEditDocumentByDocId:$}=h(),{isScrollIncreasing:ee,scrollToBottom:oe,scrollStart:te,scrollEnd:se}=g(),re=u(),ie=p(),ne=f(),[ae,le]=s(""),de=r(null),[ce]=a("(max-width: 767px)"),me=c(),ue=m({type:"body"}),pe=i((()=>{var e,o,t;return!!z&&(!!_&&(!re.isLoading&&(!((null!==(o=null===(e=re.data)||void 0===e?void 0:e.messages.length)&&void 0!==o?o:0)>1)&&!!(null===(t=_.icebreakers)||void 0===t?void 0:t.length))))}),[_,z,re.data,re.isLoading]);n((()=>{F(pe)}),[pe]);const fe=o=>e(void 0,void 0,void 0,(function*(){try{if(J)return;Q(null),V(""),M(!1);const e=null!=o?o:ae;if(!e||"fetching"===W||"streaming"===W)return;const t=new Date;le("");const s="enduserupload"===(null==_?void 0:_.documentuploadtype),r=q.filter((e=>"finished"===e.status&&!e.isInsertedAsRaw)),i=r.length?r[r.length-1].documentId:"";H("fetching");const n=[...T,{id:T.length+1,role:"user",content:e}];G(n),te(),oe();const{success:a,data:l,usedDocumentIds:d,newDocumentId:c,newDocumentName:m,isInsertedFile:u,error:p}=yield ie.mutateAsync(Object.assign(Object.assign({formId:S,responseId:A,value:e},s&&i&&{documentId:i}),E&&{studioUserId:E}));if(!a)throw new Error(null!=p?p:"An error occurred, please try again.");u&&i&&$({documentId:i,isInsertedAsRaw:!0}),c&&m&&Y([{type:"website",id:m,name:m,status:"finished",documentId:c}]),oe();const f=(yield b({formId:S,responseId:A,data:l})).body;if(!f)throw new Error("Streaming error");const h=f.getReader(),g=new TextDecoder,v=n.length;let x="",y=!0;for(H("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)G([...n.slice(0,v),{id:T.length+1,role:"assistant",content:x}]),ee&&oe();else if(!y&&!x)throw new Error("Server error")}const j=new Date;x&&(oe(),H("idle"),yield ne.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:S,responseId:A,documentIds:d},C&&{userId:C}),E&&{studioUserId:E}),E&&(null==_?void 0:_.studioid)&&{studioId:_.studioid}),{messages:[{role:"user",message:e,sentAt:t},{role:"assistant",message:x,sentAt:j}]})),null==P||P(A))}catch(e){let o=D(e)||"";o&&!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?Q(t[1]):V(o),oe()}finally{H("idle"),se()}}));return o("div",Object.assign({className:N("fixed flex w-full flex-col bottom-0 left-0","viewport"===R?"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:[!B.isWhiteLabel&&t("div",Object.assign({className:"flex justify-end pr-3"},{children:t(I,{animateHover:!0})})),pe&&t(w,{data:(null==_?void 0:_.icebreakers)||[],style:{backgroundColor:U.secondary,color:U.secondaryText},isMobile:L||ce,onSend:fe}),o("div",Object.assign({style:me,className:"flex min-h-[56px] items-end gap-x-2 px-4 py-3 pb-[15px] shadow"},{children:["enduserupload"===(null==_?void 0:_.documentuploadtype)&&o("div",Object.assign({className:"tooltip"},{children:[t("input",{id:"file-upload",ref:de,type:"file",accept:[...v,...X?x:[]].join(", "),multiple:!0,hidden:!0,className:"hidden",onChange:o=>e(void 0,void 0,void 0,(function*(){yield Z(Array.from(o.target.files||[])),o.target.value=""}))}),t("button",Object.assign({className:"flex items-center disabled:cursor-wait disabled:opacity-50",disabled:J,onClick:()=>{var e;return null===(e=de.current)||void 0===e?void 0:e.click()}},{children:t(j,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:U.accent}})}))]})),t(y,{className:N(ue("max-h-60 w-full resize-none border-transparent bg-transparent outline-none ring-0 scrollbar scrollbar-thin placeholder:font-semilight"),!ae.length&&"max-h-6 overflow-hidden text-ellipsis whitespace-nowrap"),value:ae,placeholder:null!==(O=null==_?void 0:_.placeholdertext)&&void 0!==O?O:"What do you want to talk about?",onChange:e=>le(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),fe())}}),t("button",Object.assign({className:"outline-none disabled:cursor-default disabled:opacity-50",disabled:"idle"!==W||J,onClick:()=>fe()},{children:t(k,{className:"h-6 w-6 shrink-0 stroke-2",style:{color:U.accent}})}))]}))]}))};export{O as default};
@@ -1 +1 @@
1
- import{jsxs as t,jsx as o}from"react/jsx-runtime";import{usePickaxeContext as e}from"../../../hooks/pickaxe/usePickaxeContext.js";import{generateId as s}from"../../../common/utils.js";import r from"../common/PickaxeButton.js";import i from"../../../common/cn.js";const a=()=>{const{isShowHistory:a,responsiveBy:m,setChatId:n,setIsNewChat:c,setIsShowHistory:p}=e();return t("div",Object.assign({className:"mt-6 flex flex-wrap gap-2"},{children:[o(r,Object.assign({className:i("w-full","viewport"===m?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>{return t=s(20),c(!0),void n(t);var t}},{children:"New chat"})),!a&&o(r,Object.assign({variant:"transparent-text",className:i("w-full","viewport"===m?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>p(!0)},{children:"See history"}))]}))};export{a as default};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{usePickaxeContext as i}from"../../../hooks/pickaxe/usePickaxeContext.js";import{generateId as o}from"../../../common/utils.js";import s from"../common/PickaxeButton.js";import r from"../common/PickaxeBranding.js";import a from"../../../common/cn.js";const c=()=>{const{misc:c,responsiveBy:m,isShowHistory:n,setChatId:x,setIsNewChat:p,setIsShowHistory:l}=i();return e("div",Object.assign({className:a("mt-4 flex flex-wrap flex-col justify-between gap-2","viewport"===m?"min-[767px]:flex-row":"@[767px]/pickaxe-root:flex-row")},{children:[e("div",Object.assign({className:"flex items-center flex-grow flex-wrap gap-2"},{children:[t(s,Object.assign({className:a("w-full","viewport"===m?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>{return e=o(20),p(!0),void x(e);var e}},{children:"New chat"})),!n&&t(s,Object.assign({variant:"transparent-text",className:a("w-full","viewport"===m?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>l(!0)},{children:"See history"}))]})),!c.isWhiteLabel&&t("div",Object.assign({className:"flex justify-end pr-3"},{children:t(r,{})}))]}))};export{c 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 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
+ 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 l}from"../../../../hooks/pickaxe/useSubmitResult.js";import{useDocument as a}from"../../Addons/Document/hooks/useDocument.js";import{useScroll as d}from"../../Addons/Scroll/hooks/useScroll.js";import{streamer as c}from"../../../../common/api/streamer.js";import{extractUrlsFromText as m}from"../../../../common/utils.js";import{encode as u}from"@nem035/gpt-3-encoder";import p from"../../common/PickaxeBranding.js";import f from"../../common/PickaxeButton.js";import g from"../../../../common/error.js";import x from"../../../../common/cn.js";const h=({questions:h})=>{const{formId:w,userId:j,studioUserId:b,pickaxe:v,misc:k,responsiveBy:y,isShowHistory:I,setIsShowHistory:O,onGenerateComplete:S}=i(),{status:q,limits:E,setResponse:D,setStatus:P,setLimitData:R,setError:U}=r(),{documents:C,websiteLink:A,isUploading:N,onWebsiteUpload:L,setDocumentError:B}=a(),{isScrollIncreasing:T,scrollToContainer:W,scrollToBottom:_,scrollStart:H,scrollEnd:G}=d(),K=n(),M=l(),[V,Y]=s(!1);return o("div",Object.assign({className:x("mt-4 flex flex-wrap flex-col justify-between gap-2","viewport"===y?"min-[767px]:flex-row":"@[767px]/pickaxe-root:flex-row")},{children:[o("div",Object.assign({className:"flex items-center flex-grow flex-wrap gap-2"},{children:[t(f,Object.assign({className:x("w-full","viewport"===y?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),isDisabled:N||V||"fetching"===q||"streaming"===q,onClick:()=>e(void 0,void 0,void 0,(function*(){var e;try{if(N||V||"fetching"===q||"streaming"===q)return;R(null),B("");const o="enduserupload"===(null==v?void 0:v.documentuploadtype),t=h.some((e=>"userinput:documentupload"===e.id&&e.isRequired)),s=C.filter((e=>"finished"===e.status)),i=m(A),r=C.map((e=>e.name)),n=i.filter((e=>!r.includes(e)));if(n.length){const e=n[n.length-1],o=yield L(e);o&&(s.push(o),Y(!0),yield new Promise((e=>setTimeout(e,5e3))),Y(!1))}else if(t&&o&&!s.length)return void B("Please paste a valid website/video link or drag a file to add to the knowledge base.");U("");const l=["Multiple Choice","Checkbox"];for(const e of h){if(u(e.input).length>e.maxLength&&!l.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 a=s.length?s[s.length-1]:null;let d={};h.forEach((e=>d=Object.assign(Object.assign({},d),{[e.id]:"Knowledge Upload"===e.type||e.id.includes("documentupload")?(null==a?void 0:a.name)||"":e.input}))),P("fetching");const{success:p,responseId:f,data:g,usedDocumentIds:x,rawUserInput:k,error:y}=yield K.mutateAsync(Object.assign(Object.assign({formId:w,valueObj:d},o&&a&&{documentId:null!==(e=a.documentId)&&void 0!==e?e:""}),b&&{studioUserId:b}));if(!p)throw new Error(null!=y?y:"An error occurred, please try again.");H();const I=(yield c({formId:w,responseId:f,data:g})).body;if(!I)throw new Error("Streaming error");const O=I.getReader(),E=new TextDecoder;let W="",G=!0;D(null);const z=h.map((e=>({id:e.id,question:e.main,answer:e.input})));for(;G;){const{value:e,done:o}=yield O.read();G=!o;if(W+=E.decode(e),"development"===process.env.NODE_ENV&&console.log("[streamingResult]",W),W)P("streaming"),D({formId:w,responseId:f,documentIds:x,messages:[],questions:z,questionPrompt:k,questionResponse:W,createdAt:new Date}),T&&_();else if(!G&&!W)throw new Error("Server error")}W&&(_(),P("idle"),yield M.mutateAsync(Object.assign(Object.assign(Object.assign(Object.assign({formId:w,responseId:f,documentIds:x},j&&{userId:j}),b&&{studioUserId:b}),b&&(null==v?void 0:v.studioid)&&{studioId:v.studioid}),{questions:z,questionPrompt:k,questionResponse:W})),null==S||S(f))}catch(e){let o=g(e)||"";o&&!o.includes("Unexpected token 'A',")||(o="Oops! We're experiencing high traffic at the moment. Please try again later.");const t=Object.entries(E).find((([e])=>o.includes(e)));t?R(t[1]):U(o),Y(!1),W()}finally{P("idle"),G()}}))},{children:V?"Processing...":N?"Uploading...":"fetching"===q||"streaming"===q?"Loading...":"Submit"})),!I&&t(f,Object.assign({variant:"transparent-text",className:x("w-full","viewport"===y?"min-[767px]:max-w-[176px]":"@[767px]/pickaxe-root:max-w-[176px]"),onClick:()=>O(!0)},{children:"See history"}))]})),!k.isWhiteLabel&&t("div",Object.assign({className:"flex justify-end pr-3"},{children:t(p,{})}))]}))};export{h as default};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as o,useState as t,useEffect as s}from"react";import r from"./Addons/Document/Provider.js";import i from"./ResponseProvider.js";const n=o({}),d=({children:o,userId:d="",studioUserId:c="",styles:a,colors:l,responsiveBy:F="viewport",limits:m={},loadFont:h=!0,forceMobile:I=!1,onGenerateComplete:p})=>{const[f,u]=t(""),[y,b]=t(""),[j,v]=t(null),[x,w]=t(!1),[S,g]=t(!0),[k,C]=t(!0),[O,P]=t(!1);return s((()=>{w(!1)}),[null==a?void 0:a.font]),e(n.Provider,Object.assign({value:Object.assign({formId:f,chatId:y,userId:d,studioUserId:c,pickaxe:j,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"},l),responsiveBy:F,isFontLoaded:x,isNewChat:S,isShowIceBreaker:k,isShowHistory:O,loadFont:h,forceMobile:I,setIsFontLoaded:w,setFormId:u,setChatId:b,setPickaxe:v,setIsNewChat:g,setIsShowIceBreaker:C,setIsShowHistory:P},p&&{onGenerateComplete:p})},{children:e(i,Object.assign({limits:m},{children:e(r,{children:o})}))}))};export{n as PickaxeContext,d as PickaxeProvider};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as s,useState as o,useEffect as t}from"react";import r from"./Addons/Document/Provider.js";import i from"./ResponseProvider.js";const n=s({}),c=({children:s,userId:c="",studioUserId:a="",styles:d,colors:l,limits:m={},misc:F,responsiveBy:h="viewport",loadFont:I=!0,forceMobile:p=!1,onGenerateComplete:f})=>{const[u,y]=o(""),[b,g]=o(""),[j,v]=o(null),[x,w]=o(null!=F?F:{isWhiteLabel:!0,isProfileImage:!0,isChatImage:!0,isDescription:!0}),[S,C]=o(!1),[P,k]=o(!0),[O,B]=o(!0),[D,H]=o(!1);return t((()=>{C(!1)}),[null==d?void 0:d.font]),e(n.Provider,Object.assign({value:Object.assign({formId:u,chatId:b,userId:c,studioUserId:a,pickaxe:j,styles:Object.assign({theme:"light",font:"Real Head Pro",fontSize:"md",formFieldStyle:"box",btnStyle:"filled",outlineThickness:1,cornerRadius:4},d),colors:Object.assign({primary:"#F6F8FA",text:"#000000",secondary:"#FFFFFF",secondaryText:"#000000",accent:"#228DD7",accentText:"#FFFFFF",error:"#EF4444"},l),misc:x,responsiveBy:h,isFontLoaded:S,isNewChat:P,isShowIceBreaker:O,isShowHistory:D,loadFont:I,forceMobile:p,setIsFontLoaded:C,setFormId:y,setChatId:g,setPickaxe:v,setMisc:w,setIsNewChat:k,setIsShowIceBreaker:B,setIsShowHistory:H},f&&{onGenerateComplete:f})},{children:e(i,Object.assign({limits:m},{children:e(r,{children:s})}))}))};export{n as PickaxeContext,c as PickaxeProvider};
@@ -0,0 +1 @@
1
+ import{jsxs as e,jsx as s}from"react/jsx-runtime";import{usePickaxeContext as a}from"../../../hooks/pickaxe/usePickaxeContext.js";import{motion as o}from"framer-motion";import i from"../../Icons/pickaxe.svg.js";import r from"../../../common/cn.js";const t=({className:t,animateHover:c=!0})=>{const{misc:n}=a();return n.isWhiteLabel?null:e(o.a,Object.assign({href:`https://${process.env.NEXT_PUBLIC_PICKAXE_DOMAIN}`,className:r("flex items-center gap-2 select-none overflow-hidden px-2 py-1 rounded",t)},c&&{initial:{scale:1},whileHover:{scale:1.05},whileTap:{scale:.95}},{children:[s(i,{className:"h-3.5 w-3.5 shrink-0"}),s("span",Object.assign({className:"text-xs opacity-50"},{children:"Powered by Pickaxe"}))]}))};export{t as default};
@@ -1 +1 @@
1
- import{useMemo as r}from"react";import{usePickaxeContext as t}from"../pickaxe/usePickaxeContext.js";const o=({variant:o="primary"})=>{const{styles:e,colors:n}=t();return r((()=>Object.assign(Object.assign(Object.assign({},"primary"===o&&Object.assign(Object.assign(Object.assign({borderWidth:`${e.outlineThickness}px`},"filled"===e.btnStyle&&{borderColor:n.accent,backgroundColor:n.accent,color:n.accentText}),"outlined"===e.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:n.accent}),"transparent"===e.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:"transparent"})),"secondary"===o&&{backgroundColor:"transparent",color:n.accent}),"transparent-text"===o&&{color:n.accent})),[e,n,o])};export{o as useStyleButton};
1
+ import{useMemo as r}from"react";import{usePickaxeContext as t}from"../pickaxe/usePickaxeContext.js";const o=({variant:o="primary"})=>{const{styles:e,colors:n}=t();return r((()=>Object.assign(Object.assign(Object.assign({borderRadius:`${e.cornerRadius}px`},"primary"===o&&Object.assign(Object.assign(Object.assign({borderWidth:`${e.outlineThickness}px`},"filled"===e.btnStyle&&{borderColor:n.accent,backgroundColor:n.accent,color:n.accentText}),"outlined"===e.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:n.accent}),"transparent"===e.btnStyle&&{color:n.accent,backgroundColor:"transparent",borderColor:"transparent"})),"secondary"===o&&{backgroundColor:"transparent",color:n.accent}),"transparent-text"===o&&{color:n.accent})),[e,n,o])};export{o as useStyleButton};
@@ -22,6 +22,12 @@ export type PickaxeProviderColors = {
22
22
  error: string;
23
23
  };
24
24
  export type PickaxeResponsiveBy = "viewport" | "container";
25
+ export type PickaxeMisc = {
26
+ isWhiteLabel: boolean;
27
+ isProfileImage: boolean;
28
+ isChatImage: boolean;
29
+ isDescription: boolean;
30
+ };
25
31
  type PickaxeContextType = {
26
32
  formId: string;
27
33
  chatId: string;
@@ -30,6 +36,7 @@ type PickaxeContextType = {
30
36
  pickaxe: Pickaxe | null;
31
37
  styles: PickaxeProviderStyles;
32
38
  colors: PickaxeProviderColors;
39
+ misc: PickaxeMisc;
33
40
  responsiveBy: PickaxeResponsiveBy;
34
41
  isFontLoaded: boolean;
35
42
  isNewChat: boolean;
@@ -40,6 +47,7 @@ type PickaxeContextType = {
40
47
  setFormId: SetState<string>;
41
48
  setChatId: SetState<string>;
42
49
  setPickaxe: SetState<Pickaxe | null>;
50
+ setMisc: SetState<PickaxeMisc>;
43
51
  setIsFontLoaded: SetState<boolean>;
44
52
  setIsNewChat: SetState<boolean>;
45
53
  setIsShowIceBreaker: SetState<boolean>;
@@ -52,12 +60,13 @@ export interface IPickaxeProviderProps {
52
60
  studioUserId?: string;
53
61
  styles?: Partial<PickaxeProviderStyles>;
54
62
  colors?: Partial<PickaxeProviderColors>;
55
- responsiveBy?: PickaxeResponsiveBy;
56
63
  limits?: Record<string, PickaxeLimitData>;
64
+ misc?: PickaxeMisc;
65
+ responsiveBy?: PickaxeResponsiveBy;
57
66
  loadFont?: boolean;
58
67
  forceMobile?: boolean;
59
68
  onGenerateComplete?: (responseId: string) => void;
60
69
  }
61
70
  export declare const PickaxeContext: import("react").Context<PickaxeContextType>;
62
- export declare const PickaxeProvider: ({ children, userId, studioUserId, styles, colors, responsiveBy, limits, loadFont, forceMobile, onGenerateComplete, }: IPickaxeProviderProps) => import("react/jsx-runtime").JSX.Element;
71
+ export declare const PickaxeProvider: ({ children, userId, studioUserId, styles, colors, limits, misc: _misc, responsiveBy, loadFont, forceMobile, onGenerateComplete, }: IPickaxeProviderProps) => import("react/jsx-runtime").JSX.Element;
63
72
  export {};
@@ -0,0 +1,6 @@
1
+ interface PickaxeBrandingProps {
2
+ className?: string;
3
+ animateHover?: boolean;
4
+ }
5
+ declare const PickaxeBranding: ({ className, animateHover, }: PickaxeBrandingProps) => import("react/jsx-runtime").JSX.Element | null;
6
+ export default PickaxeBranding;
@@ -6,6 +6,7 @@ export declare const usePickaxeContext: () => {
6
6
  pickaxe: import("../../types/pickaxe").Pickaxe | null;
7
7
  styles: import("../../components/Pickaxe/Provider").PickaxeProviderStyles;
8
8
  colors: import("../../components/Pickaxe/Provider").PickaxeProviderColors;
9
+ misc: import("../../components/Pickaxe/Provider").PickaxeMisc;
9
10
  responsiveBy: import("../../components/Pickaxe/Provider").PickaxeResponsiveBy;
10
11
  isFontLoaded: boolean;
11
12
  isNewChat: boolean;
@@ -16,6 +17,7 @@ export declare const usePickaxeContext: () => {
16
17
  setFormId: import("../../types/common").SetState<string>;
17
18
  setChatId: import("../../types/common").SetState<string>;
18
19
  setPickaxe: import("../../types/common").SetState<import("../../types/pickaxe").Pickaxe | null>;
20
+ setMisc: import("../../types/common").SetState<import("../../components/Pickaxe/Provider").PickaxeMisc>;
19
21
  setIsFontLoaded: import("../../types/common").SetState<boolean>;
20
22
  setIsNewChat: import("../../types/common").SetState<boolean>;
21
23
  setIsShowIceBreaker: import("../../types/common").SetState<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pickaxeproject/react",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "description": "Client utility library for Pickaxe",
5
5
  "repository": {
6
6
  "type": "git",