From deee9d06618b5a262d53209e0eed55af6e3bd4c1 Mon Sep 17 00:00:00 2001 From: kemsguy7 Date: Mon, 21 Oct 2024 02:23:03 +0100 Subject: [PATCH 1/5] added the IPRWrapper file and defined custom feature type --- frontend/bun.lockb | Bin 328341 -> 332108 bytes frontend/package.json | 1 + .../NightingaleIPRWrapper.tsx | 53 ++++++++++++++++++ frontend/src/pages/Testbed.tsx | 42 +++++++++++++- frontend/src/vite-env.d.ts | 2 + 5 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx diff --git a/frontend/bun.lockb b/frontend/bun.lockb index 860ea485e1361a5128be3f87f3ef567d37f35915..11f0107a8b3a0465a24a1f048e6653c4b336c87b 100755 GIT binary patch delta 62254 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 +i2W`G+?B-B`;&>e&{?5rjB*!5Uib&<~6 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 delta 59508 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 z { + const iprRef = useRef(null); + + useEffect(() => { + if (iprRef.current) { + iprRef.current.sequence = sequence; + iprRef.current.features = features; + } + }, [sequence, features]); + + return ; +}; + +declare global { + namespace JSX { + interface IntrinsicElements { + 'nightingale-interpro-track': React.DetailedHTMLProps, HTMLElement>; + } + } +} + +export default NightingaleIPRWrapper; \ No newline at end of file diff --git a/frontend/src/pages/Testbed.tsx b/frontend/src/pages/Testbed.tsx index 54a3af3..c76fc8c 100755 --- a/frontend/src/pages/Testbed.tsx +++ b/frontend/src/pages/Testbed.tsx @@ -54,6 +54,9 @@ import { toast } from "@/components/Toasts"; import Tooltip from "@/components/Tooltip"; import { useTheme } from "@/util/hooks"; import { formatDate, formatNumber } from "@/util/string"; +import NightingaleIPRWrapper from "@/components/nightingale-wrapper/NightingaleIPRWrapper"; +import type {Feature} from "@nightingale-elements/nightingale-interpro-track"; + import tableData from "../../fixtures/table.json"; /** util func to log change to components for testing */ @@ -88,9 +91,9 @@ const ids = nodes.map((node) => node.id); /** generate fake edge data */ const edges = Array(500) .fill(null) - .map(() => ({ + .map(() => ({ id: uniqueId(), - label: sample([ + label: sample([ "Lbl.", "Label", "Long Label", @@ -124,6 +127,33 @@ for (let times = 0; times < 10; times++) { /** test and example usage of formatting, elements, components, etc. */ const TestbedPage = () => { + const mockSequence = "MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQTLSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQARLGADVLASHGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVYQAGAREGAERGLSAIRERLGPLVEQGRVRAATVGSLAGQPLQERAQAWGERLRARMEEMGSRTRDRLDEVKEQVAEVRAKLEEQAQQRLGSVTGRPRLVLCEEVKVLAGDLPPGGGAPGCHAIPGFNPRGFTPFSGEGSQYSMKLRTLLMVGRYSSWRRNMLLSHSLTRY"; + const mockIPRFeatures: Feature[] = [ + { + accession: "IPR000001", + color: "#00ff00", + start: 10, + end: 50, + shape: "rectangle", + type: "Domain", + }, + { + accession: "IPR000002", + color: "#ff0000", + start: 60, + end: 100, + shape: "rectangle", + type: "Family", + }, + { + accession: "IPR000003", + color: "#0000ff", + start: 120, + end: 180, + shape: "rectangle", + type: "Repeat", + }, + ]; return ( <> @@ -132,6 +162,14 @@ const TestbedPage = () => { Testbed + +
+ }> + IPR Visualization + + +
+
}> Network diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts index 1bc3a16..24a6c0c 100755 --- a/frontend/src/vite-env.d.ts +++ b/frontend/src/vite-env.d.ts @@ -4,3 +4,5 @@ /** no type def libraries for these libraries */ declare module "cytoscape-cola"; declare module "cytoscape-spread"; + + From 55f1a70f1fa0380be27eb82f29f7d431dba4141c Mon Sep 17 00:00:00 2001 From: kemsguy7 Date: Mon, 21 Oct 2024 03:14:26 +0100 Subject: [PATCH 2/5] updates: added IPR visualization to testbed and updated type definitions of the IPR Wrapper --- .../NightingaleIPRWrapper.tsx | 17 +++++-- frontend/src/pages/Testbed.tsx | 44 +++++++++++++------ frontend/src/vite-env.d.ts | 2 - 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx b/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx index 2a45a45..29cd768 100644 --- a/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx +++ b/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx @@ -42,12 +42,21 @@ const NightingaleIPRWrapper = ({ sequence, features }: Props) => { return ; }; +// Use type augmentation instead of namespace declare global { + type CustomElement = Partial< + T & + React.DOMAttributes & { children: React.ReactNode; ref?: React.Ref } + >; + + type CustomElementTag = { + "nightingale-interpro-track": CustomElement; + }; + + // Augment the JSX.IntrinsicElements interface namespace JSX { - interface IntrinsicElements { - 'nightingale-interpro-track': React.DetailedHTMLProps, HTMLElement>; - } + interface IntrinsicElements extends CustomElementTag {} } } -export default NightingaleIPRWrapper; \ No newline at end of file +export default NightingaleIPRWrapper; diff --git a/frontend/src/pages/Testbed.tsx b/frontend/src/pages/Testbed.tsx index c76fc8c..b6497d8 100755 --- a/frontend/src/pages/Testbed.tsx +++ b/frontend/src/pages/Testbed.tsx @@ -39,6 +39,7 @@ import Heading from "@/components/Heading"; import Link from "@/components/Link"; import Meta from "@/components/Meta"; import Network from "@/components/Network"; +import NightingaleIPRWrapper from "@/components/nightingale-wrapper/NightingaleIPRWrapper"; import NumberBox from "@/components/NumberBox"; import Popover from "@/components/Popover"; import Radios from "@/components/Radios"; @@ -54,11 +55,26 @@ import { toast } from "@/components/Toasts"; import Tooltip from "@/components/Tooltip"; import { useTheme } from "@/util/hooks"; import { formatDate, formatNumber } from "@/util/string"; -import NightingaleIPRWrapper from "@/components/nightingale-wrapper/NightingaleIPRWrapper"; -import type {Feature} from "@nightingale-elements/nightingale-interpro-track"; - import tableData from "../../fixtures/table.json"; +// Define types for IPR Visualization +type Fragment = { + start: number; + end: number; +}; + +type Location = { + fragments: Fragment[]; +}; + +type Feature = { + accession: string; + color: string; + locations: Location[]; + shape: string; + type: string; +}; + /** util func to log change to components for testing */ const logChange = (...args: unknown[]) => { console.debug(...args); @@ -91,9 +107,9 @@ const ids = nodes.map((node) => node.id); /** generate fake edge data */ const edges = Array(500) .fill(null) - .map(() => ({ + .map(() => ({ id: uniqueId(), - label: sample([ + label: sample([ "Lbl.", "Label", "Long Label", @@ -127,29 +143,27 @@ for (let times = 0; times < 10; times++) { /** test and example usage of formatting, elements, components, etc. */ const TestbedPage = () => { - const mockSequence = "MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQTLSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQARLGADVLASHGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVYQAGAREGAERGLSAIRERLGPLVEQGRVRAATVGSLAGQPLQERAQAWGERLRARMEEMGSRTRDRLDEVKEQVAEVRAKLEEQAQQRLGSVTGRPRLVLCEEVKVLAGDLPPGGGAPGCHAIPGFNPRGFTPFSGEGSQYSMKLRTLLMVGRYSSWRRNMLLSHSLTRY"; + const mockSequence = + "MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQTLSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQARLGADVLASHGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVYQAGAREGAERGLSAIRERLGPLVEQGRVRAATVGSLAGQPLQERAQAWGERLRARMEEMGSRTRDRLDEVKEQVAEVRAKLEEQAQQRLGSVTGRPRLVLCEEVKVLAGDLPPGGGAPGCHAIPGFNPRGFTPFSGEGSQYSMKLRTLLMVGRYSSWRRNMLLSHSLTRY"; const mockIPRFeatures: Feature[] = [ { accession: "IPR000001", color: "#00ff00", - start: 10, - end: 50, + locations: [{ fragments: [{ start: 10, end: 50 }] }], shape: "rectangle", type: "Domain", }, { accession: "IPR000002", color: "#ff0000", - start: 60, - end: 100, + locations: [{ fragments: [{ start: 60, end: 100 }] }], shape: "rectangle", type: "Family", }, { accession: "IPR000003", color: "#0000ff", - start: 120, - end: 180, + locations: [{ fragments: [{ start: 120, end: 180 }] }], shape: "rectangle", type: "Repeat", }, @@ -162,12 +176,14 @@ const TestbedPage = () => { Testbed
-
}> IPR Visualization - +
diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts index 24a6c0c..1bc3a16 100755 --- a/frontend/src/vite-env.d.ts +++ b/frontend/src/vite-env.d.ts @@ -4,5 +4,3 @@ /** no type def libraries for these libraries */ declare module "cytoscape-cola"; declare module "cytoscape-spread"; - - From 34e7c9e2e2d5eca09695feb78c0f4dfd5142527a Mon Sep 17 00:00:00 2001 From: kemsguy7 Date: Mon, 21 Oct 2024 13:40:18 +0100 Subject: [PATCH 3/5] updates: added comments to further show updates for IPR Visualization --- .../components/nightingale-wrapper/NightingaleIPRWrapper.tsx | 2 +- frontend/src/pages/Testbed.tsx | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx b/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx index 29cd768..709427f 100644 --- a/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx +++ b/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx @@ -26,7 +26,7 @@ type Props = { type NightingaleIPRElement = { sequence: string; - features: Feature[]; + features: Feature[]; } & HTMLElement; const NightingaleIPRWrapper = ({ sequence, features }: Props) => { diff --git a/frontend/src/pages/Testbed.tsx b/frontend/src/pages/Testbed.tsx index b6497d8..b78670e 100755 --- a/frontend/src/pages/Testbed.tsx +++ b/frontend/src/pages/Testbed.tsx @@ -143,6 +143,8 @@ for (let times = 0; times < 10; times++) { /** test and example usage of formatting, elements, components, etc. */ const TestbedPage = () => { + + //mockSequence for IPR Visualization const mockSequence = "MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQTLSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQARLGADVLASHGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVYQAGAREGAERGLSAIRERLGPLVEQGRVRAATVGSLAGQPLQERAQAWGERLRARMEEMGSRTRDRLDEVKEQVAEVRAKLEEQAQQRLGSVTGRPRLVLCEEVKVLAGDLPPGGGAPGCHAIPGFNPRGFTPFSGEGSQYSMKLRTLLMVGRYSSWRRNMLLSHSLTRY"; const mockIPRFeatures: Feature[] = [ @@ -176,6 +178,7 @@ const TestbedPage = () => { Testbed
+ {/* NightingaleIPRWrapper */}
}> IPR Visualization From 00a51e91833eb58a2088e8204f9190084039129f Mon Sep 17 00:00:00 2001 From: Vincent Rubinetti Date: Wed, 23 Oct 2024 01:46:47 -0400 Subject: [PATCH 4/5] redevelop component --- frontend/bun.lockb | Bin 332108 -> 333583 bytes frontend/package.json | 4 + frontend/src/components/IPR.module.css | 40 ++++++ frontend/src/components/IPR.tsx | 128 ++++++++++++++++++ .../NightingaleIPRWrapper.tsx | 62 --------- frontend/src/pages/Testbed.tsx | 97 ++++++------- frontend/src/vite-env.d.ts | 12 +- 7 files changed, 226 insertions(+), 117 deletions(-) create mode 100644 frontend/src/components/IPR.module.css create mode 100644 frontend/src/components/IPR.tsx delete mode 100644 frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx diff --git a/frontend/bun.lockb b/frontend/bun.lockb index 11f0107a8b3a0465a24a1f048e6653c4b336c87b..16e1c990f59e0af6ab194e12dc51cd64e1e20c83 100755 GIT binary patch delta 62065 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 delta 61558 zcmeFad7Mt=|HpqXZsxXR$(ntQVTQ5IFx*3nt!$M-mIi|vyFpaU_>@Ye#VHp>QVAm! zB_x$fQAt{}&Uz zy*;r(+_m2X`9nZ3_GGA;Pt&V$=}d~FujDmT5z)1@K-y^7p%S@oO| zzlB`mk3X-61A!8OK<@2u6ds?EK6nDr>4gG;;@F2^>AfvKN4hhxhr?&W-%>e^l|ea2a?OwU&oRz_sA+h*ja9*h*I(@2bF)NU!qaZF$`+mn{~^aSI62 zEVZnU<*#Ul?4S7~hx$>A3jEx*bSLp@`Ae3cfaTD)^nmg$u|3hB%tYmOft9`zx_YV& ztn|Bz(*MfvD(v@s&rX7su_jD!=FT8qE!adsvhS_wwX`tf zAV+@0mcGo!zlE-zxEot@VQ6hHf6gof&Gz+mycXB0>$UiPY>nA=Y&n)x&vWQzblGoP zyD7FD9e=i0@dO*+-*QJ-4Z6F&=Rh@VInum=>p)I!F$8(M2|+D9f@iWP;TZEIcO*=& zmbI_4>3YHH`YB0XzH_aeWVr^chLp7Y8;;2?(ag*DwRLnGT+%sMsCLee z&Al=B5Z1yS(kx*@=BSME_hM^j!5%zjbTcPaiTqeOO@MAL*1YK)Uqt zFbHk+m~sBGApb8!bNxtAdB&qVVkI&Zgi7Ct-2@5y7- zsWR7}>v`sv`31UW{ch{i7Fd&_(D~jRc*5FCt-Tmq@63z6_%N)|?P`0V=Or|RT{ZV>0vf*LUfwY8##X{Duqy0) zsn><=EU!XW3p?0+4Pot!C1LeYRVru#-`6`3I2)b>vx0I*W=;s`^->?N-1>d#e|fkb zK@N~0VfchmBYz{JEOv1UQp=ZL?p0W_pVy*!*y@1^>4OHP4;q>AYtVCeQs#sVRWLL= zV^YTG3E5-EWKS5JogKJ%fH#La!&)Sx(?^fV91;j*WDm-jm^pGtpj^6F!S7di73{bC zmgNnWm%{3iJ7GDPYk8#Q-j>g^+{AJf%W;-}80gKRPX^NenoQfQ@U-PTSS_4u`FhI} zEDy3ge$2>`6UPPuPi1=7^Lt?p!E|d6hcy?vz+8uN>%r{exrN~x@V=bkUc@H2Ho^mN zE%-XPI-Fs-Bdh}ITe~={iVhF+#{M%{%d}g6Zz#@#)zuqtPCR7HgoMHDh@;226c{(o z({omlKx1EQyf?{$urjQLHTL(wI;mugA3tV%LdN73* zVg+YT$jr!2Vk&8k+<&v@_+79Z`!?vM-v!HovEwr)OvuU182{TX-cI}At=`mmewOF? z?bvF`)vz-3hHJxZU{&}!>9i;=yu)i*G4v$t*KYU93t?--uXVhQHUw+?8j>+-Si-kgf#?T&i2OeO}G;FVBup*TFxbLeXvSHqs1MgJ?}5It}Pyaz4?zepFUqG#{%GCpp30jw5`%D$4R76?4C z!0Un3du@+dz5!Ot>n`-Vz5=ZB$4(qQW$>6G8Dq0Yy7}wh%d9+;h`AJ`F3p~hK4Bs= zc^dXv*n`K68Ij2zorNurFN2l7jRzx_L&yEX0`9Yu<_|*hmRW>n8JRP zt;Rg;HQ?9fp5upLIXrk|=EO|mtz&0$*i9L&!SFZ4FDE!zrRwFRKNbkoCH=XumTz6l z+aL8tpg6Xsh`)axLDvXwbC9l3oL`!s82aM`lcN z{d#e=m+>jf3rJ9kgttEF>1@^$CS(i=jL4WWN$qI8#_L)3XgA#pYn;BNtL417*7GNQ z@R;!`H$BTu9k_3uH`8u`<$n&vmxL#d&rHzS^;T<-ht=O#toL{*w)(TL}sW`96V0 z)+W6=vXbSa&wA}V^sLjjOto6c8@=W?vOG3nimJ@4FICNZbgi(V;P zUhwAQHf*^)gq5!qe&$Qw@NR%LPd9AwrcyyWsZ=1Tgv z+N+-3nsh36G4Wzf_}u9X&KaI%3+Q1ZHofM}t6Jz4N$8+!KGfUljZ156Irg8|z43Yk zhe~31-sa7t_hD7A#8&tUwx-ECSPS_v8y|!9a3Xg;1*n3@$Z!Tc16wO|wB>#_{v23a z(IYre5`LH-QGxH;2E-FDhs(j5(1nOsI>vc?#;}aZh0v8gGuyp$3w%w!@@#v#rQY=- zM!=eR9}}U0-fSIu2G&5|p$zbJSS^|eYvx@JtDtUkFyd-8im>ZLRtvw~h zam1^>O|a~{KBE6s@pm729`@hk6?_C%#eF~aTF}EXU74LRK}#cHRQlLJ;8W7c;n!fb zY(1Uy%0DfKfE*ZVg^OTyStnQywSnb8 zGb+?ByW}hHY&0CMj@<)RLFXLw(w(^5wnCSKfp5I>28~Z2oWX8(m9=x8BcL%UbI41` zGl^jtO#=acmpb&dHxxtDvnPxT1OnqTCT3?2of0T~*c-!_VL5o_w_XqJvFWojM)3$B z5V!#cYbc%uh#&gS>xo-o9Iu=^gMd5?lR#ts6P2jIdOtXQD^$z*4qFZ14Qr^kSl;lX zSKn%EcaFhl5`UZJsj#Nj2+MsecY-xVk}cnE%Sr#m>xZ+^g`9B%l7r2hWlht9 zqn-Ut(?TytocLz3V7!yrEG=|ZVJELyEVQPua{xM4*oki*3wCreo2P}Q7jg2M$D%J3 z2?SykRM;&j=rm}N7QEcaY>^hZCoT|Z?<1$t(^TB%St)% ztz*GLPG;-0&;zBNywrr8ah9Rn$Rz9N*0VA-IkfFe zC%#QASjNe0lNK4mJnZ4DNJ$NrclNhY2R3M%7J9s#lhsy9mbFa_PIC4my;$CfkHvyv zCo`57Jl|OsON(Atf!=Y8J$y+@A&hgK6|GVuaV(K@oP(`WgX5fKX=$NV6`ccVvC!d) zPJFvqFwx0ur)rk9OACEm$vJ?OHgA+O(P&z>qy{JF7UTPO3}w9vIxoxF2np^a6Y187B^2Ir+k zI#y$Rl`-^vH7D;pjsE`g(n7PVJMrhoLho01vd)i1db7|wI-}aBh8EUv4xsO@;ly`f z#A|8_96UdjDY2{rt*Pl8K(53It(|kQZEB=VWz>1sgldx}-&BoGoAQG4c|jj!ptzm2fgINDE%#EW02r^hkZ@zy-0; zxAmR)3uBQE4b)!=ZBs)t8aR0u#zOBla1NlCjdxu?FEx4zAx->%Gp=t6%O$UCEZVYB zAkf7d)Yi!%o^r-_i$y*~yudlwCN+|l;I{Uh)X+5v&Vg>R(AoqizI!ZMHjzPhvyDqm zj$De>!5P&lH8elbInX^8`4QoK=U}JQNNQt+)LpraoxC2g(0h%Y13hBFvz!J!(<0+o z94xpCQ$wqoIC(u|k)IHlOw`;eNp7#`k{Y>%5Q*BPhPEa-c^AckC7t~jrA2x)ReM)- zOpV;;h7vApQ^*Y*?4HVU+JA9cWI(e(ppA2o%I|LGWL**qz1_^oyCfDZ+MK-w??cYG zSTZxIL9et>xP_B7AQoxWLJlNc+NKbJcJB0BPbkG}Yf^IbJFN5at>l(|9NR*43>N=b z;Ny}~;s~j?Wh93_ZK>j;m6E;Og&d{tkL9ILx-+E^Mv8MVB{ljsA?@9E0FLUD8oicKz5|i< zvfL&9U0Zk98c-f9Xn;1M{R7gX4`VBNP!)zgi#b^XW6}C-B5GW~S=lT((hsYHv!Zos zbU7h;hp+uo;xObK#!R-;E7GD9Xa^HZ*<#6|huS&u>9Oc;MD={o88d3@C zKM0GyB`)dflsF8pJT6<&oz|kS+9wAqILij5MK5O|*;zpU-Eoc+KR6cMVnxd6kR1B` z94BvZEZD-?KR7Kq@mw7Ds;0zESn56;!3r`pRU1~H(6ttGGdX6=ezr0Mrv@Nvp*v(^wRlG{Lq-TnW1UXYpKQ?8hSDEtSo26C8?obIymve zJUlZcj;(EgXD~fq!n(q>)GeJD*FpJld04s_vIg<{XDqKxn%3#N$=ir-d;x7Ip zONtC{;N|8EShoGNc*rGQ8|i9Vd=$$|soogWt3c<59_r;}jb-s7Qj4bZ=;Y`{_~k8+ z!zszpTdc(lV_SRaQYUL1d(LHknM%?Zi%M)eAHnikrgj$U&H0?Th`STKjHOZYth4*@ z_C~%n3o8+e{c~7y^aCsgPA;V-hhlx5ywS19jeV)sSuPl#=eyln>iq3iNPujPlz4)J6A<%b^34}Fy%YM!Az z&-Eog^jv$`(^frY?`jHz54Ra&w zjN*+fH#C#bKsU6{4IP};rqF0*NSNM+<7L+Lv_fP2s{0YTOlhN!6XHUonb0_aD8g@5kgIg4mpPhCr3+6^!I`!Rz-iT^W552UXdJGgymhXcM?*O?sACMnUufp zq$NkjVsT9!mKu4O&``II8drLK;T}sOmts*)Qfl;8LR{!5=WvVU=oi-VT6*?mzf@hf z$787%sBuI}oHYu&**?e8-cEOoNC{r$3SM`GnO_s_o@+j539Aa;wEm-rWVw1!s@MtMLr?a&PlknO>ml% zH7geBJI%F;d6WN_!(I^SODN{nI+xHDZm98pd{1s5)YsKMCNxB$=uOvpoyPXZ*7zb;ORoz# zd;N^X;h#x-^L74qs#N>1QoK~0Y--GKvS!CZgJ(E-&=WJ91G8h1UuJL-cB|@hz3Utu zv``_p<1~_cu^4;}2^ZhXZwLhFNxLrI!(zqSxb`;|w3cJhTQ;u2%!1YuEEbWCt8i1n zeABVo5a;gR(G6Ja*M7>Iy#}%EUXdK_jwL_o60T0KU};vlOD0zCT-s-JDZvxl8%{!(sWjSW|!_r08omtU`u~eRC z{f5P6W37?5dlxM)?lY|6Zq3>n2HcT94>`W(Vcn#fBh6>ahl9;hqqh*s-!38x9Gzyg z)Q%F;Mbj&_>z&^E@D2detwlHB>1wP2`6{9l8mEsPTqSI}RubPWzU+TPB+$D1g$o5}DhmNp~yg$~KlV)H%AeToyk z0872+-e825&vyoi&$m{pb`VU@ajnId2vo!qT~flX+r(!^u?ACw$gy~xR19E&u(AJ^T=a|pF_qcyXi#nPmwf==`nmKFsWZh;9P{ImX~)9cjMM> zv6Htn7JUy;eO|84ND7-~- zXx1`4T8wT(wB5%XD3<3H>s|HE$LgdfTG3gA(p=Xyrmtb0=lZ1qD7D->Q81_2elJ+= z76o($#OxPw?tv2dI#Y4sJJ zS4A{Bp*|~|1CPd{GZB@9HN#3+k0qD9+v(r2G)Ug+N`Az%N;-$z@al3MSHF)xS$td zsWr?QF6N)Ca(o!CFzL&E|#1lAER1lt+$eyrel+%y|I#sJHuU9 zw_&xwD(ZT?6-&#(O&N+`=ftmzh5D~^vev~SPpxxrX}LI*e=2`3pst}!(315|*7{iVi}jw<-r=_O)9R9gEmEVC2(@+# z(PVxMD+SA)%+Y;VYBm;&quvJ3Vt?gIHUx{KFpJ|sLTyOpP3t{26*G}5Q^#k#S;{an zs8jy1*k+bvc?*DP9r+FG9Cy{Wd)D*8>(I$qD%~6AC-SYs?D)~={7sa@e55B9^J_5Y zBSIQV&+m;`>UM9A|7hdrc6>Nzqt_;HrReR87%9Cg$TL{#3oqr5Sl;x|peH}?_l&HG zSc;ccNO@h`-p=f3E>s@XFI>rx8x_Te2^ z8XE5iQ)ZL59C0qjKKzn@AyhLqW2Jd1J0^!--{Ks2k%wEac>POZ^!;cowT(S`eo7pM zR*Sc^Kg2r6%gs$m!&kjoe;ev4?wj3k}j%(vJn?!~eVBkll}=ltPEd2ahwzVqzrx4fn27twbSy;0J1DEqeG zOUf`3>mtwVcFECau)MZwCpuoEXLz8EN|eoj~~Gr;MGbiF8$E&Y{fl-<&~+f{~62r z&a>A`b~#z^#G)&9c_N$fZ5#u3`$@PQMJ~eX;oi%yCZx-Q*Ky&GJjZz+l+Nym<;Ag! zgqD2dWDSc&qkH_;t7pbw*%`#Z#(kXcKf^WzOTFf``@VcjQ}siv=J|1@J}F>D&cnLc zIhdXrHH0qBckUpTrj2(%Oa9cGifo(o&O|KhD*f>Smipg2rxp3kKfY^cYKNsb4j7Ln zN3O$S^mwT8J|TI_b~-FMQe!WclW=otB$rTYjc@cRLhVSwEYR&P7Eh*zrA9CNJl{)J z%8JjO10Tjhg}-p(ckv$AKHWwo>`IN?n;-g-(50?+;eHK+V&@a$4w%r-guK`u2k2>6 zdyo+C>Js~7zSiYSdR|&|4xtpcMJr$BY=M>PTC^h?{mMJ-$2mzX*blM#6X#jo4${y0 z)*`I)^R3UZytZoZtoOCIJw^J0e#I}u6)QV-90}>dtoV`cY8GxE9R!u=Jzs|cO6+dGC5S~u#@#!EPCN# zZv*ib=YO!&4DQD`cD;pVhYYLMw>a(=%{e?e97~0HcWz6tRBaI_sUMdPtX^1NM>YAb zp!ES(_x!l{?+bKWWDFKh;CcIf8KHAXRmMHdfBC(W_eCs}{DX7gi&*rUA3TrUV^V0< z4^Gy;So9mjX08LeQ7V4K8yk{rN-2bKf&12Vo)==f`hk$Vcgu)0KgxTwPC|#&(A1+& z{DD|#(@`huKrB-HXS{O`@`h|rKNOv#5IMOwVKe&x>s+rKHnVEK=uL9cN5>HI%GYV& zkzbtnukaDEy_=XZ4K?}I$xDkx$NlQ3)WUx34~vt>H&|`m3_6E2I_9PHCdddZFHRF= zDV9cx2Y2i|`)o?~AvWW)fAglaYlQ~=<{W4r3oUXfx`#Ng6ivFSzx$Sa>6>rq>TYDY zZF`%LmWca?W29stNbimsm>TLEa1I=bMdu@QC7S1#oHzFWVKq&Tw&YVIies|T1G9q8 zfy1%TD=tOLhl1`pWPci)9O;JD(K&cHHF_7JVdUW)%xtg3XL7X9Py&~)UVMV&yVg0h zT&)j;0JA0#28THqR>bh$wKbRY+A07^d-NWTf_C6<1R3|?Zz&jKpv4r|Zm18ac@hOxq2 zI1bzgqF@ZW6JbnWk8Im)tdSs%A5O1K0p2hQM+@|A_ORf1JdEvx6$ zAy5pVF{}(NY(z4w46R`~lxFqzRzJ_`onf`4tBvn&<1d0$UT>@Sg-c>*!YXexT!IfQ z2CgQcmRt*~1+!pzd>gES9asg;v+)mDUI9};;3*sb9IOhqS>A2qzl7E0Kfx;R7q}8! zmP!g~{3{YrODn_bnmVvNY+&_9upDa%^DmIXAB|<2wcEpTu%l&tuSym5gjMb(R__b* zFVK%aDnDJe#(yvYB^;_)%k^P>MNJMFSQXxD(=CGe7kI$xd2m_mXJD1H5taj+Z2W65 z{{pY`r!@Q#tRX)D=P2SU{-}$Nz#0mbBD**&yDY30>KlDZUj;4&H?r}~VHJEntb%*M zYGE%}=`VxTgXyr!9R=$J=eP;RAXGz`1uNrhSQXB-2@5jA7tr^s^*R}=!h48Uy7`tD zSiaZh6DxjUSpDw?JWm%9AqO6^3I7hOpe3YNmOTE*UT*D2B=QnVf7IIfoMR*OO>!kz zX%mQLud@6&EXUT`c(Gdgl(h@8^rx*Zmi-K@@}9N2SbEMz8+gGcc+uJ~!Tbws(VtVW z3V4-xO}1^YDtN=D7c2fvYl~&S4J+L{o}S|ej$_5`@DjMJjPF}pthuqr+9zX8&O^j2 z$#?uw{vTkirr)d{#OsLGe_;Yj7=@Lvn3`i*U0w=X6_&U06)m4-^&0RQ#3#ZkC&_Yi zSTC{4ZE5vZ)=pKt=AQ!Uk~Xj^Y!9oT^I$EP9y!P@aAS$i_9m-tNh zW?1{iY*p0N6p)?Npz zyr*Ej#7eip>d#mm&T+f;MVsJd8zGisuUT8H;2Zo=k9=r#u?qgk+9%@*#Q$jH|IBv% z|2cwOf0^-LiqAQvXMa>shG3k!%z*=0M=MHvhiZ2Pq4OFcB19RRxikkZ(?A7{K;7PFSPLmS&nzNdOH|3nm|A=u_~MltH7(Rembm*r;<6ZVa z{Z|p!TH!j&Ghn^MD)0tti{;?W);<|4{x%yg)_!phta|2K{SUV5UxE@WfK|XEYu|4( zh!y_;EQc1uI`KRSEB#Y8e!bm^pk_h41< zf#r`Ze`@1DhgIMguwG)>`z-IbdO=os2W@=L*EaBt5+G15y*4igy#p}m=RA2?0POLGnZS^{q>)QC^xg#4) zfd~~;&t^E=>IGTx^{p<}5H%E=S)pJB^F%0E!@L#>#+~v{u!uRRl)sXwrgFEorL?uB ziq)(%IB2?tgB9E*+8(nGa)wP-kd=Ix)&GiBU6zW4N5INA%I5nE_LhheDC20Gajdn+ z*#g9hA8+F)SY0fAqP4}^O{ZD=WGqLg+kF2iY?tVN5Hu05w;4~ys^|tAFIEd@TDu@i zzuD?y<-5h&1zGy69Gl=)n?NiN@38u8tBaMvvG&PWQS)s4U$Gp#$EGu#BEjPBBv^o= z8t%0*1zGw+8-E|HBoFaNCF%F9^b#xGGHZ*qi#-J^-P3R)d;n$}2z&!8{h`9{In@og z!eN`>N1Na$Sg(_@3OHip#VYt1EGf*XQt^c>M__eroVBB{UQt~qHTWeER6rS<;7rS9 zEtiAUk_y(Y2lQLF+@{O4(IYL7 zu{_@LL|FF_Q(+aScFB)xVbyaTte05&jj+nU+1j_kN_RV~4xLkksiC`{2NBeh%V7Qm z9^;R;;iq90^c<`TpI785SOx1FXW|zvZ?fr6&31oK0#&rdW_$(Kh3rFE74NpZ2i69( zA67*Nto{|OyR4(IUVoeYsqt4CRMF42V6nPRlb~P%Inc*u{5!0Q`r7nj*_T_pAWQFO z^?ddRsXq}Rv!ZCQLR9I}RgS4zj8!T#Lnb`b@-U^w&V=a-r%YySN!PwXk@pFFU4*Z;rq#9mjw zfAGNGd!zkdcw+Bf#!vr&y!y~Ns@ z|IQP8UA+Fm1AA}%o$N`zDn5-T_U_g5S{#-mfB%8KSN}<$+-n8>{U`P$=5^W+?De4i zUwLA0hw5}6*ysFPPwfBU1N)qR>xun8d|=P`>j}Ol+kf}O{vSTD*8$^yPwcg3|M$fH ze^2aB`lOz@;p&2mkRC`!%iV1mEss zrcMuDV0uprmN4%S;@$r~(}I_oxEzEH(-5L2nuD-b!l)dCVrHF$;kgJ^a}i3I%v^+u z(+MT~2ce{y@*jlF5_U-_Z5mvQF!?_Sv#v!r)9jQ`|5}8$*CCWMGp|F~A>p8e3Z~VJ z;AO#z<_=LMvmY`kGl=ebJ<*lTyz9}cn8Tu~rt=L@HM2-m-5eFwFgX?HI+}G7 z;_gDIItQV%$()0*R>D>Z7nn*0VfY+`sRp5|*&?B$K}eX3(A`X#i?CV3E(twNgLw#( z=OWCShj6jkDWU#6gtm7h^fEK=M%W?YpoGgzt9$r!Ayy7vYG65(^Oqn?4H>mfnl7K|+R! z-iOe8A;PHp5Qdp`65{SdsJaLt(_}6}SSw+xgb}9F{RqPsAxym=VU*b-q2m1r2@fEQ zF;gBu*eqd}gmI?9g9wu!K$!I)Lbll{q5gviZ5Jarn*9?37UdQG~XSA>3tVK8CPE z!a)hf+_4hj#>WtTScx#tv|ojgvJzqODujE?VF~*r^m-g&fm!r8!rWB|ktYxqnx0P} zbb1_NwS+|`xEkSzgpAb)515q_mOg<{?n#8jCjCi--m4KdNmyb^uR(}=5@F&Rgk@%< zgtZdtu0>dG#;rvdz6RkP2`fy^bqE#LBFtEa@Tl1?VY7r5Pa&){)1N|^ybfWngvU+N zdW8B6edVYT^K!VU@NKaH@)-0?KRjq4G9kg(3Q-+++vG{WKy2rf))+{360$32&LCmk{c2Lb&TCgm=ux5_U*9|7C>t%pETy-1rj04-$5o_L~t> zUPf5F8Q}wSSi(LDy|y6iGK;n#%-xI-c?IDk)AJRCPFoOGOZeCXUqv_~A>&nqPt8gR zOJ6}K_Zq@pll~e)?^h8vN%+E)-ii?S8p6b_2>Z=O32P(zUKO2)8Gw+$=eWSy@BwZ*(ss^8whQ;Bm7`yZb#T5;h=<{ zOsh8$ZrqNr;7x?1X1|1#HxatNh471+_ZGrF3C9pZ$AYHI+rdlC+_z9xyp8gE(EKc= z)7vQh-yu`bEPIDcManMykmhVMX_x)Y&<*&?ChPC^OqBa}2#-bdIhVV8u`rojgYlix>}^#Q_} zW~YSuA0V{-5TTrz`60p%2?r%qFs*hW-1s5Ff?Wue%zgm?O|xtd!Vw82K1Qf*`h1MAbPvJ?33W~M6NKI$BaHe4 z;cT-`Lfj_^RX;^&U@|{NSSw+xgodWlX9&YTMVR^-LW0>Mq2gx<340M5n<;w{HcQwg zA;~oO9AWZagjt^>G&4IT)c+iz?H33w%*-zkc1SoVA=$Lrhj8N;2n+Thv@-i8r0hfJ zx*s9c%-fH!Pr@+?oH`C5%-xT$;s62%4+)(PAoTwdp}kr5CBhL2CB8y9*Yx=cVd<9$ z8zh`>q6ZOre}ypWAVNp8PD0#4gsNX7bT*k^BdnFMRl)_P(l-dhzebq)4MJD5MMA}I z5E2d{bT?BDA#9egOF~c6;4s4ELkP1DBV25DN~nJrq3yQ_z0AyS5q3y8DB&{G>O212 z_$|VM?-2T!{Ss2XL+JWF!sTY(_XztW9FxEaPzaWe;Q+`3%EMb>~ai+nq2$O$7nDr|{w%IA6{;vpak0DGn zGmjzckZ@4Km8R8i2sa)>SnwOd6tiDK%5Ml=e@D35%=;Z-pM+x)rry;#M0fliEOFP0 z5a*A(j)pF~t5b-+2x3k*%YxWPuuFunuQh!_Bwrdt*dSqsiG~q+hY&`E5pFQ+B*cXg zsun_+X)+5Ttd+1;!p){q1Yvj~gsBmPS!RobiV=i_!U(sSDTNU>OV}mh4%46r!sNmT zvx*=%W~YSuMG)G?A>3tV#v$yGa8QCVt)d7w#vv?-BFr=UC8R_Vx)w#a$IL5=uusA< z2@6c;VhD4KBCIHeu+SWp(5V;Bc^6)=utC8^qAQ$ zT4@@TfmWI6qQ}in(Gw==OlY;4DSFa;ELvk)m4()tJ4EZue$i8=eK}~onFpDDWvTL5 zIjY=XI+sV7TMl7Gd4y-pQ3;*OBlNF;u+c25fN(@YiHZm>m_8K|mR3O6AYqezW}Sq%ItW$kBJ4MrbrIG|*ec;mQ>h-p@VW?7>meL8 zTO?GhhmdeK!Z&8h*$A5@?2>TUG^md-`D}z)^%1@^J0;YwkI=RO!VhL<1B4wC4odjR zw2DW#u>rz@c!Z;7zl4-{gsu${elhbJBJ7iJ3?XzZWV$p8an5LnvZ4{n?;-QElunIM z`X`VnXqF`~w?ZbE2!%}_$Sh4DdP5@75fg2U&^r-fRO66|r1OScag#JMbfvkX4%fQ> z{rNk6;511pzUD}qP^UQOiljm&_xw;?B)dN!m^B|?5V}}eP5=L!+&#eiKSSKNe6t6+ z|Mg^zfh1jXxO-?@P-#o}|D)r5!}!*j^j|{MP~R=P_yv?*=1K}t*$=qdb7eRNO8)->$bTo6sQ)HQ zB~84J_w4?9KHyqo^I-Ro>t9j#f8gUk;443C&DY&SMZ=MW^O;dzBTj2JIsKE0l*r&e z#U4F@udhEs<5bAyA-P)A{~y0R2D_}+j!)ZCc{qDV_ z?I%i4N4*rs+s&1LmwsJ9Y4kY<|8vb>T21fxkJJa8dFiu^O2_-^?&qSV9kiN0F?_a{ zE+_D{6?t1C@SFbd`o?NX#)`ID+FDv_N~?QiFW^6?%$y)THjpI zH{tdA2~9s#;C?&6|6cviHnYC^kS5o8{bDtJNwkS=-LF>D+s|RE>AyHui}i7YLTGM- ztfr3+HB+;B{cg20376HkklYtup}Rl$@ET!xAA(h2Iq$4K&t&Lpw~A{WwF%F{h__-qpqVlXj0XDTyuMA40$PFAAQiL$ zZ9xpAnLd&5WjXrdpT3CD64V5>Ky6S5)CKi`CRcsX0Q|x@XkO_HA^K)i9#{?@29JP8 z!DC=0SOp#jPk<-E8n71J2NnUoMVS*gOpkmEz60NbAHa{`CvXHD1wVsdz^~vK_znCH z^eH=iR&E#A4fOrZ1K>-bZ@u0EW&wR8emi&z=v(qz!Rz3eLTB@>Qv%O{jX>Yoe*`=R z^aBA?z*XRCv$t@#aesX>QHy0H7z4(FaX^b@KLe>>UHA~}0{Wn*e!f9J>7a$9g`(e+ z(Av=NQ0SAc`hf6QFb<42w#z1HXfS=~*;fz1Bwr_kfSVC*V`?8Q2Rx2VWF2 zvx|mX=iEqKFl~2Tmc3F{d|GGv8wOA-VJ5}2iytn z(l<=!5HMga(3fm)1Gj^j;6^YG3%0C=K*Yzt_O)U>kS?yb0a{Z-aNhdte9H z3El@E0DZ>gSD-I>ZqV0^pTT$zYy{7Pm%(Q63V02?1>OelfSurd@B#Q3d;&fNpMkyL zbMOV&2hOB|C15E?#7+arAO$3V3ZSw!r7A!d=IWpZs0nI;LZC1x0`$`a>w$iPU>V2* z%fZ871$Y#!1gpT~pc!ZmT7Z@y8Ki(#pf#urs(_p_{J9>qWV${H)_}F(Zg3CK&&cRo z5Be>mCCq_`m^zme?x`sZE&we+3^WFHKsitWd`8+*uudC03GZb-y#n71uYu?5mpHD( zxD!L4Zk-4wfh$2a(3he0v8_A6c#sYBwZ=-I4ET($-3#^seM$HXP!f~|&wyvaSLBI< zhk&BsQP3FeZ0Q>RD1pzZ>?QCr*aBVwTfys~I;a6^g0i3$J)+;Vc?#swBlF2W0aU>u zeb-Xo&|F0&Pk_~+7J15phe^8va6=PVKze=uvRn>-)*!3`>XD{i zJ%k1X;z2`@0Q8aVL@>4lsd%+(>>lRmD<&k8#u%*xu~Gpp(c z>COlGKAnDEuPHbS$X9N#Ylmw`^(%W7K?PH(PWa-|RS8xBmBG27oS9mOBaD7(uQ_N2 zwCN54cYxc0D)6;*!d*ZI&=Kea-pO)j%hLK2z8vU(v%LW5eyu0m9drX-K@Xsx=EJ+3 zfPRzjV!!~q?p{W?7q|pm3iR83eLz1j5DWlUfZM>WU>3LqXcgZCW`Y}m9KQjm@^RoA zFa=BoW5F0OD##?tB9IA&fuSG+3<1NzNFWDC0KXtVv+^mAene1l(xv&BL^vCa2NS^r zpxs59!g3%>-^jfhTm@9oC?LKClF=0S|)v!9s8^SODgOyMfZmegG(q!pghI zhOu+p#H$h1m43mG5MBY4@geXqPyu;Bl`IF#z+&K6D2J5Rx5Z0=%1}OER~k7eeZI!u zuk;Co$AKzd1y%yzfyW3x3jE3oR;)CB;l9(SvgKsK^bcs9{KQWZ_Ph8Q!W+QTKwV$H z0FDy=790kLz;^Hr_!=ApZ-TGD+u$wmI@k(c1zW&#K*PHk&e_PHm%&Tm1@JuB1YQKM zfY*R3P@yX94WPod0cnbR54;231z&>Cz$aiQkoGb7212KU%+pm8awMzjsGwV{p@BX za1Lk>Qb7XH=~R~${p@B7&=@oV4M99O8`J~(xz2MbrzTt*=yFsBoB>LJ;y|a}2++wl z40H;1fBN!wGHN_R2=c5LET{aVaZ&6jC<#h~QkKtz%K`m}XnCL(`HeY?uo~2#axS-J z={H8Jf+|1`DV$S_Kk~W;s17s_=rN%bO9=J6np{D&B#rlAGi$61UKrZPj4X57hD2Hg6qL`;9AfF{0B@2-9aC4G3W+V zaSoUUE(KG;H9$8?SA%pg3|s}KfYCrVOuB)}26A$&3K#=MfGm&+xD9iEhIIgZA@Du! zMOaRB1#&>n$?1zgL8oNPA-_?wm9{sy9Qb*p<@l{qVhMgG>HUGaDg&s(fnW$23ti*w|W-$l0)cEBA#Gxc`h z7vy)LpMExRzC*sIG;&t+!q2C&<$zX|KM}Q>)SJwS9JlM$3wMERpu$v$x_A!IFq~MJ z;#G(NTBcpWLZDu|7c2l8XDz)6KofT^xDd<-_kg>>Jgt8ft^!qv!amCpd9Ri(0e-jU z5mx$TK;5WHRhhb0l`RFD8~$3?JSgaZ-x#;9BqDtW)M6Ftd#G+yfy;q*YK~_)+i((C)bo*51DXej02C>w$Ja>2DBD02{%x;2Gej4cYJ<(mhAGDA)$JfX(1# z@H}_{=xF$&hHVqZOF)Ib23`TL0%hC^UI%^!l?cBBRB3JSHVA{afbXmveF|I7DxK1( z0V*R13O49H4ckt{9pF3gGdK#4fS;pf5@4-jlTW}bB0}g_(z?a|v_yT+m z_JYsAr{ELtG1vokgI(Z54TlO-#D1Vk{7U7JbU_*Xu+sf{0`&HT-XzhRCxdDEIH3E8 zQ6LLw*fhMlFp3|*R{El2^>Bk%N-;CKX*hn({HEb=LuP49MC+mX<`%aqR;z1xo1}zS^1XjZ{8dV4rrQ~l-Sfe3XmZ8;-2@`YB=c1ftnKD zt1F=j#H{@8gKHoCeBWsDB#|eHD}lMKWw=sHt+BEsSZgMJ_rUIjlWYP?yVYjxSY%ZE zpw`v5+Zd`_95TCGhAUQif)u=8l$-EqUd^6uZcHOZi^LZ4bxX*UNe(xyq7LLewA_SW zmhSwi(S=jI6p1Z0R_2Q2aK#oHSEYF2<(8|inA7f6QZ!3!)`V6aBZjxZa)S-pf4}JE z-`l$NH*q_{tVj-5s(coGScU}MyL}&gbVtLB-2_RA+=e$YACrL3%l)EsT}a1!Y`Ie_ zbST?u(*7lG6>hrTrg2KRS#Y=+oDv=ux;kuLOQBh}lU^=eT`~3N%o{Els&Z2jo6%|W z!gE@ME4F-)1iZVK+t0Z)_rSpZJ4nznv1v;Z=-HMAFZIb837;MsTl$Zf=fb8Nc|)&< z&G1&?rlH%zW zY>s_PZz}ojyM@Pwf_qR@tCy;#n@W%FcwaB~!qOMqy7c!kgUlhD@Bbk)jyv7L+x~q_qiG3QdpB z>A(ogA|1b@mb+=}>c%zRETj%5T{F_%9W}SMp&OS)&7N_j+(b$>z0GIGUR(9lZA{;F zC>or1qUJ-T{5)!&>j(c7HKp3p;c+;iRaE_O-o-EAY7 zsYM&oX?8u4S1h^LFYPP2>5?=t`x3+ZsksZM-LtP#g%Ktc?1rK`N15eh4doU!&z(b+ zPEoUmDyu9ZT5Ig}X>%T^dDmHQcttf$Y!+Bw)SQtOuGoDSDYTO2?#V9qz|TEz4F$KM zXwrUbV>Z^9HMLf#V+MJfCpIB#pe)17JFU4j2QDqt_MP^hgn~s-)NS!*;b;b~8>ZI& zl|O8IwDkScDujaVZGsH*Xe?Z*$~88@i;x0tywEgWB`H2si3%0EvlKgJtle>~J#rMiUU z`2=zIbLjojCbdhrrkx1E;--7M0v&3*%iPyKT&C#p<(W6yh0DbGn%Q$+_$*t98*@Tx z8EZlj+`5gKe5T*mNFgAW8L>OznsV5k6;nh!sBCeAAj?OMK>J_1)C-&C${3U zF{`wBlAcR1B6khA6)??ZDbDutRr(%b{zEnc*EyW1gJY z^e4)i=ejfBUMg#v41{-F>`|J2m+9 zam`NQhWVXpr)|D{{J@{E>EwIoudAQSnbE_;6-}&jxXj;o#c!kUQa`h?a{-rZ|69+F zUr8sOia7-)$;sQ3@3^fpWE~Hlyy_F1eZt__K?$iB3f67=&f9;hoO!mDi2x*}9f+cmYtx8+|91vj9aVa6>Fm-`#D?BuoEy)5Wm7K7u>$J%TB zs%_s?p20I8UBJ$ZeEQn=af6z=m$(**Dck@azd7A~mU&t;|KXm0+QR*^{W61mB#4g< z<<2yt+AXcNsI^;WiVlyHOyi3RO#G8OeyZNIu2=b-;&mB+>Bbpfuh?61m0NtWink6N zf0;S462AvNuWX*Y_|Iduwu%`$sKCCorHW}Xl6LpFpQ z^Bgy&PHe{Ux$SOUc}6ww@N>gEfx<=hT+45ga{x7r#1QRb|^r*Sz5)-(ervlQ*7%U6yzPQ|oC=(pJK zCOfD37IO8=|6-1L{`!TSY6+d9j=vs?ll$rKBrQ+998bNs{B?!?(c@G{g?nq7Mgy3v zY@fH@bUIV;$C~C5GWw^y6Rvu}!e;AG2Ewn_9|5~d`*X}*LjU$0@;l1kE&lpad@A4U zJIty<=pYrNsniO%=xw7u{S zqNj4^gj&7LwNl7#*M6m;)7_^0>im^5)Z}PRoKRcHZ==5(`bYSGv?1irkbJH8J*h4QYs`SbYxI&-dK+1f**-N{4i>zH?k|M>#$Z{^X~lpm(2^KdH9YHT}5j_ixzDtyu-m1a`ZqoK(*{Q7yjk%|hMw?hd%kYMz+X zB;Xzs^qhj5zvFI5T*pq3k8{l5n*1%vZ=*LPp||Uq;#2X<_M2U4`KM8G9e0#CS+$C@TlgtXTFuSE z8@cN~`B?w;q0u_Osex&C6O+hZDNgK<6YW2md|dzAXJPgZx$?Gn?>SwwUX`zWe)7QY z?1bSwYtKTv}xXU+1ZbGjwrl+@{hgU46SqkKH=G!Jz7-$jSPBp_FGtTw99^LO()ikik#-z^p`MEj`pHBANZO-X*bwl%dHeKZ(5&V66OG7hu zCc1wu-__9cn1F51y_LVE#PZbDtx@;yd$zeJ&MPsA$8~XL!33Ih>H~3gvz-L_7aade z@Lyhd{&dB$o(A1*jeFaZZhrpN%bzj+=-Dm}z1qmUKPeoae{D%LC9d=q{c#iY6!ZAR z^U@!=^Bx0e6o+-)0w!bv}W!~8hWTz_?e3)#uL-|s=Y3;0#q z^>jiH=9ld+0Dt29H+uGx@fR22e|mU4;dbVatx}Vu$_tIXMO}ARyYQsALDlTY^5&H9 zp+8XGld8XQ%sxeT*?D(@I|EI6&Y!LU_W71QMhCs~iMyizJfHpBHoyPeQ)KqX z&|jA)94r5?i(#cIr#@8qC((a)0zF}A`;GFiw)RYSs#bZO>SwAvg?A~nwcm5?!eLMT zw$XdHsD-XiK{M{!_LOVkZ;76{a(5{^oqToAQZ+ z{eN#v{+)q&vCC;Z5(xbtccy>$39Ehb`4db;iQ}WH^ZQte3RcaUtBDk+?0>y~A z^_sC~uFbCXR4B;$a$nP$o8N8;-yNFS+}u5jcdTbOH?PmqnW(whC;Q>%rpm2s#ZTH2 zvgbxWJJjGx-bLiiN%ys}x#@8$p8|M=6guqPwex0tfgE6S$s%4Xy3;iS;3$>#gpafHO@+!2m%5#Wt5b=XX* z;SJ^7@-te-EvggdjZfc!Kf6}cEV?6Hspy$xRTkRxB1ILQ*4nfEdY^1=%FO2Nwad)F z*<3=dFjHoSo3;ET)oahu617&BYj@wFQ1DF@9nT+XA@drY49~ffalAjx^K)Hz)R2U;_SEN++SGeD z*h>)Fn`XM*>8CGe%$?y8Hm~i|vW2<+254W(U3g`4(d_%~3g=dtMo(&@y;bjnrxH7T z){UOD&A_=fb8uk&xn4u-&#c;M?hRYJ;s75r(A&{oQI+@Np^CWbn$7=DXICEAQ~Leu zem;?{LM8bKGsM@@RPqs}u@)xDOpR>WhOtk`RwUc-9VXd2p_F}z%9=K4iG7@T)0|rxW;}A~`?ok-ux5J*-_y5*Rm2bgSh&AF+k5P|D=m>{ILRWa#`8*F zQuVAk1_*3s2QF}-?48J-H7=A#xbAQv_g%Oib0MQpG~&DqUjba*-Q=$mc2Q8p&f74* z+;gFV?LfYBA#Wh@L98ZWh`$xB3dN-_MX}3xn!gh@>bKrh5UTS2I<~j?-xMo(nl4j% z)5!IzUP5eda@?-6ttsE;=4ohcsLE8%fG||?i*pTDolm#^ZHv!zycl%LU1cLOu z9}V4vaO%79a5h}x)uXYV_a!6-4oI+^L^y+iXk-BddrFm1y8X?Z+(G+zzyZ+FlK&2b z^wT)=Ap8#&@y6RSN0x_zTiH`?Zu$MV{uB_29?H+&n5wL-Rdg;AHW<@~k1pK*U*L_( zbjyh^r88zszidUu%KhTg?A9zFfCKCBPO@6}bis_VILX7h1M`lQ;$L8eEczqO%=40F z$-lz80kjw0OYTpSpTAs-l-`0AS0!vnvUhV+Sy^ra z3LcLJF1}~fbY1njg3<^%7@x0qpJqaNp_Cfd$QdeFF+XQs()JX(fv`ZRsB4@cly4d%tqyUtgZ z{nO%mi;Wl0hgD7CtQ4|OWv=_4_CpL?{G5-*vB~vA_%yKRK#k@6P(vmT$LVlvQX2&d z+vD&5JUP}Ycot5o;c>G)JEe-LyhRMAkpD~qoXJF@V#{+VO^Q*q9wan$C8ld8pHz9dyuwUxEaFmjB==+F}%nqbogx^s7C zZr<`0kO-?;d2<^^KCwta?_qIau_{5gc{HGGF`I%bo3{oWoiRPb{<5txODJ2$lQoP^ z?nf5)@uut)WbqH)WOM*-8#SD}Ek8dgJj(V&C$%oTW+OfTktpNi9e3GPn|x29{5qVx z8E>eBNV&UeSN#Sqr3zw?MA5ot9@)J5ke@t5>h9$HVDd?Yq8UL}2f=GCAx`QPyI2+qT@^%6iE@3> zSZAA%+!Tf4HG<}XS2IaMj4~~&Vc5j@m4XNyL9tBwT3P?Az$SCId9G0qyFg(FRW>!U zK6bHi^k9W@Vg$WsycdCBd$@HP^eo&IJu_WF6iSpR=kdd)ecLijp?nxYu7_Zm$w;2a ze{42toZ70ezk;~)GX)+(B0v3^SJvakruBxcT)$AQi__gW(TS`WN7;~}Z8Z+BazX!q z4aLP>Bma1>AY4FUbI@wO7k-+Q{ajEeW5$u@F!V2$cPYdFhJ<<_cxpcq(F+EdYWYkZkPNU-$0Z%Yh1F(|Brn1k#U5h-K3@w!E>dPaOqe z?ZXSzp*I$}!GW8OqMLPOU7)>=gAbK3-hM!^X~s#f#^w$gqc;h<_Pl57j0c5vQH%SQ z(~lik)gQcU0*4~ka~LInSMz!4yCI_nWGvNN-Rio-_3L8c5bNLp$+D#Rp=Gza4IVBP zfcALt!H1mURDr_OsgxXt)zHhSWN;Mm*PX`g8P{R>j&IsNUI&g2e3eye8Vx-Pd)T|7 z%;Ja^foyxxwEXj& zxi~yPi;OJrrD$+y9ziBsrT02DdURIH=hMVCiT1qlrQ1wagPHtf@~ElJyL7E(Xb*%9 zngm&6XOi_XAhKt1L{u}cEq^ch&|E}_qv-Wn6mSe}8b6yy;Zg0T4QnlIVG9IwFd1#< z@Vp$fXtu?-Z}+uRqVGP3GQq2v1%wqWe4Ds$LXg5B|FM_w3*A_ce(Mwv#_iV%XmP6vXs;_)}zps;4m4pYA27JcPRQ$ngYP zumS;OXMyjz`>FbQu8&hBw4FyjKvc9`(r%`yS~u5eO8SW^Z8Yn^!^*}^=R+Vb^|#(%>x(la{DN1%=S$eB917U+k5}IQe zu*{V}k;az=i|Bo_%2nHYF`t06Up?9{B|LJTpzDA;?6m<8T#a#k~+R1ra(3&nX#BQq$pDqZAEQHx;G(%mCDZr(M*v0#{c(tzKicu{QU7q>>=-Gd!d zWJsi3$qGt1g_gfxL06czBfoR+9SZqjUFwm{Z-8X4W1t9~lqi0mk?ArMBWH$emc!eNZkqRxff+#o*SH~bq#&3;R5Ff1D^l(n;vAB4K zWEZsg2hsTqAcKRb>p5h^HXzxMV7D;1nL|#Br6Rj(yJQ)e!4$@1$=c=n+-@_$brt0^ ztK|FgRnje-UQN!Ykrh%qg$t`G`ZTP6w3>J1`29E14psk}?dLJC!g^Vwu!hPQ(rgW{ zgRf2>=|8dAd-k%Dgp_R3b^?M;+q5pFTd%%p5~d)k_L18f3P^|aao}YYV)8`4r!x-@ zWUrV>(ig3v#Iql@3@tLsL`x*Q%3CbARBAZ|W?(rWH9}LhX%!tMi2ftcOEJ7^*BTNPgI8loyg0>AXl)p%v+$O}D{GaV-yKLc2%U@2 zJ38DTi0!IM?io$w1NZz(8cHq}Dsd!BOW8*i9r*>RQNefr8;2M~xt$dxRb`X#bUhVh z!t4J_7ss$K{)KNOt1Nix;6`2^n)p2!-G03*p0mhH%%qJpDod5ExfaF?WJ*1Um&09G zvt(qGJ9LWMVdR<(8AU*_g7(NMIih7id=U`VR#>Rw9oaAn1VURqoDcZfOL`O;#hu3T zQjC}#)-4jna(CX}Kh~eh3YqjqSBr4UX1pDMsLP^lcin2pg=%zTB-yMoAe`KR=nx77n}@#*cWBwFy;EaR zKi($9_p3l@3d(f<8&|euTRMrnHtb>UGYZea7JREse7Tv}#V=ml-%1|uznYn;l5_uE?zYE{$g`zQZZW!%2qYNQsWYkSaS5e zq#CQ~2PA9zyGgpSK4103gG=aOZ)NI~L{TP?nzAU~_L%Wemow`pngYQ}BXY9V-Vi9) zRO0ZCe2C)?Hxpp48$*6^gDOXg;eF&AcmA?Ut1B4AkX0^TCTV&V<50sGa=Z!+U&nA~ zdS1KLre2fp{9r6w^C9@{V#o&wtvwL6(BMtK9`CX1oxu(u*ajFv*+ZgyW2ir>$*O}7 zMPBh0X}1_kWW0lcV9wgOzIkH5H9KDbA#HVyl_*o*bb8%y!uO3pu|vIr)M+tP`%hR_ z#S{&Fe|`*g1wsglp}~J5QNm*=2*0)aAhRB{O?RE>IiknHC89lITaqM7Mxou_8L|1S zIx>&jbkO-DhVn#hK(H#6->hN1nq3UAcMU(_1#WAd*D+*t4btBrxfmj7^8wFy^Kv{z zi^Yja?O6Vv>#b$iefPVa{b~-xSeCJ`l;O1WNg3K!1$XHr^ z4Q+rOr?26;Z^V8+?Pzn5{$}^3plSRL@}wG+RIC@4|G1SXfxQx=bN(PDsMTgd{z00X z3yx!lDHdVYq#ovxwGU~xw%MtAX9V2<>|n6SN(dq72))lmdFvcUuGjI*9=i<>t}8l) zQ*ort!xS|2C@&qMYrCdiI*R}1z&f1R-6ii)SRS^itH)Dpo~o(9!(*a{)~$%AqC7+@ zGM=j4fMo7VlO`}?#Bn}gU8r?$l>eG`Y&!xDVPjg$1e$UK4X{q&4Vc(v?XsyC^U_7N zVmPf6XbTg!;RIb_SBpfdnXhuyJWb>>YZeY{{B7h4`H8L4Wcn>%Wv(en;_XQ`xWC)w z;7?CQU)r(`ntGU$^U>lrKo}ujv*TZO)a%?Q3JBJPk$Y`Z$lxYg)G>ux-Gs`vCwcGq zW~Wo~y(OctFk;PMUWSpuHxW^XQ`kR&tTU%5^(JH&;5Qqo-^^b0^sg418nT@lzVv^5 zis}_09-UHYL;;XFsoYM#*lvs695=I!lO7BIoJP?F$jPZ`yzHBpg|{^ove@{DFAlJC ztn)!>04=E56p?KA zPUi$D%&g@Z0ky7X<-g^Wj?h{?ox+%wCh5Erl?0x1Z*BQzgQBH#I-LhXa8IY?*FX*e zk_GzguBC>5>bcyIkVxI}>16R2+!FwV2@tu9Qp`-VpRxe6u8RP#0fm(tvk3q7zwh#3 zTT2pUdpfxnLQ8ad$P-*nq*Ejll>-JtFg*V0PT{L%{;nc}xV4ZE3X7JvTfq;716tu+ ziWq6++skw+2CqiQ;QPyl>P@$Y+iKWCktstg%reOOEy{Z5J1Fa4Wl-=NsO+3UK6h~K zf$LKce|n&5pa-y91|_olLo&$y6~s<}Smw)G*IumiI#O$@WD?5Cj0}o>0px-Vvb>8> zuaXQfTavLp(QEf#k^zXv&Wv>hs6Vk86m%D@OazckR<1Q5t9pTB?Rd88 zL*9(HHF(Wnici*83hf=qRZ4w9jiq=V-6jrDtq^4@ca)wupfP$tE zk%9}edC-o}emLMy=XdPOF;a&^cRr7vrg6&Q>8#V~#mp@(%l#F{OMVji)yW-%hOHLEi(ywPm^^q znkJPsIqsHO6u@rt+GC=J(kS<5sYw+%E8aeFn%r2Slmv5^ndqS>Njm7z6XX)V|A}i^ z5l1f(Yh-z`b1&gwktiE2Nzxi!;q@f8R_^54OO9MbSlQ5y$bCM;Ctjhw&&yjXjv_|v zx2!`>vX7e2(z4uvA30RK55sFe16^*V(=*IYUj51E%ymp(4=!0zAP+dmJK1fr=H zbzPMVqZbg&tPriOz+UcFfFs`_@hcr)ZP_>_wZHOFL#zc;a;X3w(d0_qD{_5JZIk#F zPn3=*_X{~_QpuwcFUlkQapVPg9IDv(kM6^lm9j|Ff%1k+-l(#H?OD2Izl8ZOF&?vd zO;Jpj&Blj4`D|NU$mt#ziRQ4t%Fp8&y@85732yq;Cya7^?Z8zXi2;Ao~%<#XfOH1Jt7^oKcotuJnh zR8;;+e-hL5GXdU`PbH<88&(wbX)DS*oHX)Rf<|{XRg3- zikXWb%~-VSZt~H#o0Twb($A$D(J$hdR`m=)4uagzr2eUW4q2w~vCet-)ORj_$#WT4 zQAKr7s&jc?=QYbzZ6nvH3XL+;4lCdmXY@?UiCgL9rdV9{bWiFHn&aTD3k&^ApS4RF zzJpDyS(QR*IuL8RF7Ew#gAoDU@6p;*QN8?(GRHKyd_9 zrXdtshR1B~x9B_@5(nSn6Sw!nRt|i0!TGAB6Ei$Hz#sKlag4)#v5v`oTK@g{O2QM( zOfbDm#jNI3M~7oGwVr8ZoxVLMZ9$6dg-o$(4ZTZ_@2l>bXw<~Jw-pCt$ypTt zUe#FcvQ+XOm1fpms{H|Axl~J?OW@N^lO~9G)rI&o4hFA0&ud@qJ2@9+A64|3G}V)b z5UDZi_NeUyv76ayy58e6(jRvm4(?QK9eaK!O@GiwtaLF?e0Ps}>#A)9$NQ8msPT;X zK96XAhXHejnTI=qgDp;N+UtCOpJKtG9Sa2W`_n#d!}iqvc99w&hGI zyxk~YMbwmSiHs{EjSAPLMHHZq>&_x_SE*YI=Za{qO6{TP^q5ZqZNA;sV(y~4=I{?& zz9N^f?NY=zyFaF~>bO>rsQDv?FPiU1&sjC__S9056MLZOD_pm>;(-kIg*^UA#!9ww zSl>q0NLx9Yf@0orm;bbOe?smV_HN;m zS5x`^8SDK!p3?~C{tAJlz17wASQL{%)I0SYIZX3a>c+B8L6R&5ygYoG7O{LEZhC@e zRJ35oc7E*mo>(O*lB%!nELgq_sex?#>J=YzH>ju2eRK3!vQVCL-$<1D8>e~Y54(i* zX?ZrjA~(j{7YMfO-EXkR-qGSM79}#mOQKlb_p-8cT!^WjOd0!%f@;Gxz7is6YLk%* z>x5#rTt+N>Mdz9HU?7-#tvUvG_-?nyPYNPJq8u5Zr@@BHCj+hj6ZPih) zIuB(n@>Q~2kblcpZbhK5NS6v=4gT#S{apw304FM}4Dg$uGBR%39=n~5{dv|K_He## z*yS-I$W9uuzKc^Pa~T@vDMAd?w#ND@T`^w!HuuzyoL3NPtXn2fo`KqfE9+&o)TlD}j&5!8FjV)%q<8f6nYQe|hsGK@&b#axv97c;?J-na z;KjBxhUzA`6yhS_ZcQWHHKzX<;jS_D;g|93QjPwL3&ZR&QaiPDUctwT#r7RCb!QvA zH><;S9%BDu3x72oXV^P6wV^;;Rl~Seb=9wQsbzh&7p)wlHjOhjR^RX>pZaP8S~XeS zha4xU^=af}^;eWTS-l``!~~4ZaYLr4ZEa{oq*_1je1y7{Q4QZYK4aRA9W&iG?sbfM Ru>t)ap>~Lyo2Xvn^?&dfpAP^4 diff --git a/frontend/package.json b/frontend/package.json index d287314..0b18377 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,6 +16,9 @@ "dependencies": { "@headlessui/react": "^2.1.2", "@nightingale-elements/nightingale-interpro-track": "^5.2.0", + "@nightingale-elements/nightingale-manager": "^5.2.0", + "@nightingale-elements/nightingale-navigation": "^5.2.0", + "@nightingale-elements/nightingale-sequence": "^5.2.0", "@radix-ui/react-popover": "^1.1.1", "@radix-ui/react-slider": "^1.2.0", "@radix-ui/react-tabs": "^1.1.0", @@ -77,6 +80,7 @@ "prettier": "^3.3.3", "prettier-plugin-css-order": "^2.1.2", "prettier-plugin-jsdoc": "^1.3.0", + "type-fest": "^4.26.1", "typescript": "^5.5.4", "vite": "^5.4.2", "vite-plugin-svgr": "^4.2.0" diff --git a/frontend/src/components/IPR.module.css b/frontend/src/components/IPR.module.css new file mode 100644 index 0000000..7084b7d --- /dev/null +++ b/frontend/src/components/IPR.module.css @@ -0,0 +1,40 @@ +.manager { + width: 100%; +} + +.grid { + display: grid !important; + grid-template-columns: auto 1fr; + align-items: center; + gap: 5px 20px; + line-height: unset !important; +} + +.grid > *:nth-child(1), +.grid > *:nth-child(3) { + font-weight: var(--bold); +} + +.grid > *:nth-child(odd) { + line-height: var(--compact); + text-align: right; +} + +.grid > *:nth-child(even) { + width: 0; + min-width: 100%; +} + +.legend { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(auto, 50px)); + justify-content: center; + width: 100%; + gap: 20px; +} + +.legend-entry { + flex-shrink: 0; + width: 10px; + height: 10px; +} diff --git a/frontend/src/components/IPR.tsx b/frontend/src/components/IPR.tsx new file mode 100644 index 0000000..f49052a --- /dev/null +++ b/frontend/src/components/IPR.tsx @@ -0,0 +1,128 @@ +import { Fragment, useMemo } from "react"; +import type NightingaleInterproTrack from "@nightingale-elements/nightingale-interpro-track"; +import type NightingaleManager from "@nightingale-elements/nightingale-manager"; +import type NightingaleNavigation from "@nightingale-elements/nightingale-navigation"; +import type NightingaleSequence from "@nightingale-elements/nightingale-sequence"; +import Flex from "@/components/Flex"; +import { getColorMap } from "@/util/color"; +import classes from "./IPR.module.css"; +import "@nightingale-elements/nightingale-manager"; +import "@nightingale-elements/nightingale-navigation"; +import "@nightingale-elements/nightingale-sequence"; +import "@nightingale-elements/nightingale-interpro-track"; + +/** track of features */ +type Track = { + label: string; + features: Feature[]; +}; + +type Feature = { + /** unique id */ + id: string; + /** human-readable label */ + label?: string; + /** arbitrary type/category */ + type?: string; + /** starting position of feature in sequence (1-indexed) */ + start: number; + /** ending position of feature in sequence (1-indexed) */ + end: number; +}; + +type Props = { sequence: string; tracks: Track[] }; + +const IPR = ({ sequence, tracks }: Props) => { + /** props for all nightingale components */ + const commonProps = { + length: sequence.length, + height: 50, + "display-start": 1, + "display-end": -1, + "margin-top": 0, + "margin-bottom": 0, + "margin-left": 0, + "margin-right": 0, + }; + + const managerProps: Partial = {}; + + const navigationProps: Partial = { + ...commonProps, + }; + + const sequenceProps: Partial = { + sequence, + ...commonProps, + }; + + const interproProps: Partial = { + ...commonProps, + label: ".feature.label", + "show-label": true, + expanded: true, + }; + + /** map of feature types to colors */ + const featureColors = useMemo( + () => + getColorMap( + tracks + .map((track) => track.features.map((feature) => feature.type ?? "")) + .flat(), + ), + [tracks], + ); + + return ( + <> + +
+
Navigator
+ +
Sequence
+ + {tracks.map((track, index) => ( + +
{track.label}
+ | null) => { + if (!ref) return; + + ref.data = track.features.map( + ({ id, label, type, start, end }) => ({ + accession: id, + label: label ?? id, + locations: [{ fragments: [{ start, end }] }], + residues: [], + color: featureColors[type ?? ""], + }), + ); + + return ref; + }} + {...interproProps} + height={50} + /> +
+ ))} +
+
+ + {/* legend */} +
+ {Object.entries(featureColors).map(([type, color]) => ( + + + {type || "-"} + + ))} +
+ + ); +}; + +export default IPR; diff --git a/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx b/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx deleted file mode 100644 index 709427f..0000000 --- a/frontend/src/components/nightingale-wrapper/NightingaleIPRWrapper.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useEffect, useRef } from "react"; -import "@nightingale-elements/nightingale-interpro-track"; - -// Define types -type Fragment = { - start: number; - end: number; -}; - -type Location = { - fragments: Fragment[]; -}; - -type Feature = { - accession: string; - color: string; - locations: Location[]; - shape: string; - type: string; -}; - -type Props = { - sequence: string; - features: Feature[]; -}; - -type NightingaleIPRElement = { - sequence: string; - features: Feature[]; -} & HTMLElement; - -const NightingaleIPRWrapper = ({ sequence, features }: Props) => { - const iprRef = useRef(null); - - useEffect(() => { - if (iprRef.current) { - iprRef.current.sequence = sequence; - iprRef.current.features = features; - } - }, [sequence, features]); - - return ; -}; - -// Use type augmentation instead of namespace -declare global { - type CustomElement = Partial< - T & - React.DOMAttributes & { children: React.ReactNode; ref?: React.Ref } - >; - - type CustomElementTag = { - "nightingale-interpro-track": CustomElement; - }; - - // Augment the JSX.IntrinsicElements interface - namespace JSX { - interface IntrinsicElements extends CustomElementTag {} - } -} - -export default NightingaleIPRWrapper; diff --git a/frontend/src/pages/Testbed.tsx b/frontend/src/pages/Testbed.tsx index b78670e..80c4e34 100755 --- a/frontend/src/pages/Testbed.tsx +++ b/frontend/src/pages/Testbed.tsx @@ -1,6 +1,7 @@ import { FaArrowRight, FaArrowsUpDown, + FaBarcode, FaBars, FaBeerMugEmpty, FaBrush, @@ -26,7 +27,7 @@ import { FaStop, FaTableCells, } from "react-icons/fa6"; -import { sample, uniqueId } from "lodash"; +import { random, sample, uniqueId } from "lodash"; import CustomIcon from "@/assets/custom-icon.svg?react"; import Ago from "@/components/Ago"; import Alert from "@/components/Alert"; @@ -36,10 +37,10 @@ import Collapsible from "@/components/Collapsible"; import Flex from "@/components/Flex"; import Form from "@/components/Form"; import Heading from "@/components/Heading"; +import IPR from "@/components/IPR"; import Link from "@/components/Link"; import Meta from "@/components/Meta"; import Network from "@/components/Network"; -import NightingaleIPRWrapper from "@/components/nightingale-wrapper/NightingaleIPRWrapper"; import NumberBox from "@/components/NumberBox"; import Popover from "@/components/Popover"; import Radios from "@/components/Radios"; @@ -57,24 +58,6 @@ import { useTheme } from "@/util/hooks"; import { formatDate, formatNumber } from "@/util/string"; import tableData from "../../fixtures/table.json"; -// Define types for IPR Visualization -type Fragment = { - start: number; - end: number; -}; - -type Location = { - fragments: Fragment[]; -}; - -type Feature = { - accession: string; - color: string; - locations: Location[]; - shape: string; - type: string; -}; - /** util func to log change to components for testing */ const logChange = (...args: unknown[]) => { console.debug(...args); @@ -141,35 +124,43 @@ for (let times = 0; times < 10; times++) { edges.push({ ...edge, id: uniqueId(), source: id, target: id }); } +/** generate fake sequence data */ +const sequence = Array(random(10, 100)) + .fill(null) + .map(() => sample(["G", "A", "T", "C"])) + .join(""); + +/** generate fake interproscan track data */ +const tracks = Array(10) + .fill(null) + .map(() => ({ + label: sample(["Lbl.", "Label", "Long Label", "Really Long Label"]), + features: Array(random(1, 3)) + .fill(null) + .map(() => { + const start = random(1, Math.floor(sequence.length / 2)); + const end = random( + start + Math.floor(sequence.length / 4), + sequence.length, + ); + return { + id: uniqueId(), + label: sample([ + "Lbl.", + "Label", + "Long Label", + "Really Long Label", + undefined, + ]), + type: sample(["cat", "dog", "bird", undefined]), + start, + end, + }; + }), + })); + /** test and example usage of formatting, elements, components, etc. */ const TestbedPage = () => { - - //mockSequence for IPR Visualization - const mockSequence = - "MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQTLSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQARLGADVLASHGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVYQAGAREGAERGLSAIRERLGPLVEQGRVRAATVGSLAGQPLQERAQAWGERLRARMEEMGSRTRDRLDEVKEQVAEVRAKLEEQAQQRLGSVTGRPRLVLCEEVKVLAGDLPPGGGAPGCHAIPGFNPRGFTPFSGEGSQYSMKLRTLLMVGRYSSWRRNMLLSHSLTRY"; - const mockIPRFeatures: Feature[] = [ - { - accession: "IPR000001", - color: "#00ff00", - locations: [{ fragments: [{ start: 10, end: 50 }] }], - shape: "rectangle", - type: "Domain", - }, - { - accession: "IPR000002", - color: "#ff0000", - locations: [{ fragments: [{ start: 60, end: 100 }] }], - shape: "rectangle", - type: "Family", - }, - { - accession: "IPR000003", - color: "#0000ff", - locations: [{ fragments: [{ start: 120, end: 180 }] }], - shape: "rectangle", - type: "Repeat", - }, - ]; return ( <> @@ -178,15 +169,13 @@ const TestbedPage = () => { Testbed
- {/* NightingaleIPRWrapper */} + {/* IPR */}
- }> - IPR Visualization + }> + IPR - + +
diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts index 1bc3a16..4342ad0 100755 --- a/frontend/src/vite-env.d.ts +++ b/frontend/src/vite-env.d.ts @@ -1,6 +1,16 @@ /// /// -/** no type def libraries for these libraries */ +/** no type defs for these libraries */ declare module "cytoscape-cola"; declare module "cytoscape-spread"; + +namespace React.JSX { + // eslint-disable-next-line + interface IntrinsicElements { + "nightingale-manager": JSX.HTMLAttributes; + "nightingale-navigation": JSX.HTMLAttributes; + "nightingale-sequence": JSX.HTMLAttributes; + "nightingale-interpro-track": JSX.HTMLAttributes; + } +} From 7744adac1d000b652c15bbfcdc5260e389c4a7d8 Mon Sep 17 00:00:00 2001 From: Vincent Rubinetti Date: Wed, 23 Oct 2024 10:36:32 -0400 Subject: [PATCH 5/5] navigator dark mode --- frontend/src/components/IPR.module.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/components/IPR.module.css b/frontend/src/components/IPR.module.css index 7084b7d..e3022f7 100644 --- a/frontend/src/components/IPR.module.css +++ b/frontend/src/components/IPR.module.css @@ -38,3 +38,7 @@ width: 10px; height: 10px; } + +:global(.zoom-polygon) { + fill: currentColor; +}