@owox/web 0.35.0-next-20260917211534 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/ModelCanvas-BIPDBSA2.js +12 -0
- package/dist/assets/RelationshipCanvas-BoamwL_P.js +1 -0
- package/dist/assets/{erd-fields-section-Cg8x_HxX.js → erd-fields-section-BDlFV3FN.js} +7 -7
- package/dist/assets/index-C5zthIAZ.css +1 -0
- package/dist/assets/index-D5dI1sj2.js +46 -0
- package/dist/assets/index-DbpdnvsV.js +1757 -0
- package/dist/index.html +2 -2
- package/package.json +3 -12
- package/dist/assets/ModelCanvas-BRVFNebY.js +0 -2
- package/dist/assets/RelationshipCanvas-D0wemU10.js +0 -1
- package/dist/assets/index--2S0DYbr.css +0 -1
- package/dist/assets/index-99VHfbrV.js +0 -46
- package/dist/assets/index-DVdKc88Y.js +0 -1457
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-D5dI1sj2.js","assets/index-DbpdnvsV.js","assets/index-C5zthIAZ.css","assets/erd-fields-section-BDlFV3FN.js","assets/erd-fields-section-BnuhLJ6X.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{k as Ke,t as Ee,D as je,r as o,j as n,A as yt,l as vt,m as jt,S as Dt,n as pe,P as St,o as Nt,p as fe,q as _t,s as Rt,v as Lt,L as It,w as Ot,x as Tt,T as De,a as Se,R as kt,H as At,b as Ne,y as Pt,z as Mt,F as Ft,I as $t,E as Ht,G as Ut,U as Bt,J as Gt,K as Qt,O as Wt,Q as Vt,V as k,W as zt,X as Jt,_ as qt,Y as Ze,Z as he,c as ge}from"./index-DbpdnvsV.js";import{F as Kt,G as Zt,q as Yt,t as Xt,v as en,W as tn,n as ye,s as nn,B as sn,D as Ye,w as an,x as rn,y as on,z as ln,u as cn,P as ae,m as me,H as Me,S as Fe,E as $e,N as dn,R as un,b as pn,c as xe,d as fn,e as He,o as hn,r as gn,f as Ue,I as mn,J as xn,h as bn,L as Cn,Z as wn,i as En,C as yn,j as vn,M as jn,k as Dn,p as Sn}from"./erd-fields-section-BDlFV3FN.js";/**
|
|
3
|
+
* @license lucide-react v0.475.0 - ISC
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the ISC license.
|
|
6
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/const Nn=[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}],["path",{d:"m15 5 3 3",key:"1w25hb"}]],_n=Ke("PencilLine",Nn);/**
|
|
8
|
+
* @license lucide-react v0.475.0 - ISC
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the ISC license.
|
|
11
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/const Rn=[["circle",{cx:"12",cy:"4.5",r:"2.5",key:"r5ysbb"}],["path",{d:"m10.2 6.3-3.9 3.9",key:"1nzqf6"}],["circle",{cx:"4.5",cy:"12",r:"2.5",key:"jydg6v"}],["path",{d:"M7 12h10",key:"b7w52i"}],["circle",{cx:"19.5",cy:"12",r:"2.5",key:"1piiel"}],["path",{d:"m13.8 17.7 3.9-3.9",key:"1wyg1y"}],["circle",{cx:"12",cy:"19.5",r:"2.5",key:"13o1pw"}]],Ln=Ke("Waypoints",Rn),In=[{part:"source",label:"Input source",helper:"View, Table, SQL, Pattern or Connector"},{part:"fields",label:"Fields",helper:"Number of fields in the Output Schema"},{part:"triggers",label:"Triggers",helper:"Scheduled triggers of the Data Mart"},{part:"reports",label:"Reports",helper:"Reports built on the Data Mart"},{part:"relationships",label:"Relationships",helper:"Joins with other Data Marts"},{part:"status",label:"Draft badge",helper:"Shown on Data Marts not yet published"},{part:"footer",label:"Quality and sharing",helper:"Data Quality, Data Last Updated and sharing icons"},{part:"fieldAlias",label:"Field aliases",helper:"Output Schema alias in place of the name"},{part:"fieldDescription",label:"Field descriptions",helper:"Output Schema description under each field"}],On=(t,e)=>[t,e].sort().join("->"),Tn=56;function kn(t,e=Tn){const i=new Map;for(const r of t){if(r.sourceId===r.targetId)continue;const l=On(r.sourceId,r.targetId),g=i.get(l);g?g.push(r):i.set(l,[r])}const a=new Map;for(const r of t)r.sourceId===r.targetId&&a.set(r.id,0);for(const r of i.values()){const l=[...r].sort((m,C)=>m.id.localeCompare(C.id)),g=l.length;l.forEach((m,C)=>{a.set(m.id,(C-(g-1)/2)*e)})}return a}const An=11,Pn=6.5;let be,Ce;const Be=new Map;function Mn(){return be===void 0&&(be=typeof document>"u"?null:document.createElement("canvas").getContext("2d")),be}function le(t){const e=Be.get(t);if(e!==void 0)return e;const i=Mn();let a;return i?(Ce??(Ce=`${String(An)}px ${getComputedStyle(document.body).fontFamily||"sans-serif"}`),i.font=Ce,a=i.measureText(t).width):a=t.length*Pn,Be.set(t,a),a}const Fn=40,$n=12,Hn=28,Un=24,Bn=42,Gn=240,Qn=256;function ce(t){return t==="erd"?Qn:Gn}function ve(t){return{sourceHidden:t.source,fieldCountHidden:t.fields,triggersHidden:t.triggers,reportsHidden:t.reports,relationshipsHidden:t.relationships,footerHidden:t.footer,fieldLabels:Ee(t)}}function Xe(t,{sourceHidden:e=!1,fieldCountHidden:i=!1,triggersHidden:a=!1,reportsHidden:r=!1,relationshipsHidden:l=!1}={}){return{definition:!e&&!!t.definitionType&&je.getInfo(t.definitionType).type!==null,fieldCount:!i&&t.fieldCount>0,triggers:!a&&(t.triggersCount??0)>0,reports:!r&&(t.reportsCount??0)>0,relationships:!l&&(t.relationshipCount??0)>0}}function re(t,e){return`${String(t)} ${e}${t===1?"":"s"}`}function Wn(t,e){const i=[];return e.definition&&t.definitionType&&i.push({kind:"definition",label:je.getInfo(t.definitionType).displayName}),e.fieldCount&&i.push({kind:"fields",label:re(t.fieldCount,"field")}),e.triggers&&i.push({kind:"triggers",label:re(t.triggersCount??0,"trigger")}),e.reports&&i.push({kind:"reports",label:re(t.reportsCount??0,"report")}),e.relationships&&i.push({kind:"relationships",label:re(t.relationshipCount??0,"relationship")}),i}const Vn=26,zn=28,Ge=4,Jn=2;function qn(t,e,i=le){const a=ce(e)-Vn,r=[];let l=0;for(const g of t){const m=Math.ceil(i(g.label))+zn+Jn,C=r.at(-1);C&&l+Ge+m<=a?(C.push(g),l+=Ge+m):(r.push([g]),l=m)}return r}function et(t,e,i={},a=le){return qn(Wn(t,Xe(t,i)),e,a)}function Kn(t,e,i={},a=le){return et(t,e,i,a).length}function Zn(t,e,i,a){const r=Kn(t,e,i,a),l=r===0?0:Hn+(r-1)*Un,g=i.footerHidden?$n:Bn;return Fn+l+g}function tt(t,e,i={},a=le){const r=Zn(t,e,i,a);if(e!=="erd")return r;const l=t.fields??[];return l.length===0?r:r+Kt(l,i.fieldLabels??Zt)}function Yn(t,e,i,a,r,l){let g,m,C,v;if(l==="vertical"){const x=Math.max(40,Math.abs(a-e)*.3);g=t+r,m=e+x,C=i+r,v=a-x}else{const x=Math.max(40,Math.abs(i-t)*.3);g=t+x,m=e+r,C=i-x,v=a+r}return{path:`M ${t} ${e} C ${g} ${m}, ${C} ${v}, ${i} ${a}`,labelX:(t+3*g+3*C+i)/8,labelY:(e+3*m+3*v+a)/8}}function Xn({id:t,sourceX:e,sourceY:i,targetX:a,targetY:r,sourcePosition:l,targetPosition:g,selected:m,data:C}){const{bowOffset:v,warning:x,joinLabel:b,dimmed:w,direction:y,bidirectional:A}=C;let j;if(v!==0)j=Yn(e,i,a,r,v,y);else{const[N,R,L]=Yt({sourceX:e,sourceY:i,sourcePosition:l,targetX:a,targetY:r,targetPosition:g});j={path:N,labelX:R,labelY:L}}const D=x?tn:m?ye:nn,O=o.useId(),S=Xt("mc-arrow",O);return n.jsxs(n.Fragment,{children:[n.jsx(en,{markerId:S,color:D,withStart:A}),n.jsx(sn,{id:t,path:j.path,markerEnd:`url(#${S}-end)`,markerStart:A?`url(#${S}-start)`:void 0,style:{stroke:D,strokeWidth:m?rn:on,strokeDasharray:x?an:void 0,opacity:w?Ye:1,transition:"opacity 0.2s, stroke 0.2s"}}),n.jsx(ln,{x:j.labelX,y:j.labelY,lines:b,selected:m??!1,dimmed:w})]})}function ei({dataMartTitle:t,relationships:e}){return n.jsx("ul",{className:"border-t","aria-label":`Relationships of ${t}`,children:e.map(i=>{const a=i.direction==="outgoing",r=a?yt:vt,l=a?"Joins":"Joined by";return n.jsxs("li",{className:"border-border/50 border-b px-3.5 py-1.5 text-[11.5px] last:border-b-0",children:[n.jsxs("div",{className:"flex items-center gap-2",title:`${l} ${i.otherTitle}`,children:[n.jsx(r,{className:"text-muted-foreground h-3 w-3 shrink-0","aria-label":l}),n.jsx("span",{className:"text-foreground flex-1 truncate",children:i.otherTitle})]}),i.joinFields.length>0?i.joinFields.map(({field:g,otherField:m})=>n.jsxs("div",{className:"text-muted-foreground truncate pl-5 font-mono text-[10px] leading-[14px]",title:`${g} = ${m}`,children:[g," = ",m]},`${g}=${m}`)):n.jsx("div",{className:"text-muted-foreground/80 pl-5 text-[10.5px] leading-[14px] italic",children:"Join fields not set"})]},`${i.id}:${i.direction}`)})})}const ti={availableForReporting:{label:"Shared for reporting",description:"All project members can see this Data Mart and build reports on it"},availableForMaintenance:{label:"Shared for maintenance",description:"Technical users can edit, delete, and manage triggers for this Data Mart"}},ni=100,ii=200;function Z(t,e){return`${t} ${e}${t===1?"":"s"}`}function si({dataMartTitle:t,summary:e,onOpenQuality:i,onRunQuality:a}){const[r,l]=o.useState(!1),[g,m]=o.useState(!1),C=o.useRef(null),v=o.useRef(null),x=o.useRef(null),b=o.useRef(null),w=o.useRef(null),y=o.useRef(!1),A=o.useRef(!1),j=o.useRef(!1),D=jt(e),O=D.icon,S=[{count:e.errorChecks,singular:"execution error",tone:"error",icon:Dt},{count:e.errorFindings,singular:"critical finding",tone:"error",icon:pe},{count:e.warningFindings,singular:"warning finding",tone:"warning",icon:pe},{count:e.noticeFindings,singular:"notice finding",tone:"notice",icon:pe}].filter(u=>u.count>0),N=(e.state==="ISSUES"||e.state==="EXECUTION_FAILED")&&S.length>0,R=S.map(u=>Z(u.count,u.singular)).join(", "),L=`Open Data Quality for ${t}: ${D.label}${N?`, ${R}`:""}`,_=D.isActive,V=e.state==="QUEUED"?"Queued":e.state==="RUNNING"?"Started":"Last checked";function $(){b.current!==null&&(clearTimeout(b.current),b.current=null)}function G(){w.current!==null&&(clearTimeout(w.current),w.current=null)}function M(){$(),G()}function z(){G(),!(r||y.current||b.current!==null)&&(b.current=setTimeout(()=>{b.current=null,!y.current&&l(!0)},ni))}function I(){$(),!(!r||y.current||w.current!==null)&&(w.current=setTimeout(()=>{w.current=null,!y.current&&l(!1)},ii))}function d(u){if(u.stopPropagation(),u.preventDefault(),M(),y.current&&r){y.current=!1,l(!1);return}y.current=!0,l(!0),u.detail===0&&queueMicrotask(()=>{var P;(P=x.current)==null||P.focus()})}function F(u){if(M(),u){y.current=!0,l(!0);return}y.current=!1,l(!1)}function Y(u){u.stopPropagation(),u.preventDefault(),i()}async function te(u){if(u.stopPropagation(),u.preventDefault(),!(_||g)){m(!0);try{await a()}finally{m(!1)}}}return o.useEffect(()=>()=>{b.current!==null&&clearTimeout(b.current),w.current!==null&&clearTimeout(w.current)},[]),o.useEffect(()=>{if(!r)return;function u(P){var H,J;const T=P.target;T instanceof Node&&((H=C.current)!=null&&H.contains(T)||(J=v.current)!=null&&J.contains(T)||(b.current!==null&&(clearTimeout(b.current),b.current=null),w.current!==null&&(clearTimeout(w.current),w.current=null),y.current=!1,l(!1)))}return document.addEventListener("pointerdown",u,!0),()=>{document.removeEventListener("pointerdown",u,!0)}},[r]),n.jsxs(St,{open:r,onOpenChange:F,children:[n.jsx(Nt,{asChild:!0,children:n.jsx("button",{ref:C,type:"button",className:`${N?"":fe[D.tone]} -ml-0.5 inline-flex shrink-0 cursor-pointer items-center rounded p-0.5 transition-colors ${N?"gap-1.5":""}`,"aria-label":L,onPointerDown:u=>{u.stopPropagation()},onPointerEnter:()=>{z()},onPointerLeave:()=>{I()},onFocus:()=>{if(j.current){j.current=!1;return}z()},onBlur:()=>{I()},onClick:d,children:N?S.map(u=>{const P=Z(u.count,u.singular),T=u.icon;return n.jsxs("span",{role:"img","aria-label":P,className:`${fe[u.tone]} inline-flex items-center gap-0.5`,children:[n.jsx(T,{className:"size-4","aria-hidden":!0}),n.jsx("span",{className:"leading-none font-medium tabular-nums",children:u.count})]},u.singular)}):n.jsx(O,{className:`size-4 ${e.state==="RUNNING"?"animate-spin":""}`,"aria-hidden":!0})})}),n.jsxs(_t,{ref:v,side:"top",align:"center",role:"region","aria-label":`Data Quality checks for ${t}`,className:"w-72 max-w-72 p-3 text-xs sm:w-72 sm:max-w-72",onOpenAutoFocus:u=>{u.preventDefault()},onCloseAutoFocus:u=>{var P;u.preventDefault(),A.current&&(A.current=!1,j.current=!0,(P=C.current)==null||P.focus({preventScroll:!0}),queueMicrotask(()=>{j.current=!1}))},onEscapeKeyDown:()=>{A.current=!0},onPointerEnter:()=>{G()},onPointerLeave:()=>{I()},onPointerDown:u=>{u.stopPropagation()},children:[n.jsxs("div",{className:"border-border flex items-center justify-between gap-3 border-b pb-2",children:[n.jsx(Rt,{className:"text-sm font-semibold whitespace-nowrap",children:"Data Quality checks"}),n.jsx("span",{className:`${fe[D.tone]} shrink-0 font-medium whitespace-nowrap`,children:D.label})]}),n.jsxs("div",{className:"text-muted-foreground space-y-1 py-2",children:[e.enabledChecks>0&&n.jsxs("p",{children:[e.enabledChecks," enabled"]}),_?n.jsx("p",{children:"Terminal results will be available after this run finishes."}):n.jsxs(n.Fragment,{children:[e.passedChecks>0&&n.jsxs("p",{children:[e.passedChecks," passed"]}),e.notApplicableChecks>0&&n.jsxs("p",{children:[e.notApplicableChecks," not applicable"]}),e.errorChecks>0&&n.jsx("p",{children:Z(e.errorChecks,"execution error")}),e.errorFindings>0&&n.jsx("p",{children:Z(e.errorFindings,"critical finding")}),e.warningFindings>0&&n.jsx("p",{children:Z(e.warningFindings,"warning finding")}),e.noticeFindings>0&&n.jsx("p",{children:Z(e.noticeFindings,"notice finding")})]}),e.lastRunAt&&n.jsx("p",{className:"text-foreground pt-2 pb-1 font-medium",children:`${V} ${Lt(e.lastRunAt)}`})]}),n.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[n.jsx("button",{ref:x,type:"button",className:"border-input bg-background hover:bg-muted inline-flex cursor-pointer items-center justify-center rounded-md border px-3 py-1.5 font-medium transition-colors","aria-label":`Open Data Quality page for ${t}`,onPointerDown:u=>{u.stopPropagation()},onClick:Y,children:"Open"}),n.jsxs("button",{type:"button",className:"bg-primary text-primary-foreground hover:bg-primary/90 inline-flex cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50","aria-label":`Run Quality for ${t}`,title:_?"A Data Quality run is already active":void 0,disabled:_||g,onPointerDown:u=>{u.stopPropagation()},onClick:u=>{te(u)},children:[g?n.jsx(It,{className:"size-3.5 animate-spin","aria-hidden":"true"}):n.jsx(Ot,{className:"size-3.5","aria-hidden":"true"}),g?"Starting…":"Run checks"]})]})]})]})}function ai({dataMartTitle:t,block:e,isChecking:i=!1}){const a=i?"checking…":Tt(e);return n.jsxs(De,{children:[n.jsx(Se,{asChild:!0,children:n.jsx("button",{type:"button",className:`nodrag inline-flex cursor-default items-center rounded p-0.5 transition-colors ${i||e!=null&&e.dataLastUpdatedAt?"text-muted-foreground hover:text-foreground":"text-muted-foreground/50 hover:text-muted-foreground"}`,"aria-label":`Data Last Updated for ${t}: ${a}`,onPointerDown:r=>{r.stopPropagation()},children:i?n.jsx(kt,{className:"h-3.5 w-3.5 animate-spin","aria-hidden":"true"}):n.jsx(At,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),n.jsx(Ne,{side:"top",align:"start",role:"tooltip",className:"max-w-xs",children:i?n.jsx("div",{className:"text-xs",children:"Checking Data Last Updated…"}):e?n.jsx(Pt,{block:e}):n.jsx("div",{className:"text-xs",children:"Data Last Updated has not been checked yet. Use Actions → Check Data Last Updated to measure the visible Data Marts."})})]})}const ri={fields:Wt,triggers:Qt,reports:Gt,relationships:Ln};function we({icon:t,children:e,toggle:i}){const a="inline-flex h-5 shrink-0 items-center gap-1 rounded-md px-1.5 text-[11px] leading-none whitespace-nowrap",r=n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"inline-flex shrink-0","aria-hidden":"true",children:n.jsx(t,{className:"h-3 w-3"})}),e]});return i?n.jsx("button",{type:"button",className:`nodrag cursor-pointer transition-colors ${a} ${i.expanded?"bg-foreground/10 text-foreground":"bg-muted text-muted-foreground hover:text-foreground hover:bg-foreground/10"}`,"aria-expanded":i.expanded,"aria-label":i.label,title:i.label,onPointerDown:l=>{l.stopPropagation()},onClick:l=>{l.stopPropagation(),i.onToggle()},children:r}):n.jsx("span",{className:`bg-muted text-muted-foreground ${a}`,children:r})}function Qe({icon:t,flag:e,on:i}){if(!i)return null;const{label:a,description:r}=ti[e];return n.jsxs(De,{children:[n.jsx(Se,{asChild:!0,children:n.jsx("button",{type:"button",className:"hover:text-foreground nodrag inline-flex cursor-default rounded p-0.5 transition-colors","aria-label":a,onPointerDown:l=>{l.stopPropagation()},children:n.jsx(t,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),n.jsxs(Ne,{side:"top",align:"end",role:"tooltip",className:"max-w-xs",children:[n.jsx("div",{className:"text-xs font-medium",children:a}),n.jsx("div",{className:"text-xs opacity-80",children:r})]})]})}function oi({id:t,data:e,selected:i}){const[a,r]=o.useState(!1),[l,g]=o.useState(null),m=cn();o.useEffect(()=>{m(t)},[a,l,t,m]);const C=e.viewMode==="erd",v=e.fields,x=C&&v.length>0,b=e.objectLabels??Mt,w=Xe(e,ve(b)),y=w.definition&&e.definitionType?je.getInfo(e.definitionType):null,A=!b.status&&e.isDraft,j=et(e,e.viewMode,ve(b)),D=!C&&v.length>0&&w.fieldCount,O=e.relationships.length>0&&w.relationships,S=l==="fields"&&D,N=l==="relationships"&&O,R=S||N||x&&a,L=o.useRef(e.onRaisedChange);L.current=e.onRaisedChange,o.useEffect(()=>{var d;(d=L.current)==null||d.call(L,R)},[R]),o.useEffect(()=>()=>{var d;(d=L.current)==null||d.call(L,!1)},[]);const _=d=>{g(F=>F===d?null:d)},V=!b.footer,$=e.direction==="vertical"?ae.Top:ae.Left,G=e.direction==="vertical"?ae.Bottom:ae.Right,M=`Open ${e.title} in new tab`;function z(d){if(d.kind==="definition")return y?n.jsx(we,{icon:y.icon,children:d.label},d.kind):null;const F=d.kind==="fields"&&D?{expanded:S,label:`${S?"Hide":"Show"} fields of ${e.title}`,onToggle:()=>{_("fields")}}:d.kind==="relationships"&&O?{expanded:N,label:`${N?"Hide":"Show"} relationships of ${e.title}`,onToggle:()=>{_("relationships")}}:void 0;return n.jsx(we,{icon:ri[d.kind],toggle:F,children:d.label},d.kind)}function I(d){d.stopPropagation(),d.preventDefault(),e.onOpenExternal()}return n.jsxs("div",{className:"bg-background relative flex cursor-grab flex-col overflow-hidden rounded-xl border shadow-sm active:cursor-grabbing",style:{width:ce(e.viewMode),borderColor:e.highlighted?me:i?ye:void 0,boxShadow:e.highlighted?`0 0 0 3px ${me}40, 0 0 12px ${me}60`:i?`0 0 0 1px ${ye}`:void 0,opacity:e.dimmed?Ye:1,filter:e.dimmed?"grayscale(0.8)":void 0,animation:e.highlighted?"node-pulse 1.5s ease-in-out infinite":void 0,transition:"opacity 0.2s, filter 0.2s"},children:[e.hasIncoming&&n.jsx(Me,{type:"target",position:$,isConnectable:!1,style:Fe}),n.jsxs("div",{className:"flex items-center gap-2 pt-3 pr-3 pl-3",children:[n.jsx("span",{className:"bg-muted text-foreground flex h-7 w-7 shrink-0 items-center justify-center rounded-md","aria-hidden":"true",children:n.jsx(Ft,{icon:e.icon,className:"h-4 w-4"})}),n.jsx("span",{className:"text-foreground min-w-0 flex-1 truncate text-sm font-semibold",title:e.title,children:e.title}),A&&n.jsx(we,{icon:_n,children:"Draft"}),e.description&&n.jsxs(De,{children:[n.jsx(Se,{asChild:!0,children:n.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground nodrag inline-flex shrink-0 cursor-default rounded p-0.5 transition-colors","aria-label":`Description for ${e.title}`,onPointerDown:d=>{d.stopPropagation()},children:n.jsx($t,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),n.jsx(Ne,{side:"top",align:"center",role:"tooltip",className:"max-w-xs",children:e.description})]}),n.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground nodrag shrink-0 cursor-pointer rounded p-0.5 transition-colors",onPointerDown:d=>{d.stopPropagation()},onClick:I,title:M,"aria-label":M,children:n.jsx(Ht,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]}),j.map((d,F)=>n.jsx("div",{className:`flex items-center gap-1 overflow-hidden pr-3 pl-3 ${F===0?"pt-2":"pt-1"}`,children:d.map(z)},d.map(Y=>Y.kind).join("+"))),!V&&n.jsx("div",{className:"h-3","aria-hidden":"true"}),V&&n.jsx(n.Fragment,{children:n.jsxs("div",{className:"text-muted-foreground flex items-center gap-1 pt-2.5 pr-3 pb-3 pl-3 text-[11px]",children:[n.jsx(si,{dataMartTitle:e.title,summary:e.qualitySummary,onOpenQuality:e.onOpenQuality,onRunQuality:e.onRunQuality}),n.jsx(ai,{dataMartTitle:e.title,block:e.dataLastUpdated,isChecking:e.isCheckingDataLastUpdated}),n.jsxs("span",{className:"ml-auto flex items-center gap-1",children:[n.jsx(Qe,{icon:Ut,flag:"availableForReporting",on:e.availableForReporting}),n.jsx(Qe,{icon:Bt,flag:"availableForMaintenance",on:e.availableForMaintenance})]})]})}),N&&n.jsx(ei,{dataMartTitle:e.title,relationships:e.relationships}),S&&n.jsx($e,{fields:v,labels:Ee(b),expanded:a,onToggleExpanded:()=>{r(d=>!d)}}),x&&n.jsx($e,{fields:v,labels:Ee(b),expanded:a,onToggleExpanded:()=>{r(d=>!d)}}),e.hasOutgoing&&n.jsx(Me,{type:"source",position:G,isConnectable:!1,style:Fe})]})}const We="model-canvas-layout",Ve="model-canvas-show-join-fields",ze="model-canvas-view-mode",Je="model-canvas-object-labels",li="model-canvas-positions";function oe(t){return`${li}:${t}`}function ci(t){if(!t)return{};const e=k.get(oe(t),"json");if(!e)return{};const i={};for(const[a,r]of Object.entries(e)){const l=r;l&&typeof l.x=="number"&&typeof l.y=="number"&&(i[a]={x:l.x,y:l.y})}return i}const ee=.2,di=1e3,ui=150,pi={modelCanvasNode:oi},fi={modelCanvasEdge:Xn};function hi(t){return JSON.stringify(t.map(({id:e,title:i,status:a,description:r,fieldCount:l,definitionType:g,fields:m,triggersCount:C,reportsCount:v,relationshipCount:x,relationships:b,availableForReporting:w,availableForMaintenance:y})=>({id:e,title:i,status:a,description:r,fieldCount:l,definitionType:g,fields:m,triggersCount:C,reportsCount:v,relationshipCount:x,relationships:b,availableForReporting:w,availableForMaintenance:y})))}function gi(t){return JSON.stringify(t)}function qe(t,e){const i=e(t),a=o.useRef({signature:i,value:t});return a.current.signature!==i&&(a.current={signature:i,value:t}),a.current.value}function mi(t){const{node:e,highlight:i,viewMode:a,objectLabels:r}=t;return{id:e.id,type:"modelCanvasNode",position:t.position,width:ce(a),height:tt(e,a,t.layout),draggable:!0,selectable:!1,focusable:!1,deletable:!1,style:Sn,data:{title:e.title,isDraft:e.status===Ze.DRAFT,fieldCount:e.fieldCount,triggersCount:e.triggersCount,reportsCount:e.reportsCount,relationshipCount:e.relationshipCount??0,relationships:e.relationships??[],availableForReporting:e.availableForReporting,availableForMaintenance:e.availableForMaintenance,description:e.description,icon:e.icon??null,definitionType:e.definitionType??null,fields:e.fields??[],viewMode:a,objectLabels:r,dataLastUpdated:e.dataLastUpdated,isCheckingDataLastUpdated:t.isCheckingDataLastUpdated,hasIncoming:t.hasIncoming,hasOutgoing:t.hasOutgoing,highlighted:i.highlighted,dimmed:i.dimmed,direction:t.direction,onOpenExternal:t.onOpenExternal,qualitySummary:e.qualitySummary,onOpenQuality:t.onOpenQuality,onRaisedChange:t.onRaisedChange,onRunQuality:t.onRunQuality}}}function xi(t){return t.joinConditions.map(e=>`${e.sourceFieldName} = ${e.targetFieldName}`)}function bi(t){const{edge:e,warning:i}=t;return{id:e.id,type:"modelCanvasEdge",source:e.sourceId,target:e.targetId,focusable:!1,selectable:!0,deletable:!1,data:{bowOffset:t.bowOffset,warning:i,joinLabel:t.joinLabel,dimmed:t.dimmed,direction:t.direction,bidirectional:e.bidirectional}}}function Ci({nodes:t,edges:e,searchQuery:i,onOpenDataMart:a,onOpenQuality:r,onRunQuality:l,isCheckingDataLastUpdated:g=!1,storageId:m,storageTitle:C,exportApiRef:v}){const x=pn(),b=xe(c=>c.width),w=xe(c=>c.height),y=xe(c=>c.domNode),A=o.useRef(a);A.current=a;const j=o.useRef(r);j.current=r;const D=o.useRef(l);D.current=l;const O=o.useRef(t);O.current=t;const S=o.useRef(i);S.current=i;const N=o.useRef(g);N.current=g;const[R,L]=o.useState(()=>Vt(k.get(We))),[_,V]=o.useState(()=>zt(k.get(ze))),[$,G]=o.useState(()=>k.get(Ve,"boolean")??!1),[M,z]=o.useState(()=>Jt(k.get(Je))),I=o.useRef(null),d=o.useRef(m);(I.current===null||d.current!==m)&&(d.current=m,I.current=ci(m));const[F,Y]=o.useState(0),te=o.useRef(null),[u,P]=o.useState(!1),[T,H]=o.useState([]),[J,ne]=o.useState([]),[_e,nt]=o.useState(()=>new Set),Re=o.useCallback((c,f)=>{nt(p=>{if(p.has(c)===f)return p;const h=new Set(p);return f?h.add(c):h.delete(c),h})},[]),Le=o.useMemo(()=>fn(T),[T]),Q=qe(t,hi),U=qe(e,gi);o.useImperativeHandle(v,()=>({exportCanvas:async c=>{const{exportModelCanvas:f}=await qt(async()=>{const{exportModelCanvas:p}=await import("./index-D5dI1sj2.js");return{exportModelCanvas:p}},__vite__mapDeps([0,1,2,3,4]));return f(c,{viewport:(y==null?void 0:y.querySelector(".react-flow__viewport"))??null,flowNodes:T,nodes:t,edges:e,storageTitle:C})}}),[y,T,t,e,C]),o.useEffect(()=>{const c=new Set(U.map(s=>s.targetId)),f=new Set(U.map(s=>s.sourceId)),p=new Map(Q.map(s=>[s.id,s.status===Ze.DRAFT])),h=He(Q,S.current,s=>s.id,s=>s.title),E=ve(M),K=Q.map(s=>({id:s.id,width:ce(_),height:tt(s,_,E)})),B=$?new Map(U.map(s=>[s.id,xi(s)])):new Map,W=U.map(s=>({id:s.id,sourceId:s.sourceId,targetId:s.targetId,label:hn(B.get(s.id)??[])})),{positions:ie}=gn(K,W,R),mt=kn(U),xt=new Set(Q.map(s=>s.id)),Ie=Object.entries(I.current??{}),se=Object.fromEntries(Ie.filter(([s])=>xt.has(s)));Ie.length!==Object.keys(se).length&&(I.current=se,d.current&&k.set(oe(d.current),se));const bt=new Map(O.current.map(s=>[s.id,s.qualitySummary])),Ct=new Map(O.current.map(s=>[s.id,s.dataLastUpdated])),Oe=new Map(O.current.map(s=>[s.id,s.icon]));H(Q.map(s=>mi({node:{...s,qualitySummary:bt.get(s.id)??s.qualitySummary,dataLastUpdated:Ct.get(s.id)??s.dataLastUpdated,icon:Oe.has(s.id)?Oe.get(s.id):s.icon},position:se[s.id]??ie.get(s.id)??{x:0,y:0},hasIncoming:c.has(s.id),hasOutgoing:f.has(s.id),highlight:h.get(s.id)??Ue,direction:R,viewMode:_,objectLabels:M,layout:E,onOpenExternal:()=>{A.current(s.id)},onOpenQuality:()=>{j.current(s.id)},onRunQuality:()=>D.current(s.id),onRaisedChange:X=>{Re(s.id,X)},isCheckingDataLastUpdated:N.current}))),ne(U.map(s=>{var Ae,Pe;const X=((Ae=h.get(s.sourceId))==null?void 0:Ae.dimmed)??!1,Et=((Pe=h.get(s.targetId))==null?void 0:Pe.dimmed)??!1;return bi({edge:s,joinLabel:B.get(s.id)??[],bowOffset:mt.get(s.id)??0,warning:s.joinNotConfigured||(p.get(s.sourceId)??!1)||(p.get(s.targetId)??!1),dimmed:X&&Et,direction:R})})),P(!0);const Te=[Q,U,R,F,_],ue=te.current;if(ue!=null&&ue.every((s,X)=>s===Te[X]))return;const ke=[...h.entries()].filter(([,s])=>s.highlighted).map(([s])=>s),wt=requestAnimationFrame(()=>{te.current=Te,x.fitView(ke.length>0?{nodes:ke.map(s=>({id:s})),duration:300,padding:ee}:{padding:ee,duration:300})});return()=>{cancelAnimationFrame(wt)}},[Q,U,R,F,_,$,M,x,Re]);const it=o.useCallback(c=>{H(f=>mn(c,f))},[]),st=o.useCallback(c=>{ne(f=>xn(c,f))},[]),[q,de]=o.useState(null),at=o.useCallback((c,f)=>{de(p=>p===f.id?null:f.id),ne(p=>p.some(h=>h.selected)?p.map(h=>h.selected?{...h,selected:!1}:h):p)},[]),rt=o.useCallback(()=>{de(null)},[]),ot=o.useCallback(()=>{de(null)},[]),lt=o.useMemo(()=>T.map(c=>{const f=c.id===q,p=_e.has(c.id)?di:0;return!!c.selected===f&&(c.zIndex??0)===p?c:{...c,selected:f,zIndex:p}}),[T,q,_e]),ct=o.useMemo(()=>q?J.map(c=>c.source===q||c.target===q?{...c,selected:!0}:c):J,[J,q]),dt=o.useCallback((c,f)=>{const p=I.current??{};p[f.id]={x:f.position.x,y:f.position.y},I.current=p,d.current&&k.set(oe(d.current),p)},[]);o.useEffect(()=>{const c=new Map(t.map(h=>[h.id,h.qualitySummary])),f=new Map(t.map(h=>[h.id,h.dataLastUpdated])),p=new Map(t.map(h=>[h.id,h.icon??null]));H(h=>h.map(E=>{const K=c.get(E.id)??E.data.qualitySummary,B=f.has(E.id)?f.get(E.id)??null:E.data.dataLastUpdated,W=p.has(E.id)?p.get(E.id)??null:E.data.icon;return E.data.qualitySummary!==K||E.data.dataLastUpdated!==B||E.data.icon!==W?{...E,data:{...E.data,qualitySummary:K,dataLastUpdated:B,icon:W}}:E}))},[t]),o.useEffect(()=>{H(c=>c.map(f=>f.data.isCheckingDataLastUpdated===g?f:{...f,data:{...f.data,isCheckingDataLastUpdated:g}}))},[g]),o.useEffect(()=>{const c=He(O.current,i,p=>p.id,p=>p.title);H(p=>p.map(h=>{const E=c.get(h.id)??Ue;return h.data.highlighted===E.highlighted&&h.data.dimmed===E.dimmed?h:{...h,data:{...h.data,...E}}})),ne(p=>p.map(h=>{var W,ie;const E=((W=c.get(h.source))==null?void 0:W.dimmed)??!1,K=((ie=c.get(h.target))==null?void 0:ie.dimmed)??!1,B=E&&K;return h.data.dimmed===B?h:{...h,data:{...h.data,dimmed:B}}}));const f=[...c.entries()].filter(([,p])=>p.highlighted).map(([p])=>p);f.length>0&&x.fitView({nodes:f.map(p=>({id:p})),duration:300,padding:ee})},[i,x]);const ut=o.useCallback(c=>{L(c),k.set(We,c),I.current={},d.current&&k.remove(oe(d.current)),Y(f=>f+1)},[]),pt=o.useCallback(c=>{z(f=>he(f)===he(c)?f:(k.set(Je,he(c)),c))},[]),ft=o.useCallback(c=>{V(c),k.set(ze,c)},[]),ht=o.useCallback(c=>{G(c),k.set(Ve,c)},[]),gt=o.useCallback((c,f)=>{if(b===0||w===0)return;const p=bn(f,Le,b,w,ui);p.x===f.x&&p.y===f.y||x.setViewport(p)},[Le,w,b,x]);return n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"absolute top-3 right-3 z-10 flex flex-col gap-1.5",children:[n.jsx(ge,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:()=>{x.fitView({padding:ee,duration:300})},"aria-label":"Fit to view",children:n.jsx(Cn,{className:"h-6 w-6"})}),n.jsx(ge,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:()=>{x.zoomIn({duration:150})},"aria-label":"Zoom in",children:n.jsx(wn,{className:"h-6 w-6"})}),n.jsx(ge,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:()=>{x.zoomOut({duration:150})},"aria-label":"Zoom out",children:n.jsx(En,{className:"h-6 w-6"})}),n.jsx(yn,{viewMode:_,onViewModeChange:ft,direction:R,onDirectionChange:ut,showJoinFields:$,onShowJoinFieldsChange:ht,objectLabels:M,onObjectLabelsChange:pt,objectLabelOptions:In})]}),u&&n.jsx(vn,{nodes:lt,edges:ct,nodeTypes:pi,edgeTypes:fi,onNodesChange:it,onEdgesChange:st,onNodeDragStop:dt,onNodeClick:at,onEdgeClick:ot,onPaneClick:rt,deleteKeyCode:null,nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,edgesFocusable:!1,minZoom:.05,maxZoom:2,onMove:gt,fitView:!0,fitViewOptions:{padding:ee},proOptions:{hideAttribution:!0},style:{width:"100%",height:"100%"},children:n.jsx(jn,{pannable:!0,zoomable:!0,style:{width:140,height:100},nodeColor:Dn})})]})}function yi({nodes:t,edges:e,searchQuery:i,onOpenDataMart:a,onOpenQuality:r,onRunQuality:l,isCheckingDataLastUpdated:g,storageId:m,storageTitle:C,exportApiRef:v,className:x,style:b}){return t.length===0?null:n.jsxs("div",{className:`relative overflow-hidden ${x??""}`,style:b??{height:480},children:[n.jsx("style",{children:dn}),n.jsx(un,{children:n.jsx(Ci,{nodes:t,edges:e,searchQuery:i,onOpenDataMart:a,onOpenQuality:r,onRunQuality:l,isCheckingDataLastUpdated:g,storageId:m,storageTitle:C,exportApiRef:v})})]})}export{yi as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s,D as Oe,u as _e,r,C as Ae,N as Me,T as Re,a as ve,I as ke,b as Pe,E as Te,B as Le,t as be,c as U,M as Fe,g as He,d as Ge,e as We,h as Be,i as he,f as Ke}from"./index-DbpdnvsV.js";import{O as Ne,a as ze,g as $e,N as Ye,R as Ze,u as Ve,P as q,H as ee,S as te,E as Xe,b as Je,c as ge,d as Ue,e as qe,f as Qe,h as et,L as tt,Z as st,i as it,C as nt,j as at,M as ot,k as rt,l as lt,W as ae,D as Ce,m as se,n as ne,o as ct,r as dt,p as ut,q as ht,s as gt,t as ft,v as pt,B as mt,w as xt,x as bt,y as Nt,z as Ct,A as Et,F as It}from"./erd-fields-section-BDlFV3FN.js";const yt=[{part:"source",label:"Input source",helper:"View, Table, SQL, Pattern or Connector"},{part:"fields",label:"Fields",helper:"Number of fields of the Data Mart"},{part:"status",label:"Status",helper:"Published or draft dot next to the title"},{part:"fieldAlias",label:"Field aliases",helper:"Output Schema alias in place of the name"},{part:"fieldDescription",label:"Field descriptions",helper:"Output Schema description under each field"}];function fe({isDraft:i,decorative:e=!1}){const l=i?"Draft":"Published";return s.jsxs("span",{className:"inline-flex shrink-0 items-center",title:l,children:[s.jsx("span",{className:"h-2 w-2 rounded-full",style:{background:i?Ne:ze},"aria-hidden":"true"}),!e&&s.jsx("span",{className:"sr-only",children:l})]})}function jt({type:i,joined:e=!1}){if(!i)return null;const l=Oe.getInfo(i),c=l.icon;return s.jsxs("span",{className:`border-border inline-flex items-center gap-1 border px-1.5 py-0.25 text-[8px] font-semibold tracking-wide uppercase ${e?"rounded-r-full":"-ml-0.5 rounded-full"}`,children:[s.jsx(c,{className:"h-2.5 w-2.5"}),l.displayName]})}const Y=3,Ee=.05,wt=1e-4,pe=1;function Dt(i,e,l,c){const d=i.maxX-i.minX,f=i.maxY-i.minY;return d<=0||f<=0||e<=0||l<=0?null:$e({x:i.minX,y:i.minY,width:d,height:f},e,l,Ee,Y,c)}function St(i){const e=Number.isFinite(i)&&i>0?Math.min(i,Y):pe;return{min:e>=Y?pe:e,max:Y}}function Ot(i,e,l){if(!Number.isFinite(i)||i<=0)return null;const c=i*(1+e),d=Math.min(Math.max(c,l.min),l.max);return!Number.isFinite(d)||Math.abs(d-i)<wt||e>0!=d>i?null:{zoom:d,delta:d/i-1}}const Z=240,Ie=48,Q=92,_t=.85,ie=1/_t-1,At=150,Mt=Ne;function me({data:i}){const e=He(i);if(!e)return null;const l=e.kind==="attention";return s.jsxs("span",{title:l?Ge:void 0,style:{position:"absolute",top:-18,right:4,display:"inline-flex",alignItems:"center",gap:2,fontSize:10,fontWeight:600,color:l?lt:ae,lineHeight:1,whiteSpace:"nowrap"},children:[l&&s.jsx(We,{style:{width:12,height:12,color:Mt}}),e.label]})}function ye(i){return i==="erd"?Et:Z}function xe(i,e){return{width:i.isSource?Z:ye(i.viewMode),borderColor:i.highlighted?se:Be(i)?ae:e?ne:void 0,boxShadow:i.highlighted?`0 0 0 3px ${se}40, 0 0 12px ${se}60`:e?`0 0 0 1px ${ne}`:void 0,opacity:i.dimmed?Ce:1,filter:i.dimmed?"grayscale(0.8)":void 0,animation:i.highlighted?"node-pulse 1.5s ease-in-out infinite":void 0,transition:"opacity 0.2s, filter 0.2s",cursor:"pointer"}}function Rt({id:i,data:e,selected:l}){const[c,d]=r.useState(!1),f=Ve();r.useEffect(()=>{f(i)},[c,i,f]);const b=e.objectLabels,N=!b.source,u=!b.fields,S=!b.status,O=e.direction==="vertical"?q.Top:q.Left,C=e.direction==="vertical"?q.Bottom:q.Right;function y(p){p.stopPropagation(),p.preventDefault(),e.onOpenExternal()}if(e.isSource)return s.jsxs("div",{className:"bg-primary/5 relative flex items-center gap-2 rounded-xl border shadow-sm",style:{...xe(e,l),height:Ie,padding:"0 14px"},children:[s.jsx(me,{data:e}),s.jsx("span",{className:"text-foreground flex-1 truncate text-[13px] font-semibold",title:e.label,children:e.label}),S&&s.jsx(fe,{isDraft:e.isDraft,decorative:!0}),e.hasOutgoing&&s.jsx(ee,{type:"source",position:C,isConnectable:!1,style:te})]});const j=`Open ${e.label} in new tab`,w=e.viewMode==="erd"&&e.fields.length>0;return s.jsxs("div",{title:e.isCycleStub?Ae:void 0,className:"bg-background relative flex flex-col rounded-xl border shadow-sm",style:xe(e,l),children:[s.jsx(me,{data:e}),s.jsx(ee,{type:"target",position:O,isConnectable:!1,style:te}),s.jsxs("div",{className:"flex items-center gap-2 px-3.5 pt-3 pb-1",children:[s.jsx("span",{className:"text-foreground flex-1 truncate text-[13px] font-semibold",title:e.label,children:e.label}),S&&s.jsx(fe,{isDraft:e.isDraft,decorative:!0}),!e.userHasAccess&&s.jsx(Me,{}),e.description&&s.jsxs(Re,{children:[s.jsx(ve,{asChild:!0,children:s.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground inline-flex cursor-default rounded p-0.5 transition-colors","aria-label":`Description for ${e.label}`,onPointerDown:p=>{p.stopPropagation()},children:s.jsx(ke,{className:"h-3.5 w-3.5","aria-hidden":"true"})})}),s.jsx(Pe,{side:"top",align:"center",role:"tooltip",className:"max-w-xs",children:e.description})]}),s.jsx("button",{type:"button",className:"text-muted-foreground hover:text-foreground shrink-0 cursor-pointer rounded p-0.5 transition-colors",onPointerDown:p=>{p.stopPropagation()},onClick:y,title:j,"aria-label":j,children:s.jsx(Te,{className:"h-3.5 w-3.5","aria-hidden":"true"})})]}),s.jsxs("div",{className:"flex min-w-0 items-center gap-2 px-3.5 pt-1 pb-3",children:[N&&s.jsx(jt,{type:e.definitionType}),e.targetAlias&&s.jsx(Le,{variant:"secondary",className:"inline-block max-w-[90px] truncate px-1.5 py-0 text-[10px]",title:e.targetAlias,children:e.targetAlias}),u&&s.jsxs("span",{className:"text-muted-foreground ml-auto shrink-0 text-[11px]",children:[e.fieldCount??0," field",e.fieldCount!==1?"s":""]})]}),w&&s.jsx(Xe,{fields:e.fields,labels:be(b),expanded:c,onToggleExpanded:()=>{d(p=>!p)}}),e.hasOutgoing&&s.jsx(ee,{type:"source",position:C,isConnectable:!1,style:te})]})}function vt({id:i,sourceX:e,sourceY:l,targetX:c,targetY:d,sourcePosition:f,targetPosition:b,selected:N,data:u}){const[S,O,C]=ht({sourceX:e,sourceY:l,sourcePosition:f,targetX:c,targetY:d,targetPosition:b}),y=u.warning?ae:N?ne:gt,j=r.useId(),w=ft("rel-arrow",j);return s.jsxs(s.Fragment,{children:[s.jsx(pt,{markerId:w,color:y,withStart:!1}),s.jsx(mt,{id:i,path:S,markerEnd:`url(#${w}-end)`,style:{stroke:y,strokeWidth:N?bt:Nt,strokeDasharray:u.warning?xt:void 0,opacity:u.dimmed?Ce:1,transition:"opacity 0.2s, stroke 0.2s"}}),s.jsx(Ct,{x:O,y:C,lines:u.joinLabel,selected:N??!1,dimmed:u.dimmed})]})}const kt={relationshipNode:Rt},Pt={relationshipEdge:vt};function Tt(i){return JSON.stringify([i.nodes.map(e=>[e.id,e.data.isSource,e.data.label,e.data.targetAlias,e.data.fieldCount,e.data.description,e.data.isDraft,e.data.isBlocked,e.data.isJoinNotConfigured,e.data.isCycleStub,e.data.isMissingPrimaryKey,e.data.userHasAccess,e.data.hasOutgoing]),i.edges.map(e=>[e.id,e.source,e.target,e.data.warning])])}function Lt(i,e,l,c){return i?Ie:l!=="erd"?Q:Q+It(e,c)}function Ft({dataMartId:i,dataMartTitle:e,dataMartDescription:l,dataMartStatus:c,rootDefinitionType:d,definitionTypes:f,initialRelationships:b,graph:N,fieldCounts:u,showLooped:S,statusFilter:O,viewMode:C,objectLabels:y,direction:j,showJoinFields:w,fieldsByAliasPath:p,onOpenExternal:T}){let G=0;const R=(t,a)=>a&&!S||O!=="all"&&t!==O?(G++,!1):!0,_=new Map,M=[],W=new Set,L=c==="DRAFT";_.set(i,{dmId:i,title:e,description:l,depth:0,isSource:!0,isDraft:L,userHasAccess:!0});const h=new Map;h.set("",i);function E(t,a,m,I,A){const z=`path:${I}`;M.push({sourceId:t,targetId:z,joinLabel:w?A.map(X=>`${X.sourceFieldName} = ${X.targetFieldName}`):[]}),W.add(t),_.set(z,{dmId:a,aliasPath:I,...m}),h.set(I,z)}if(N)for(const t of N.nodes){const a=t.aliasPath.lastIndexOf("."),m=a===-1?"":t.aliasPath.slice(0,a),I=h.get(m);I&&R(t.relationship.targetDataMart.status,t.isCycleStub)&&E(I,t.relationship.targetDataMart.id,{title:t.relationship.targetDataMart.title,description:t.relationship.targetDataMart.description,depth:t.depth,isSource:!1,targetAlias:t.relationship.targetAlias,fieldCount:(u==null?void 0:u.get(t.relationship.id))??0,isDraft:t.relationship.targetDataMart.status==="DRAFT",isBlocked:t.isBlocked,isJoinNotConfigured:t.relationship.joinConditions.length===0,isCycleStub:t.isCycleStub,isMissingPrimaryKey:he(t.relationship.targetDataMart.hasPrimaryKey,t.relationship.joinConditions.length),userHasAccess:t.relationship.targetDataMart.userHasAccess},t.aliasPath,t.relationship.joinConditions)}else for(const t of b)R(t.targetDataMart.status,t.targetDataMart.id===i)&&E(i,t.targetDataMart.id,{title:t.targetDataMart.title,description:t.targetDataMart.description,depth:1,isSource:!1,targetAlias:t.targetAlias,fieldCount:(u==null?void 0:u.get(t.id))??0,isDraft:t.targetDataMart.status==="DRAFT",isBlocked:L,isJoinNotConfigured:t.joinConditions.length===0,isCycleStub:t.targetDataMart.id===i,isMissingPrimaryKey:he(t.targetDataMart.hasPrimaryKey,t.joinConditions.length),userHasAccess:t.targetDataMart.userHasAccess},t.targetAlias,t.joinConditions);const D=new Map,v=new Map,F=new Map,g=be(y);for(const[t,a]of _){const m=a.isSource||a.aliasPath===void 0?[]:(p==null?void 0:p.get(a.aliasPath))??[];D.set(t,m),v.set(t,a.isSource?Z:ye(C)),F.set(t,Lt(a.isSource,m,C,g))}const V=[..._.keys()].map(t=>({id:t,width:v.get(t)??Z,height:F.get(t)??Q})),B=M.map(t=>({id:`${t.sourceId}->${t.targetId}`,sourceId:t.sourceId,targetId:t.targetId,label:ct(t.joinLabel)})),{positions:k}=dt(V,B,j),H=[];for(const[t,a]of _)H.push({id:t,type:"relationshipNode",position:k.get(t)??{x:0,y:0},width:v.get(t)??Z,height:F.get(t)??Q,draggable:!1,selectable:!1,focusable:!1,style:ut,data:{isSource:a.isSource,label:a.title,targetAlias:a.targetAlias,fieldCount:a.fieldCount,description:a.description,definitionType:a.isSource?d:(f==null?void 0:f.get(a.dmId))??null,isDraft:a.isDraft??!1,isBlocked:a.isBlocked??!1,isJoinNotConfigured:a.isJoinNotConfigured??!1,isCycleStub:a.isCycleStub??!1,isMissingPrimaryKey:a.isMissingPrimaryKey??!1,userHasAccess:a.userHasAccess,hasOutgoing:W.has(t)&&!a.isCycleStub,highlighted:!1,dimmed:!1,fields:D.get(t)??[],viewMode:C,objectLabels:y,direction:j,onOpenExternal:()=>{T(a.dmId)}}});const P=[];for(const t of M){const a=_.get(t.sourceId),m=_.get(t.targetId);if(!a||!m)continue;const I=Ke(a,m);P.push({id:`${t.sourceId}->${t.targetId}`,type:"relationshipEdge",source:t.sourceId,target:t.targetId,focusable:!1,selectable:!1,data:{warning:I,dimmed:!1,joinLabel:t.joinLabel}})}return{nodes:H,edges:P,filteredOutCount:G}}function Ht({dataMartId:i,dataMartTitle:e,dataMartDescription:l,dataMartStatus:c,dataMartDefinitionType:d,definitionTypes:f,relationships:b,relationshipGraph:N,connectedFieldCounts:u,searchQuery:S,onRequestFullscreen:O,onOpenExternal:C,showLooped:y,statusFilter:j,viewMode:w,onViewModeChange:p,direction:T,onDirectionChange:G,showJoinFields:R,onShowJoinFieldsChange:_,objectLabels:M,onObjectLabelsChange:W,fieldsByAliasPath:L}){const h=Je(),E=ge(n=>n.width),D=ge(n=>n.height),v=r.useRef(!1),F=r.useRef(!1),g=r.useMemo(()=>Ft({dataMartId:i,dataMartTitle:e,dataMartDescription:l,dataMartStatus:c,rootDefinitionType:d??null,definitionTypes:f,initialRelationships:b,graph:N,fieldCounts:u,showLooped:y,statusFilter:j,viewMode:w,objectLabels:M,direction:T,showJoinFields:R,fieldsByAliasPath:L,onOpenExternal:C}),[i,e,l,c,d,f,b,N,u,y,j,w,M,T,R,L,C]),[V,B]=r.useState(null),[k,H]=r.useState(null),P=r.useMemo(()=>Tt(g),[g]),t=r.useMemo(()=>Ue(g.nodes),[g.nodes]),a=r.useRef(P),m=r.useMemo(()=>Dt(t,E,D,ie),[t,E,D]),I=r.useMemo(()=>St((m==null?void 0:m.zoom)??Number.NaN),[m]);r.useEffect(()=>{a.current!==P&&(a.current=P,F.current=!1,H(n=>n!==null&&g.nodes.some(o=>o.id===n)?n:null),B(n=>n!==null&&g.edges.some(o=>o.id===n)?n:null))},[P,g]);const A=r.useMemo(()=>qe(g.nodes,S,n=>n.id,n=>n.data.label),[g.nodes,S]),z=r.useMemo(()=>g.nodes.map(n=>{const o=A.get(n.id)??Qe,x=n.id===k;return n.data.highlighted===o.highlighted&&n.data.dimmed===o.dimmed&&(n.selected??!1)===x?n:{...n,selected:x,data:{...n.data,...o}}}),[g.nodes,A,k]),X=r.useMemo(()=>g.edges.map(n=>{var de,ue;const o=(((de=A.get(n.source))==null?void 0:de.dimmed)??!1)&&(((ue=A.get(n.target))==null?void 0:ue.dimmed)??!1),x=n.id===V||k!==null&&(n.source===k||n.target===k);return n.data.dimmed===o&&(n.selected??!1)===x?n:{...n,selected:x,data:{...n.data,dimmed:o}}}),[g.edges,A,V,k]),je=r.useCallback((n,o)=>{B(x=>x===o.id?null:o.id),H(null)},[]),we=r.useCallback((n,o)=>{H(x=>x===o.id?null:o.id),B(null)},[]),De=r.useCallback(()=>{B(null),H(null)},[]),oe=r.useRef(A);oe.current=A;const J=r.useCallback(()=>{const n=[...oe.current.entries()].filter(([,o])=>o.highlighted).map(([o])=>o);n.length!==0&&h.fitView({nodes:n.map(o=>({id:o})),duration:300,padding:ie})},[h]),$=r.useCallback(()=>h.fitView({minZoom:Ee,maxZoom:Y,padding:ie}),[h]),re=r.useRef(m);re.current=m;const le=r.useCallback(()=>{const n=re.current;return n?h.setViewport(n):$()},[$,h]),K=r.useCallback(()=>{F.current=!0},[]);r.useEffect(()=>{E===0||D===0||F.current||le().then(()=>{v.current=!0,J()})},[E,D,P,le,J]),r.useEffect(()=>{v.current&&J()},[A,J]);const ce=r.useCallback(n=>{K();const o=h.getZoom();if(!Number.isFinite(o)||o<=0){$();return}const x=Ot(o,n,I);x&&h.zoomTo(x.zoom,{duration:150})},[$,K,h,I]),Se=r.useCallback((n,o)=>{if(E===0||D===0||!Number.isFinite(o.zoom))return;const x=et(o,t,E,D,At);x.x===o.x&&x.y===o.y||h.setViewport(x)},[t,D,E,h]);return s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"absolute top-3 right-3 z-10 flex items-start gap-2",children:s.jsxs("div",{className:"flex flex-col gap-1.5",children:[s.jsx(U,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:()=>{K(),$()},"aria-label":"Fit to view",children:s.jsx(tt,{className:"h-6 w-6"})}),s.jsx(U,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:()=>{ce(.25)},"aria-label":"Zoom in",children:s.jsx(st,{className:"h-6 w-6"})}),s.jsx(U,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:()=>{ce(-.25)},"aria-label":"Zoom out",children:s.jsx(it,{className:"h-6 w-6"})}),O&&s.jsx(U,{variant:"outline",size:"icon",className:"h-12 w-12",onClick:O,"aria-label":"Expand diagram",children:s.jsx(Fe,{className:"h-6 w-6"})}),s.jsx(nt,{viewMode:w,onViewModeChange:p,direction:T,onDirectionChange:G,showJoinFields:R,onShowJoinFieldsChange:_,objectLabels:M,onObjectLabelsChange:W,objectLabelOptions:yt})]})}),s.jsxs("div",{className:"h-full w-full",onPointerDownCapture:K,onWheelCapture:K,children:[s.jsx(at,{nodes:z,edges:X,nodeTypes:kt,edgeTypes:Pt,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,edgesFocusable:!1,zoomOnDoubleClick:!1,minZoom:I.min,maxZoom:I.max,onEdgeClick:je,onNodeClick:we,onPaneClick:De,deleteKeyCode:null,panActivationKeyCode:null,onMove:Se,onMoveStart:n=>{n&&K()},proOptions:{hideAttribution:!0},style:{width:"100%",height:"100%"},children:s.jsx(ot,{pannable:!0,zoomable:!0,style:{width:140,height:100},nodeColor:rt})}),g.nodes.length===1&&g.filteredOutCount>0&&s.jsx("div",{className:"pointer-events-none absolute inset-x-0 bottom-6 flex justify-center",children:s.jsx("span",{className:"bg-background text-muted-foreground rounded-md border px-3 py-1.5 text-sm shadow-sm",children:"No related data marts match the current filters"})})]})]})}function Bt({dataMartId:i,dataMartTitle:e,dataMartDescription:l,dataMartStatus:c,dataMartDefinitionType:d,definitionTypes:f,relationships:b,relationshipGraph:N,connectedFieldCounts:u,searchQuery:S,onRequestFullscreen:O,showLooped:C,statusFilter:y,viewMode:j,onViewModeChange:w,direction:p,onDirectionChange:T,showJoinFields:G,onShowJoinFieldsChange:R,objectLabels:_,onObjectLabelsChange:M,fieldsByAliasPath:W,className:L,style:h}){const{scope:E}=_e(),D=r.useCallback(v=>{window.open(E(`/data-marts/${v}/data-setup`),"_blank","noopener,noreferrer")},[E]);return b.length===0?null:s.jsxs("div",{className:`relative overflow-hidden rounded-lg border ${L??""}`,style:h??{height:480},children:[s.jsx("style",{children:Ye}),s.jsx(Ze,{children:s.jsx(Ht,{dataMartId:i,dataMartTitle:e,dataMartDescription:l,dataMartStatus:c,dataMartDefinitionType:d,definitionTypes:f,relationships:b,relationshipGraph:N,connectedFieldCounts:u,searchQuery:S,onRequestFullscreen:O,onOpenExternal:D,showLooped:C,statusFilter:y,viewMode:j,onViewModeChange:w,direction:p,onDirectionChange:T,showJoinFields:G,onShowJoinFieldsChange:R,objectLabels:_,onObjectLabelsChange:M,fieldsByAliasPath:W})})]})}export{Bt as RelationshipCanvas,Rt as RelationshipFlowNode};
|