celldega 0.13.0-alpha.2 → 0.13.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "celldega",
3
- "version": "0.13.0-alpha.2",
3
+ "version": "0.13.0-alpha.3",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=16",
@@ -1761,7 +1761,7 @@ void main(void) {
1761
1761
  geometry.uv = unitPosition;
1762
1762
  fragColor = vFillColor;
1763
1763
  DECKGL_FILTER_COLOR(fragColor, geometry);
1764
- }`;var Zi=class extends BB{getShaders(){let A=super.getShaders();return A.vs=C3,A.fs=E3,A}draw({uniforms:A}){super.draw({uniforms:{...A,tile_height:this.props.tile_height,tile_width:this.props.tile_width}})}};var i3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new Zi({id:"row-layer",data:g.cats.row_cat_data,getPosition:B=>{let Q=g.mat.orders.row[g.order.current.row],C=g.mat.num_rows-Q[B.original_index];return[B.position[0]+g.viz.cat_shift_row,g.viz.row_offset*(C+1.5)]},getFillColor:B=>B.color,pickable:!0,transitions:A,opacity:.8,tile_width:g.viz.row_cat_width/2*.9,tile_height:g.viz.mat_height/g.mat.num_rows*.5})},o3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new Zi({id:"col-layer",data:g.cats.col_cat_data,getPosition:B=>{let Q=g.mat.orders.col[g.order.current.col],C=g.mat.num_cols-Q[B.original_index];return[g.viz.col_offset*(C+.5),B.position[1]+g.viz.cat_shift_col]},getFillColor:B=>B.color,pickable:!0,transitions:A,opacity:.8,tile_width:g.viz.mat_width/g.mat.num_cols*.5,tile_height:g.viz.col_cat_height/2})};var j_=({isDragging:g})=>g?"grabbing":"pointer",D3=(g,A,I)=>(typeof A=="number"&&(A=A+100,I=I+100),new AE({parent:g,getCursor:j_,width:A,height:I}));var X_=(g,A,I)=>{let B=A.index,Q=I.order.current.row,C=50,E=I.mat.num_rows-I.mat.orders.row[Q][B],i=C,o=I.viz.row_offset*(E+1.5);return[i,o]},z_=(g,A,I)=>{let B=A.index,Q=I.order.current.col,C=50,E=I.mat.num_cols-I.mat.orders.col[Q][B];return[I.viz.col_offset*(E+.5),C]},a3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new ti({id:"row-label-layer",data:g.labels.row_label_data,getPosition:(B,Q)=>X_(B,Q,g),getText:B=>B.name,getSize:g.viz.font_size.rows,getColor:[0,0,0],getAngle:0,getTextAnchor:"end",getAlignmentBaseline:"center",fontFamily:"Arial",sizeUnits:"pixels",sizeScale:2,pickable:!0,transitions:A})},t3=g=>{function A(Q,C){let E=Math.pow(2,Q);return[0,75/C*E]}let I={getPosition:{duration:g.animate.duration,easing:kI}};return new ti({id:"col-label-layer",data:g.labels.col_label_data,getPosition:(Q,C)=>z_(Q,C,g),getText:Q=>Q.name,getSize:g.viz.font_size.cols,getColor:[0,0,0],getAngle:45,getTextAnchor:"start",getAlignmentBaseline:"bottom",fontFamily:"Arial",sizeUnits:"pixels",sizeScale:2,pickable:!0,transitions:I,getPixelOffset:()=>A(g.zoom.zoom_data.matrix.zoom_x,g.mat.num_cols)})},G3=250,s3=(g,A,I,B,Q,C)=>{let E=[],i=B==="col"?"row":"col";pg(I.el).selectAll(`.button-${i}`).classed("active",!1).style("border-color",I.buttons.gray),B==="col"?E=I.mat.net_mat.map(t=>t[C]):E=I.mat.net_mat[C];let o=Array.from(E.keys()).sort((t,G)=>E[G]-E[t]),D=o.length,a=Array(D);o.forEach((t,G)=>{a[t]=D-G}),I.mat.orders[i].custom=a,I.order.current[i]="custom",A.mat_layer=A.mat_layer.clone({updateTriggers:{getPosition:[I.order.current.row,I.order.current.col,Q]}}),i==="col"?(A.col_label_layer=A.col_label_layer.clone({updateTriggers:{getPosition:[I.order.current.col,Q]}}),A.col_cat_layer=A.col_cat_layer.clone({updateTriggers:{getPosition:I.order.current.col}}),fs(A,I,"col")):i==="row"&&(A.row_label_layer=A.row_label_layer.clone({updateTriggers:{getPosition:[I.order.current.row,Q]}}),A.row_cat_layer=A.row_cat_layer.clone({updateTriggers:{getPosition:I.order.current.row}}),fs(A,I,"row")),g.setProps({layers:HQ(A)})},v_=(g,A,I,B)=>{B.labels.clicks.row+=1,B.labels.clicks.row===1?(B.click.type="row_label",B.click.value={name:g.object.name},setTimeout(()=>{B.labels.clicks.row=0},G3),Object.keys(B.model).length>0&&(B.model.set("click_info",null),B.model.set("click_info",B.click),B.model.save_changes()),typeof B.custom_callbacks.row=="function"&&B.custom_callbacks.row(g.object.name)):B.labels.clicks.row===2&&(B.labels.clicks.row=0,s3(A,I,B,"row",g.object.name,g.object.index))},__=(g,A,I,B)=>{B.labels.clicks.col+=1,B.labels.clicks.col===1?(B.click.type="col_label",B.click.value={name:g.object.name},setTimeout(()=>{B.labels.clicks.col=0},G3),Object.keys(B.model).length>0&&(B.model.set("click_info",null),B.model.set("click_info",B.click),B.model.save_changes()),typeof B.custom_callbacks.col=="function"&&B.custom_callbacks.col(g.object.name)):B.labels.clicks.col===2&&(B.labels.clicks.col=0,s3(A,I,B,"col",g.object.name,g.object.index))},w3=(g,A,I)=>{A.row_label_layer=A.row_label_layer.clone({onClick:B=>v_(B,g,A,I)})},c3=(g,A,I)=>{A.col_label_layer=A.col_label_layer.clone({onClick:B=>__(B,g,A,I)})};var $_=(g,A)=>{let I=A.order.current.row,B=A.order.current.col,Q=A.mat.num_cols-A.mat.orders.col[B][g.col],C=A.mat.num_rows-A.mat.orders.row[I][g.row],E=A.viz.col_width*(Q+.5),i=A.viz.row_offset*(C+1.5);return[E,i]},e3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new Zi({id:"mat-layer",data:g.mat.mat_data,getPosition:B=>$_(B,g),getFillColor:B=>B.color,pickable:!0,antialiasing:!1,tile_height:g.viz.mat_height/g.mat.num_rows*.5,tile_width:g.viz.mat_width/g.mat.num_cols*.5,transitions:A})},A$=(g,A,I,B)=>{let Q=B.labels.row_label_data[g.object.row].name,C=B.labels.col_label_data[g.object.col].name;B.click.type="mat",B.click.value={name:`${Q}_${C}`,row:Q,col:C},Object.keys(B.model).length>0&&(B.model.set("click_info",null),B.model.set("click_info",B.click),B.model.save_changes())},N3=(g,A,I)=>{A.mat_layer=A.mat_layer.clone({onClick:B=>A$(B,g,A,I)})};var k3=(g,A)=>{let{object:I,layer:B}=A,Q=g.root.querySelector(".deck-tooltip");Q.style.marginTop="50px";let C=Q.parentElement.parentElement;if(C.style.position="unset",I){if(B.id==="row-label-layer")return{html:`Row Label: ${I.name}`,style:{color:"white"}};if(B.id==="col-label-layer")return{html:`Col Label: ${I.name}`,style:{color:"white"}};if(B.id==="row-layer")return{html:`Row Label: ${I.name}`,style:{color:"white"}};if(B.id==="col-layer")return{html:`Col Label: ${I.name}`,style:{color:"white"}};if(B.id==="row-dendro-layer")return{html:`row-dendro-${I.properties.name}<br>${I.properties.all_names}`,style:{color:"white"}};if(B.id==="col-dendro-layer")return{html:`row-dendro-${I.properties.name}<br>${I.properties.all_names}`,style:{color:"white"}};if(B.id==="mat-layer"){let E=g.labels.row_label_data[I.row].name,i=g.labels.col_label_data[I.col].name;return{html:`Row: ${E} <br> Column: ${i} <br> Value: ${I.value.toFixed(2)}`,style:{color:"white"}}}}};var h3=(g,A,I)=>{let{ini_pan_y:B}=I.zoom,Q,C=Math.pow(2,A);I.zoom.min_pan_y=(B-I.viz.row_offset)/C+I.viz.row_offset;let E=B-I.zoom.min_pan_y;return I.zoom.max_pan_y=B+E,g<=I.zoom.min_pan_y?Q=I.zoom.min_pan_y:g>I.zoom.max_pan_y?Q=I.zoom.max_pan_y:Q=g,Q},F3=(g,A,I)=>{let{ini_pan_x:B}=I.zoom,Q,C=Math.pow(2,A);I.zoom.min_pan_x=B/C;let E=B-I.zoom.min_pan_x;return I.zoom.max_pan_x=B+E,g<=I.zoom.min_pan_x?Q=I.zoom.min_pan_x:g>I.zoom.max_pan_x?Q=I.zoom.max_pan_x:Q=g,Q};var y3=(g,A,I,B)=>{let Q;return A==="matrix"?Q={matrix:{zoom:[I[0],I[1]],target:[B[0],B[1]]},rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]},dendro_rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},dendro_cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]}}:A==="cols"||A==="dendro_cols"?Q={matrix:{zoom:[I[0],I[1]],target:[B[0],g.zoom.min_pan_y]},rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,g.zoom.min_pan_y]},cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]},dendro_rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,g.zoom.min_pan_y]},dendro_cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]}}:(A==="rows"||A==="dendro_rows")&&(Q={matrix:{zoom:[I[0],I[1]],target:[g.zoom.min_pan_x,B[1]]},rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]},dendro_rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},dendro_cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]}}),Q};var r3=(g,A,I,B)=>{let{zoom_data:Q}=g.zoom;Q.matrix.pan_x=B[0],Q.matrix.pan_y=B[1],Q.matrix.zoom_x=I[0],Q.matrix.zoom_y=I[1],Q.rows.pan_x=g.zoom.ini_pan_x,Q.rows.pan_y=B[1],Q.rows.zoom_x=I[0],Q.rows.zoom_y=I[1],Q.cols.pan_x=B[0],Q.cols.pan_y=g.zoom.ini_pan_y,Q.cols.zoom_x=I[0],Q.cols.zoom_y=I[1],Q.dendro_rows.pan_x=g.zoom.ini_pan_x,Q.dendro_rows.pan_y=B[1],Q.dendro_rows.zoom_x=I[0],Q.dendro_rows.zoom_y=I[1],Q.dendro_cols.pan_x=B[0],Q.dendro_cols.pan_y=g.zoom.ini_pan_y,Q.dendro_cols.zoom_x=I[0],Q.dendro_cols.zoom_y=I[1]},n3=g=>{g.zoom.zoom_data={},g.zoom.zoom_data.total_zoom={},g.zoom.zoom_data.total_zoom.x=0,g.zoom.zoom_data.total_zoom.y=0,g.zoom.zoom_data.matrix={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.rows={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.cols={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.dendro_rows={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.dendro_cols={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y}};var R3=(g,A,I,B)=>{let{viewState:Q}=g,{viewId:C}=g,{zoom:E,target:i}=Q,o,D;C==="cols"?B.zoom.minor_zoom_axis==="X"?(o=E[0],D=E[1]):B.zoom.minor_zoom_axis==="Y"?(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y):B.zoom.minor_zoom_axis==="none"&&(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]):(C==="rows"||C==="dendro_rows")&&(B.zoom.minor_zoom_axis==="Y"?(o=E[0],D=E[1]):B.zoom.minor_zoom_axis==="X"?(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y):B.zoom.minor_zoom_axis==="none"&&(o=E[0],D=E[1]-B.zoom.zoom_data[C].zoom_y)),C==="dendro_cols"?B.zoom.minor_zoom_axis==="X"?(o=E[0],D=E[1]):B.zoom.minor_zoom_axis==="Y"?(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y):B.zoom.minor_zoom_axis==="none"&&(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]):C==="matrix"&&(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y),B.zoom.zoom_data.total_zoom.x+=o,B.zoom.zoom_data.total_zoom.y+=D,B.zoom.zoom_data.total_zoom.x=Math.max(0,B.zoom.zoom_data.total_zoom.x),B.zoom.zoom_data.total_zoom.y=Math.max(0,B.zoom.zoom_data.total_zoom.y);let a=[B.zoom.zoom_data.total_zoom.x,B.zoom.zoom_data.total_zoom.y],t=Math.max(0,a[0]),G=Math.max(0,a[1]);B.zoom.major_zoom_axis==="X"?G=t-B.zoom.zoom_delay:B.zoom.major_zoom_axis==="Y"&&(t=G-B.zoom.zoom_delay),t=Math.max(0,t),G=Math.max(0,G);let s=F3(i[0],t,B),w=h3(i[1],G,B),e=[t,G],c=[s,w],h=y3(B,C,e,c);r3(B,C,e,c);let R;B.zoom.major_zoom_axis==="X"?R=Math.pow(2,B.zoom.zoom_data.matrix.zoom_x):B.zoom.major_zoom_axis==="Y"?R=Math.pow(2,B.zoom.zoom_data.matrix.zoom_y):B.zoom.major_zoom_axis==="all"&&(R=Math.pow(2,B.zoom.zoom_data.matrix.zoom_x)),I.row_label_layer=I.row_label_layer.clone({getSize:B.viz.font_size.rows*Math.pow(2,B.zoom.zoom_data.matrix.zoom_y)}),I.col_label_layer=I.col_label_layer.clone({getSize:B.viz.font_size.cols*Math.pow(2,B.zoom.zoom_data.matrix.zoom_x),updateTriggers:{getPixelOffset:B.zoom.zoom_data.matrix.zoom_x}});let N;B.zoom.major_zoom_axis!=="all"?N=R<B.zoom.switch_ratio?B.zoom.major_zoom_axis:"all":N="all",B.views.views_list=B.views.views_list.map(y=>new IB({...y.props,controller:{...y.props.controller,doubleClickZoom:!1,scrollZoom:!0,inertia:!0,zoomAxis:N}})),A.setProps({viewState:h,layers:HQ(I),views:B.views.views_list})};var M3=g=>{let A;g.mat.num_rows>g.mat.num_cols?(g.zoom.major_zoom_axis="Y",g.zoom.minor_zoom_axis="X",A=g.mat.num_rows/g.mat.num_cols):g.mat.num_rows<g.mat.num_cols?(g.zoom.major_zoom_axis="X",g.zoom.minor_zoom_axis="Y",A=g.mat.num_cols/g.mat.num_rows):g.mat.num_rows===g.mat.num_cols&&(g.zoom.major_zoom_axis="all",g.zoom.minor_zoom_axis="none",A=1),g.zoom.switch_ratio=A,g.zoom.zoom_delay=Math.log2(A);let I=[new IB({id:"matrix",x:`${g.viz.row_region+g.viz.label_buffer}px`,y:`${g.viz.col_region+g.viz.label_buffer}px`,width:`${g.viz.mat_width}px`,height:`${g.viz.mat_height}px`,controller:{scrollZoom:!0,inertia:!0,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"rows",x:"0px",y:`${g.viz.col_region+g.viz.label_buffer}px`,width:`${g.viz.row_region}px`,height:`${g.viz.mat_height}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"cols",x:`${g.viz.row_region+g.viz.label_buffer}px`,y:"0px",width:`${g.viz.mat_width}px`,height:`${g.viz.col_region}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"dendro_cols",x:`${g.viz.row_region+g.viz.label_buffer}px`,y:`${g.viz.col_region+g.viz.label_buffer+g.viz.mat_height}px`,width:`${g.viz.mat_width}px`,height:`${g.viz.dendrogram_width}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"dendro_rows",x:`${g.viz.row_region+g.viz.label_buffer+g.viz.mat_width}px`,y:`${g.viz.col_region+g.viz.label_buffer}px`,width:`${g.viz.dendrogram_width}px`,height:`${g.viz.mat_height}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}})];g.views={},g.views.views_list=I},J3=g=>({matrix:{target:[g.zoom.ini_pan_x,g.zoom.ini_pan_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},rows:{target:[g.viz.label_row_x,g.zoom.ini_pan_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},cols:{target:[g.zoom.ini_pan_x,g.viz.label_col_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},dendro_rows:{target:[g.viz.label_row_x,g.zoom.ini_pan_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},dendro_cols:{target:[g.zoom.ini_pan_x,g.viz.label_col_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]}});var g$=(g,A=255)=>{let I=UI(g);return I?[I.r,I.g,I.b,A]:[0,0,0,A]},Y3=(g,A,I)=>{let B=I==="row",Q=B?g.row_nodes:g.col_nodes,C=B?A.cats.num_cats.row:A.cats.num_cats.col,E=B?A.viz.row_cat_offset:A.viz.col_cat_offset,i=B?A.viz.row_offset:A.viz.col_offset;return Q.flatMap((D,a)=>Array.from({length:C}).map((t,G)=>{let s=`cat-${G}`,w=D[s];if(!w||!w.includes(": "))return null;let e=w.split(": ")[1],c=g.global_cat_colors[e],h=g$(c,255);return{position:B?[E*(G+.5)+20,i*(a+.5)]:[i*(a+.5),E*(G+1.5)-30],color:h,name:e,level:G,original_index:a}})).filter(Boolean)},K3=(g,A)=>Y3(g,A,"row"),q3=(g,A)=>Y3(g,A,"col");var U3=(g,A)=>{let I=[];g.col_nodes.forEach((B,Q)=>{let C={name:B.name,ini:B.ini,clust:B.clust,rank:B.rank,rankvar:B.rankvar,index:Q};I.push(C)}),A.labels.col_label_data=I,A.labels.clicks.col=0,A.mat.orders.col={},A.mat.orders.col.ini=I.map(B=>B.ini),A.mat.orders.col.clust=I.map(B=>B.clust+1),A.mat.orders.col.rank=I.map(B=>B.rank+1),A.mat.orders.col.rankvar=I.map(B=>B.rankvar+1)},H3=(g,A)=>{let I=[];g.row_nodes.forEach((B,Q)=>{let C={name:B.name,ini:B.ini,clust:B.clust,rank:B.rank,rankvar:B.rankvar,index:Q};I.push(C)}),A.labels.row_label_data=I,A.labels.clicks.row=0,A.mat.orders.row={},A.mat.orders.row.ini=I.map(B=>B.ini),A.mat.orders.row.clust=I.map(B=>B.clust+1),A.mat.orders.row.rank=I.map(B=>B.rank+1),A.mat.orders.row.rankvar=I.map(B=>B.rankvar+1)};var S3=(g,A)=>{let I;g.mat.forEach((B,Q)=>{B.forEach((C,E)=>{C>=0?I=[255,0,0]:I=[0,0,255];let i={position:[A.viz.col_offset*(E+.5),A.viz.row_offset*(Q+1.5)],color:[I[0],I[1],I[2],255*Math.abs(C)/A.mat.max_abs_value],value:C,row:Q,col:E};A.mat.mat_data.push(i)})})};var L3=(g,A,I,B,Q,C,E,i)=>{let o={};return o.root=I,o.model=g,o.custom_callbacks={},o.custom_callbacks.row=C,o.custom_callbacks.col=E,o.custom_callbacks.col_dendro=i,o.viz={},o.viz.height_margin=100,o.cats={},o.cats.num_cats={},o.cats.num_cats.row=Object.keys(A.cat_colors.row).length,o.cats.num_cats.col=Object.keys(A.cat_colors.col).length,o.root.style.height=`${Q+o.viz.height_margin}px`,o.viz.row_cat_offset=9,o.viz.col_cat_offset=9,o.viz.mat_width=B-o.viz.row_cat_offset*o.cats.num_cats.row,o.viz.mat_height=Q-o.viz.col_cat_offset*o.cats.num_cats.col,o.mat={},o.mat.num_rows=A.mat.length,o.mat.num_cols=A.mat[0].length,o.row_nodes=A.row_nodes,o.col_nodes=A.col_nodes,o.mat.net_mat=A.mat,o.linkage=A.linkage,o.viz.base_font_size=125,o.viz.col_label=75,o.viz.row_label=75,o.viz.extra_space={},o.viz.extra_space.row=5,o.viz.extra_space.col=5,o.zoom={},o.zoom.ini_zoom_x=0,o.zoom.ini_zoom_y=0,o.viz.row_cat_width=8,o.viz.col_cat_height=8,o.viz.label_row_x=15,o.viz.label_col_y=25,o.viz.cat_shift_row=30,o.viz.label_buffer=1,o.animate={},o.animate.duration=2500,o.viz.dendrogram_width=15,o.viz.font_size={},o.viz.font_size.rows=o.viz.base_font_size/o.mat.num_rows,o.viz.font_size.cols=o.viz.base_font_size/o.mat.num_cols,o.viz.col_region=(o.viz.col_cat_height+o.viz.extra_space.col)*o.cats.num_cats.col+o.viz.col_label,o.viz.row_region=(o.viz.row_cat_width+o.viz.extra_space.row)*o.cats.num_cats.row+o.viz.row_label,o.viz.col_width=o.viz.mat_width/o.mat.num_cols,o.viz.row_offset=o.viz.mat_height/o.mat.num_rows,o.viz.col_offset=o.viz.mat_width/o.mat.num_cols,o.viz.cat_shift_col=o.viz.col_label,o.zoom.ini_pan_x=o.viz.mat_width/2,o.zoom.ini_pan_y=o.viz.mat_height/2+o.viz.row_offset,o.mat.mat_data=[],o.mat.num_rows=A.mat.length,o.mat.num_cols=A.mat[0].length,o.mat.max_abs_value=A.mat.flat().reduce((D,a)=>Math.max(D,Math.abs(a)),-1/0),o.order={},o.order.current={},o.order.current.row="clust",o.order.current.col="clust",o.order.new="ini",o.buttons={},o.buttons.blue="#8797ff",o.buttons.gray="#EEEEEE",o.click={},o.click.type=null,o.click.value=null,o};var _R=async(g,A,I,B="800",Q="800",C=null,E=null,i=null)=>{let o=document.createElement("div");o.style.border="1px solid #d3d3d3";let D=D3(o,B,Q),a=L3(g,I,o,B,Q,C,E,i);A.style.position="relative",a.el=A,S3(I,a),a.labels={},a.labels.clicks={},n3(a),a.mat.orders={},H3(I,a),U3(I,a),a.cats.row_cat_data=K3(I,a),a.cats.col_cat_data=q3(I,a),Zf(a),ms(a,"row"),ms(a,"col");let t={};t.mat_layer=e3(a),t.row_label_layer=a3(a),t.col_label_layer=t3(a),t.row_cat_layer=i3(a),t.col_cat_layer=o3(a),t.row_dendro_layer=xR(t,a,"row"),t.col_dendro_layer=xR(t,a,"col"),M3(a);let G=J3(a);N3(D,t,a),w3(D,t,a),c3(D,t,a),uR(D,t,a,"row"),uR(D,t,a,"col"),D.setProps({onViewStateChange:w=>R3(w,D,t,a),views:a.views.views_list,initialViewState:G,getTooltip:w=>k3(a,w),layerFilter:Wf,layers:HQ(t)});let s=Xf(D,t,a);A.appendChild(s),A.appendChild(a.root)};var d3=async({model:g,el:A})=>{let I=g.get("token"),B=g.get("creds"),Q=g.get("ini_x"),C=g.get("ini_y"),E=g.get("ini_z"),i=g.get("ini_zoom"),o=g.get("base_url"),D=g.get("dataset_name"),a=g.get("width"),t=g.get("height"),G=g.get("meta_cell"),s=g.get("meta_cluster"),w=g.get("umap"),e=g.get("landscape_state"),c=g.get("segmentation");return zR(A,g,I,Q,C,E,i,o,D,.25,a,t,G,s,w,e,c,B)},p3=async({model:g,el:A})=>{let I=g.get("token"),B=g.get("ini_x"),Q=g.get("ini_y"),C=g.get("ini_z"),E=g.get("ini_zoom"),i=g.get("base_url"),o=g.get("dataset_name"),D=g.get("square_tile_size"),a=g.get("width"),t=g.get("height");vR(g,A,i,I,B,Q,C,E,D,o,a,t)},l3=async({model:g,el:A})=>{let I=g.get("token"),B=g.get("ini_x"),Q=g.get("ini_y"),C=g.get("ini_z"),E=g.get("ini_zoom"),i=g.get("base_url"),o=g.get("dataset_name"),D=g.get("width"),a=g.get("height"),t=g.get("creds");Tr(g,A,i,I,B,Q,C,E,o,D,a,t)},f3=async({model:g,el:A})=>{let I=g.get("technology");if(["MERSCOPE","Xenium"].includes(I))return d3({model:g,el:A});if(["Visium-HD"].includes(I))return p3({model:g,el:A});if(["h&e"].includes(I))return l3({model:g,el:A})},m3=async({model:g,el:A})=>{let I=g.get("network"),B=g.get("width"),Q=g.get("height");_R(g,A,I,B,Q)};function I$({model:g,el:A}){try{let I=g.get("component");if(!I){fh("Component type is not defined",{data:{model:g?.id||"unknown",el:A?.id||"unknown"}});return}switch(I){case"Landscape":return f3({model:g,el:A});case"Matrix":return m3({model:g,el:A});default:fh(`Unknown component type: ${I}`,{data:{componentType:I,model:g?.id||"unknown"}});return}}catch(I){let B=Sg(I,{context:"render function",logUnexpected:!0,messages:{unexpected:"Error in render function"}});A.innerHTML=`<div style="color: red; padding: 10px;">Error: ${B.message}</div>`}}var zTA={landscape_ist:zR,landscape_sst:vR,landscape_h_e:Tr,matrix_viz:_R,render:I$,render_landscape_ist:d3,render_landscape_sst:p3,render_landscape_h_e:l3,render_landscape:f3,render_matrix_new:m3};export{zTA as default};
1764
+ }`;var Zi=class extends BB{getShaders(){let A=super.getShaders();return A.vs=C3,A.fs=E3,A}draw({uniforms:A}){super.draw({uniforms:{...A,tile_height:this.props.tile_height,tile_width:this.props.tile_width}})}};var i3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new Zi({id:"row-layer",data:g.cats.row_cat_data,getPosition:B=>{let Q=g.mat.orders.row[g.order.current.row],C=g.mat.num_rows-Q[B.original_index];return[B.position[0]+g.viz.cat_shift_row,g.viz.row_offset*(C+1.5)]},getFillColor:B=>B.color,pickable:!0,transitions:A,opacity:.8,tile_width:g.viz.row_cat_width/2*.9,tile_height:g.viz.mat_height/g.mat.num_rows*.5})},o3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new Zi({id:"col-layer",data:g.cats.col_cat_data,getPosition:B=>{let Q=g.mat.orders.col[g.order.current.col],C=g.mat.num_cols-Q[B.original_index];return[g.viz.col_offset*(C+.5),B.position[1]+g.viz.cat_shift_col]},getFillColor:B=>B.color,pickable:!0,transitions:A,opacity:.8,tile_width:g.viz.mat_width/g.mat.num_cols*.5,tile_height:g.viz.col_cat_height/2})};var j_=({isDragging:g})=>g?"grabbing":"pointer",D3=(g,A,I)=>(typeof A=="number"&&(A=A+100,I=I+100),new AE({parent:g,getCursor:j_,width:A,height:I}));var X_=(g,A,I)=>{let B=A.index,Q=I.order.current.row,C=50,E=I.mat.num_rows-I.mat.orders.row[Q][B],i=C,o=I.viz.row_offset*(E+1.5);return[i,o]},z_=(g,A,I)=>{let B=A.index,Q=I.order.current.col,C=50,E=I.mat.num_cols-I.mat.orders.col[Q][B];return[I.viz.col_offset*(E+.5),C]},a3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new ti({id:"row-label-layer",data:g.labels.row_label_data,getPosition:(B,Q)=>X_(B,Q,g),getText:B=>B.name,getSize:g.viz.font_size.rows,getColor:[0,0,0],getAngle:0,getTextAnchor:"end",getAlignmentBaseline:"center",fontFamily:"Arial",sizeUnits:"pixels",sizeScale:2,pickable:!0,transitions:A})},t3=g=>{function A(Q,C){let E=Math.pow(2,Q);return[0,75/C*E]}let I={getPosition:{duration:g.animate.duration,easing:kI}};return new ti({id:"col-label-layer",data:g.labels.col_label_data,getPosition:(Q,C)=>z_(Q,C,g),getText:Q=>Q.name,getSize:g.viz.font_size.cols,getColor:[0,0,0],getAngle:45,getTextAnchor:"start",getAlignmentBaseline:"bottom",fontFamily:"Arial",sizeUnits:"pixels",sizeScale:2,pickable:!0,transitions:I,getPixelOffset:()=>A(g.zoom.zoom_data.matrix.zoom_x,g.mat.num_cols)})},G3=250,s3=(g,A,I,B,Q,C)=>{let E=[],i=B==="col"?"row":"col";pg(I.el).selectAll(`.button-${i}`).classed("active",!1).style("border-color",I.buttons.gray),B==="col"?E=I.mat.net_mat.map(t=>t[C]):E=I.mat.net_mat[C];let o=Array.from(E.keys()).sort((t,G)=>E[G]-E[t]),D=o.length,a=Array(D);o.forEach((t,G)=>{a[t]=D-G}),I.mat.orders[i].custom=a,I.order.current[i]="custom",A.mat_layer=A.mat_layer.clone({updateTriggers:{getPosition:[I.order.current.row,I.order.current.col,Q]}}),i==="col"?(A.col_label_layer=A.col_label_layer.clone({updateTriggers:{getPosition:[I.order.current.col,Q]}}),A.col_cat_layer=A.col_cat_layer.clone({updateTriggers:{getPosition:I.order.current.col}}),fs(A,I,"col")):i==="row"&&(A.row_label_layer=A.row_label_layer.clone({updateTriggers:{getPosition:[I.order.current.row,Q]}}),A.row_cat_layer=A.row_cat_layer.clone({updateTriggers:{getPosition:I.order.current.row}}),fs(A,I,"row")),g.setProps({layers:HQ(A)})},v_=(g,A,I,B)=>{B.labels.clicks.row+=1,B.labels.clicks.row===1?(B.click.type="row_label",B.click.value={name:g.object.name},setTimeout(()=>{B.labels.clicks.row=0},G3),Object.keys(B.model).length>0&&(B.model.set("click_info",null),B.model.set("click_info",B.click),B.model.save_changes()),typeof B.custom_callbacks.row=="function"&&B.custom_callbacks.row(g.object.name)):B.labels.clicks.row===2&&(B.labels.clicks.row=0,s3(A,I,B,"row",g.object.name,g.object.index))},__=(g,A,I,B)=>{B.labels.clicks.col+=1,B.labels.clicks.col===1?(B.click.type="col_label",B.click.value={name:g.object.name},setTimeout(()=>{B.labels.clicks.col=0},G3),Object.keys(B.model).length>0&&(B.model.set("click_info",null),B.model.set("click_info",B.click),B.model.save_changes()),typeof B.custom_callbacks.col=="function"&&B.custom_callbacks.col(g.object.name)):B.labels.clicks.col===2&&(B.labels.clicks.col=0,s3(A,I,B,"col",g.object.name,g.object.index))},w3=(g,A,I)=>{A.row_label_layer=A.row_label_layer.clone({onClick:B=>v_(B,g,A,I)})},c3=(g,A,I)=>{A.col_label_layer=A.col_label_layer.clone({onClick:B=>__(B,g,A,I)})};var $_=(g,A)=>{let I=A.order.current.row,B=A.order.current.col,Q=A.mat.num_cols-A.mat.orders.col[B][g.col],C=A.mat.num_rows-A.mat.orders.row[I][g.row],E=A.viz.col_width*(Q+.5),i=A.viz.row_offset*(C+1.5);return[E,i]},e3=g=>{let A={getPosition:{duration:g.animate.duration,easing:kI}};return new Zi({id:"mat-layer",data:g.mat.mat_data,getPosition:B=>$_(B,g),getFillColor:B=>B.color,pickable:!0,antialiasing:!1,tile_height:g.viz.mat_height/g.mat.num_rows*.5,tile_width:g.viz.mat_width/g.mat.num_cols*.5,transitions:A})},A$=(g,A,I,B)=>{let Q=B.labels.row_label_data[g.object.row].name,C=B.labels.col_label_data[g.object.col].name;B.click.type="mat",B.click.value={name:`${Q}_${C}`,row:Q,col:C},Object.keys(B.model).length>0&&(B.model.set("click_info",null),B.model.set("click_info",B.click),B.model.save_changes())},N3=(g,A,I)=>{A.mat_layer=A.mat_layer.clone({onClick:B=>A$(B,g,A,I)})};var k3=(g,A)=>{let{object:I,layer:B}=A,Q=g.root.querySelector(".deck-tooltip");Q.style.marginTop="50px";let C=Q.parentElement.parentElement;if(C.style.position="unset",I){if(B.id==="row-label-layer")return{html:`Row Label: ${I.name}`,style:{color:"white"}};if(B.id==="col-label-layer")return{html:`Col Label: ${I.name}`,style:{color:"white"}};if(B.id==="row-layer")return{html:`Row Label: ${I.name}`,style:{color:"white"}};if(B.id==="col-layer")return{html:`Col Label: ${I.name}`,style:{color:"white"}};if(B.id==="row-dendro-layer")return{html:`row-dendro-${I.properties.name}<br>${I.properties.all_names}`,style:{color:"white"}};if(B.id==="col-dendro-layer")return{html:`row-dendro-${I.properties.name}<br>${I.properties.all_names}`,style:{color:"white"}};if(B.id==="mat-layer"){let E=g.labels.row_label_data[I.row].name,i=g.labels.col_label_data[I.col].name;return{html:`Row: ${E} <br> Column: ${i} <br> Value: ${I.value.toFixed(2)}`,style:{color:"white"}}}}};var h3=(g,A,I)=>{let{ini_pan_y:B}=I.zoom,Q,C=Math.pow(2,A);I.zoom.min_pan_y=(B-I.viz.row_offset)/C+I.viz.row_offset;let E=B-I.zoom.min_pan_y;return I.zoom.max_pan_y=B+E,g<=I.zoom.min_pan_y?Q=I.zoom.min_pan_y:g>I.zoom.max_pan_y?Q=I.zoom.max_pan_y:Q=g,Q},F3=(g,A,I)=>{let{ini_pan_x:B}=I.zoom,Q,C=Math.pow(2,A);I.zoom.min_pan_x=B/C;let E=B-I.zoom.min_pan_x;return I.zoom.max_pan_x=B+E,g<=I.zoom.min_pan_x?Q=I.zoom.min_pan_x:g>I.zoom.max_pan_x?Q=I.zoom.max_pan_x:Q=g,Q};var y3=(g,A,I,B)=>{let Q;return A==="matrix"?Q={matrix:{zoom:[I[0],I[1]],target:[B[0],B[1]]},rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]},dendro_rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},dendro_cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]}}:A==="cols"||A==="dendro_cols"?Q={matrix:{zoom:[I[0],I[1]],target:[B[0],g.zoom.min_pan_y]},rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,g.zoom.min_pan_y]},cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]},dendro_rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,g.zoom.min_pan_y]},dendro_cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]}}:(A==="rows"||A==="dendro_rows")&&(Q={matrix:{zoom:[I[0],I[1]],target:[g.zoom.min_pan_x,B[1]]},rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]},dendro_rows:{zoom:[g.zoom.ini_zoom_x,I[1]],target:[g.viz.label_row_x,B[1]]},dendro_cols:{zoom:[I[0],g.zoom.ini_zoom_y],target:[B[0],g.viz.label_col_y]}}),Q};var r3=(g,A,I,B)=>{let{zoom_data:Q}=g.zoom;Q.matrix.pan_x=B[0],Q.matrix.pan_y=B[1],Q.matrix.zoom_x=I[0],Q.matrix.zoom_y=I[1],Q.rows.pan_x=g.zoom.ini_pan_x,Q.rows.pan_y=B[1],Q.rows.zoom_x=I[0],Q.rows.zoom_y=I[1],Q.cols.pan_x=B[0],Q.cols.pan_y=g.zoom.ini_pan_y,Q.cols.zoom_x=I[0],Q.cols.zoom_y=I[1],Q.dendro_rows.pan_x=g.zoom.ini_pan_x,Q.dendro_rows.pan_y=B[1],Q.dendro_rows.zoom_x=I[0],Q.dendro_rows.zoom_y=I[1],Q.dendro_cols.pan_x=B[0],Q.dendro_cols.pan_y=g.zoom.ini_pan_y,Q.dendro_cols.zoom_x=I[0],Q.dendro_cols.zoom_y=I[1]},n3=g=>{g.zoom.zoom_data={},g.zoom.zoom_data.total_zoom={},g.zoom.zoom_data.total_zoom.x=0,g.zoom.zoom_data.total_zoom.y=0,g.zoom.zoom_data.matrix={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.rows={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.cols={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.dendro_rows={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y},g.zoom.zoom_data.dendro_cols={pan_x:g.zoom.ini_pan_x,pan_y:g.zoom.ini_pan_y,zoom_x:g.zoom.ini_zoom_x,zoom_y:g.zoom.ini_zoom_y}};var R3=(g,A,I,B)=>{let{viewState:Q}=g,{viewId:C}=g,{zoom:E,target:i}=Q,o,D;C==="cols"?B.zoom.minor_zoom_axis==="X"?(o=E[0],D=E[1]):B.zoom.minor_zoom_axis==="Y"?(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y):B.zoom.minor_zoom_axis==="none"&&(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]):(C==="rows"||C==="dendro_rows")&&(B.zoom.minor_zoom_axis==="Y"?(o=E[0],D=E[1]):B.zoom.minor_zoom_axis==="X"?(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y):B.zoom.minor_zoom_axis==="none"&&(o=E[0],D=E[1]-B.zoom.zoom_data[C].zoom_y)),C==="dendro_cols"?B.zoom.minor_zoom_axis==="X"?(o=E[0],D=E[1]):B.zoom.minor_zoom_axis==="Y"?(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y):B.zoom.minor_zoom_axis==="none"&&(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]):C==="matrix"&&(o=E[0]-B.zoom.zoom_data[C].zoom_x,D=E[1]-B.zoom.zoom_data[C].zoom_y),B.zoom.zoom_data.total_zoom.x+=o,B.zoom.zoom_data.total_zoom.y+=D,B.zoom.zoom_data.total_zoom.x=Math.max(0,B.zoom.zoom_data.total_zoom.x),B.zoom.zoom_data.total_zoom.y=Math.max(0,B.zoom.zoom_data.total_zoom.y);let a=[B.zoom.zoom_data.total_zoom.x,B.zoom.zoom_data.total_zoom.y],t=Math.max(0,a[0]),G=Math.max(0,a[1]);B.zoom.major_zoom_axis==="X"?G=t-B.zoom.zoom_delay:B.zoom.major_zoom_axis==="Y"&&(t=G-B.zoom.zoom_delay),t=Math.max(0,t),G=Math.max(0,G);let s=F3(i[0],t,B),w=h3(i[1],G,B),e=[t,G],c=[s,w],h=y3(B,C,e,c);r3(B,C,e,c);let R;B.zoom.major_zoom_axis==="X"?R=Math.pow(2,B.zoom.zoom_data.matrix.zoom_x):B.zoom.major_zoom_axis==="Y"?R=Math.pow(2,B.zoom.zoom_data.matrix.zoom_y):B.zoom.major_zoom_axis==="all"&&(R=Math.pow(2,B.zoom.zoom_data.matrix.zoom_x)),I.row_label_layer=I.row_label_layer.clone({getSize:B.viz.font_size.rows*Math.pow(2,B.zoom.zoom_data.matrix.zoom_y)}),I.col_label_layer=I.col_label_layer.clone({getSize:B.viz.font_size.cols*Math.pow(2,B.zoom.zoom_data.matrix.zoom_x),updateTriggers:{getPixelOffset:B.zoom.zoom_data.matrix.zoom_x}});let N;B.zoom.major_zoom_axis!=="all"?N=R<B.zoom.switch_ratio?B.zoom.major_zoom_axis:"all":N="all",B.views.views_list=B.views.views_list.map(y=>new IB({...y.props,controller:{...y.props.controller,doubleClickZoom:!1,scrollZoom:!0,inertia:!0,zoomAxis:N}})),A.setProps({viewState:h,layers:HQ(I),views:B.views.views_list})};var M3=g=>{let A;g.mat.num_rows>g.mat.num_cols?(g.zoom.major_zoom_axis="Y",g.zoom.minor_zoom_axis="X",A=g.mat.num_rows/g.mat.num_cols):g.mat.num_rows<g.mat.num_cols?(g.zoom.major_zoom_axis="X",g.zoom.minor_zoom_axis="Y",A=g.mat.num_cols/g.mat.num_rows):g.mat.num_rows===g.mat.num_cols&&(g.zoom.major_zoom_axis="all",g.zoom.minor_zoom_axis="none",A=1),g.zoom.switch_ratio=A,g.zoom.zoom_delay=Math.log2(A);let I=[new IB({id:"matrix",x:`${g.viz.row_region+g.viz.label_buffer}px`,y:`${g.viz.col_region+g.viz.label_buffer}px`,width:`${g.viz.mat_width}px`,height:`${g.viz.mat_height}px`,controller:{scrollZoom:!0,inertia:!0,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"rows",x:"0px",y:`${g.viz.col_region+g.viz.label_buffer}px`,width:`${g.viz.row_region}px`,height:`${g.viz.mat_height}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"cols",x:`${g.viz.row_region+g.viz.label_buffer}px`,y:"0px",width:`${g.viz.mat_width}px`,height:`${g.viz.col_region}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"dendro_cols",x:`${g.viz.row_region+g.viz.label_buffer}px`,y:`${g.viz.col_region+g.viz.label_buffer+g.viz.mat_height}px`,width:`${g.viz.mat_width}px`,height:`${g.viz.dendrogram_width}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}}),new IB({id:"dendro_rows",x:`${g.viz.row_region+g.viz.label_buffer+g.viz.mat_width}px`,y:`${g.viz.col_region+g.viz.label_buffer}px`,width:`${g.viz.dendrogram_width}px`,height:`${g.viz.mat_height}px`,controller:{scrollZoom:!0,inertia:!1,zoomAxis:g.zoom.major_zoom_axis,doubleClickZoom:!1}})];g.views={},g.views.views_list=I},J3=g=>({matrix:{target:[g.zoom.ini_pan_x,g.zoom.ini_pan_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},rows:{target:[g.viz.label_row_x,g.zoom.ini_pan_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},cols:{target:[g.zoom.ini_pan_x,g.viz.label_col_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},dendro_rows:{target:[g.viz.label_row_x,g.zoom.ini_pan_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]},dendro_cols:{target:[g.zoom.ini_pan_x,g.viz.label_col_y],zoom:[g.zoom.ini_zoom_x,g.zoom.ini_zoom_y]}});var g$=(g,A=255)=>{let I=UI(g);return I?[I.r,I.g,I.b,A]:[0,0,0,A]},Y3=(g,A,I)=>{let B=I==="row",Q=B?g.row_nodes:g.col_nodes,C=B?A.cats.num_cats.row:A.cats.num_cats.col,E=B?A.viz.row_cat_offset:A.viz.col_cat_offset,i=B?A.viz.row_offset:A.viz.col_offset;return Q.flatMap((D,a)=>Array.from({length:C}).map((t,G)=>{let s=`cat-${G}`,w=D[s];if(!w)return null;let e=g.global_cat_colors[w],c=g$(e,255);return{position:B?[E*(G+.5)+20,i*(a+.5)]:[i*(a+.5),E*(G+1.5)-30],color:c,name:w,level:G,original_index:a}})).filter(Boolean)},K3=(g,A)=>Y3(g,A,"row"),q3=(g,A)=>Y3(g,A,"col");var U3=(g,A)=>{let I=[];g.col_nodes.forEach((B,Q)=>{let C={name:B.name,ini:B.ini,clust:B.clust,rank:B.rank,rankvar:B.rankvar,index:Q};I.push(C)}),A.labels.col_label_data=I,A.labels.clicks.col=0,A.mat.orders.col={},A.mat.orders.col.ini=I.map(B=>B.ini),A.mat.orders.col.clust=I.map(B=>B.clust+1),A.mat.orders.col.rank=I.map(B=>B.rank+1),A.mat.orders.col.rankvar=I.map(B=>B.rankvar+1)},H3=(g,A)=>{let I=[];g.row_nodes.forEach((B,Q)=>{let C={name:B.name,ini:B.ini,clust:B.clust,rank:B.rank,rankvar:B.rankvar,index:Q};I.push(C)}),A.labels.row_label_data=I,A.labels.clicks.row=0,A.mat.orders.row={},A.mat.orders.row.ini=I.map(B=>B.ini),A.mat.orders.row.clust=I.map(B=>B.clust+1),A.mat.orders.row.rank=I.map(B=>B.rank+1),A.mat.orders.row.rankvar=I.map(B=>B.rankvar+1)};var S3=(g,A)=>{let I;g.mat.forEach((B,Q)=>{B.forEach((C,E)=>{C>=0?I=[255,0,0]:I=[0,0,255];let i={position:[A.viz.col_offset*(E+.5),A.viz.row_offset*(Q+1.5)],color:[I[0],I[1],I[2],255*Math.abs(C)/A.mat.max_abs_value],value:C,row:Q,col:E};A.mat.mat_data.push(i)})})};var L3=(g,A,I,B,Q,C,E,i)=>{let o={};return o.root=I,o.model=g,o.custom_callbacks={},o.custom_callbacks.row=C,o.custom_callbacks.col=E,o.custom_callbacks.col_dendro=i,o.viz={},o.viz.height_margin=100,o.cats={},o.cats.num_cats={},o.cats.num_cats.row=Object.keys(A.row_cats).length,o.cats.num_cats.col=Object.keys(A.col_cats).length,o.root.style.height=`${Q+o.viz.height_margin}px`,o.viz.row_cat_offset=9,o.viz.col_cat_offset=9,o.viz.mat_width=B-o.viz.row_cat_offset*o.cats.num_cats.row,o.viz.mat_height=Q-o.viz.col_cat_offset*o.cats.num_cats.col,o.mat={},o.mat.num_rows=A.mat.length,o.mat.num_cols=A.mat[0].length,o.row_nodes=A.row_nodes,o.col_nodes=A.col_nodes,o.mat.net_mat=A.mat,o.linkage=A.linkage,o.viz.base_font_size=125,o.viz.col_label=75,o.viz.row_label=75,o.viz.extra_space={},o.viz.extra_space.row=5,o.viz.extra_space.col=5,o.zoom={},o.zoom.ini_zoom_x=0,o.zoom.ini_zoom_y=0,o.viz.row_cat_width=8,o.viz.col_cat_height=8,o.viz.label_row_x=15,o.viz.label_col_y=25,o.viz.cat_shift_row=30,o.viz.label_buffer=1,o.animate={},o.animate.duration=2500,o.viz.dendrogram_width=15,o.viz.font_size={},o.viz.font_size.rows=o.viz.base_font_size/o.mat.num_rows,o.viz.font_size.cols=o.viz.base_font_size/o.mat.num_cols,o.viz.col_region=(o.viz.col_cat_height+o.viz.extra_space.col)*o.cats.num_cats.col+o.viz.col_label,o.viz.row_region=(o.viz.row_cat_width+o.viz.extra_space.row)*o.cats.num_cats.row+o.viz.row_label,o.viz.col_width=o.viz.mat_width/o.mat.num_cols,o.viz.row_offset=o.viz.mat_height/o.mat.num_rows,o.viz.col_offset=o.viz.mat_width/o.mat.num_cols,o.viz.cat_shift_col=o.viz.col_label,o.zoom.ini_pan_x=o.viz.mat_width/2,o.zoom.ini_pan_y=o.viz.mat_height/2+o.viz.row_offset,o.mat.mat_data=[],o.mat.num_rows=A.mat.length,o.mat.num_cols=A.mat[0].length,o.mat.max_abs_value=A.mat.flat().reduce((D,a)=>Math.max(D,Math.abs(a)),-1/0),o.order={},o.order.current={},o.order.current.row="clust",o.order.current.col="clust",o.order.new="ini",o.buttons={},o.buttons.blue="#8797ff",o.buttons.gray="#EEEEEE",o.click={},o.click.type=null,o.click.value=null,o};var _R=async(g,A,I,B="800",Q="800",C=null,E=null,i=null)=>{let o=document.createElement("div");o.style.border="1px solid #d3d3d3";let D=D3(o,B,Q),a=L3(g,I,o,B,Q,C,E,i);A.style.position="relative",a.el=A,S3(I,a),a.labels={},a.labels.clicks={},n3(a),a.mat.orders={},H3(I,a),U3(I,a),a.cats.row_cat_data=K3(I,a),a.cats.col_cat_data=q3(I,a),Zf(a),ms(a,"row"),ms(a,"col");let t={};t.mat_layer=e3(a),t.row_label_layer=a3(a),t.col_label_layer=t3(a),t.row_cat_layer=i3(a),t.col_cat_layer=o3(a),t.row_dendro_layer=xR(t,a,"row"),t.col_dendro_layer=xR(t,a,"col"),M3(a);let G=J3(a);N3(D,t,a),w3(D,t,a),c3(D,t,a),uR(D,t,a,"row"),uR(D,t,a,"col"),D.setProps({onViewStateChange:w=>R3(w,D,t,a),views:a.views.views_list,initialViewState:G,getTooltip:w=>k3(a,w),layerFilter:Wf,layers:HQ(t)});let s=Xf(D,t,a);A.appendChild(s),A.appendChild(a.root)};var d3=async({model:g,el:A})=>{let I=g.get("token"),B=g.get("creds"),Q=g.get("ini_x"),C=g.get("ini_y"),E=g.get("ini_z"),i=g.get("ini_zoom"),o=g.get("base_url"),D=g.get("dataset_name"),a=g.get("width"),t=g.get("height"),G=g.get("meta_cell"),s=g.get("meta_cluster"),w=g.get("umap"),e=g.get("landscape_state"),c=g.get("segmentation");return zR(A,g,I,Q,C,E,i,o,D,.25,a,t,G,s,w,e,c,B)},p3=async({model:g,el:A})=>{let I=g.get("token"),B=g.get("ini_x"),Q=g.get("ini_y"),C=g.get("ini_z"),E=g.get("ini_zoom"),i=g.get("base_url"),o=g.get("dataset_name"),D=g.get("square_tile_size"),a=g.get("width"),t=g.get("height");vR(g,A,i,I,B,Q,C,E,D,o,a,t)},l3=async({model:g,el:A})=>{let I=g.get("token"),B=g.get("ini_x"),Q=g.get("ini_y"),C=g.get("ini_z"),E=g.get("ini_zoom"),i=g.get("base_url"),o=g.get("dataset_name"),D=g.get("width"),a=g.get("height"),t=g.get("creds");Tr(g,A,i,I,B,Q,C,E,o,D,a,t)},f3=async({model:g,el:A})=>{let I=g.get("technology");if(["MERSCOPE","Xenium"].includes(I))return d3({model:g,el:A});if(["Visium-HD"].includes(I))return p3({model:g,el:A});if(["h&e"].includes(I))return l3({model:g,el:A})},m3=async({model:g,el:A})=>{let I=g.get("network"),B=g.get("width"),Q=g.get("height");_R(g,A,I,B,Q)};function I$({model:g,el:A}){try{let I=g.get("component");if(!I){fh("Component type is not defined",{data:{model:g?.id||"unknown",el:A?.id||"unknown"}});return}switch(I){case"Landscape":return f3({model:g,el:A});case"Matrix":return m3({model:g,el:A});default:fh(`Unknown component type: ${I}`,{data:{componentType:I,model:g?.id||"unknown"}});return}}catch(I){let B=Sg(I,{context:"render function",logUnexpected:!0,messages:{unexpected:"Error in render function"}});A.innerHTML=`<div style="color: red; padding: 10px;">Error: ${B.message}</div>`}}var zTA={landscape_ist:zR,landscape_sst:vR,landscape_h_e:Tr,matrix_viz:_R,render:I$,render_landscape_ist:d3,render_landscape_sst:p3,render_landscape_h_e:l3,render_landscape:f3,render_matrix_new:m3};export{zTA as default};
1765
1765
  /*! Bundled license information:
1766
1766
 
1767
1767
  hammerjs/hammer.js: