Compare commits
10 commits
df53857426
...
5ef9f17436
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ef9f17436 | |||
| b38d0cc149 | |||
| 3951f91901 | |||
| 0006419b08 | |||
| a059adbd34 | |||
| d08de3d2b4 | |||
| 75cd9752a4 | |||
| 852ab87b0b | |||
| dcfb500a5f | |||
| 95c34fb431 |
278
= filter.clone();
Normal file
|
|
@ -0,0 +1,278 @@
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mlogo[0m[38;2;166;226;46m.[0m[38;2;166;226;46mvanilla[0m[38;2;166;226;46m:[0m[38;2;166;226;46mhover[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfilter[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mdrop-shadow[0m[38;2;255;255;255m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m[38;2;249;38;114mem[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255mffe21c[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m:[0m[38;2;166;226;46mroot[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m2f2f2f[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46mhighlight-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m3f3f3f[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46mbright-highlight-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m4f4f4f[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255mf6f6f6[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46maccent-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m5f5f5f[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46msidebar-width[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m3[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m--[0m[38;2;166;226;46mfiletree-width[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m10[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfont-family[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;230;219;116mAvenir[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116mHelvetica[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;230;219;116mArial[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;102;217;239msans-serif[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfont-size[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m30[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mline-height[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m24[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255mf6f6f6[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfont-synthesis[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-rendering[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239moptimizeLegibility[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m-webkit-[0m[38;2;102;217;239mfont-smoothing[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mantialiased[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m-moz-[0m[38;2;248;248;242mosx-[0m[38;2;102;217;239mfont-smoothing[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mgrayscale[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m-webkit-[0m[38;2;248;248;242mtext-[0m[38;2;102;217;239msize[0m[38;2;248;248;242m-adjust[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114m*[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbox-sizing[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mborder-box[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mpadding[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mcontainer[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmax-width[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mpadding-top[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114mvh[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mdisplay[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mflex[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mflex-direction[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mrow[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239malign-items[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mstretch[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mmain_editor[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfont-size[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m16[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mline-height[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m18[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mdisplay[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mflex[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfloat[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mright[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhidden[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mcol[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mflex[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m49[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mpadding[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m5[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m margin: .1em; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin-left[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m1[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msolid[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mhighlight-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m border-radius: .5em; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mmarkdown_input[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mgrid-column[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mgrid-row[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow-x[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mwrap[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow-y[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mscroll[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mrendered_markdown[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mgrid-column[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mgrid-row[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[38;2;248;248;242mimg[0m[38;2;248;248;242m {[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114moverflow-x[0m[38;2;248;248;242m: wrap;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;249;38;114moverflow-y[0m[38;2;248;248;242m: scroll;[0m
|
||||||
|
[38;2;248;248;242m}[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mh1[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mline-height[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m18[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin-top[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m067[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin-bottom[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m067[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mred[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mli[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m line-height: 0.1em; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin-left[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mpadding[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46msidebar_button[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46msidebar_icon[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mtop-bar[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mdisplay[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mflex[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mflex-direction[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mrow[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mtopbar_button[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m2[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtransparent[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mtopbar_icon[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtransparent[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114m@[0m[38;2;249;38;114mmedia[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mprefers-[0m[38;2;166;226;46mcolor[0m[38;2;248;248;242m-scheme: dark[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;166;226;46m:[0m[38;2;166;226;46mroot[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255mf6f6f6[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mmain-bg-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;255;255;255m}[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mmain[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mdisplay[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mflex[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m95[0m[38;2;249;38;114mvh[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mflex-direction[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mcolumn[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17msidebar[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mvisibility[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvisible[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46msidebar-width[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtransition[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mall[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m1[0m[38;2;249;38;114ms[0m[38;2;248;248;242m [0m[38;2;102;217;239mease-out[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfloat[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfloat[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msolid[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mhighlight-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mfiletree-width[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow-x[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mscroll[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m overflow-y: scroll; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow-y[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhidden[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-overflow[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mellipsis[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mresize[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhorizontal[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree-directory-button[0m[38;2;248;248;242m,[0m
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree-file-button[0m[38;2;248;248;242m,[0m
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfile-search-button[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtransparent[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m100[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239minherit[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtransition[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mall[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m01[0m[38;2;249;38;114ms[0m[38;2;248;248;242m [0m[38;2;102;217;239mease-out[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwhite-space[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnowrap[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m overflow-y: visible; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow-y[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhidden[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhidden[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-overflow[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mellipsis[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree-node[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin-left[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow-y[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhidden[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree-icon[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;249;38;114mem[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtransparent[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin-right[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m5[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree_expand[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtransparent[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree-file-button[0m[38;2;166;226;46m:[0m[38;2;166;226;46mhover[0m[38;2;248;248;242m,[0m
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mfiletree-directory-button[0m[38;2;166;226;46m:[0m[38;2;166;226;46mhover[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mhighlight-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m Green [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;249;38;114mdialog[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mposition[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mabsolute[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtop[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtransform[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtranslate[0m[38;2;255;255;255m([0m[38;2;190;132;255m-50[0m[38;2;249;38;114m%[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m-50[0m[38;2;249;38;114m%[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m!important[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mhighlight-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-radius[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m10[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbox-shadow[0m[38;2;255;255;255m:[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m0000[0m[38;2;248;248;242m,[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m0000[0m[38;2;248;248;242m,[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m [0m[38;2;190;132;255m25[0m[38;2;249;38;114mpx[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m[38;2;249;38;114mpx[0m[38;2;248;248;242m [0m[38;2;190;132;255m-12[0m[38;2;249;38;114mpx[0m[38;2;248;248;242m [0m[38;2;102;217;239mrgba[0m[38;2;255;255;255m([0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m,[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m25[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m50[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mheight[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m20[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mmargin[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mauto[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m display: flex; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m flex-direction: column; [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mhidden[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfont-size[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;190;132;255m.[0m[38;2;190;132;255m5[0m[38;2;249;38;114mcm[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mrow[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mdisplay[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mflex[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mjustify-content[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mspace-between[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mbutton[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mbackground-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46maccent-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;117;113;94m/*[0m[38;2;117;113;94m Green [0m[38;2;117;113;94m*/[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mwhite[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msolid[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mtransparent[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mpadding[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m5[0m[38;2;249;38;114mpx[0m[38;2;248;248;242m [0m[38;2;190;132;255m3[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mcenter[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mtext-decoration[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mnone[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mdisplay[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239minline-block[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mfont-size[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m16[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mbutton[0m[38;2;166;226;46m:[0m[38;2;166;226;46mhover[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msolid[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mbright-highlight-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46mbutton[0m[38;2;166;226;46m:[0m[38;2;166;226;46mactive[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msolid[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mwhite[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;166;226;46m.[0m[38;2;166;226;46minput-field[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msolid[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-color[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46maccent-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mcolor[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mvar[0m[38;2;255;255;255m([0m[38;2;166;226;46m--[0m[38;2;166;226;46mtext-color[0m[38;2;255;255;255m)[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mknowledgebase-button[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m19[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mknowledgebase-path[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mwidth[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m80[0m[38;2;249;38;114m%[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mfile-search-dialog-input[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-top-right-radius[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m10[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mborder-top-left-radius[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m10[0m[38;2;249;38;114mpx[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
|
|
||||||
|
[38;2;246;170;17m#[0m[38;2;246;170;17mfile-search-results[0m[38;2;248;248;242m [0m[38;2;255;255;255m{[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239moverflow[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mscroll[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mgrid-column[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;248;248;242m [0m[38;2;102;217;239mgrid-row[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;255;255;255m;[0m
|
||||||
|
[38;2;255;255;255m}[0m
|
||||||
BIN
app-icon.png
Normal file
|
After Width: | Height: | Size: 2.2 MiB |
96
flake.lock
generated
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1746904237,
|
||||||
|
"narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1744536153,
|
||||||
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1747017456,
|
||||||
|
"narHash": "sha256-C/U12fcO+HEF071b5mK65lt4XtAIZyJSSJAg9hdlvTk=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "5b07506ae89b025b14de91f697eba23b48654c52",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
130
flake.nix
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
# { pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
|
# let
|
||||||
|
|
||||||
|
# fenix = import "${
|
||||||
|
# fetchTarball "https://github.com/nix-community/fenix/archive/main.tar.gz"
|
||||||
|
# }/packages.nix";
|
||||||
|
|
||||||
|
# in
|
||||||
|
|
||||||
|
# pkgs.mkShell {
|
||||||
|
# shellHook = ''export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath [
|
||||||
|
# pkgs.alsaLib
|
||||||
|
# pkgs.udev
|
||||||
|
# pkgs.vulkan-loader
|
||||||
|
# ]}"'';
|
||||||
|
|
||||||
|
# buildInputs = with pkgs; [
|
||||||
|
# (
|
||||||
|
# with fenix;
|
||||||
|
# combine (
|
||||||
|
# with default; [
|
||||||
|
# cargo
|
||||||
|
# clippy-preview
|
||||||
|
# latest.rust-src
|
||||||
|
# rust-analyzer
|
||||||
|
# rust-std
|
||||||
|
# rustc
|
||||||
|
# rustfmt-preview
|
||||||
|
# ]
|
||||||
|
# )
|
||||||
|
# )
|
||||||
|
# cargo-edit
|
||||||
|
# cargo-watch
|
||||||
|
|
||||||
|
# lld
|
||||||
|
# clang
|
||||||
|
|
||||||
|
# # # bevy-specific deps (from https://github.com/bevyengine/bevy/blob/main/docs/linux_dependencies.md)
|
||||||
|
# pkgconfig
|
||||||
|
# udev
|
||||||
|
# alsaLib
|
||||||
|
# lutris
|
||||||
|
# x11
|
||||||
|
# xorg.libXcursor
|
||||||
|
# xorg.libXrandr
|
||||||
|
# xorg.libXi
|
||||||
|
# vulkan-tools
|
||||||
|
# vulkan-headers
|
||||||
|
# vulkan-loader
|
||||||
|
# vulkan-validation-layers
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
description = "Minimal Rust development environment for Bevy project";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
overlays = [ (import rust-overlay) ];
|
||||||
|
pkgs = import nixpkgs { inherit system overlays; };
|
||||||
|
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
|
||||||
|
extensions = [ "rust-src" "rust-analyzer" "clippy" ];
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
pkg-config
|
||||||
|
gobject-introspection
|
||||||
|
cargo
|
||||||
|
cargo-tauri
|
||||||
|
nodejs
|
||||||
|
];
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
rustToolchain
|
||||||
|
clang
|
||||||
|
llvmPackages_latest.bintools
|
||||||
|
udev
|
||||||
|
alsa-lib
|
||||||
|
vulkan-loader
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libXrandr
|
||||||
|
libxkbcommon
|
||||||
|
wayland
|
||||||
|
glibc.dev
|
||||||
|
glib.dev
|
||||||
|
dioxus-cli
|
||||||
|
at-spi2-atk
|
||||||
|
atkmm
|
||||||
|
cairo
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
harfbuzz
|
||||||
|
librsvg
|
||||||
|
libsoup_3
|
||||||
|
pango
|
||||||
|
webkitgtk_4_1
|
||||||
|
openssl
|
||||||
|
xdotool
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin
|
||||||
|
export LD_LIBRARY_PATH=${
|
||||||
|
pkgs.lib.makeLibraryPath [
|
||||||
|
pkgs.vulkan-loader
|
||||||
|
pkgs.libxkbcommon
|
||||||
|
pkgs.wayland
|
||||||
|
pkgs.alsa-lib
|
||||||
|
pkgs.udev
|
||||||
|
]
|
||||||
|
}:$LD_LIBRARY_PATH
|
||||||
|
export LIBCLANG_PATH="${pkgs.llvmPackages_latest.libclang.lib}/lib"
|
||||||
|
export BINDGEN_EXTRA_CLANG_ARGS="-I${pkgs.glibc.dev}/include -I${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include -I${pkgs.glib.dev}/include/glib-2.0 -I${pkgs.glib.out}/lib/glib-2.0/include/"
|
||||||
|
export RUSTFLAGS="-C link-arg=-fuse-ld=lld"
|
||||||
|
echo "Bevy development environment loaded!"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
10
package-lock.json
generated
|
|
@ -6,6 +6,7 @@
|
||||||
"": {
|
"": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/plugin-dialog": "^2.2.0",
|
"@tauri-apps/plugin-dialog": "^2.2.0",
|
||||||
|
"@tauri-apps/plugin-log": "^2.4.0",
|
||||||
"@tauri-apps/plugin-sql": "^2.2.0"
|
"@tauri-apps/plugin-sql": "^2.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -28,6 +29,15 @@
|
||||||
"@tauri-apps/api": "^2.0.0"
|
"@tauri-apps/api": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@tauri-apps/plugin-log": {
|
||||||
|
"version": "2.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-log/-/plugin-log-2.4.0.tgz",
|
||||||
|
"integrity": "sha512-j7yrDtLNmayCBOO2esl3aZv9jSXy2an8MDLry3Ys9ZXerwUg35n1Y2uD8HoCR+8Ng/EUgx215+qOUfJasjYrHw==",
|
||||||
|
"license": "MIT OR Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@tauri-apps/api": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@tauri-apps/plugin-sql": {
|
"node_modules/@tauri-apps/plugin-sql": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-sql/-/plugin-sql-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-sql/-/plugin-sql-2.2.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/plugin-dialog": "^2.2.0",
|
"@tauri-apps/plugin-dialog": "^2.2.0",
|
||||||
|
"@tauri-apps/plugin-log": "^2.4.0",
|
||||||
"@tauri-apps/plugin-sql": "^2.2.0"
|
"@tauri-apps/plugin-sql": "^2.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
[target.x86_64-unknown-linux-gnu]
|
|
||||||
linker = "clang"
|
|
||||||
rustflags = ["-C", "link-arg=-fuse-ld=mold"]
|
|
||||||
|
|
|
||||||
2258
src-tauri/Cargo.lock
generated
|
|
@ -1,4 +1,3 @@
|
||||||
cargo-features = ["codegen-backend"]
|
|
||||||
[package]
|
[package]
|
||||||
name = "apographe"
|
name = "apographe"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
@ -20,20 +19,23 @@ tauri-build = { version = "2", features = [] }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tauri = { version = "2", features = ["protocol-asset", "unstable"] }
|
tauri = { version = "2", features = ["protocol-asset", "unstable"] }
|
||||||
|
|
||||||
tauri-plugin-shell = "2"
|
tauri-plugin-shell = "2"
|
||||||
serde = { version = "1", features = ["derive"] }
|
tauri-plugin-dialog = "2"
|
||||||
serde_json = "1"
|
|
||||||
comrak = "0.29.0"
|
|
||||||
tauri-plugin-fs = "2"
|
tauri-plugin-fs = "2"
|
||||||
tauri-plugin-log = "2"
|
tauri-plugin-log = "2"
|
||||||
shellexpand = "3.1.0"
|
|
||||||
html_tag = "0.1.3"
|
serde = { version = "1", features = ["derive"] }
|
||||||
|
serde_json = "1"
|
||||||
|
|
||||||
|
comrak = { version = "0.39.0", features = ["bon", "cli"], default-features = false }
|
||||||
|
shellexpand = "3"
|
||||||
|
html_tag = "0.1"
|
||||||
fuzzy-matcher = "0.3"
|
fuzzy-matcher = "0.3"
|
||||||
sqlx = { version = "0.6.2", features = ["runtime-tokio-native-tls", "sqlite"] }
|
sqlx = { version = "0.8", features = ["runtime-tokio-native-tls", "sqlite"] }
|
||||||
confy = "0.6.1"
|
confy = "0.6"
|
||||||
tauri-plugin-dialog = "2"
|
diff-match-patch-rs = "0.5"
|
||||||
diff-match-patch-rs = "0.4.1"
|
|
||||||
rand = "0.9"
|
rand = "0.9"
|
||||||
|
futures = "0.3"
|
||||||
|
log = "0.4.27"
|
||||||
# [profile.dev]
|
# [profile.dev]
|
||||||
# codegen-backend = "cranelift"
|
# codegen-backend = "cranelift"
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
"fs:allow-home-read-recursive",
|
"fs:allow-home-read-recursive",
|
||||||
"fs:scope-home-recursive",
|
"fs:scope-home-recursive",
|
||||||
"fs:read-all",
|
"fs:read-all",
|
||||||
"dialog:default"
|
"dialog:default",
|
||||||
|
"log:default"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -39,8 +39,6 @@ android {
|
||||||
storePassword = keystoreProperties["password"] as String
|
storePassword = keystoreProperties["password"] as String
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
getByName("debug") {
|
getByName("debug") {
|
||||||
manifestPlaceholders["usesCleartextTraffic"] = "true"
|
manifestPlaceholders["usesCleartextTraffic"] = "true"
|
||||||
|
|
@ -54,7 +52,6 @@ android {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getByName("release") {
|
getByName("release") {
|
||||||
signingConfig = signingConfigs.getByName("release")
|
|
||||||
isMinifyEnabled = true
|
isMinifyEnabled = true
|
||||||
proguardFiles(
|
proguardFiles(
|
||||||
*fileTree(".") { include("**/*.pro") }
|
*fileTree(".") { include("**/*.pro") }
|
||||||
|
|
@ -62,6 +59,9 @@ android {
|
||||||
.toList().toTypedArray()
|
.toList().toTypedArray()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
getByName("release") {
|
||||||
|
signingConfig = signingConfigs.getByName("release")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = "1.8"
|
jvmTarget = "1.8"
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
||||||
|
|
||||||
<!-- AndroidTV support -->
|
<!-- AndroidTV support -->
|
||||||
<uses-feature android:name="android.software.leanback" android:required="false" />
|
<uses-feature android:name="android.software.leanback" android:required="false" />
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 974 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 903 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 119 KiB |
BIN
src-tauri/icons/ios/AppIcon-20x20@1x.png
Normal file
|
After Width: | Height: | Size: 977 B |
BIN
src-tauri/icons/ios/AppIcon-20x20@2x-1.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src-tauri/icons/ios/AppIcon-20x20@2x.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src-tauri/icons/ios/AppIcon-20x20@3x.png
Normal file
|
After Width: | Height: | Size: 4 KiB |
BIN
src-tauri/icons/ios/AppIcon-29x29@1x.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src-tauri/icons/ios/AppIcon-29x29@2x-1.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src-tauri/icons/ios/AppIcon-29x29@2x.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
src-tauri/icons/ios/AppIcon-29x29@3x.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
src-tauri/icons/ios/AppIcon-40x40@1x.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src-tauri/icons/ios/AppIcon-40x40@2x-1.png
Normal file
|
After Width: | Height: | Size: 6 KiB |
BIN
src-tauri/icons/ios/AppIcon-40x40@2x.png
Normal file
|
After Width: | Height: | Size: 6 KiB |
BIN
src-tauri/icons/ios/AppIcon-40x40@3x.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
src-tauri/icons/ios/AppIcon-512@2x.png
Normal file
|
After Width: | Height: | Size: 207 KiB |
BIN
src-tauri/icons/ios/AppIcon-60x60@2x.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
src-tauri/icons/ios/AppIcon-60x60@3x.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src-tauri/icons/ios/AppIcon-76x76@1x.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
src-tauri/icons/ios/AppIcon-76x76@2x.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -35,11 +35,11 @@ impl Default for CoreCFG {
|
||||||
pub fn load_config(path: Option<PathBuf>) -> Config {
|
pub fn load_config(path: Option<PathBuf>) -> Config {
|
||||||
match path {
|
match path {
|
||||||
Some(p) => confy::load_path(p).expect("Configuration could not be loaded"),
|
Some(p) => confy::load_path(p).expect("Configuration could not be loaded"),
|
||||||
None => confy::load("apographe", Some("config"))
|
None => confy::load("apograph", Some("config"))
|
||||||
.ok()
|
.ok()
|
||||||
.unwrap_or_else(|| {
|
.unwrap_or_else(|| {
|
||||||
let config: Config = Config::default();
|
let config: Config = Config::default();
|
||||||
let _ = confy::store("aphorme", Some("config"), Config::default());
|
let _ = confy::store("apograph", Some("config"), Config::default());
|
||||||
config
|
config
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
@ -55,6 +55,14 @@ pub fn get_basepath(app_handle: tauri::AppHandle) -> Option<String> {
|
||||||
return base_path.map(|p| p.to_string_lossy().into_owned());
|
return base_path.map(|p| p.to_string_lossy().into_owned());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn _get_client_id(app_handle: &tauri::AppHandle) -> String {
|
||||||
|
let config = app_handle.state::<Mutex<Config>>();
|
||||||
|
|
||||||
|
// Lock the mutex to get mutable access:
|
||||||
|
let config = config.lock().unwrap();
|
||||||
|
let client_id = config.core_cfg.client_id.clone();
|
||||||
|
return client_id;
|
||||||
|
}
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn set_basepath(app_handle: tauri::AppHandle, path: String) -> bool {
|
pub fn set_basepath(app_handle: tauri::AppHandle, path: String) -> bool {
|
||||||
if let Ok(resolved_path) = shellexpand::full(&path) {
|
if let Ok(resolved_path) = shellexpand::full(&path) {
|
||||||
|
|
@ -68,6 +76,7 @@ pub fn set_basepath(app_handle: tauri::AppHandle, path: String) -> bool {
|
||||||
// Lock the mutex to get mutable access:
|
// Lock the mutex to get mutable access:
|
||||||
let mut config = config.lock().unwrap();
|
let mut config = config.lock().unwrap();
|
||||||
config.core_cfg.home_path = Some(basepath);
|
config.core_cfg.home_path = Some(basepath);
|
||||||
|
let _ = confy::store("apograph", Some("config"), config.clone());
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -82,7 +91,7 @@ pub fn get_open_file_path(app_handle: tauri::AppHandle) -> Option<String> {
|
||||||
let open_file_path = config.core_cfg.current_file.clone();
|
let open_file_path = config.core_cfg.current_file.clone();
|
||||||
return open_file_path.map(|p| p.to_string_lossy().into_owned());
|
return open_file_path.map(|p| p.to_string_lossy().into_owned());
|
||||||
}
|
}
|
||||||
pub fn set_open_file_path(app_handle: tauri::AppHandle, path: &String) {
|
pub fn set_open_file_path(app_handle: tauri::AppHandle, path: &str) {
|
||||||
let mut config = app_handle.state::<Mutex<Config>>();
|
let mut config = app_handle.state::<Mutex<Config>>();
|
||||||
|
|
||||||
// Lock the mutex to get mutable access:
|
// Lock the mutex to get mutable access:
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,32 @@
|
||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::{Error, Read, Result},
|
io::{Error, Read},
|
||||||
path::Path,
|
path::Path,
|
||||||
|
str::FromStr,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::get_basepath;
|
use crate::{config::_get_client_id, get_basepath};
|
||||||
use sqlx::{migrate::MigrateDatabase, Sqlite, SqlitePool};
|
use futures::FutureExt;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use sqlx::{migrate::MigrateDatabase, sqlite::SqliteConnectOptions, Sqlite, SqlitePool};
|
||||||
use tauri::{ipc::RuntimeCapability, App, AssetResolver, Manager, Url};
|
use tauri::{ipc::RuntimeCapability, App, AssetResolver, Manager, Url};
|
||||||
async fn populate_file_db(db: &SqlitePool) {}
|
|
||||||
|
|
||||||
#[tauri::command]
|
struct DBFileEntry {
|
||||||
pub async fn initialize_database(
|
id: u64,
|
||||||
app_handle: tauri::AppHandle,
|
relative_file_path: String,
|
||||||
basepath: String,
|
file_name: String,
|
||||||
pathtemplate: String,
|
}
|
||||||
) {
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
|
pub enum DBError {
|
||||||
|
DatabaseLocationError(String),
|
||||||
|
DatabaseConnectionError(String),
|
||||||
|
DatabaseQueryError(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_database_path(app_handle: &tauri::AppHandle) -> Result<String, DBError> {
|
||||||
if let Some(basepath) = get_basepath(app_handle.clone()) {
|
if let Some(basepath) = get_basepath(app_handle.clone()) {
|
||||||
let db_path = Path::new("Documents")
|
let db_path = Path::new(&basepath).join("db.sqlite");
|
||||||
.join(Path::new("Knowledgebase"))
|
|
||||||
.join("db.sqlite");
|
|
||||||
|
|
||||||
let resolved_db_path = match app_handle
|
let resolved_db_path = match app_handle
|
||||||
.path()
|
.path()
|
||||||
|
|
@ -26,9 +34,18 @@ pub async fn initialize_database(
|
||||||
{
|
{
|
||||||
Ok(resolved_knowledgebase_path) => resolved_knowledgebase_path,
|
Ok(resolved_knowledgebase_path) => resolved_knowledgebase_path,
|
||||||
|
|
||||||
Err(_) => return,
|
Err(e) => return Err(DBError::DatabaseLocationError(e.to_string())),
|
||||||
};
|
};
|
||||||
let unicode_db_path = &resolved_db_path.to_string_lossy().to_owned();
|
let unicode_db_path = resolved_db_path.to_string_lossy().as_ref().to_string();
|
||||||
|
return Ok(unicode_db_path);
|
||||||
|
}
|
||||||
|
Err(DBError::DatabaseLocationError(
|
||||||
|
"No knowledgebase defined".to_string(),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
#[tauri::command]
|
||||||
|
pub async fn initialize_database(app_handle: tauri::AppHandle) -> Result<(), DBError> {
|
||||||
|
let unicode_db_path = get_database_path(&app_handle)?;
|
||||||
if !Sqlite::database_exists(&unicode_db_path)
|
if !Sqlite::database_exists(&unicode_db_path)
|
||||||
.await
|
.await
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
|
|
@ -38,8 +55,10 @@ pub async fn initialize_database(
|
||||||
Err(error) => panic!("error: {}", error),
|
Err(error) => panic!("error: {}", error),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let db = SqlitePool::connect(unicode_db_path).await.unwrap();
|
let db = SqlitePool::connect(&unicode_db_path)
|
||||||
let result = sqlx::query(
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseConnectionError(e.to_string()))?;
|
||||||
|
let _ = sqlx::query(
|
||||||
"CREATE TABLE IF NOT EXISTS files
|
"CREATE TABLE IF NOT EXISTS files
|
||||||
(
|
(
|
||||||
id INTEGER PRIMARY KEY NOT NULL,
|
id INTEGER PRIMARY KEY NOT NULL,
|
||||||
|
|
@ -49,16 +68,19 @@ pub async fn initialize_database(
|
||||||
)
|
)
|
||||||
.execute(&db)
|
.execute(&db)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.map_err(|e| DBError::DatabaseQueryError(e.to_string()))?;
|
||||||
|
|
||||||
let result = sqlx::query(
|
let _ = sqlx::query(
|
||||||
"CREATE TABLE IF NOT EXISTS file_diffs
|
"CREATE TABLE IF NOT EXISTS file_diffs
|
||||||
(
|
(
|
||||||
id INTEGER NOT NULL,
|
id INTEGER NOT NULL,
|
||||||
client_id INTEGER NOT NULL,
|
client_id TEXT NOT NULL,
|
||||||
diff_text TEXT NOT NULL,
|
diff_text TEXT NOT NULL,
|
||||||
FOREIGN KEY (id)
|
current_diff BOOLEAN,
|
||||||
REFERENCES files (file_id)
|
parent_diff_id INTEGER,
|
||||||
|
file_id INTEGER,
|
||||||
|
FOREIGN KEY (parent_diff_id) REFERENCES file_diffs(id),
|
||||||
|
FOREIGN KEY (file_id) REFERENCES files(id),
|
||||||
PRIMARY KEY (id, client_id)
|
PRIMARY KEY (id, client_id)
|
||||||
)
|
)
|
||||||
;",
|
;",
|
||||||
|
|
@ -66,10 +88,151 @@ pub async fn initialize_database(
|
||||||
.execute(&db)
|
.execute(&db)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
// .map_err(|e| DBError::DatabaseQueryError(e.to_string()))?;
|
||||||
|
db.close().await;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn get_file_id(
|
||||||
|
app_handle: &tauri::AppHandle,
|
||||||
|
relative_file_path: &str,
|
||||||
|
file_name: &str,
|
||||||
|
) -> Result<i32, DBError> {
|
||||||
|
let unicode_db_path = get_database_path(&app_handle)?;
|
||||||
|
let db = SqlitePool::connect(&unicode_db_path)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseConnectionError(e.to_string()))?;
|
||||||
|
|
||||||
|
let (id, _, _): (i32, String, String) = sqlx::query_as(&format!(
|
||||||
|
"
|
||||||
|
SELECT *
|
||||||
|
FROM files
|
||||||
|
WHERE relative_path IS '{relative_file_path}'
|
||||||
|
AND file_name IS '{file_name}'
|
||||||
|
"
|
||||||
|
))
|
||||||
|
.fetch_one(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseQueryError(e.to_string()))?;
|
||||||
|
db.close().await;
|
||||||
|
Ok(id)
|
||||||
|
}
|
||||||
|
pub async fn add_file(
|
||||||
|
app_handle: &tauri::AppHandle,
|
||||||
|
relative_file_path: &str,
|
||||||
|
file_name: &str,
|
||||||
|
) -> Result<(), DBError> {
|
||||||
|
if get_file_id(app_handle, relative_file_path, file_name)
|
||||||
|
.await
|
||||||
|
.is_ok()
|
||||||
|
{
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
let unicode_db_path = get_database_path(&app_handle)?;
|
||||||
|
let db = SqlitePool::connect(&unicode_db_path)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseConnectionError(e.to_string()))?;
|
||||||
|
|
||||||
|
let id = sqlx::query(&format!(
|
||||||
|
"
|
||||||
|
INSERT INTO
|
||||||
|
files (relative_path, file_name)
|
||||||
|
VALUES
|
||||||
|
('{relative_file_path}', '{file_name}');"
|
||||||
|
))
|
||||||
|
.execute(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseQueryError(e.to_string()))?;
|
||||||
|
db.close().await;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
async fn get_last_file_diff(
|
||||||
|
app_handle: &tauri::AppHandle,
|
||||||
|
relative_file_path: &str,
|
||||||
|
file_name: &str,
|
||||||
|
) -> Result<i32, DBError> {
|
||||||
|
let unicode_db_path = get_database_path(&app_handle)?;
|
||||||
|
let db = SqlitePool::connect(&unicode_db_path)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseConnectionError(e.to_string()))?;
|
||||||
|
|
||||||
|
let (parent_diff_id, _, _, _, _, _): (i32, String, String, bool, i32, i32) =
|
||||||
|
sqlx::query_as(&format!(
|
||||||
|
"
|
||||||
|
SELECT *
|
||||||
|
FROM file_diffs
|
||||||
|
WHERE relative_path IS '{relative_file_path}'
|
||||||
|
AND file_name IS '{file_name}'
|
||||||
|
AND working_diff is 1
|
||||||
|
"
|
||||||
|
))
|
||||||
|
.fetch_one(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseQueryError(e.to_string()))?;
|
||||||
|
db.close().await;
|
||||||
|
Ok(parent_diff_id)
|
||||||
|
}
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
async fn store_diff(diff: String) {}
|
pub async fn store_diff(
|
||||||
|
app_handle: &tauri::AppHandle,
|
||||||
|
relative_file_path: &str,
|
||||||
|
file_name: &str,
|
||||||
|
diff: String,
|
||||||
|
) -> Result<(), DBError> {
|
||||||
|
let unicode_db_path = get_database_path(&app_handle)?;
|
||||||
|
let client_id = _get_client_id(&app_handle);
|
||||||
|
let db = SqlitePool::connect(&unicode_db_path)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseConnectionError(e.to_string()))?;
|
||||||
|
|
||||||
async fn add_file(file_path: String, file_name: String) {}
|
// 1 insert into file_diffs with parent
|
||||||
|
// 2 make last diff not currennt diff
|
||||||
|
|
||||||
|
// id INTEGER NOT NULL,
|
||||||
|
// client_id TEXT NOT NULL,
|
||||||
|
// diff_text TEXT NOT NULL,
|
||||||
|
// current_diff BOOLEAN,
|
||||||
|
// parent_diff_id INTEGER,
|
||||||
|
// file_id INTEGER,
|
||||||
|
// FOREIGN KEY (parent_diff_id) REFERENCES file_diffs(id),
|
||||||
|
// FOREIGN KEY (file_id) REFERENCES files(id),
|
||||||
|
// PRIMARY KEY (id, client_id)
|
||||||
|
let file_id = get_file_id(app_handle, relative_file_path, file_name).await?;
|
||||||
|
let parent_diff_id: i32 = sqlx::query_scalar(&format!(
|
||||||
|
"
|
||||||
|
SELECT id from file_diffs
|
||||||
|
WHERE relative_path IS '{relative_file_path}'
|
||||||
|
AND file_name IS '{file_name}'
|
||||||
|
AND working_diff is 1
|
||||||
|
"
|
||||||
|
))
|
||||||
|
.fetch_one(&db)
|
||||||
|
.await
|
||||||
|
.unwrap_or(0);
|
||||||
|
let _ = sqlx::query(&format!(
|
||||||
|
"
|
||||||
|
UPDATE file_diffs
|
||||||
|
SET current_diff = 0
|
||||||
|
WHERE relative_path IS '{relative_file_path}'
|
||||||
|
AND file_name IS '{file_name}'
|
||||||
|
AND working_diff is 1
|
||||||
|
"
|
||||||
|
))
|
||||||
|
.execute(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseQueryError(e.to_string()));
|
||||||
|
let _ = sqlx::query(&format!(
|
||||||
|
"
|
||||||
|
INSERT INTO
|
||||||
|
file_diffs (client_id, diff_text, current_diff, file_id)
|
||||||
|
VALUES
|
||||||
|
('{client_id}', '{diff}', 1, {parent_diff_id});"
|
||||||
|
))
|
||||||
|
.execute(&db)
|
||||||
|
.await
|
||||||
|
.map_err(|e| DBError::DatabaseQueryError(e.to_string()))?;
|
||||||
|
|
||||||
|
db.close().await;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
use crate::{
|
use crate::{
|
||||||
config::{get_open_file_path, set_open_file_path},
|
config::{get_open_file_path, set_open_file_path},
|
||||||
|
database::store_diff,
|
||||||
get_basepath,
|
get_basepath,
|
||||||
};
|
};
|
||||||
use diff_match_patch_rs::{Compat, DiffMatchPatch, Error, PatchInput};
|
use diff_match_patch_rs::{Compat, DiffMatchPatch, Error, PatchInput};
|
||||||
use std::fs::read_to_string;
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
use std::{fs::read_to_string, path::PathBuf};
|
||||||
use tauri::{ipc::RuntimeCapability, App, AssetResolver, Manager, Url};
|
use tauri::{ipc::RuntimeCapability, App, AssetResolver, Manager, Url};
|
||||||
|
|
||||||
fn compare_content(old_content: &str, new_content: &str) -> Result<String, Error> {
|
fn compare_content(old_content: &str, new_content: &str) -> Result<String, Error> {
|
||||||
|
|
@ -21,16 +22,27 @@ fn compare_content(old_content: &str, new_content: &str) -> Result<String, Error
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn save_file(app_handle: tauri::AppHandle, content: String) {
|
pub async fn save_file(app_handle: tauri::AppHandle, content: String) -> Result<(), String> {
|
||||||
if let Some(path) = get_open_file_path(app_handle.clone()) {
|
if let Some(path) = get_open_file_path(app_handle.clone()) {
|
||||||
if let Ok(file_content) = load_file(app_handle, path).await {
|
if let Ok(file_content) = load_file(app_handle.clone(), &path).await {
|
||||||
|
println!(
|
||||||
|
"{:?}",
|
||||||
|
store_diff(
|
||||||
|
&app_handle,
|
||||||
|
&path.clone(),
|
||||||
|
&PathBuf::from(path).file_name().unwrap().to_string_lossy(),
|
||||||
|
compare_content(&file_content, &content).map_err(|e| format!("{e:?}"))?,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
);
|
||||||
println!("{:?}", compare_content(&file_content, &content));
|
println!("{:?}", compare_content(&file_content, &content));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn load_file(app_handle: tauri::AppHandle, path: String) -> Result<String, String> {
|
pub async fn load_file(app_handle: tauri::AppHandle, path: &str) -> Result<String, String> {
|
||||||
set_open_file_path(app_handle, &path);
|
set_open_file_path(app_handle, path);
|
||||||
read_to_string(path).map_err(|e| e.to_string())
|
read_to_string(path).map_err(|e| e.to_string())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,33 @@
|
||||||
use crate::get_basepath;
|
use crate::{database::add_file, get_basepath};
|
||||||
|
use futures::future::{BoxFuture, FutureExt};
|
||||||
use html_tag::HtmlTag;
|
use html_tag::HtmlTag;
|
||||||
use shellexpand;
|
use shellexpand;
|
||||||
use std::{
|
use std::{
|
||||||
fs::{self, DirEntry},
|
fs::{self, DirEntry},
|
||||||
path::Path,
|
ops::Deref,
|
||||||
|
path::{Path, PathBuf},
|
||||||
};
|
};
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn dir_tree_html(app_handle: tauri::AppHandle, filter: Vec<String>) -> String {
|
pub async fn dir_tree_html(app_handle: tauri::AppHandle, filter: Vec<String>) -> String {
|
||||||
if let Some(basepath) = get_basepath(app_handle) {
|
if let Some(basepath) = get_basepath(app_handle.clone()) {
|
||||||
add_dir_tree_node(&Path::new(&basepath), &filter).to_html()
|
add_dir_tree_node(
|
||||||
|
&app_handle,
|
||||||
|
&Path::new(&basepath),
|
||||||
|
&filter,
|
||||||
|
&Path::new(&basepath).parent().unwrap_or(Path::new("/")),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.to_html()
|
||||||
} else {
|
} else {
|
||||||
String::new()
|
String::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn add_dir_tree_node(path: &Path, filter: &Vec<String>) -> HtmlTag {
|
async fn add_dir_tree_node(
|
||||||
|
app_handle: &tauri::AppHandle,
|
||||||
|
path: &Path,
|
||||||
|
filter: &Vec<String>,
|
||||||
|
parent_path: &Path,
|
||||||
|
) -> HtmlTag {
|
||||||
let mut html = HtmlTag::new("div")
|
let mut html = HtmlTag::new("div")
|
||||||
.with_class("filetree-node")
|
.with_class("filetree-node")
|
||||||
.with_id(&format!(
|
.with_id(&format!(
|
||||||
|
|
@ -41,15 +55,34 @@ fn add_dir_tree_node(path: &Path, filter: &Vec<String>) -> HtmlTag {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Ok(entries) = fs::read_dir(path) {
|
if let Ok(entries) = fs::read_dir(path) {
|
||||||
for dir_entry_res in entries {
|
for dir_entry_res in entries {
|
||||||
if let Ok(dir_entry) = dir_entry_res {
|
if let Ok(dir_entry) = dir_entry_res {
|
||||||
if let Ok(metadata) = fs::metadata(dir_entry.path()) {
|
if let Ok(metadata) = fs::metadata(dir_entry.path()) {
|
||||||
|
let absolute_path = dir_entry.path();
|
||||||
|
let relative_path =
|
||||||
|
absolute_path.strip_prefix(parent_path).unwrap_or_else(|_| {
|
||||||
|
log::error!("{:?}:{:?}", path, parent_path);
|
||||||
|
Path::new("/")
|
||||||
|
});
|
||||||
if metadata.is_file() {
|
if metadata.is_file() {
|
||||||
html.add_child(div_from_dir_entry(&dir_entry))
|
add_file(
|
||||||
|
app_handle,
|
||||||
|
relative_path.to_string_lossy().as_ref(),
|
||||||
|
dir_entry.file_name().to_string_lossy().as_ref(),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
html.add_child(div_from_dir_entry(&absolute_path, &relative_path))
|
||||||
} else if metadata.is_dir() {
|
} else if metadata.is_dir() {
|
||||||
html.add_child(
|
html.add_child(
|
||||||
add_dir_tree_node(&dir_entry.path(), &filter)
|
Box::pin(add_dir_tree_node(
|
||||||
|
app_handle,
|
||||||
|
&dir_entry.path(),
|
||||||
|
&filter,
|
||||||
|
parent_path,
|
||||||
|
))
|
||||||
|
.await
|
||||||
.with_attribute("style", "visibility: hidden; height: 0px;"), // .with_style("visibility", "hidden")
|
.with_attribute("style", "visibility: hidden; height: 0px;"), // .with_style("visibility", "hidden")
|
||||||
// .with_style("height", "0px"),
|
// .with_style("height", "0px"),
|
||||||
);
|
);
|
||||||
|
|
@ -61,14 +94,13 @@ fn add_dir_tree_node(path: &Path, filter: &Vec<String>) -> HtmlTag {
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn div_from_dir_entry(dir_entry: &DirEntry) -> HtmlTag {
|
fn div_from_dir_entry(absolute_path: &Path, relative_path: &Path) -> HtmlTag {
|
||||||
let mut file_div = HtmlTag::new("div")
|
let mut file_div = HtmlTag::new("div")
|
||||||
.with_class("filetree-node")
|
.with_class("filetree-node")
|
||||||
.with_id(&format!("{}", dir_entry.path().to_string_lossy()))
|
.with_id(&format!("{}", absolute_path.to_string_lossy()))
|
||||||
.with_attribute("style", "visibility: hidden; height: 0px;");
|
.with_attribute("style", "visibility: hidden; height: 0px;");
|
||||||
let mut file_button = HtmlTag::new("button").with_class("filetree-file-button");
|
let mut file_button = HtmlTag::new("button").with_class("filetree-file-button");
|
||||||
match dir_entry
|
match relative_path
|
||||||
.path()
|
|
||||||
.extension()
|
.extension()
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
.to_string_lossy()
|
.to_string_lossy()
|
||||||
|
|
@ -88,7 +120,14 @@ fn div_from_dir_entry(dir_entry: &DirEntry) -> HtmlTag {
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
file_button.add_child(HtmlTag::new("a").with_body(&dir_entry.file_name().to_string_lossy()));
|
file_button.add_child(
|
||||||
|
HtmlTag::new("a").with_body(
|
||||||
|
&relative_path
|
||||||
|
.file_name()
|
||||||
|
.unwrap_or_default()
|
||||||
|
.to_string_lossy(),
|
||||||
|
),
|
||||||
|
);
|
||||||
file_div.add_child(file_button);
|
file_div.add_child(file_button);
|
||||||
return file_div;
|
return file_div;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ pub fn run() {
|
||||||
.plugin(tauri_plugin_fs::init())
|
.plugin(tauri_plugin_fs::init())
|
||||||
.plugin(tauri_plugin_log::Builder::new().build())
|
.plugin(tauri_plugin_log::Builder::new().build())
|
||||||
.plugin(tauri_plugin_shell::init())
|
.plugin(tauri_plugin_shell::init())
|
||||||
|
.plugin(tauri_plugin_log::Builder::new().build())
|
||||||
.setup(|app| {
|
.setup(|app| {
|
||||||
// allowed the given directory
|
// allowed the given directory
|
||||||
let scope = app.fs_scope();
|
let scope = app.fs_scope();
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,19 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
--main-bg-color: #2f2f2f;
|
--main-bg-color: #1f1f1f;
|
||||||
--highlight-color: #3f3f3f;
|
--highlight-color: #3f3f3f;
|
||||||
--bright-highlight-color: #4f4f4f;
|
--bright-highlight-color: #4f4f4f;
|
||||||
--text-color: #f6f6f6;
|
--text-color: #f6f6f6;
|
||||||
--accent-color: #5f5f5f;
|
--accent-color: #006f00;
|
||||||
|
--bright-accent-color: #009f00;
|
||||||
--sidebar-width: 3em;
|
--sidebar-width: 3em;
|
||||||
--filetree-width: 10em;
|
--filetree-width: 10em;
|
||||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
|
|
||||||
color: #f6f6f6;
|
color: var(--main-bg-color);
|
||||||
background-color: var(--main-bg-color);
|
background-color: var(--main-bg-color);
|
||||||
|
|
||||||
font-synthesis: none;
|
font-synthesis: none;
|
||||||
|
|
@ -95,7 +96,25 @@ h1 {
|
||||||
line-height: 18px;
|
line-height: 18px;
|
||||||
margin-top: 0.067em;
|
margin-top: 0.067em;
|
||||||
margin-bottom: 0.067em;
|
margin-bottom: 0.067em;
|
||||||
color: red;
|
/* color: red; */
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link {
|
||||||
|
color: var(--accent-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited {
|
||||||
|
}
|
||||||
|
|
||||||
|
a:focus {
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
}
|
||||||
|
|
||||||
|
a:active {
|
||||||
}
|
}
|
||||||
|
|
||||||
li {
|
li {
|
||||||
|
|
|
||||||