@pickaxeproject/react 6.0.1-16 → 6.0.1-18
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/components/Pickaxe/Addons/Navbar/NavPill.js +1 -0
- package/dist/cjs/components/Pickaxe/Chat/index.js +1 -1
- package/dist/cjs/components/Pickaxe/Form/index.js +1 -1
- package/dist/cjs/components/Pickaxe/common/PickaxeUpgradeCard.js +1 -1
- package/dist/cjs/src/components/Pickaxe/Addons/Navbar/NavPill.d.ts +15 -0
- package/dist/esm/components/Pickaxe/Addons/Navbar/NavPill.js +1 -0
- package/dist/esm/components/Pickaxe/Chat/index.js +1 -1
- package/dist/esm/components/Pickaxe/Form/index.js +1 -1
- package/dist/esm/components/Pickaxe/common/PickaxeUpgradeCard.js +1 -1
- package/dist/esm/src/components/Pickaxe/Addons/Navbar/NavPill.d.ts +15 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),t=require("../../../../common/cn.js"),a=require("react"),n=require("lucide-react"),i=require("../../../Icons/trash-2.svg.js"),r=require("../../../Icons/pencil.svg.js");exports.EditableNavPill=({text:l,className:o,onRename:c,onDelete:u,isDarkGlass:d})=>{const[m,x]=a.useState(!1),[p,h]=a.useState(!1),[f,j]=a.useState(l),[b,g]=a.useState(!1),v=a.useRef(null),w=a.useRef(null);a.useEffect((()=>{p||j(l)}),[l,p]),a.useEffect((()=>{const e=e=>{w.current&&!w.current.contains(e.target)&&x(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[]);const N=()=>e.__awaiter(void 0,void 0,void 0,(function*(){f.trim()&&(g(!0),yield c(f),g(!1),h(!1))})),k=()=>{j(l),h(!1)};return s.jsxs("div",Object.assign({ref:w,className:"relative z-40 h-full shrink min-w-0",onMouseDown:e=>{e.preventDefault()}},{children:[s.jsx("div",Object.assign({className:t.default("relative flex items-center justify-center px-3 py-2 md:px-4 md:py-3 h-full shrink min-w-0 overflow-visible transition-all duration-200 cursor-pointer group","glass",o),onClick:e=>{e.stopPropagation(),p||m?m&&x(!1):x(!0)}},{children:p?s.jsxs("div",Object.assign({className:"flex items-center gap-2 z-20 min-w-[100px] md:min-w-[140px]",onClick:e=>e.stopPropagation()},{children:[s.jsx("input",{autoFocus:!0,type:"text",value:f,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N(),"Escape"===e.key&&k()},className:"bg-transparent border-b border-current text-xs md:text-sm font-medium focus:outline-none w-full min-w-[60px] md:min-w-[80px]",style:{color:"inherit"}}),s.jsx("button",Object.assign({onClick:N,disabled:b,className:"p-1 rounded hover:bg-black/10 dark:hover:bg-white/10 shrink-0"},{children:s.jsx(n.Check,{className:"h-4 w-4"})})),s.jsx("button",Object.assign({onClick:k,disabled:b,className:"p-1 rounded hover:bg-black/10 dark:hover:bg-white/10 shrink-0"},{children:s.jsx(n.X,{className:"h-4 w-4"})}))]})):s.jsxs("div",Object.assign({className:"flex items-center gap-2 z-20 min-w-0 max-w-[140px] md:max-w-[200px]"},{children:[s.jsx("p",Object.assign({className:"text-xs md:text-sm font-medium truncate"},{children:l})),s.jsx(n.MoreHorizontal,{className:t.default("h-4 w-4 opacity-50 group-hover:opacity-100 transition-opacity shrink-0")})]}))})),m&&s.jsxs("div",Object.assign({className:t.default("absolute top-full right-0 mt-2 w-48 shadow-xl z-50 rounded-[16px] overflow-hidden animate-in fade-in zoom-in-95 duration-100",d?"bg-[#313131] text-white":"bg-white text-black"),ref:v},{children:[s.jsxs("button",Object.assign({onClick:e=>{e.stopPropagation(),x(!1),h(!0)},className:t.default("w-full text-left px-4 py-3 flex items-center gap-3 transition-colors border-b hover:opacity-70",d?"border-current":"border-[#EBEAEB]")},{children:[s.jsx(r.default,{className:"h-4 w-4"}),s.jsx("span",Object.assign({className:"font-medium text-sm"},{children:"Rename chat"}))]})),s.jsxs("button",Object.assign({onClick:e=>{e.stopPropagation(),x(!1),u()},className:"w-full text-left px-4 py-3 flex items-center gap-3 transition-colors hover:opacity-70"},{children:[s.jsx(i.default,{className:"h-4 w-4"}),s.jsx("span",Object.assign({className:"font-medium text-sm"},{children:"Delete chat"}))]}))]}))]}))},exports.NavPill=({text:e,icon:a,className:n,onClick:i})=>s.jsx("div",Object.assign({onClick:e=>{e.stopPropagation(),null==i||i()},className:t.default("relative flex items-center justify-center px-3 py-2 md:px-4 md:py-3 h-full shrink min-w-0 transition-all duration-200 cursor-pointer","glass",n),onMouseDown:e=>{e.preventDefault()}},{children:s.jsxs("div",Object.assign({className:"flex items-center gap-2 z-20 min-w-0"},{children:[a&&s.jsx("img",{src:a,alt:"",className:"h-5 w-5 shrink-0 rounded-full object-cover"}),s.jsx("p",Object.assign({className:"text-xs md:text-sm font-medium truncate max-w-[80px] md:max-w-[150px]"},{children:e}))]}))}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),t=require("react/jsx-runtime"),s=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),t=require("react/jsx-runtime"),s=require("react"),o=require("../../../hooks/pickaxe/usePickaxeContext.js"),i=require("../Addons/Auth/hooks/useAuthContext.js"),r=require("../../../hooks/pickaxe/useDimensionContext.js"),n=require("../Addons/Document/hooks/useDocument.js"),a=require("../../../hooks/studio/useStyleFontSize.js"),l=require("./History/index.js"),u=require("./Input.js"),c=require("../../Icons/attach-vertical.svg.js"),d=require("../../../common/cn.js"),f=require("../../../common/api/pickaxe.js"),m=require("uuid"),h=require("../../../hooks/pickaxe/useResponseContext.js"),p=require("../Addons/Navbar/NavPill.js");exports.default=()=>{const{deploymentType:x,isNewChat:v,setIsNewChat:j,sessionId:g,setSessionId:b,setLastSessionId:k,pickaxeId:w,sender:y,pickaxe:D,styles:_,isEmbed:I}=o.usePickaxeContext(),{isSent:S}=i.useAuthContext(),{width:C,height:N,setDimension:q}=r.useDimensionContext(),{setDocuments:P,onFileUpload:F}=n.useDocument(),{isGenerating:A,messages:E}=h.useResponseContext(),O=a.useStyleFontSize(),[T,R]=s.useState(0),[z,H]=s.useState(!1),[G,L]=s.useState(!1),B=s.useRef(null),M=s.useRef(null),U=s.useRef(0),[J,K]=s.useState(null),[Q,V]=s.useState(!1),W="chat-input"===x&&v&&!S;s.useEffect((()=>()=>{P([])}),[]);const X=s.useCallback((()=>{if(!w||!y)return;const t=(s=0)=>e.__awaiter(void 0,void 0,void 0,(function*(){var e;try{const t=yield f.default.post("/get_pickaxe_conversation",{sessionId:g,userId:y});if(t.data&&t.data.success){const e=t.data.title;if(e&&"Conversation Title"!==e)return void Z(e)}else console.error("Failed to load conversation:",null===(e=t.data)||void 0===e?void 0:e.error)}catch(e){console.error("Error fetching conversation:",e)}s<20&&setTimeout((()=>t(s+1)),3e3)}));t()}),[w,y,g]);s.useEffect((()=>{A||v||!g||X()}),[A,v,g,X]),s.useEffect((()=>{if(!B.current)return;const e=new ResizeObserver((e=>{for(const t of e){const{width:e,height:s}=t.contentRect;q(parseInt(e.toFixed(0)),parseInt(s.toFixed(0)))}}));return e.observe(B.current),()=>{e.disconnect()}}),[B.current]);const[Y,Z]=s.useState("New Chat"),$=(null==D?void 0:D.formtitle)||"Pickaxe",ee=(null==D?void 0:D.coverphoto)||void 0,[te,se]=s.useState(!1);s.useEffect((()=>{const e=!W&&!I&&_.portalTheme&&(E.filter((e=>"user"===e.role)).length>0||z||!v);se(null!=e&&e)}),[E,z,v]);return t.jsxs("div",Object.assign({ref:B,className:"relative flex h-full w-full flex-col items-center overflow-hidden",onDragEnter:e=>{e.preventDefault(),e.stopPropagation(),U.current+=1,e.dataTransfer.items&&e.dataTransfer.items.length>0&&L(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),U.current-=1,0===U.current&&L(!1)},onDragOver:e=>{e.preventDefault(),e.stopPropagation()},onDrop:t=>e.__awaiter(void 0,void 0,void 0,(function*(){t.preventDefault(),t.stopPropagation(),L(!1),U.current=0;const e=Array.from(t.dataTransfer.files||[]);e.length>0&&(j(!1),yield F(e))}))},{children:[G&&t.jsxs("div",Object.assign({className:"absolute inset-0 z-50 flex flex-col items-center justify-center rounded-lg bg-white/80 backdrop-blur-sm transition-all duration-300"},{children:[t.jsx("div",Object.assign({className:"flex h-24 w-24 items-center justify-center rounded-full bg-white shadow-lg animate-bounce text-black"},{children:t.jsx(c.default,{className:"h-10 w-10"})})),t.jsx("h3",Object.assign({className:d.default(O.h3,"mt-6 font-semibold text-c-primary text-black")},{children:"Drop files to upload"})),t.jsx("p",Object.assign({className:d.default(O.b2,"mt-2 opacity-60 text-black")},{children:"Add anything to the conversation"}))]})),W?t.jsx(u.default,{}):t.jsxs(t.Fragment,{children:[te&&t.jsxs("div",Object.assign({className:d.default("direct-link"===x?"absolute top-4 left-4 md:top-6 md:left-6 z-40 flex items-center gap-2 animate-in fade-in slide-in-from-top-4 duration-500":"w-full max-w-3xl mt-6 px-4 md:px-0 flex justify-start z-30 mb-4 animate-in fade-in slide-in-from-top-4 duration-500 gap-2","dark"===_.portalTheme?"glass-dark ":"")},{children:[t.jsx(p.NavPill,{text:$,icon:ee,onClick:()=>{b(""),k(g)}}),v||"New Chat"===Y?t.jsx(p.NavPill,{text:Y}):t.jsx(p.EditableNavPill,{text:Y,sessionId:g,onRename:t=>e.__awaiter(void 0,void 0,void 0,(function*(){if(g)try{yield f.default.post("/edit_conversation_name",{sessionId:g,name:t,userId:y}),Z(t)}catch(e){console.error("Error renaming chat:",e),alert("Failed to rename chat.")}})),onDelete:()=>e.__awaiter(void 0,void 0,void 0,(function*(){if(g&&window.confirm("Are you sure you want to delete this conversation?"))try{yield f.default.post("/delete_pickaxe_conversation",{sessionId:g,userId:y}),j(!0),b(m.v4()),Z("New Chat")}catch(e){console.error("Error deleting chat:",e),alert("Failed to delete chat.")}})),isDarkGlass:"dark"===_.portalTheme})]})),t.jsx(l.default,{additionalScrollHeight:T,isForceHideInfo:N<=545||C<=350||z,isInputFocused:z,onSubmit:t=>e.__awaiter(void 0,void 0,void 0,(function*(){M.current&&M.current.onSubmit(t)})),smitheryAuthData:J,resubmitPrompt:()=>{K(null),V(!0)}}),t.jsx(u.default,{ref:M,onFocus:()=>H(!0),onBlur:()=>H(!1),onInputHeightChange:R,initSmitheryAuthData:e=>K(e),resubmitPrompt:Q})]})]}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("../../../hooks/pickaxe/usePickaxeContext.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),s=require("../../../hooks/pickaxe/usePickaxeContext.js"),t=require("../../../hooks/studio/useStyleFontSize.js"),l=require("../common/PickaxeHead.js"),i=require("../common/PickaxeEmbedHead.js"),a=require("./History/index.js"),o=require("./NewChat.js"),r=require("./Questions/index.js"),n=require("../../../common/cn.js"),d=require("../Addons/Navbar/NavPill.js");exports.default=()=>{const{lastSessionId:x,pickaxe:c,responsiveBy:u,translations:f,isEmbed:m,deploymentType:p,styles:j,setLastSessionId:h,setSessionId:v}=s.usePickaxeContext(),b=(null==c?void 0:c.formtitle)||"Pickaxe",y=(null==c?void 0:c.coverphoto)||void 0,g=t.useStyleFontSize(),k=m&&(null==c?void 0:c.chatflag);return e.jsxs("div",Object.assign({className:n.default("relative flex w-full h-full overflow-y-auto flex-col items-center pb-10","pt-0","viewport"===u?"min-[767px]:pb-10":"@[767px]/pickaxe-root:pb-10")},{children:[!m&&e.jsx("div",Object.assign({className:n.default("direct-link"===p?"absolute top-4 left-4 md:top-6 md:left-6 z-40 flex items-center gap-2 animate-in fade-in slide-in-from-top-4 duration-500":"w-full max-w-3xl mt-6 px-4 md:px-0 flex justify-start z-30 mb-4 animate-in fade-in slide-in-from-top-4 duration-500 gap-2","dark"===j.portalTheme?"glass-dark ":"")},{children:e.jsx(d.NavPill,{text:b,icon:y,onClick:()=>{v(x),h("")}})})),k?e.jsxs(e.Fragment,{children:[e.jsx(i.default,{className:"sticky top-0 z-10 w-full",historyBtnTip:(null==f?void 0:f["exit-chat-history"])||"Exit Chat History",onHistoryClick:()=>v(x)}),e.jsx("div",Object.assign({className:"relative flex min-h-[56px] w-full justify-end rounded-tl-lg rounded-tr-lg border-y p-4"},{children:e.jsx("p",Object.assign({className:n.default(g.b1,"absolute left-1/2 -translate-x-1/2 select-none text-center")},{children:(null==f?void 0:f["chat-history"])||"Chat History"}))}))]}):e.jsx("div",Object.assign({className:"flex w-full max-w-[700px] flex-col"},{children:e.jsx(l.default,{})})),e.jsx("div",Object.assign({className:n.default("flex w-full flex-col items-center min-h-0",k?"px-4":"px-6")},{children:e.jsx("div",Object.assign({className:"flex w-full max-w-[700px] flex-col h-full"},{children:e.jsxs("div",Object.assign({className:n.default("flex flex-col gap-y-8 h-full","viewport"===u?"min-[767px]:mt-4":"@[767px]/pickaxe-root:mt-4")},{children:[(null==c?void 0:c.chatflag)?e.jsx(o.default,{}):e.jsx(r.default,{}),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"),i=require("framer-motion"),r=require("../../../hooks/pickaxe/usePickaxeContext.js"),a=require("../../../hooks/pickaxe/useResponseContext.js"),o=require("../../../hooks/studio/useStyleFontSize.js"),l=require("../../../common/utils.js"),n=require("../../Icons/circle-exclamation.svg.js"),c=require("../../Core/SpringTransition.js"),d=require("../../Core/HtmlRenderer.js"),u=require("./PickaxeButton.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../../_virtual/_tslib.js"),s=require("react/jsx-runtime"),t=require("react"),i=require("framer-motion"),r=require("../../../hooks/pickaxe/usePickaxeContext.js"),a=require("../../../hooks/pickaxe/useResponseContext.js"),o=require("../../../hooks/studio/useStyleFontSize.js"),l=require("../../../common/utils.js"),n=require("../../Icons/circle-exclamation.svg.js"),c=require("../../Core/SpringTransition.js"),d=require("../../Core/HtmlRenderer.js"),u=require("./PickaxeButton.js"),p=require("../../../common/cn.js"),x=require("../../../common/api/pickaxe.js"),m=require("../Addons/Auth/hooks/useAuthContext.js"),f=require("./AccessGroupCardPreview.js"),v=require("../../../hooks/studio/useStudio.js"),j=require("./PickaxeCurrency.js");const g=({price:e,uses:t,isCredits:i,isSelected:r,costPerRun:a,onClick:o,colors:l})=>{const n={backgroundColor:l.secondary,color:l.secondaryText,borderColor:r?l.secondaryText:"rgba(0,0,0,0.1)"},c=i&&a?Math.ceil(t/a):0;return i?s.jsxs("button",Object.assign({onClick:o,className:p.default("flex min-w-[200px] shrink-0 cursor-pointer flex-col rounded-[16px] px-6 py-5 text-left transition-all duration-200",r?"border-2 shadow-sm":"border opacity-80 hover:opacity-100"),style:n},{children:[s.jsxs("div",Object.assign({className:"mb-4 flex items-center gap-2"},{children:[s.jsx("span",Object.assign({className:"text-[24px] font-semibold tracking-tight"},{children:e})),s.jsxs("span",Object.assign({className:"text-[14px] font-light opacity-80"},{children:["/",t," credits"]}))]})),s.jsx("div",{className:"mb-4 h-[1px] w-full",style:{backgroundColor:l.secondaryText,opacity:.15}}),s.jsxs("span",Object.assign({className:"text-[14px] italic opacity-70"},{children:["~ ",void 0!==c&&c>0?c.toLocaleString():"..."," ","runs"]}))]})):s.jsxs("button",Object.assign({onClick:o,className:p.default("flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-[16px] px-5 py-3 transition-all duration-200",r?"border-2 shadow-sm":"border opacity-80 hover:opacity-100"),style:n},{children:[s.jsx("span",Object.assign({className:"text-[24px] font-semibold tracking-tight"},{children:e})),s.jsxs("span",Object.assign({className:"text-[14px] font-light opacity-80"},{children:["/",t," uses"]}))]}))};exports.default=({className:h,iconClassName:b,htmlClassName:y})=>{var k,w,C,N,O,_;const{colors:q,pickaxe:S,sender:I,setValidationStatus:A,setClientSecret:U,setStripeAccountId:P}=r.usePickaxeContext(),{token:R,setRedirectUrl:G}=m.useAuthContext(),{limitData:L}=a.useResponseContext(),{studio:T}=v.useStudio(),$=o.useStyleFontSize(),[B,E]=t.useState(0),[F,M]=t.useState(null),z=!!(null==T?void 0:T.data.usage)&&T.data.usage.isCredits,D=null!==(w=null===(k=j.currencyOptions.find((e=>e.id===(null==T?void 0:T.data.currency))))||void 0===k?void 0:k.symbol)&&void 0!==w?w:j.currencyOptions[0].symbol;t.useEffect((()=>{var e;(null===(e=null==L?void 0:L.buyUses)||void 0===e?void 0:e.length)&&E(0)}),[L]);const H=null==L?void 0:L.customLink,V=null==L?void 0:L.limitCTA,J=Array.isArray(null==L?void 0:L.upgradeGroups)&&(null==L?void 0:L.upgradeGroups)&&(null==L?void 0:L.upgradeGroups.length)>0,K=(z?null===(C=null==T?void 0:T.data.usage)||void 0===C?void 0:C.availableCredits:null===(N=null==T?void 0:T.data.usage)||void 0===N?void 0:N.availableUses)||(null==L?void 0:L.buyUses),Q=Array.isArray(K)&&K.length>0,W=Q&&Array.isArray(K)&&K[B];t.useEffect((()=>{let s=!0;return e.__awaiter(void 0,void 0,void 0,(function*(){var e;if(T&&(null===(e=T.data)||void 0===e?void 0:e.workspaceId))try{const e=yield x.default.get(`/cost_per_run?workspaceId=${T.data.workspaceId}`);if(s){const s=1e4*e.data.costPerRun||0;M(s)}}catch(e){console.error("Failed to fetch cost per run:",e),s&&M(0)}else M(0)})),()=>{s=!1}}),[T,null===(O=null==T?void 0:T.data)||void 0===O?void 0:O.workspaceId,M]);return L?s.jsx(i.AnimatePresence,{children:s.jsxs(c.default,Object.assign({className:p.default("flex flex-col gap-5 w-full",h)},{children:[s.jsxs("div",Object.assign({className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between rounded-lg p-3 bg-opacity-5",style:{backgroundColor:q.secondary}},{children:[s.jsxs("div",Object.assign({className:"flex gap-3 items-start"},{children:[s.jsx(n.default,{className:p.default("h-5 w-5 shrink-0 mt-0.5",b),style:{color:q.accent}}),s.jsx(d.default,{className:p.default($.b2,"font-semibold leading-relaxed text-sm",y),style:{color:q.text},html:L.limitMessage||""})]})),H&&s.jsx(u.default,Object.assign({variant:"primary",className:"whitespace-nowrap min-h-[32px] w-full sm:w-auto text-sm",onClick:()=>e.__awaiter(void 0,void 0,void 0,(function*(){if(l.isInIframe()){if(!R)return G(H||null),void A("login_required");window.open(H)}else window.location.href=`${H}?redirectUrl=${document.URL}`}))},{children:V}))]})),J&&s.jsxs("div",Object.assign({className:"flex flex-col gap-2"},{children:[s.jsx("h3",Object.assign({className:"text-xs font-bold opacity-70 uppercase px-1",style:{color:q.text}},{children:"Available Plans"})),s.jsx("div",Object.assign({className:"flex flex-row gap-3 overflow-x-auto pb-4 pt-1 snap-x scrollbar-thin"},{children:null===(_=L.upgradeGroups)||void 0===_?void 0:_.map(((e,t)=>s.jsx(f.default,{data:e},e.accessGroupId||t)))}))]})),Q&&W&&s.jsxs("div",Object.assign({className:"flex flex-col gap-3"},{children:[s.jsxs("h3",Object.assign({className:"text-xs font-bold opacity-70 uppercase px-1",style:{color:q.text}},{children:["Buy ",z?"Credits":"Uses"]})),s.jsx("div",Object.assign({className:"flex flex-row gap-3 overflow-x-auto pb-2 pt-1 snap-x scrollbar-thin"},{children:null==K?void 0:K.map(((e,t)=>s.jsx(g,{price:e.price,uses:e.uses,isCredits:z,costPerRun:F||void 0,isSelected:t===B,onClick:()=>E(t),colors:q},t)))})),s.jsxs(u.default,Object.assign({variant:"primary",className:"w-full py-3 text-sm font-bold shadow-md",onClick:()=>e.__awaiter(void 0,void 0,void 0,(function*(){var s,t;R?(s=W.uses,t=W.price,e.__awaiter(void 0,void 0,void 0,(function*(){try{const e=yield x.default.post("/get_extra_usage_payment_link",{data:{sender:I||void 0,studioSessionToken:R,studioId:null==S?void 0:S.studioid,cost:t,isEmbed:l.isInIframe(),extraUses:s,successUrl:document.URL}}),{success:i,url:r,clientSecret:a,stripeAccountId:o,error:n}=e.data;i?l.isInIframe()?a&&o?(P(o),U(a),A("stripe_checkout")):r&&window.open(r,"_blank"):r&&(window.location.href=r):alert(n)}catch(e){alert(e)}}))):l.isInIframe()?(G(H||null),A("login_required")):window.location.href=`${H}?redirectUrl=${document.URL}`}))},{children:["Buy ",W.uses.toLocaleString()," ",z?"Credits":"Uses"," for ",D,W.price]}))]}))]}))}):null};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface NavPillProps {
|
|
2
|
+
text: string;
|
|
3
|
+
icon?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const NavPill: ({ text, icon, className, onClick }: NavPillProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface EditableNavPillProps extends NavPillProps {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
onRename: (newName: string) => Promise<void>;
|
|
11
|
+
onDelete: () => Promise<void>;
|
|
12
|
+
isDarkGlass?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const EditableNavPill: ({ text, className, onRename, onDelete, isDarkGlass, }: EditableNavPillProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{__awaiter as e}from"../../../../_virtual/_tslib.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";import s from"../../../../common/cn.js";import{useState as i,useRef as a,useEffect as o}from"react";import{Check as r,X as c,MoreHorizontal as l}from"lucide-react";import m from"../../../Icons/trash-2.svg.js";import d from"../../../Icons/pencil.svg.js";const p=({text:e,icon:i,className:a,onClick:o})=>t("div",Object.assign({onClick:e=>{e.stopPropagation(),null==o||o()},className:s("relative flex items-center justify-center px-3 py-2 md:px-4 md:py-3 h-full shrink min-w-0 transition-all duration-200 cursor-pointer","glass",a),onMouseDown:e=>{e.preventDefault()}},{children:n("div",Object.assign({className:"flex items-center gap-2 z-20 min-w-0"},{children:[i&&t("img",{src:i,alt:"",className:"h-5 w-5 shrink-0 rounded-full object-cover"}),t("p",Object.assign({className:"text-xs md:text-sm font-medium truncate max-w-[80px] md:max-w-[150px]"},{children:e}))]}))})),u=({text:p,className:u,onRename:h,onDelete:x,isDarkGlass:g})=>{const[b,f]=i(!1),[w,v]=i(!1),[N,j]=i(p),[k,y]=i(!1),O=a(null),C=a(null);o((()=>{w||j(p)}),[p,w]),o((()=>{const e=e=>{C.current&&!C.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)}),[]);const D=()=>e(void 0,void 0,void 0,(function*(){N.trim()&&(y(!0),yield h(N),y(!1),v(!1))})),E=()=>{j(p),v(!1)};return n("div",Object.assign({ref:C,className:"relative z-40 h-full shrink min-w-0",onMouseDown:e=>{e.preventDefault()}},{children:[t("div",Object.assign({className:s("relative flex items-center justify-center px-3 py-2 md:px-4 md:py-3 h-full shrink min-w-0 overflow-visible transition-all duration-200 cursor-pointer group","glass",u),onClick:e=>{e.stopPropagation(),w||b?b&&f(!1):f(!0)}},{children:n("div",w?Object.assign({className:"flex items-center gap-2 z-20 min-w-[100px] md:min-w-[140px]",onClick:e=>e.stopPropagation()},{children:[t("input",{autoFocus:!0,type:"text",value:N,onChange:e=>j(e.target.value),onKeyDown:e=>{"Enter"===e.key&&D(),"Escape"===e.key&&E()},className:"bg-transparent border-b border-current text-xs md:text-sm font-medium focus:outline-none w-full min-w-[60px] md:min-w-[80px]",style:{color:"inherit"}}),t("button",Object.assign({onClick:D,disabled:k,className:"p-1 rounded hover:bg-black/10 dark:hover:bg-white/10 shrink-0"},{children:t(r,{className:"h-4 w-4"})})),t("button",Object.assign({onClick:E,disabled:k,className:"p-1 rounded hover:bg-black/10 dark:hover:bg-white/10 shrink-0"},{children:t(c,{className:"h-4 w-4"})}))]}):Object.assign({className:"flex items-center gap-2 z-20 min-w-0 max-w-[140px] md:max-w-[200px]"},{children:[t("p",Object.assign({className:"text-xs md:text-sm font-medium truncate"},{children:p})),t(l,{className:s("h-4 w-4 opacity-50 group-hover:opacity-100 transition-opacity shrink-0")})]}))})),b&&n("div",Object.assign({className:s("absolute top-full right-0 mt-2 w-48 shadow-xl z-50 rounded-[16px] overflow-hidden animate-in fade-in zoom-in-95 duration-100",g?"bg-[#313131] text-white":"bg-white text-black"),ref:O},{children:[n("button",Object.assign({onClick:e=>{e.stopPropagation(),f(!1),v(!0)},className:s("w-full text-left px-4 py-3 flex items-center gap-3 transition-colors border-b hover:opacity-70",g?"border-current":"border-[#EBEAEB]")},{children:[t(d,{className:"h-4 w-4"}),t("span",Object.assign({className:"font-medium text-sm"},{children:"Rename chat"}))]})),n("button",Object.assign({onClick:e=>{e.stopPropagation(),f(!1),x()},className:"w-full text-left px-4 py-3 flex items-center gap-3 transition-colors hover:opacity-70"},{children:[t(m,{className:"h-4 w-4"}),t("span",Object.assign({className:"font-medium text-sm"},{children:"Delete chat"}))]}))]}))]}))};export{u as EditableNavPill,p as NavPill};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{jsxs as t,jsx as o,Fragment as
|
|
1
|
+
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{jsxs as t,jsx as o,Fragment as i}from"react/jsx-runtime";import{useState as r,useRef as n,useEffect as s,useCallback as a}from"react";import{usePickaxeContext as l}from"../../../hooks/pickaxe/usePickaxeContext.js";import{useAuthContext as c}from"../Addons/Auth/hooks/useAuthContext.js";import{useDimensionContext as d}from"../../../hooks/pickaxe/useDimensionContext.js";import{useDocument as m}from"../Addons/Document/hooks/useDocument.js";import{useStyleFontSize as u}from"../../../hooks/studio/useStyleFontSize.js";import p from"./History/index.js";import f from"./Input.js";import h from"../../Icons/attach-vertical.svg.js";import v from"../../../common/cn.js";import x from"../../../common/api/pickaxe.js";import{v4 as g}from"uuid";import{useResponseContext as b}from"../../../hooks/pickaxe/useResponseContext.js";import{NavPill as k,EditableNavPill as j}from"../Addons/Navbar/NavPill.js";const y=()=>{const{deploymentType:y,isNewChat:w,setIsNewChat:I,sessionId:D,setSessionId:N,setLastSessionId:C,pickaxeId:A,sender:F,pickaxe:P,styles:S,isEmbed:T}=l(),{isSent:O}=c(),{width:_,height:z,setDimension:E}=d(),{setDocuments:H,onFileUpload:R}=m(),{isGenerating:G,messages:L}=b(),B=u(),[U,q]=r(0),[J,K]=r(!1),[M,Q]=r(!1),V=n(null),W=n(null),X=n(0),[Y,Z]=r(null),[$,ee]=r(!1),te="chat-input"===y&&w&&!O;s((()=>()=>{H([])}),[]);const oe=a((()=>{if(!A||!F)return;const t=(o=0)=>e(void 0,void 0,void 0,(function*(){var e;try{const t=yield x.post("/get_pickaxe_conversation",{sessionId:D,userId:F});if(t.data&&t.data.success){const e=t.data.title;if(e&&"Conversation Title"!==e)return void re(e)}else console.error("Failed to load conversation:",null===(e=t.data)||void 0===e?void 0:e.error)}catch(e){console.error("Error fetching conversation:",e)}o<20&&setTimeout((()=>t(o+1)),3e3)}));t()}),[A,F,D]);s((()=>{G||w||!D||oe()}),[G,w,D,oe]),s((()=>{if(!V.current)return;const e=new ResizeObserver((e=>{for(const t of e){const{width:e,height:o}=t.contentRect;E(parseInt(e.toFixed(0)),parseInt(o.toFixed(0)))}}));return e.observe(V.current),()=>{e.disconnect()}}),[V.current]);const[ie,re]=r("New Chat"),ne=(null==P?void 0:P.formtitle)||"Pickaxe",se=(null==P?void 0:P.coverphoto)||void 0,[ae,le]=r(!1);s((()=>{const e=!te&&!T&&S.portalTheme&&(L.filter((e=>"user"===e.role)).length>0||J||!w);le(null!=e&&e)}),[L,J,w]);return t("div",Object.assign({ref:V,className:"relative flex h-full w-full flex-col items-center overflow-hidden",onDragEnter:e=>{e.preventDefault(),e.stopPropagation(),X.current+=1,e.dataTransfer.items&&e.dataTransfer.items.length>0&&Q(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),X.current-=1,0===X.current&&Q(!1)},onDragOver:e=>{e.preventDefault(),e.stopPropagation()},onDrop:t=>e(void 0,void 0,void 0,(function*(){t.preventDefault(),t.stopPropagation(),Q(!1),X.current=0;const e=Array.from(t.dataTransfer.files||[]);e.length>0&&(I(!1),yield R(e))}))},{children:[M&&t("div",Object.assign({className:"absolute inset-0 z-50 flex flex-col items-center justify-center rounded-lg bg-white/80 backdrop-blur-sm transition-all duration-300"},{children:[o("div",Object.assign({className:"flex h-24 w-24 items-center justify-center rounded-full bg-white shadow-lg animate-bounce text-black"},{children:o(h,{className:"h-10 w-10"})})),o("h3",Object.assign({className:v(B.h3,"mt-6 font-semibold text-c-primary text-black")},{children:"Drop files to upload"})),o("p",Object.assign({className:v(B.b2,"mt-2 opacity-60 text-black")},{children:"Add anything to the conversation"}))]})),te?o(f,{}):t(i,{children:[ae&&t("div",Object.assign({className:v("direct-link"===y?"absolute top-4 left-4 md:top-6 md:left-6 z-40 flex items-center gap-2 animate-in fade-in slide-in-from-top-4 duration-500":"w-full max-w-3xl mt-6 px-4 md:px-0 flex justify-start z-30 mb-4 animate-in fade-in slide-in-from-top-4 duration-500 gap-2","dark"===S.portalTheme?"glass-dark ":"")},{children:[o(k,{text:ne,icon:se,onClick:()=>{N(""),C(D)}}),w||"New Chat"===ie?o(k,{text:ie}):o(j,{text:ie,sessionId:D,onRename:t=>e(void 0,void 0,void 0,(function*(){if(D)try{yield x.post("/edit_conversation_name",{sessionId:D,name:t,userId:F}),re(t)}catch(e){console.error("Error renaming chat:",e),alert("Failed to rename chat.")}})),onDelete:()=>e(void 0,void 0,void 0,(function*(){if(D&&window.confirm("Are you sure you want to delete this conversation?"))try{yield x.post("/delete_pickaxe_conversation",{sessionId:D,userId:F}),I(!0),N(g()),re("New Chat")}catch(e){console.error("Error deleting chat:",e),alert("Failed to delete chat.")}})),isDarkGlass:"dark"===S.portalTheme})]})),o(p,{additionalScrollHeight:U,isForceHideInfo:z<=545||_<=350||J,isInputFocused:J,onSubmit:t=>e(void 0,void 0,void 0,(function*(){W.current&&W.current.onSubmit(t)})),smitheryAuthData:Y,resubmitPrompt:()=>{Z(null),ee(!0)}}),o(f,{ref:W,onFocus:()=>K(!0),onBlur:()=>K(!1),onInputHeightChange:q,initSmitheryAuthData:e=>Z(e),resubmitPrompt:$})]})]}))};export{y as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,
|
|
1
|
+
import{jsxs as e,jsx as t,Fragment as i}from"react/jsx-runtime";import{usePickaxeContext as l}from"../../../hooks/pickaxe/usePickaxeContext.js";import{useStyleFontSize as o}from"../../../hooks/studio/useStyleFontSize.js";import s from"../common/PickaxeHead.js";import a from"../common/PickaxeEmbedHead.js";import n from"./History/index.js";import r from"./NewChat.js";import m from"./Questions/index.js";import c from"../../../common/cn.js";import{NavPill as d}from"../Addons/Navbar/NavPill.js";const p=()=>{const{lastSessionId:p,pickaxe:f,responsiveBy:x,translations:u,isEmbed:h,deploymentType:v,styles:j,setLastSessionId:b,setSessionId:y}=l(),g=(null==f?void 0:f.formtitle)||"Pickaxe",k=(null==f?void 0:f.coverphoto)||void 0,w=o(),N=h&&(null==f?void 0:f.chatflag);return e("div",Object.assign({className:c("relative flex w-full h-full overflow-y-auto flex-col items-center pb-10","pt-0","viewport"===x?"min-[767px]:pb-10":"@[767px]/pickaxe-root:pb-10")},{children:[!h&&t("div",Object.assign({className:c("direct-link"===v?"absolute top-4 left-4 md:top-6 md:left-6 z-40 flex items-center gap-2 animate-in fade-in slide-in-from-top-4 duration-500":"w-full max-w-3xl mt-6 px-4 md:px-0 flex justify-start z-30 mb-4 animate-in fade-in slide-in-from-top-4 duration-500 gap-2","dark"===j.portalTheme?"glass-dark ":"")},{children:t(d,{text:g,icon:k,onClick:()=>{y(p),b("")}})})),N?e(i,{children:[t(a,{className:"sticky top-0 z-10 w-full",historyBtnTip:(null==u?void 0:u["exit-chat-history"])||"Exit Chat History",onHistoryClick:()=>y(p)}),t("div",Object.assign({className:"relative flex min-h-[56px] w-full justify-end rounded-tl-lg rounded-tr-lg border-y p-4"},{children:t("p",Object.assign({className:c(w.b1,"absolute left-1/2 -translate-x-1/2 select-none text-center")},{children:(null==u?void 0:u["chat-history"])||"Chat History"}))}))]}):t("div",Object.assign({className:"flex w-full max-w-[700px] flex-col"},{children:t(s,{})})),t("div",Object.assign({className:c("flex w-full flex-col items-center min-h-0",N?"px-4":"px-6")},{children:t("div",Object.assign({className:"flex w-full max-w-[700px] flex-col h-full"},{children:e("div",Object.assign({className:c("flex flex-col gap-y-8 h-full","viewport"===x?"min-[767px]:mt-4":"@[767px]/pickaxe-root:mt-4")},{children:[(null==f?void 0:f.chatflag)?t(r,{}):t(m,{}),t(n,{})]}))}))}))]}))};export{p as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{jsx as
|
|
1
|
+
import{__awaiter as e}from"../../../_virtual/_tslib.js";import{jsx as o,jsxs as s}from"react/jsx-runtime";import{useState as t,useEffect as i}from"react";import{AnimatePresence as r}from"framer-motion";import{usePickaxeContext as a}from"../../../hooks/pickaxe/usePickaxeContext.js";import{useResponseContext as l}from"../../../hooks/pickaxe/useResponseContext.js";import{useStyleFontSize as n}from"../../../hooks/studio/useStyleFontSize.js";import{isInIframe as c}from"../../../common/utils.js";import d from"../../Icons/circle-exclamation.svg.js";import u from"../../Core/SpringTransition.js";import p from"../../Core/HtmlRenderer.js";import m from"./PickaxeButton.js";import x from"../../../common/cn.js";import f from"../../../common/api/pickaxe.js";import{useAuthContext as v}from"../Addons/Auth/hooks/useAuthContext.js";import g from"./AccessGroupCardPreview.js";import{useStudio as h}from"../../../hooks/studio/useStudio.js";import{currencyOptions as b}from"./PickaxeCurrency.js";const y=({price:e,uses:t,isCredits:i,isSelected:r,costPerRun:a,onClick:l,colors:n})=>{const c={backgroundColor:n.secondary,color:n.secondaryText,borderColor:r?n.secondaryText:"rgba(0,0,0,0.1)"},d=i&&a?Math.ceil(t/a):0;return s("button",i?Object.assign({onClick:l,className:x("flex min-w-[200px] shrink-0 cursor-pointer flex-col rounded-[16px] px-6 py-5 text-left transition-all duration-200",r?"border-2 shadow-sm":"border opacity-80 hover:opacity-100"),style:c},{children:[s("div",Object.assign({className:"mb-4 flex items-center gap-2"},{children:[o("span",Object.assign({className:"text-[24px] font-semibold tracking-tight"},{children:e})),s("span",Object.assign({className:"text-[14px] font-light opacity-80"},{children:["/",t," credits"]}))]})),o("div",{className:"mb-4 h-[1px] w-full",style:{backgroundColor:n.secondaryText,opacity:.15}}),s("span",Object.assign({className:"text-[14px] italic opacity-70"},{children:["~ ",void 0!==d&&d>0?d.toLocaleString():"..."," ","runs"]}))]}):Object.assign({onClick:l,className:x("flex shrink-0 cursor-pointer items-center justify-center gap-2 rounded-[16px] px-5 py-3 transition-all duration-200",r?"border-2 shadow-sm":"border opacity-80 hover:opacity-100"),style:c},{children:[o("span",Object.assign({className:"text-[24px] font-semibold tracking-tight"},{children:e})),s("span",Object.assign({className:"text-[14px] font-light opacity-80"},{children:["/",t," uses"]}))]}))},j=({className:j,iconClassName:k,htmlClassName:w})=>{var C,N,O,A,S,U;const{colors:_,pickaxe:I,sender:R,setValidationStatus:P,setClientSecret:G,setStripeAccountId:L}=a(),{token:T,setRedirectUrl:$}=v(),{limitData:B}=l(),{studio:q}=h(),F=n(),[M,z]=t(0),[D,E]=t(null),H=!!(null==q?void 0:q.data.usage)&&q.data.usage.isCredits,V=null!==(N=null===(C=b.find((e=>e.id===(null==q?void 0:q.data.currency))))||void 0===C?void 0:C.symbol)&&void 0!==N?N:b[0].symbol;i((()=>{var e;(null===(e=null==B?void 0:B.buyUses)||void 0===e?void 0:e.length)&&z(0)}),[B]);const J=null==B?void 0:B.customLink,K=null==B?void 0:B.limitCTA,Q=Array.isArray(null==B?void 0:B.upgradeGroups)&&(null==B?void 0:B.upgradeGroups)&&(null==B?void 0:B.upgradeGroups.length)>0,W=(H?null===(O=null==q?void 0:q.data.usage)||void 0===O?void 0:O.availableCredits:null===(A=null==q?void 0:q.data.usage)||void 0===A?void 0:A.availableUses)||(null==B?void 0:B.buyUses),X=Array.isArray(W)&&W.length>0,Y=X&&Array.isArray(W)&&W[M];i((()=>{let o=!0;return e(void 0,void 0,void 0,(function*(){var e;if(q&&(null===(e=q.data)||void 0===e?void 0:e.workspaceId))try{const e=yield f.get(`/cost_per_run?workspaceId=${q.data.workspaceId}`);if(o){const o=1e4*e.data.costPerRun||0;E(o)}}catch(e){console.error("Failed to fetch cost per run:",e),o&&E(0)}else E(0)})),()=>{o=!1}}),[q,null===(S=null==q?void 0:q.data)||void 0===S?void 0:S.workspaceId,E]);return B?o(r,{children:s(u,Object.assign({className:x("flex flex-col gap-5 w-full",j)},{children:[s("div",Object.assign({className:"flex flex-col sm:flex-row gap-4 items-start sm:items-center justify-between rounded-lg p-3 bg-opacity-5",style:{backgroundColor:_.secondary}},{children:[s("div",Object.assign({className:"flex gap-3 items-start"},{children:[o(d,{className:x("h-5 w-5 shrink-0 mt-0.5",k),style:{color:_.accent}}),o(p,{className:x(F.b2,"font-semibold leading-relaxed text-sm",w),style:{color:_.text},html:B.limitMessage||""})]})),J&&o(m,Object.assign({variant:"primary",className:"whitespace-nowrap min-h-[32px] w-full sm:w-auto text-sm",onClick:()=>e(void 0,void 0,void 0,(function*(){if(c()){if(!T)return $(J||null),void P("login_required");window.open(J)}else window.location.href=`${J}?redirectUrl=${document.URL}`}))},{children:K}))]})),Q&&s("div",Object.assign({className:"flex flex-col gap-2"},{children:[o("h3",Object.assign({className:"text-xs font-bold opacity-70 uppercase px-1",style:{color:_.text}},{children:"Available Plans"})),o("div",Object.assign({className:"flex flex-row gap-3 overflow-x-auto pb-4 pt-1 snap-x scrollbar-thin"},{children:null===(U=B.upgradeGroups)||void 0===U?void 0:U.map(((e,s)=>o(g,{data:e},e.accessGroupId||s)))}))]})),X&&Y&&s("div",Object.assign({className:"flex flex-col gap-3"},{children:[s("h3",Object.assign({className:"text-xs font-bold opacity-70 uppercase px-1",style:{color:_.text}},{children:["Buy ",H?"Credits":"Uses"]})),o("div",Object.assign({className:"flex flex-row gap-3 overflow-x-auto pb-2 pt-1 snap-x scrollbar-thin"},{children:null==W?void 0:W.map(((e,s)=>o(y,{price:e.price,uses:e.uses,isCredits:H,costPerRun:D||void 0,isSelected:s===M,onClick:()=>z(s),colors:_},s)))})),s(m,Object.assign({variant:"primary",className:"w-full py-3 text-sm font-bold shadow-md",onClick:()=>e(void 0,void 0,void 0,(function*(){var o,s;T?(o=Y.uses,s=Y.price,e(void 0,void 0,void 0,(function*(){try{const e=yield f.post("/get_extra_usage_payment_link",{data:{sender:R||void 0,studioSessionToken:T,studioId:null==I?void 0:I.studioid,cost:s,isEmbed:c(),extraUses:o,successUrl:document.URL}}),{success:t,url:i,clientSecret:r,stripeAccountId:a,error:l}=e.data;t?c()?r&&a?(L(a),G(r),P("stripe_checkout")):i&&window.open(i,"_blank"):i&&(window.location.href=i):alert(l)}catch(e){alert(e)}}))):c()?($(J||null),P("login_required")):window.location.href=`${J}?redirectUrl=${document.URL}`}))},{children:["Buy ",Y.uses.toLocaleString()," ",H?"Credits":"Uses"," for ",V,Y.price]}))]}))]}))}):null};export{j as default};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface NavPillProps {
|
|
2
|
+
text: string;
|
|
3
|
+
icon?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const NavPill: ({ text, icon, className, onClick }: NavPillProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
interface EditableNavPillProps extends NavPillProps {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
onRename: (newName: string) => Promise<void>;
|
|
11
|
+
onDelete: () => Promise<void>;
|
|
12
|
+
isDarkGlass?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const EditableNavPill: ({ text, className, onRename, onDelete, isDarkGlass, }: EditableNavPillProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|