@marimo-team/frontend 0.22.5-dev2 → 0.22.5-dev21
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/assets/{CellStatus-HZQ0Twqj.js → CellStatus-CP1jrQ3A.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-C9jSHm_Y.js → ConnectedDataExplorerComponent-CfU-ThkK.js} +1 -1
- package/dist/assets/{ImperativeModal-Ka_MU6gk.js → ImperativeModal-DoGv2BXV.js} +1 -1
- package/dist/assets/JsonOutput-Bk2by9qo.js +49 -0
- package/dist/assets/{LazyAnyLanguageCodeMirror-Bb2dITRz.js → LazyAnyLanguageCodeMirror-CoYqQxHb.js} +2 -2
- package/dist/assets/MarimoErrorOutput-Cyd8ikG3.js +7 -0
- package/dist/assets/RSPContexts-LWFBF00h.js +1 -0
- package/dist/assets/{RenderHTML-Cyj8OBbz.js → RenderHTML-BOW_1WUn.js} +1 -1
- package/dist/assets/{add-cell-with-ai-BccDsMLb.js → add-cell-with-ai-DUq7Y523.js} +9 -9
- package/dist/assets/{add-connection-dialog-BO_nxLQi.js → add-connection-dialog-20N0EHLl.js} +1 -1
- package/dist/assets/{agent-panel-BMTl3Cgd.js → agent-panel-DEza5aFa.js} +3 -3
- package/dist/assets/{ai-model-dropdown-CS5ryevV.js → ai-model-dropdown-B-sbS07W.js} +4 -4
- package/dist/assets/{any-language-editor-BKxF_o5k.js → any-language-editor-DYgTL8eG.js} +1 -1
- package/dist/assets/app-config-button-CJFpYJ_2.js +1 -0
- package/dist/assets/{cache-panel-PA0cVzei.js → cache-panel-8E_Y5OSb.js} +1 -1
- package/dist/assets/{cell-editor-qLPKK49y.js → cell-editor-DLL6kX__.js} +11 -11
- package/dist/assets/{cell-link-CY7i_e4O.js → cell-link-Dtonmtv_.js} +1 -1
- package/dist/assets/{cells-CuaAKcwV.js → cells-BVG4a-Qn.js} +42 -42
- package/dist/assets/{chat-display-BLYrUQhO.js → chat-display-DsIGz-Wy.js} +1 -1
- package/dist/assets/{chat-panel-w9jaKRAD.js → chat-panel-aXOgktdv.js} +2 -2
- package/dist/assets/{chat-ui-BqpUGrwS.js → chat-ui-C--RApyx.js} +4 -4
- package/dist/assets/{column-preview-Dk6-wUK-.js → column-preview-CB_HZPdz.js} +1 -1
- package/dist/assets/{command-DkwDd6Ey.js → command-DvF_4mQa.js} +1 -1
- package/dist/assets/{command-palette-C0hZrhup.js → command-palette-DLKNdcX_.js} +1 -1
- package/dist/assets/{common-CL1iSwod.js → common-CLVI2BhO.js} +1 -1
- package/dist/assets/{components-CBihADZo.js → components-CGwwQ0Y4.js} +1 -1
- package/dist/assets/{components-CtOW1DR4.js → components-DiALLQRt.js} +1 -1
- package/dist/assets/{copy-icon-n6r2uyq3.js → copy-icon-BGs1Pbai.js} +1 -1
- package/dist/assets/{datasource-DwmhT5-D.js → datasource-BzTPyEw3.js} +1 -1
- package/dist/assets/{dependency-graph-panel-3AdEtWPZ.js → dependency-graph-panel-Pxmnzmd4.js} +1 -1
- package/dist/assets/{diagram-PSM6KHXK-D6nw8Fvd.js → diagram-PSM6KHXK-UdiW7QQb.js} +1 -1
- package/dist/assets/{documentation-panel-CVIUk8ga.js → documentation-panel-bgaPBvan.js} +1 -1
- package/dist/assets/{download-pkTDt-sj.js → download-QIfZjflb.js} +3 -3
- package/dist/assets/{edit-page-6Fpl3Fez.js → edit-page-DB_go-vo.js} +7 -7
- package/dist/assets/{error-banner-Bfe6BopK.js → error-banner-bXc_9BBZ.js} +1 -1
- package/dist/assets/{error-panel-Cy3_isDL.js → error-panel-DfHzC7q-.js} +1 -1
- package/dist/assets/{field-CXDGiU3T.js → field-DTzXkFLZ.js} +1 -1
- package/dist/assets/{file-explorer-panel-qM-Iflzm.js → file-explorer-panel-CEd-m832.js} +3 -3
- package/dist/assets/{file-icons-DaGma7HH.js → file-icons-ma7AC7Pi.js} +1 -1
- package/dist/assets/{floating-outline-oPCmn9_F.js → floating-outline-BluCz3vD.js} +1 -1
- package/dist/assets/{focus-B524Cy57.js → focus-BHXzPxK_.js} +1 -1
- package/dist/assets/{form-IHIhviLb.js → form-C0W8wa3f.js} +1 -1
- package/dist/assets/{formats-DC_7w22O.js → formats-BQHP_yQk.js} +1 -1
- package/dist/assets/{formatting-Dw_0ktP1.js → formatting-BCAZDWQ0.js} +1 -1
- package/dist/assets/{gallery-page-DCkpFwYi.js → gallery-page-XSrY7bw_.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-BC4H0xrj.js → ganttDiagram-JELNMOA3-KWj06bYC.js} +1 -1
- package/dist/assets/{glide-data-editor-BkvzN8Tk.js → glide-data-editor-Bd4FOxvW.js} +1 -1
- package/dist/assets/{home-page-bB7oHRxE.js → home-page-nNrKA7jH.js} +2 -2
- package/dist/assets/{hooks-DmeHnl8J.js → hooks-C7qnb_ft.js} +1 -1
- package/dist/assets/{html-to-image-C-c-Hfuw.js → html-to-image-B3VySJ1_.js} +1 -1
- package/dist/assets/index-CLnKZIHZ.js +42 -0
- package/dist/assets/index-DBs2il8a.css +2 -0
- package/dist/assets/input-Bg12i6qY.js +1 -0
- package/dist/assets/{kiosk-mode-CnJjuo6B.js → kiosk-mode-BSY8y4kL.js} +1 -1
- package/dist/assets/{layout-Ce-vzLs_.js → layout-V4eTNc4M.js} +3 -3
- package/dist/assets/{linear-bY7qDnP9.js → linear-BICTUQLW.js} +1 -1
- package/dist/assets/{logs-panel-CzlMq5La.js → logs-panel-B1AysC8S.js} +1 -1
- package/dist/assets/{markdown-renderer-B4-BiMy9.js → markdown-renderer-BiKTlki_.js} +1 -1
- package/dist/assets/{mermaid-DDNZ06H7.js → mermaid-BJFSZcG6.js} +3 -3
- package/dist/assets/{name-cell-input-CUG9-cgv.js → name-cell-input-BA5B0KJl.js} +1 -1
- package/dist/assets/{outline-panel-BXefyCJ4.js → outline-panel-BfGPA_Sj.js} +1 -1
- package/dist/assets/{packages-panel-Bc42thuF.js → packages-panel-BgoT3rrV.js} +1 -1
- package/dist/assets/{panels-xqtEg2DV.js → panels-BeW4RaML.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-BeLuFsHa.js → pieDiagram-ADFJNKIX-ixj1Ihpk.js} +1 -1
- package/dist/assets/{precisionRound-D8yxZYIF.js → precisionRound-CU2C3Vxx.js} +1 -1
- package/dist/assets/{process-output-C-VBRULx.js → process-output-MnxG8jwi.js} +1 -1
- package/dist/assets/{quadrantDiagram-AYHSOK5B-7-MiutmN.js → quadrantDiagram-AYHSOK5B-DAgQxEHI.js} +1 -1
- package/dist/assets/{react-vega-LNfJwi6n.js → react-vega-BVBnH7ue.js} +1 -1
- package/dist/assets/react-vega-BfEZWy9T.js +1 -0
- package/dist/assets/{readonly-python-code-DinZuT8P.js → readonly-python-code-DuH_nOq_.js} +1 -1
- package/dist/assets/{run-page-GmVLTzzU.js → run-page-kI3bwb2R.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-DuPJkvrj.js → sankeyDiagram-TZEHDZUN-DAWWzAvZ.js} +1 -1
- package/dist/assets/{scratchpad-panel-CnzHN40A.js → scratchpad-panel-617FvSKA.js} +1 -1
- package/dist/assets/{secrets-panel-DxBoNgTM.js → secrets-panel-C6X5jB8Q.js} +1 -1
- package/dist/assets/{session-panel-CpeJADG_.js → session-panel-D6Sf5vhq.js} +1 -1
- package/dist/assets/snippets-panel-DfWq0wh2.js +1 -0
- package/dist/assets/{state-9-n7I_Bo.js → state-BgrGQPFs.js} +1 -1
- package/dist/assets/{state-DuVk71Dw.js → state-Blw6taKi.js} +1 -1
- package/dist/assets/{state-oW8A8maF.js → state-urfwd716.js} +2 -2
- package/dist/assets/{terminal-bXHNLBHU.js → terminal-BBTjIXBz.js} +3 -3
- package/dist/assets/{textarea-CI3yaazO.js → textarea-B5p9_myy.js} +1 -1
- package/dist/assets/{time-BdrzW2P6.js → time-DLcLlk0u.js} +1 -1
- package/dist/assets/{tracing-BRo4IXxX.js → tracing-CazNvlp4.js} +1 -1
- package/dist/assets/{tracing-panel-7QrwywKQ.js → tracing-panel-Bj0Bx8ZJ.js} +2 -2
- package/dist/assets/{useAddCell-BMYemCZ-.js → useAddCell-g3zSMJKs.js} +1 -1
- package/dist/assets/{useAsyncData-CaAFMbY9.js → useAsyncData-aCoWDe-l.js} +1 -1
- package/dist/assets/useBoolean-ugd5JdXd.js +1 -0
- package/dist/assets/{useCellActionButton-DMySRby1.js → useCellActionButton-DdsVswP2.js} +1 -1
- package/dist/assets/{useDateFormatter-BBQkEV05.js → useDateFormatter-BEz9SEXo.js} +1 -1
- package/dist/assets/{useDeleteCell-6SLN_jZa.js → useDeleteCell-CIdiI4Pk.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-DRoK7Mvg.js → useDependencyPanelTab-DhXqfAqL.js} +1 -1
- package/dist/assets/{useNotebookActions-SGiWvk1I.js → useNotebookActions-ULfiGMMl.js} +1 -1
- package/dist/assets/{useNumberFormatter-DIM21HH4.js → useNumberFormatter-wQU1z0W_.js} +1 -1
- package/dist/assets/{usePress-CLNv4Iws.js → usePress-BXMIcLWP.js} +3 -3
- package/dist/assets/{useRunCells-a5YC9YVQ.js → useRunCells-q5CA-QoL.js} +1 -1
- package/dist/assets/{useSplitCell-Dn4N4Evl.js → useSplitCell-B0jDwUEM.js} +1 -1
- package/dist/assets/{utils-BaSt_0sN.js → utils-BZwMGX81.js} +1 -1
- package/dist/assets/{vega-component-B_GT243z.js → vega-component-B2_J2GQq.js} +1 -1
- package/dist/assets/{vega-loader.browser-DLukqq1q.js → vega-loader.browser-DXARUlxo.js} +1 -1
- package/dist/assets/{write-secret-modal-C87c9nwO.js → write-secret-modal-CHfFN0H8.js} +1 -1
- package/dist/assets/{xychartDiagram-PRI3JC2R-BRVF_pwk.js → xychartDiagram-PRI3JC2R-DgjhbmH4.js} +1 -1
- package/dist/index.html +52 -51
- package/package.json +2 -2
- package/src/components/data-table/__tests__/columns.test.tsx +92 -13
- package/src/components/data-table/column-header.tsx +81 -56
- package/src/components/data-table/columns.tsx +25 -32
- package/src/components/data-table/data-table.tsx +8 -1
- package/src/components/data-table/renderers.tsx +19 -6
- package/src/components/data-table/types.ts +4 -0
- package/src/components/editor/errors/traceback-modal.tsx +6 -5
- package/src/components/editor/output/MarimoErrorOutput.tsx +7 -14
- package/src/components/editor/output/MarimoTracebackOutput.tsx +4 -3
- package/src/core/cells/document-changes.ts +12 -0
- package/src/core/saving/file-state.ts +16 -0
- package/src/hooks/useAsyncData.ts +1 -1
- package/src/mount.tsx +17 -1
- package/src/plugins/impl/DataTablePlugin.tsx +1 -1
- package/src/plugins/impl/plotly/__tests__/selection.test.ts +22 -0
- package/src/plugins/impl/plotly/selection.ts +1 -0
- package/dist/assets/JsonOutput-C0_rp6zm.js +0 -49
- package/dist/assets/MarimoErrorOutput-C3-dwG-M.js +0 -7
- package/dist/assets/VisuallyHidden-CuyBIaeU.js +0 -1
- package/dist/assets/app-config-button-2bbgrHC2.js +0 -1
- package/dist/assets/index-B2hkIK4p.js +0 -42
- package/dist/assets/index-BNN_F0CC.css +0 -2
- package/dist/assets/input-DfDSaPYh.js +0 -1
- package/dist/assets/react-vega-Bpff0f7C.js +0 -1
- package/dist/assets/snippets-panel-Z3fr4trp.js +0 -1
- package/dist/assets/useBoolean-Dsw5twOt.js +0 -1
- /package/dist/assets/{blob-Brr8JjWU.js → blob-CTort_or.js} +0 -0
- /package/dist/assets/{context-BoP98Msj.js → context-DGqo1TbK.js} +0 -0
- /package/dist/assets/{copy-Acb9G8ns.js → copy-Bizk-4hH.js} +0 -0
- /package/dist/assets/{defaultLocale-B8Omxjnr.js → defaultLocale-BLne0bXb.js} +0 -0
- /package/dist/assets/{defaultLocale-Cyhs3Xd2.js → defaultLocale-JieDVWC_.js} +0 -0
- /package/dist/assets/{dialog-Do1NuJPs.js → dialog-BYjetQgE.js} +0 -0
- /package/dist/assets/{errors-Dn17Z1-5.js → errors-CZb6hI2x.js} +0 -0
- /package/dist/assets/{numbers--q6KLqqK.js → numbers--nDjbAPa.js} +0 -0
- /package/dist/assets/{ordinal-CN_bk_zt.js → ordinal-DuTuuUgV.js} +0 -0
- /package/dist/assets/{range-BmYMHsC2.js → range-1DwpgXvM.js} +0 -0
- /package/dist/assets/{react-icons.esm-3sYgjjif.js → react-icons.esm-BUYTQ32a.js} +0 -0
- /package/dist/assets/{share-CkOka71S.js → share-0LPgOyiW.js} +0 -0
- /package/dist/assets/{useHotkey-CX3-tpiy.js → useHotkey-DALUNe8I.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as V}from"./chunk-LvLJmgfZ.js";import{t as B}from"./react-Bj1aDYRI.js";import{t as G}from"./compiler-runtime-B3qBwwSJ.js";import{t as H}from"./jsx-runtime-Blw4afVn.js";import{c as I,i as J,n as O,s as Q,t as U}from"./select--zcABebs.js";import{t as P}from"./label-C89F4v17.js";import{t as W}from"./button-BKVLeSTX.js";import{r as X}from"./requests-9-v2bhoi.js";import{r as D}from"./input-
|
|
1
|
+
import{s as V}from"./chunk-LvLJmgfZ.js";import{t as B}from"./react-Bj1aDYRI.js";import{t as G}from"./compiler-runtime-B3qBwwSJ.js";import{t as H}from"./jsx-runtime-Blw4afVn.js";import{c as I,i as J,n as O,s as Q,t as U}from"./select--zcABebs.js";import{t as P}from"./label-C89F4v17.js";import{t as W}from"./button-BKVLeSTX.js";import{r as X}from"./requests-9-v2bhoi.js";import{r as D}from"./input-Bg12i6qY.js";import{t as E}from"./use-toast-BDYuj3zG.js";import{a as Z,c as $,i as ee,n as te,r as re}from"./dialog-BYjetQgE.js";import{t as ae}from"./links-DOybeRem.js";import{r as L}from"./field-DTzXkFLZ.js";var oe=G(),T=V(B(),1),t=V(H(),1);function ne(a){return a.toSorted((e,r)=>e.provider==="env"?1:r.provider==="env"?-1:0)}const le=a=>{let e=(0,oe.c)(43),{providerNames:r,onClose:A,onSuccess:F}=a,{writeSecret:Y}=X(),[o,M]=T.useState(""),[l,R]=T.useState(""),[n,z]=T.useState(r[0]),g;e[0]!==o||e[1]!==n||e[2]!==F||e[3]!==l||e[4]!==Y?(g=async i=>{if(i.preventDefault(),!n){E({title:"Error",description:"No location selected for the secret.",variant:"danger"});return}if(!o||!l||!n){E({title:"Error",description:"Please fill in all fields.",variant:"danger"});return}try{await Y({key:o,value:l,provider:"dotenv",name:n}),E({title:"Secret created",description:"The secret has been created successfully."}),F(o)}catch{E({title:"Error",description:"Failed to create secret. Please try again.",variant:"danger"})}},e[0]=o,e[1]=n,e[2]=F,e[3]=l,e[4]=Y,e[5]=g):g=e[5];let q=g,j;e[6]===Symbol.for("react.memo_cache_sentinel")?(j=(0,t.jsxs)(Z,{children:[(0,t.jsx)($,{children:"Add Secret"}),(0,t.jsx)(re,{children:"Add a new secret to your environment variables."})]}),e[6]=j):j=e[6];let y;e[7]===Symbol.for("react.memo_cache_sentinel")?(y=(0,t.jsx)(P,{htmlFor:"key",children:"Key"}),e[7]=y):y=e[7];let S;e[8]===Symbol.for("react.memo_cache_sentinel")?(S=i=>{M(ie(i.target.value))},e[8]=S):S=e[8];let s;e[9]===o?s=e[10]:(s=(0,t.jsxs)("div",{className:"grid gap-2",children:[y,(0,t.jsx)(D,{id:"key",value:o,onChange:S,placeholder:"MY_SECRET_KEY",required:!0})]}),e[9]=o,e[10]=s);let _;e[11]===Symbol.for("react.memo_cache_sentinel")?(_=(0,t.jsx)(P,{htmlFor:"value",children:"Value"}),e[11]=_):_=e[11];let b;e[12]===Symbol.for("react.memo_cache_sentinel")?(b=i=>R(i.target.value),e[12]=b):b=e[12];let c;e[13]===l?c=e[14]:(c=(0,t.jsx)(D,{id:"value",type:"password",value:l,onChange:b,required:!0,autoComplete:"off"}),e[13]=l,e[14]=c);let C;e[15]===Symbol.for("react.memo_cache_sentinel")?(C=se()&&(0,t.jsx)(L,{children:"Note: You are sending this key over http."}),e[15]=C):C=e[15];let d;e[16]===c?d=e[17]:(d=(0,t.jsxs)("div",{className:"grid gap-2",children:[_,c,C]}),e[16]=c,e[17]=d);let N;e[18]===Symbol.for("react.memo_cache_sentinel")?(N=(0,t.jsx)(P,{htmlFor:"location",children:"Location"}),e[18]=N):N=e[18];let m;e[19]===r.length?m=e[20]:(m=r.length===0&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"No dotenv locations configured."}),e[19]=r.length,e[20]=m);let h;e[21]!==n||e[22]!==r?(h=r.length>0&&(0,t.jsxs)(U,{value:n,onValueChange:i=>z(i),children:[(0,t.jsx)(Q,{children:(0,t.jsx)(I,{placeholder:"Select a provider"})}),(0,t.jsx)(O,{children:r.map(ce)})]}),e[21]=n,e[22]=r,e[23]=h):h=e[23];let k;e[24]===Symbol.for("react.memo_cache_sentinel")?(k=(0,t.jsxs)(L,{children:["You can configure the location by setting the"," ",(0,t.jsx)(ae,{href:"https://links.marimo.app/dotenv",children:"dotenv configuration"}),"."]}),e[24]=k):k=e[24];let p;e[25]!==m||e[26]!==h?(p=(0,t.jsxs)("div",{className:"grid gap-2",children:[N,m,h,k]}),e[25]=m,e[26]=h,e[27]=p):p=e[27];let u;e[28]!==d||e[29]!==p||e[30]!==s?(u=(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[s,d,p]}),e[28]=d,e[29]=p,e[30]=s,e[31]=u):u=e[31];let f;e[32]===A?f=e[33]:(f=(0,t.jsx)(W,{type:"button",variant:"outline",onClick:A,children:"Cancel"}),e[32]=A,e[33]=f);let K=!o||!l||!n,v;e[34]===K?v=e[35]:(v=(0,t.jsx)(W,{type:"submit",disabled:K,children:"Add Secret"}),e[34]=K,e[35]=v);let x;e[36]!==f||e[37]!==v?(x=(0,t.jsxs)(ee,{children:[f,v]}),e[36]=f,e[37]=v,e[38]=x):x=e[38];let w;return e[39]!==q||e[40]!==u||e[41]!==x?(w=(0,t.jsx)(te,{children:(0,t.jsxs)("form",{onSubmit:q,children:[j,u,x]})}),e[39]=q,e[40]=u,e[41]=x,e[42]=w):w=e[42],w};function ie(a){return a.replaceAll(/\W/g,"_")}function se(){return window.location.href.startsWith("http://")}function ce(a){return(0,t.jsx)(J,{value:a,children:a},a)}export{ne as n,le as t};
|
package/dist/assets/{xychartDiagram-PRI3JC2R-BRVF_pwk.js → xychartDiagram-PRI3JC2R-DgjhbmH4.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var j,Q,K,Z,q,J,tt,it,et,st;import"./purify.es-BFDc-_i_.js";import{t as zt}from"./linear-
|
|
1
|
+
var j,Q,K,Z,q,J,tt,it,et,st;import"./purify.es-BFDc-_i_.js";import{t as zt}from"./linear-BICTUQLW.js";import{n as ui}from"./ordinal-DuTuuUgV.js";import{t as xi}from"./range-1DwpgXvM.js";import"./defaultLocale-JieDVWC_.js";import"./src-lJewPvdk.js";import{t as Ot}from"./line-BCZzhM6G.js";import{i as Wt}from"./chunk-S3R3BYOJ-QzFziHq0.js";import{n as di}from"./init-AtRnKt23.js";import{n,r as Ft}from"./src-DSbF9mby.js";import{B as pi,C as Xt,I as fi,T as mi,U as yi,_ as bi,a as Ai,c as Ci,d as wi,v as Si,y as mt,z as ki}from"./chunk-ABZYJK2D-C6__zbIg.js";import{t as _i}from"./chunk-EXTU4WIE-B_Um-dIN.js";import"./dist-D-j2KFQ4.js";import{t as Ti}from"./chunk-JA3XYJ7Z-WVXBR9gk.js";function yt(){var e=ui().unknown(void 0),t=e.domain,i=e.range,s=0,a=1,l,g,f=!1,p=0,_=0,L=.5;delete e.unknown;function w(){var b=t().length,v=a<s,D=v?a:s,P=v?s:a;l=(P-D)/Math.max(1,b-p+_*2),f&&(l=Math.floor(l)),D+=(P-D-l*(b-p))*L,g=l*(1-p),f&&(D=Math.round(D),g=Math.round(g));var E=xi(b).map(function(m){return D+l*m});return i(v?E.reverse():E)}return e.domain=function(b){return arguments.length?(t(b),w()):t()},e.range=function(b){return arguments.length?([s,a]=b,s=+s,a=+a,w()):[s,a]},e.rangeRound=function(b){return[s,a]=b,s=+s,a=+a,f=!0,w()},e.bandwidth=function(){return g},e.step=function(){return l},e.round=function(b){return arguments.length?(f=!!b,w()):f},e.padding=function(b){return arguments.length?(p=Math.min(1,_=+b),w()):p},e.paddingInner=function(b){return arguments.length?(p=Math.min(1,b),w()):p},e.paddingOuter=function(b){return arguments.length?(_=+b,w()):_},e.align=function(b){return arguments.length?(L=Math.max(0,Math.min(1,b)),w()):L},e.copy=function(){return yt(t(),[s,a]).round(f).paddingInner(p).paddingOuter(_).align(L)},di.apply(w(),arguments)}var bt=(function(){var e=n(function(h,A,x,u){for(x||(x={}),u=h.length;u--;x[h[u]]=A);return x},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],s=[1,3],a=[1,5],l=[1,6],g=[1,7],f=[1,5,10,12,14,16,18,19,21,23,34,35,36],p=[1,25],_=[1,26],L=[1,28],w=[1,29],b=[1,30],v=[1,31],D=[1,32],P=[1,33],E=[1,34],m=[1,35],T=[1,36],r=[1,37],z=[1,43],O=[1,42],V=[1,47],S=[1,50],c=[1,10,12,14,16,18,19,21,23,34,35,36],M=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],y=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],Y=[1,64],U={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(h,A,x,u,k,o,at){var d=o.length-1;switch(k){case 5:u.setOrientation(o[d]);break;case 9:u.setDiagramTitle(o[d].text.trim());break;case 12:u.setLineData({text:"",type:"text"},o[d]);break;case 13:u.setLineData(o[d-1],o[d]);break;case 14:u.setBarData({text:"",type:"text"},o[d]);break;case 15:u.setBarData(o[d-1],o[d]);break;case 16:this.$=o[d].trim(),u.setAccTitle(this.$);break;case 17:case 18:this.$=o[d].trim(),u.setAccDescription(this.$);break;case 19:this.$=o[d-1];break;case 20:this.$=[Number(o[d-2]),...o[d]];break;case 21:this.$=[Number(o[d])];break;case 22:u.setXAxisTitle(o[d]);break;case 23:u.setXAxisTitle(o[d-1]);break;case 24:u.setXAxisTitle({type:"text",text:""});break;case 25:u.setXAxisBand(o[d]);break;case 26:u.setXAxisRangeData(Number(o[d-2]),Number(o[d]));break;case 27:this.$=o[d-1];break;case 28:this.$=[o[d-2],...o[d]];break;case 29:this.$=[o[d]];break;case 30:u.setYAxisTitle(o[d]);break;case 31:u.setYAxisTitle(o[d-1]);break;case 32:u.setYAxisTitle({type:"text",text:""});break;case 33:u.setYAxisRangeData(Number(o[d-2]),Number(o[d]));break;case 37:this.$={text:o[d],type:"text"};break;case 38:this.$={text:o[d],type:"text"};break;case 39:this.$={text:o[d],type:"markdown"};break;case 40:this.$=o[d];break;case 41:this.$=o[d-1]+""+o[d];break}},"anonymous"),table:[e(t,i,{3:1,4:2,7:4,5:s,34:a,35:l,36:g}),{1:[3]},e(t,i,{4:2,7:4,3:8,5:s,34:a,35:l,36:g}),e(t,i,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:l,36:g}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(f,[2,34]),e(f,[2,35]),e(f,[2,36]),{1:[2,1]},e(t,i,{4:2,7:4,3:21,5:s,34:a,35:l,36:g}),{1:[2,3]},e(f,[2,5]),e(t,[2,7],{4:22,34:a,35:l,36:g}),{11:23,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:39,13:38,24:z,27:O,29:40,30:41,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:45,15:44,27:V,33:46,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:49,17:48,24:S,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{11:52,17:51,24:S,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},{20:[1,53]},{22:[1,54]},e(c,[2,18]),{1:[2,2]},e(c,[2,8]),e(c,[2,9]),e(M,[2,37],{40:55,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r}),e(M,[2,38]),e(M,[2,39]),e(y,[2,40]),e(y,[2,42]),e(y,[2,43]),e(y,[2,44]),e(y,[2,45]),e(y,[2,46]),e(y,[2,47]),e(y,[2,48]),e(y,[2,49]),e(y,[2,50]),e(y,[2,51]),e(c,[2,10]),e(c,[2,22],{30:41,29:56,24:z,27:O}),e(c,[2,24]),e(c,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},e(c,[2,11]),e(c,[2,30],{33:60,27:V}),e(c,[2,32]),{31:[1,61]},e(c,[2,12]),{17:62,24:S},{25:63,27:Y},e(c,[2,14]),{17:65,24:S},e(c,[2,16]),e(c,[2,17]),e(y,[2,41]),e(c,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(c,[2,31]),{27:[1,69]},e(c,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(c,[2,15]),e(c,[2,26]),e(c,[2,27]),{11:59,32:72,37:24,38:p,39:_,40:27,41:L,42:w,43:b,44:v,45:D,46:P,47:E,48:m,49:T,50:r},e(c,[2,33]),e(c,[2,19]),{25:73,27:Y},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(h,A){if(A.recoverable)this.trace(h);else{var x=Error(h);throw x.hash=A,x}},"parseError"),parse:n(function(h){var A=this,x=[0],u=[],k=[null],o=[],at=this.table,d="",rt=0,vt=0,Et=0,ri=2,Mt=1,li=o.slice.call(arguments,1),R=Object.create(this.lexer),X={yy:{}};for(var xt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xt)&&(X.yy[xt]=this.yy[xt]);R.setInput(h,X.yy),X.yy.lexer=R,X.yy.parser=this,R.yylloc===void 0&&(R.yylloc={});var dt=R.yylloc;o.push(dt);var ci=R.options&&R.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gi(B){x.length-=2*B,k.length-=B,o.length-=B}n(gi,"popStack");function It(){var B=u.pop()||R.lex()||Mt;return typeof B!="number"&&(B instanceof Array&&(u=B,B=u.pop()),B=A.symbols_[B]||B),B}n(It,"lex");for(var I,pt,N,$,ft,H={},lt,W,$t,ct;;){if(N=x[x.length-1],this.defaultActions[N]?$=this.defaultActions[N]:(I??(I=It()),$=at[N]&&at[N][I]),$===void 0||!$.length||!$[0]){var Bt="";for(lt in ct=[],at[N])this.terminals_[lt]&<>ri&&ct.push("'"+this.terminals_[lt]+"'");Bt=R.showPosition?"Parse error on line "+(rt+1)+`:
|
|
2
2
|
`+R.showPosition()+`
|
|
3
3
|
Expecting `+ct.join(", ")+", got '"+(this.terminals_[I]||I)+"'":"Parse error on line "+(rt+1)+": Unexpected "+(I==Mt?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(Bt,{text:R.match,token:this.terminals_[I]||I,line:R.yylineno,loc:dt,expected:ct})}if($[0]instanceof Array&&$.length>1)throw Error("Parse Error: multiple actions possible at state: "+N+", token: "+I);switch($[0]){case 1:x.push(I),k.push(R.yytext),o.push(R.yylloc),x.push($[1]),I=null,pt?(I=pt,pt=null):(vt=R.yyleng,d=R.yytext,rt=R.yylineno,dt=R.yylloc,Et>0&&Et--);break;case 2:if(W=this.productions_[$[1]][1],H.$=k[k.length-W],H._$={first_line:o[o.length-(W||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(W||1)].first_column,last_column:o[o.length-1].last_column},ci&&(H._$.range=[o[o.length-(W||1)].range[0],o[o.length-1].range[1]]),ft=this.performAction.apply(H,[d,vt,rt,X.yy,$[1],k,o].concat(li)),ft!==void 0)return ft;W&&(x=x.slice(0,-1*W*2),k=k.slice(0,-1*W),o=o.slice(0,-1*W)),x.push(this.productions_[$[1]][0]),k.push(H.$),o.push(H._$),$t=at[x[x.length-2]][x[x.length-1]],x.push($t);break;case 3:return!0}}return!0},"parse")};U.lexer=(function(){return{EOF:1,parseError:n(function(h,A){if(this.yy.parser)this.yy.parser.parseError(h,A);else throw Error(h)},"parseError"),setInput:n(function(h,A){return this.yy=A||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var h=this._input[0];return this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h,h.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:n(function(h){var A=h.length,x=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-A),this.offset-=A;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),x.length-1&&(this.yylineno-=x.length-1);var k=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:x?(x.length===u.length?this.yylloc.first_column:0)+u[u.length-x.length].length-x[0].length:this.yylloc.first_column-A},this.options.ranges&&(this.yylloc.range=[k[0],k[0]+this.yyleng-A]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(h){this.unput(this.match.slice(h))},"less"),pastInput:n(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var h=this.pastInput(),A=Array(h.length+1).join("-");return h+this.upcomingInput()+`
|
package/dist/index.html
CHANGED
|
@@ -66,18 +66,18 @@
|
|
|
66
66
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
67
67
|
<!-- /TODO -->
|
|
68
68
|
<title>{{ title }}</title>
|
|
69
|
-
<script type="module" crossorigin src="./assets/index-
|
|
69
|
+
<script type="module" crossorigin src="./assets/index-CLnKZIHZ.js"></script>
|
|
70
70
|
<link rel="modulepreload" crossorigin href="./assets/preload-helper-D2MJg03u.js">
|
|
71
71
|
<link rel="modulepreload" crossorigin href="./assets/chunk-LvLJmgfZ.js">
|
|
72
72
|
<link rel="modulepreload" crossorigin href="./assets/react-Bj1aDYRI.js">
|
|
73
73
|
<link rel="modulepreload" crossorigin href="./assets/compiler-runtime-B3qBwwSJ.js">
|
|
74
74
|
<link rel="modulepreload" crossorigin href="./assets/jsx-runtime-Blw4afVn.js">
|
|
75
75
|
<link rel="modulepreload" crossorigin href="./assets/useEventListener-DGjKht0c.js">
|
|
76
|
-
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-
|
|
77
|
-
<link rel="modulepreload" crossorigin href="./assets/precisionRound-
|
|
78
|
-
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-
|
|
79
|
-
<link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-
|
|
80
|
-
<link rel="modulepreload" crossorigin href="./assets/utils-
|
|
76
|
+
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-JieDVWC_.js">
|
|
77
|
+
<link rel="modulepreload" crossorigin href="./assets/precisionRound-CU2C3Vxx.js">
|
|
78
|
+
<link rel="modulepreload" crossorigin href="./assets/defaultLocale-BLne0bXb.js">
|
|
79
|
+
<link rel="modulepreload" crossorigin href="./assets/vega-loader.browser-DXARUlxo.js">
|
|
80
|
+
<link rel="modulepreload" crossorigin href="./assets/utils-BZwMGX81.js">
|
|
81
81
|
<link rel="modulepreload" crossorigin href="./assets/clsx-XrBBnd7s.js">
|
|
82
82
|
<link rel="modulepreload" crossorigin href="./assets/cn-DYvqRARy.js">
|
|
83
83
|
<link rel="modulepreload" crossorigin href="./assets/badge-CwbVR_sO.js">
|
|
@@ -134,102 +134,103 @@
|
|
|
134
134
|
<link rel="modulepreload" crossorigin href="./assets/debounce-BbSyBDA8.js">
|
|
135
135
|
<link rel="modulepreload" crossorigin href="./assets/database-zap-BxfYZ6ML.js">
|
|
136
136
|
<link rel="modulepreload" crossorigin href="./assets/main-BNL5rxQw.js">
|
|
137
|
-
<link rel="modulepreload" crossorigin href="./assets/cells-
|
|
137
|
+
<link rel="modulepreload" crossorigin href="./assets/cells-BVG4a-Qn.js">
|
|
138
138
|
<link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-dxChUL02.js">
|
|
139
139
|
<link rel="modulepreload" crossorigin href="./assets/kbd-BUtlbGdu.js">
|
|
140
140
|
<link rel="modulepreload" crossorigin href="./assets/useInstallPackage-CeM6oPsT.js">
|
|
141
141
|
<link rel="modulepreload" crossorigin href="./assets/alert-dialog-CXspBRlP.js">
|
|
142
|
-
<link rel="modulepreload" crossorigin href="./assets/dialog-
|
|
142
|
+
<link rel="modulepreload" crossorigin href="./assets/dialog-BYjetQgE.js">
|
|
143
143
|
<link rel="modulepreload" crossorigin href="./assets/useDebounce-LVL1r3-M.js">
|
|
144
|
-
<link rel="modulepreload" crossorigin href="./assets/numbers--
|
|
144
|
+
<link rel="modulepreload" crossorigin href="./assets/numbers--nDjbAPa.js">
|
|
145
145
|
<link rel="modulepreload" crossorigin href="./assets/SSRProvider-D3zWcDme.js">
|
|
146
|
-
<link rel="modulepreload" crossorigin href="./assets/context-
|
|
147
|
-
<link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-
|
|
148
|
-
<link rel="modulepreload" crossorigin href="./assets/usePress-
|
|
149
|
-
<link rel="modulepreload" crossorigin href="./assets/input-
|
|
150
|
-
<link rel="modulepreload" crossorigin href="./assets/ImperativeModal-
|
|
151
|
-
<link rel="modulepreload" crossorigin href="./assets/cell-link-
|
|
146
|
+
<link rel="modulepreload" crossorigin href="./assets/context-DGqo1TbK.js">
|
|
147
|
+
<link rel="modulepreload" crossorigin href="./assets/useNumberFormatter-wQU1z0W_.js">
|
|
148
|
+
<link rel="modulepreload" crossorigin href="./assets/usePress-BXMIcLWP.js">
|
|
149
|
+
<link rel="modulepreload" crossorigin href="./assets/input-Bg12i6qY.js">
|
|
150
|
+
<link rel="modulepreload" crossorigin href="./assets/ImperativeModal-DoGv2BXV.js">
|
|
151
|
+
<link rel="modulepreload" crossorigin href="./assets/cell-link-Dtonmtv_.js">
|
|
152
152
|
<link rel="modulepreload" crossorigin href="./assets/multi-map-MSuUqmbC.js">
|
|
153
153
|
<link rel="modulepreload" crossorigin href="./assets/alert-DF3HbVtk.js">
|
|
154
154
|
<link rel="modulepreload" crossorigin href="./assets/chevron-right-CgvDWFE3.js">
|
|
155
155
|
<link rel="modulepreload" crossorigin href="./assets/dropdown-menu-DrHAuMTb.js">
|
|
156
156
|
<link rel="modulepreload" crossorigin href="./assets/links-DOybeRem.js">
|
|
157
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
158
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
159
|
-
<link rel="modulepreload" crossorigin href="./assets/sparkles-B79Qf6ma.js">
|
|
160
|
-
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-C3-dwG-M.js">
|
|
161
|
-
<link rel="modulepreload" crossorigin href="./assets/copy-Acb9G8ns.js">
|
|
157
|
+
<link rel="modulepreload" crossorigin href="./assets/useRunCells-q5CA-QoL.js">
|
|
158
|
+
<link rel="modulepreload" crossorigin href="./assets/copy-Bizk-4hH.js">
|
|
162
159
|
<link rel="modulepreload" crossorigin href="./assets/copy-DFMsQ6MJ.js">
|
|
163
|
-
<link rel="modulepreload" crossorigin href="./assets/copy-icon-
|
|
160
|
+
<link rel="modulepreload" crossorigin href="./assets/copy-icon-BGs1Pbai.js">
|
|
161
|
+
<link rel="modulepreload" crossorigin href="./assets/RenderHTML-BOW_1WUn.js">
|
|
162
|
+
<link rel="modulepreload" crossorigin href="./assets/datasource-BzTPyEw3.js">
|
|
163
|
+
<link rel="modulepreload" crossorigin href="./assets/state-Blw6taKi.js">
|
|
164
|
+
<link rel="modulepreload" crossorigin href="./assets/sparkles-B79Qf6ma.js">
|
|
165
|
+
<link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-Cyd8ikG3.js">
|
|
164
166
|
<link rel="modulepreload" crossorigin href="./assets/spinner-C5wIpWgQ.js">
|
|
165
|
-
<link rel="modulepreload" crossorigin href="./assets/html-to-image-
|
|
166
|
-
<link rel="modulepreload" crossorigin href="./assets/focus-
|
|
167
|
-
<link rel="modulepreload" crossorigin href="./assets/useAsyncData-
|
|
168
|
-
<link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-
|
|
167
|
+
<link rel="modulepreload" crossorigin href="./assets/html-to-image-B3VySJ1_.js">
|
|
168
|
+
<link rel="modulepreload" crossorigin href="./assets/focus-BHXzPxK_.js">
|
|
169
|
+
<link rel="modulepreload" crossorigin href="./assets/useAsyncData-aCoWDe-l.js">
|
|
170
|
+
<link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-CoYqQxHb.js">
|
|
169
171
|
<link rel="modulepreload" crossorigin href="./assets/micromark-factory-space-DzSMahmM.js">
|
|
170
172
|
<link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-Cyc7d5AB.js">
|
|
171
|
-
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-
|
|
172
|
-
<link rel="modulepreload" crossorigin href="./assets/command-
|
|
173
|
+
<link rel="modulepreload" crossorigin href="./assets/markdown-renderer-BiKTlki_.js">
|
|
174
|
+
<link rel="modulepreload" crossorigin href="./assets/command-DvF_4mQa.js">
|
|
173
175
|
<link rel="modulepreload" crossorigin href="./assets/popover-AtoFZ7i4.js">
|
|
174
|
-
<link rel="modulepreload" crossorigin href="./assets/errors-
|
|
175
|
-
<link rel="modulepreload" crossorigin href="./assets/download-
|
|
176
|
-
<link rel="modulepreload" crossorigin href="./assets/useRunCells-a5YC9YVQ.js">
|
|
177
|
-
<link rel="modulepreload" crossorigin href="./assets/RenderHTML-Cyj8OBbz.js">
|
|
176
|
+
<link rel="modulepreload" crossorigin href="./assets/errors-CZb6hI2x.js">
|
|
177
|
+
<link rel="modulepreload" crossorigin href="./assets/download-QIfZjflb.js">
|
|
178
178
|
<link rel="modulepreload" crossorigin href="./assets/table-B03CpBmt.js">
|
|
179
179
|
<link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-C8jvQ1Lj.js">
|
|
180
|
-
<link rel="modulepreload" crossorigin href="./assets/error-banner-
|
|
181
|
-
<link rel="modulepreload" crossorigin href="./assets/formats-
|
|
180
|
+
<link rel="modulepreload" crossorigin href="./assets/error-banner-bXc_9BBZ.js">
|
|
181
|
+
<link rel="modulepreload" crossorigin href="./assets/formats-BQHP_yQk.js">
|
|
182
182
|
<link rel="modulepreload" crossorigin href="./assets/en-US-JRtp5zfw.js">
|
|
183
183
|
<link rel="modulepreload" crossorigin href="./assets/isValid-U-UFA9KI.js">
|
|
184
184
|
<link rel="modulepreload" crossorigin href="./assets/dates-stqTIkXD.js">
|
|
185
185
|
<link rel="modulepreload" crossorigin href="./assets/maps-B4xARV9R.js">
|
|
186
186
|
<link rel="modulepreload" crossorigin href="./assets/extends-Co37_JfG.js">
|
|
187
187
|
<link rel="modulepreload" crossorigin href="./assets/emotion-is-prop-valid.esm-DYxi7n2b.js">
|
|
188
|
-
<link rel="modulepreload" crossorigin href="./assets/useDateFormatter-
|
|
189
|
-
<link rel="modulepreload" crossorigin href="./assets/react-icons.esm-
|
|
188
|
+
<link rel="modulepreload" crossorigin href="./assets/useDateFormatter-BEz9SEXo.js">
|
|
189
|
+
<link rel="modulepreload" crossorigin href="./assets/react-icons.esm-BUYTQ32a.js">
|
|
190
190
|
<link rel="modulepreload" crossorigin href="./assets/toFinite-2vTWYoIX.js">
|
|
191
191
|
<link rel="modulepreload" crossorigin href="./assets/range-D-0CV4c0.js">
|
|
192
192
|
<link rel="modulepreload" crossorigin href="./assets/table-qC3alE1r.js">
|
|
193
|
+
<link rel="modulepreload" crossorigin href="./assets/ellipsis-DidENKDy.js">
|
|
193
194
|
<link rel="modulepreload" crossorigin href="./assets/message-circle-DiHwtSG8.js">
|
|
194
195
|
<link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-BUNcfKXO.js">
|
|
195
|
-
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-
|
|
196
|
+
<link rel="modulepreload" crossorigin href="./assets/JsonOutput-Bk2by9qo.js">
|
|
196
197
|
<link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-CsXoiEZx.js">
|
|
197
198
|
<link rel="modulepreload" crossorigin href="./assets/square-function-BecUoMho.js">
|
|
198
199
|
<link rel="modulepreload" crossorigin href="./assets/spec-DqqZbNbU.js">
|
|
199
200
|
<link rel="modulepreload" crossorigin href="./assets/ellipsis-vertical-DEH0lwkn.js">
|
|
200
201
|
<link rel="modulepreload" crossorigin href="./assets/refresh-cw-CiOe0azG.js">
|
|
201
|
-
<link rel="modulepreload" crossorigin href="./assets/components-
|
|
202
|
-
<link rel="modulepreload" crossorigin href="./assets/column-preview-
|
|
202
|
+
<link rel="modulepreload" crossorigin href="./assets/components-DiALLQRt.js">
|
|
203
|
+
<link rel="modulepreload" crossorigin href="./assets/column-preview-CB_HZPdz.js">
|
|
203
204
|
<link rel="modulepreload" crossorigin href="./assets/icons-DlzgV4KY.js">
|
|
204
|
-
<link rel="modulepreload" crossorigin href="./assets/floating-outline-
|
|
205
|
-
<link rel="modulepreload" crossorigin href="./assets/useAddCell-
|
|
205
|
+
<link rel="modulepreload" crossorigin href="./assets/floating-outline-BluCz3vD.js">
|
|
206
|
+
<link rel="modulepreload" crossorigin href="./assets/useAddCell-g3zSMJKs.js">
|
|
206
207
|
<link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-smPWkHxB.js">
|
|
207
208
|
<link rel="modulepreload" crossorigin href="./assets/esm-BqofWdD5.js">
|
|
208
209
|
<link rel="modulepreload" crossorigin href="./assets/eye-off-DgRJ-xBZ.js">
|
|
209
210
|
<link rel="modulepreload" crossorigin href="./assets/plus-BYq_Btg-.js">
|
|
210
|
-
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-
|
|
211
|
+
<link rel="modulepreload" crossorigin href="./assets/readonly-python-code-DuH_nOq_.js">
|
|
211
212
|
<link rel="modulepreload" crossorigin href="./assets/file-headphone-5_PGMxRL.js">
|
|
212
213
|
<link rel="modulepreload" crossorigin href="./assets/file-l37OnSN4.js">
|
|
213
214
|
<link rel="modulepreload" crossorigin href="./assets/image-BgkzrnsX.js">
|
|
214
|
-
<link rel="modulepreload" crossorigin href="./assets/file-icons-
|
|
215
|
+
<link rel="modulepreload" crossorigin href="./assets/file-icons-ma7AC7Pi.js">
|
|
215
216
|
<link rel="modulepreload" crossorigin href="./assets/switch-C2idsSNO.js">
|
|
216
217
|
<link rel="modulepreload" crossorigin href="./assets/events-Qeh-bHlj.js">
|
|
217
218
|
<link rel="modulepreload" crossorigin href="./assets/globals-Bh85lAn7.js">
|
|
218
|
-
<link rel="modulepreload" crossorigin href="./assets/share-
|
|
219
|
-
<link rel="modulepreload" crossorigin href="./assets/blob-
|
|
219
|
+
<link rel="modulepreload" crossorigin href="./assets/share-0LPgOyiW.js">
|
|
220
|
+
<link rel="modulepreload" crossorigin href="./assets/blob-CTort_or.js">
|
|
220
221
|
<link rel="modulepreload" crossorigin href="./assets/memoize-BwAF2XN5.js">
|
|
221
222
|
<link rel="modulepreload" crossorigin href="./assets/get-D7jeR2wg.js">
|
|
222
223
|
<link rel="modulepreload" crossorigin href="./assets/_baseSet-49dbm-yb.js">
|
|
223
|
-
<link rel="modulepreload" crossorigin href="./assets/state-
|
|
224
|
+
<link rel="modulepreload" crossorigin href="./assets/state-urfwd716.js">
|
|
224
225
|
<link rel="modulepreload" crossorigin href="./assets/label-C89F4v17.js">
|
|
225
|
-
<link rel="modulepreload" crossorigin href="./assets/textarea-
|
|
226
|
+
<link rel="modulepreload" crossorigin href="./assets/textarea-B5p9_myy.js">
|
|
226
227
|
<link rel="modulepreload" crossorigin href="./assets/refresh-ccw-CfYqAbmq.js">
|
|
227
228
|
<link rel="modulepreload" crossorigin href="./assets/trash-2-DunI72kV.js">
|
|
228
|
-
<link rel="modulepreload" crossorigin href="./assets/form-
|
|
229
|
+
<link rel="modulepreload" crossorigin href="./assets/form-C0W8wa3f.js">
|
|
229
230
|
<link rel="modulepreload" crossorigin href="./assets/renderShortcut-DrDh2657.js">
|
|
230
|
-
<link rel="modulepreload" crossorigin href="./assets/field-
|
|
231
|
-
<link rel="modulepreload" crossorigin href="./assets/
|
|
232
|
-
<link rel="modulepreload" crossorigin href="./assets/useBoolean-
|
|
231
|
+
<link rel="modulepreload" crossorigin href="./assets/field-DTzXkFLZ.js">
|
|
232
|
+
<link rel="modulepreload" crossorigin href="./assets/RSPContexts-LWFBF00h.js">
|
|
233
|
+
<link rel="modulepreload" crossorigin href="./assets/useBoolean-ugd5JdXd.js">
|
|
233
234
|
<link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-D0WTlCXt.js">
|
|
234
235
|
<link rel="modulepreload" crossorigin href="./assets/types-BteCqkNg.js">
|
|
235
236
|
<link rel="modulepreload" crossorigin href="./assets/fileToBase64-D7Ur9Qxq.js">
|
|
@@ -245,7 +246,7 @@
|
|
|
245
246
|
<link rel="stylesheet" crossorigin href="./assets/cells-jmgGt1lS.css">
|
|
246
247
|
<link rel="stylesheet" crossorigin href="./assets/markdown-renderer-DdDKmWlR.css">
|
|
247
248
|
<link rel="stylesheet" crossorigin href="./assets/JsonOutput-B7vuddcd.css">
|
|
248
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
249
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DBs2il8a.css">
|
|
249
250
|
</head>
|
|
250
251
|
<body>
|
|
251
252
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marimo-team/frontend",
|
|
3
|
-
"version": "0.22.5-
|
|
3
|
+
"version": "0.22.5-dev21",
|
|
4
4
|
"main": "dist/main.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"marked": "^15.0.12",
|
|
121
121
|
"mermaid": "^11.12.3",
|
|
122
122
|
"partysocket": "1.1.10",
|
|
123
|
-
"path-to-regexp": "^8.
|
|
123
|
+
"path-to-regexp": "^8.4.0",
|
|
124
124
|
"plotly.js": "^3.3.1",
|
|
125
125
|
"pyodide": "0.27.7",
|
|
126
126
|
"react-arborist": "^3.4.3",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import type { Column } from "@tanstack/react-table";
|
|
4
|
-
import { render } from "@testing-library/react";
|
|
4
|
+
import { fireEvent, render } from "@testing-library/react";
|
|
5
5
|
import { I18nProvider } from "react-aria";
|
|
6
|
-
import { describe, expect, it, test } from "vitest";
|
|
6
|
+
import { describe, expect, it, test, vi } from "vitest";
|
|
7
7
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
8
8
|
import { parseContent } from "@/utils/url-parser";
|
|
9
9
|
import {
|
|
@@ -312,7 +312,7 @@ describe("generateColumns", () => {
|
|
|
312
312
|
expect(cell?.props.className).toContain("center");
|
|
313
313
|
});
|
|
314
314
|
|
|
315
|
-
it("should
|
|
315
|
+
it("should always left-align column headers regardless of text justification", () => {
|
|
316
316
|
const columns = generateColumns({
|
|
317
317
|
rowHeaders: [],
|
|
318
318
|
selection: null,
|
|
@@ -330,33 +330,112 @@ describe("generateColumns", () => {
|
|
|
330
330
|
columnDef: { meta: col.meta },
|
|
331
331
|
});
|
|
332
332
|
|
|
333
|
-
//
|
|
333
|
+
// Even with right justification, header is left-aligned with sort + menu buttons
|
|
334
334
|
const { container: rightContainer } = render(
|
|
335
335
|
<TooltipProvider>
|
|
336
336
|
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
337
337
|
{(columns[0].header as any)({ column: mockColumn(columns[0]) })}
|
|
338
338
|
</TooltipProvider>,
|
|
339
339
|
);
|
|
340
|
+
expect(
|
|
341
|
+
rightContainer.querySelector("[data-testid='data-table-sort-button']"),
|
|
342
|
+
).toBeTruthy();
|
|
343
|
+
expect(
|
|
344
|
+
rightContainer.querySelector(
|
|
345
|
+
"[data-testid='data-table-column-menu-button']",
|
|
346
|
+
),
|
|
347
|
+
).toBeTruthy();
|
|
348
|
+
// No flex-row-reverse or items-end on header
|
|
340
349
|
const rightWrapper = rightContainer.firstElementChild;
|
|
341
|
-
expect(rightWrapper?.className).toContain("items-end");
|
|
342
|
-
|
|
343
|
-
"[data-testid='data-table-sort-button']",
|
|
344
|
-
);
|
|
345
|
-
expect(rightHeader?.className).toContain("flex-row-reverse");
|
|
350
|
+
expect(rightWrapper?.className).not.toContain("items-end");
|
|
351
|
+
expect(rightWrapper?.className).not.toContain("flex-row-reverse");
|
|
346
352
|
|
|
347
|
-
//
|
|
353
|
+
// Same for center-justified column
|
|
348
354
|
const { container: centerContainer } = render(
|
|
349
355
|
<TooltipProvider>
|
|
350
356
|
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
351
357
|
{(columns[1].header as any)({ column: mockColumn(columns[1]) })}
|
|
352
358
|
</TooltipProvider>,
|
|
353
359
|
);
|
|
360
|
+
expect(
|
|
361
|
+
centerContainer.querySelector("[data-testid='data-table-sort-button']"),
|
|
362
|
+
).toBeTruthy();
|
|
363
|
+
expect(
|
|
364
|
+
centerContainer.querySelector(
|
|
365
|
+
"[data-testid='data-table-column-menu-button']",
|
|
366
|
+
),
|
|
367
|
+
).toBeTruthy();
|
|
354
368
|
const centerWrapper = centerContainer.firstElementChild;
|
|
355
|
-
expect(centerWrapper?.className).toContain("items-center");
|
|
356
|
-
|
|
369
|
+
expect(centerWrapper?.className).not.toContain("items-center");
|
|
370
|
+
expect(centerWrapper?.className).not.toContain("flex-row-reverse");
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
it("should cycle sort button through asc, desc, and clear on clicks", () => {
|
|
374
|
+
const columns = generateColumns({
|
|
375
|
+
rowHeaders: [],
|
|
376
|
+
selection: null,
|
|
377
|
+
fieldTypes,
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
const toggleSorting = vi.fn();
|
|
381
|
+
const clearSorting = vi.fn();
|
|
382
|
+
let sortDirection: false | "asc" | "desc" = false;
|
|
383
|
+
|
|
384
|
+
const mockColumn = (col: (typeof columns)[number]) => ({
|
|
385
|
+
id: col.id,
|
|
386
|
+
getCanSort: () => true,
|
|
387
|
+
getCanFilter: () => false,
|
|
388
|
+
getIsSorted: () => sortDirection,
|
|
389
|
+
getSortIndex: () => -1,
|
|
390
|
+
getFilterValue: () => undefined,
|
|
391
|
+
toggleSorting,
|
|
392
|
+
clearSorting,
|
|
393
|
+
columnDef: { meta: col.meta },
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
const mock = mockColumn(columns[0]);
|
|
397
|
+
|
|
398
|
+
const { container, rerender } = render(
|
|
399
|
+
<TooltipProvider>
|
|
400
|
+
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
401
|
+
{(columns[0].header as any)({ column: mock })}
|
|
402
|
+
</TooltipProvider>,
|
|
403
|
+
);
|
|
404
|
+
|
|
405
|
+
const sortButton = container.querySelector(
|
|
357
406
|
"[data-testid='data-table-sort-button']",
|
|
358
407
|
);
|
|
359
|
-
expect(
|
|
408
|
+
expect(sortButton).toBeTruthy();
|
|
409
|
+
|
|
410
|
+
// first click unsorted > asc
|
|
411
|
+
fireEvent.click(sortButton!);
|
|
412
|
+
expect(toggleSorting).toHaveBeenCalledWith(false, true);
|
|
413
|
+
|
|
414
|
+
// Simulate asc state and re-render
|
|
415
|
+
sortDirection = "asc";
|
|
416
|
+
rerender(
|
|
417
|
+
<TooltipProvider>
|
|
418
|
+
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
419
|
+
{(columns[0].header as any)({ column: mock })}
|
|
420
|
+
</TooltipProvider>,
|
|
421
|
+
);
|
|
422
|
+
|
|
423
|
+
// second click asc >dsc
|
|
424
|
+
fireEvent.click(sortButton!);
|
|
425
|
+
expect(toggleSorting).toHaveBeenCalledWith(true, true);
|
|
426
|
+
|
|
427
|
+
// Simulate desc state and re-render
|
|
428
|
+
sortDirection = "desc";
|
|
429
|
+
rerender(
|
|
430
|
+
<TooltipProvider>
|
|
431
|
+
{/* oxlint-disable-next-line typescript/no-explicit-any */}
|
|
432
|
+
{(columns[0].header as any)({ column: mock })}
|
|
433
|
+
</TooltipProvider>,
|
|
434
|
+
);
|
|
435
|
+
|
|
436
|
+
// third click back to unsorted
|
|
437
|
+
fireEvent.click(sortButton!);
|
|
438
|
+
expect(clearSorting).toHaveBeenCalled();
|
|
360
439
|
});
|
|
361
440
|
|
|
362
441
|
it("should not include index column if it exists", () => {
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
"use no memo";
|
|
3
3
|
|
|
4
4
|
import type { Column, Table } from "@tanstack/react-table";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
EllipsisIcon,
|
|
7
|
+
FilterIcon,
|
|
8
|
+
MinusIcon,
|
|
9
|
+
TextIcon,
|
|
10
|
+
XIcon,
|
|
11
|
+
} from "lucide-react";
|
|
6
12
|
import { useMemo, useRef, useState } from "react";
|
|
7
13
|
import { useLocale } from "react-aria";
|
|
8
14
|
import {
|
|
@@ -69,7 +75,7 @@ interface DataTableColumnHeaderProps<
|
|
|
69
75
|
> extends React.HTMLAttributes<HTMLDivElement> {
|
|
70
76
|
column: Column<TData, TValue>;
|
|
71
77
|
header: React.ReactNode;
|
|
72
|
-
|
|
78
|
+
subheader?: React.ReactNode;
|
|
73
79
|
calculateTopKRows?: CalculateTopKRows;
|
|
74
80
|
table?: Table<TData>;
|
|
75
81
|
}
|
|
@@ -77,7 +83,7 @@ interface DataTableColumnHeaderProps<
|
|
|
77
83
|
export const DataTableColumnHeader = <TData, TValue>({
|
|
78
84
|
column,
|
|
79
85
|
header,
|
|
80
|
-
|
|
86
|
+
subheader,
|
|
81
87
|
className,
|
|
82
88
|
calculateTopKRows,
|
|
83
89
|
table,
|
|
@@ -92,49 +98,51 @@ export const DataTableColumnHeader = <TData, TValue>({
|
|
|
92
98
|
|
|
93
99
|
// No sorting or filtering
|
|
94
100
|
if (!column.getCanSort() && !column.getCanFilter()) {
|
|
95
|
-
return
|
|
101
|
+
return (
|
|
102
|
+
<div className={cn(className)}>
|
|
103
|
+
{header}
|
|
104
|
+
{subheader}
|
|
105
|
+
</div>
|
|
106
|
+
);
|
|
96
107
|
}
|
|
97
108
|
|
|
98
109
|
const hasFilter = column.getFilterValue() !== undefined;
|
|
99
|
-
const hideIcon = !column.getIsSorted() && !hasFilter;
|
|
100
110
|
|
|
101
111
|
return (
|
|
102
112
|
<>
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
>
|
|
121
|
-
{
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
</DropdownMenuContent>
|
|
137
|
-
</DropdownMenu>
|
|
113
|
+
<div
|
|
114
|
+
className={cn("group flex flex-col my-1 w-full select-none", className)}
|
|
115
|
+
>
|
|
116
|
+
<div className="flex items-center gap-1">
|
|
117
|
+
<span>{header}</span>
|
|
118
|
+
{column.getCanSort() && <SortButton column={column} />}
|
|
119
|
+
<DropdownMenu modal={false}>
|
|
120
|
+
<DropdownMenuTrigger asChild={true}>
|
|
121
|
+
<button
|
|
122
|
+
type="button"
|
|
123
|
+
className="inline-flex items-center justify-center h-5 w-5 rounded hover:bg-(--slate-4) text-muted-foreground opacity-0 group-hover:opacity-100 focus:opacity-100 group-focus-within:opacity-100 data-[state=open]:opacity-100 data-[state=open]:text-accent-foreground"
|
|
124
|
+
aria-label="Column options"
|
|
125
|
+
data-testid="data-table-column-menu-button"
|
|
126
|
+
>
|
|
127
|
+
<EllipsisIcon className="h-3.5 w-3.5" />
|
|
128
|
+
</button>
|
|
129
|
+
</DropdownMenuTrigger>
|
|
130
|
+
<DropdownMenuContent align="start">
|
|
131
|
+
{renderDataType(column)}
|
|
132
|
+
{renderSorts(column, table)}
|
|
133
|
+
{renderCopyColumn(column)}
|
|
134
|
+
{renderColumnPinning(column)}
|
|
135
|
+
{renderColumnWrapping(column)}
|
|
136
|
+
{renderFormatOptions(column, locale)}
|
|
137
|
+
<DropdownMenuSeparator />
|
|
138
|
+
{renderMenuItemFilter(column)}
|
|
139
|
+
{renderFilterByValues(column, setIsFilterValueOpen)}
|
|
140
|
+
{hasFilter && <ClearFilterMenuItem column={column} />}
|
|
141
|
+
</DropdownMenuContent>
|
|
142
|
+
</DropdownMenu>
|
|
143
|
+
</div>
|
|
144
|
+
{subheader}
|
|
145
|
+
</div>
|
|
138
146
|
{isFilterValueOpen && (
|
|
139
147
|
<PopoverFilterByValues
|
|
140
148
|
setIsFilterValueOpen={setIsFilterValueOpen}
|
|
@@ -146,28 +154,45 @@ export const DataTableColumnHeader = <TData, TValue>({
|
|
|
146
154
|
);
|
|
147
155
|
};
|
|
148
156
|
|
|
149
|
-
|
|
157
|
+
const SortButton = <TData, TValue>({
|
|
150
158
|
column,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
className,
|
|
154
|
-
}: DataTableColumnHeaderProps<TData, TValue> & {
|
|
155
|
-
summary: React.ReactNode;
|
|
159
|
+
}: {
|
|
160
|
+
column: Column<TData, TValue>;
|
|
156
161
|
}) => {
|
|
162
|
+
const sortDirection = column.getIsSorted();
|
|
163
|
+
|
|
164
|
+
const handleClick = (e: React.MouseEvent) => {
|
|
165
|
+
e.stopPropagation();
|
|
166
|
+
if (!sortDirection) {
|
|
167
|
+
column.toggleSorting(false, true); // asc
|
|
168
|
+
} else if (sortDirection === "asc") {
|
|
169
|
+
column.toggleSorting(true, true); // desc
|
|
170
|
+
} else {
|
|
171
|
+
column.clearSorting();
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
157
175
|
return (
|
|
158
|
-
<
|
|
176
|
+
<button
|
|
177
|
+
type="button"
|
|
178
|
+
onClick={handleClick}
|
|
159
179
|
className={cn(
|
|
160
|
-
"flex
|
|
161
|
-
|
|
180
|
+
"inline-flex items-center justify-center h-5 w-5 rounded hover:bg-(--slate-4)",
|
|
181
|
+
sortDirection
|
|
182
|
+
? "text-accent-foreground"
|
|
183
|
+
: "text-muted-foreground opacity-0 group-hover:opacity-100 focus:opacity-100 group-focus-within:opacity-100",
|
|
162
184
|
)}
|
|
185
|
+
aria-label={
|
|
186
|
+
sortDirection === "asc"
|
|
187
|
+
? "Sorted ascending, click to sort descending"
|
|
188
|
+
: sortDirection === "desc"
|
|
189
|
+
? "Sorted descending, click to clear sort"
|
|
190
|
+
: "Sort column ascending"
|
|
191
|
+
}
|
|
192
|
+
data-testid="data-table-sort-button"
|
|
163
193
|
>
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
header={header}
|
|
167
|
-
className={className}
|
|
168
|
-
/>
|
|
169
|
-
{summary}
|
|
170
|
-
</div>
|
|
194
|
+
{renderSortFilterIcon(column)}
|
|
195
|
+
</button>
|
|
171
196
|
);
|
|
172
197
|
};
|
|
173
198
|
|