@reltio/remotes 1.4.1521 → 1.4.1523
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/1032.js +1 -1
- package/1032.js.map +1 -1
- package/1268.js +1 -1
- package/1396.js +1 -1
- package/1396.js.map +1 -1
- package/1901.js +3 -0
- package/1901.js.map +1 -0
- package/233.js +2 -0
- package/233.js.map +1 -0
- package/316.js +2 -0
- package/316.js.map +1 -0
- package/3164.js +2 -0
- package/3164.js.map +1 -0
- package/3396.js +1 -1
- package/3396.js.map +1 -1
- package/3758.js +2 -0
- package/3758.js.map +1 -0
- package/385.js +2 -0
- package/385.js.map +1 -0
- package/4120.js +2 -0
- package/4120.js.map +1 -0
- package/4183.js +1 -1
- package/4183.js.map +1 -1
- package/4571.js +1 -1
- package/545.js +2 -0
- package/545.js.map +1 -0
- package/5605.js.map +1 -1
- package/566.js +2 -0
- package/566.js.map +1 -0
- package/{4407.css → 574.css} +1 -1
- package/574.css.map +1 -0
- package/574.js +2 -0
- package/574.js.map +1 -0
- package/{6046.js → 6211.js} +2 -2
- package/6211.js.map +1 -0
- package/6233.js +1 -1
- package/6233.js.map +1 -1
- package/6299.js.map +1 -1
- package/{5285.js → 6578.js} +2 -2
- package/6578.js.map +1 -0
- package/7198.js +2 -0
- package/7198.js.map +1 -0
- package/769.js +2 -0
- package/769.js.map +1 -0
- package/8594.js +2 -0
- package/8594.js.map +1 -0
- package/8684.js +1 -1
- package/{3294.js → 8768.js} +2 -2
- package/8768.js.map +1 -0
- package/9835.js +2 -0
- package/9835.js.map +1 -0
- package/package.json +1 -1
- package/remoteEntry.js +1 -1
- package/remoteEntry.js.map +1 -1
- package/3270.js +0 -2
- package/3270.js.map +0 -1
- package/3294.js.map +0 -1
- package/4407.css.map +0 -1
- package/4407.js +0 -2
- package/4407.js.map +0 -1
- package/5285.js.map +0 -1
- package/6046.js.map +0 -1
- package/6103.js +0 -2
- package/6103.js.map +0 -1
- package/6244.js +0 -2
- package/6244.js.map +0 -1
- package/6413.js +0 -3
- package/6413.js.map +0 -1
- package/6669.js +0 -2
- package/6669.js.map +0 -1
- package/6719.js +0 -2
- package/6719.js.map +0 -1
- package/6880.js +0 -2
- package/6880.js.map +0 -1
- package/8443.js +0 -2
- package/8443.js.map +0 -1
- package/8932.js +0 -2
- package/8932.js.map +0 -1
- package/929.js +0 -2
- package/929.js.map +0 -1
- package/9481.js +0 -2
- package/9481.js.map +0 -1
- package/9561.js +0 -2
- package/9561.js.map +0 -1
- package/9852.js +0 -2
- package/9852.js.map +0 -1
- /package/{6413.js.LICENSE.txt → 1901.js.LICENSE.txt} +0 -0
package/316.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_reltio_remotes=self.webpackChunk_reltio_remotes||[]).push([[316],{32528:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(13688),o=r(48852);const l=e=>t=>(0,o.l)(n.X,e,t)},2804:(e,t,r)=>{r.d(t,{a:()=>o});var n=r(24328);const o=e=>{const[t,r]=(0,n.useState)(!1),[o,l]=(0,n.useState)({});return(0,n.useEffect)((()=>{e().then((e=>{l(e||{})})).then((e=>r(!0))).catch((e=>r(!0)))}),[]),{isLoaded:t,savedState:o}}},14701:(e,t,r)=>{r.r(t),r.d(t,{default:()=>yt});var n=r(24328),o=r.n(n),l=r(52730),a=r(8598),i=r(36138),s=r(44443),c=r(22664),u=r(47898),d=r(585),p=r(87918),m=r.n(p),g=r(17440),h=r(49885),f=r(67958),b=r(71820),y=r(57730),v=r(20562),k=r(24605),E=r(2804),x=r(85965),w=r(44021),C=r(91515),S=r(54362),O=r(6674),T=r(63149),U=r(48017),M=r(97499),P=r(40715),L=r(66095),R=r(20982),D=r(94079),z=r(80147),j=r(87685),Z=r(22385),B=r(79692);const N=(0,B.Z)({header:{display:"flex",flexDirection:"row",alignItems:"center",padding:"16px 12px",borderBottom:"1px solid rgba(0, 0, 0, 0.12);"},closeButton:{marginRight:"12px"}}),H=e=>{let{active:t,onClose:r,tabs:n}=e;const l=N(),{content:a,title:i}=n[t]||{};return o().createElement(o().Fragment,null,o().createElement("div",{className:l.header},o().createElement(Z.Z,{className:l.closeButton,icon:j.default,onClick:r}),i),a)};var F=r(99144),I=r(31276),$=r(83401),A=r(18798);let W;!function(e){e.Crosswalk="crosswalks",e.Source="source",e.Contributor="contributor"}(W||(W={}));const G=e=>(0,g.pipe)((0,g.map)((0,g.prop)("value")),g.sum)(e);function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){X(e,t,r[t])}))}return e}function X(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const _=e=>{let{data:t,width:r,height:o}=e;return(0,n.useMemo)((()=>{if(!r||!o)return{nodes:[],links:[]};const e=function(){let e=24,t=15,r=10,n=8,o=[1,1];function l(l){let{nodes:i,links:s}=l;const c={nodes:i,links:s};return function(e){let{nodes:t,links:r}=e;t.forEach((e=>{e.sourceLinks=[],e.targetLinks=[]})),r.forEach((e=>{e.source.sourceLinks.push(e),e.target.targetLinks.push(e)}))}(c),function(e){let{nodes:t}=e;t.forEach((e=>{e.value=Math.max(G(e.sourceLinks),G(e.targetLinks))}))}(c),function(t){let{nodes:r}=t;if(!r.length)return;let n,l=[r[0]],a=0;for(;l.length;)n=[],l.forEach((t=>{t.x=a,t.dx=e,t.targetLinks.forEach((e=>{n.indexOf(e.source)<0&&n.push(e.source)}))})),l=n,++a;if(r.forEach((e=>{e.x=a-1-e.x})),a>2){const t=(o[0]-2*e-22)/(a-2);r.forEach((r=>{r.sourceLinks&&0!=r.sourceLinks.length?r.x*=t:r.x=o[0]-e}))}else r[0].x=o[0]-e,r[1].x=r[0].x-22-e}(c),function(e){let{nodes:l,links:a}=e;const i=(0,g.pipe)((0,g.groupBy)((0,g.prop)("x")),g.toPairs,(0,g.sort)(((e,t)=>e[0]-t[0])),(0,g.map)((0,g.nth)(1)))(l);(function(){let e=(0,g.pipe)((0,g.map)((e=>(o[1]-(e.length-1)*n)/G(e))),(0,g.reduce)(Math.min,1/0))(i);const s=(0,g.pipe)((0,g.map)((e=>{var t;return e.value/((null===(t=e.targetLinks)||void 0===t?void 0:t.length)||1)})),(0,g.reduce)(Math.min,1/0))(l);e=Math.max(Math.min(e,t/s),r/s),i.forEach((t=>{t.forEach(((t,r)=>{t.y=r,t.dy=t.value*e}))})),a.forEach((t=>{t.dy=t.value*e}))})(),i.forEach((e=>{let t,r,l,a=0;const i=e.length;for(e.sort(((e,t)=>e.y-t.y)),l=0;l<i;++l)t=e[l],r=a-t.y,r>0&&(t.y+=r),a=t.y+t.dy+n;if(r=a-n-o[1],r>0)for(a=t.y-=r,l=i-2;l>=0;--l)t=e[l],r=t.y+t.dy+n-a,r>0&&(t.y-=r),a=t.y}));const s=(0,g.pipe)((0,g.map)((e=>(e.length-1)*n+(0,g.sum)((0,g.map)((e=>e.dy),e)))),(0,g.reduce)(Math.max,0))(i),c=(o[1]-s)/2;i.forEach((e=>{const{y:t,dy:r}=(0,g.last)(e),n=o[1]-(t+r);e.forEach((e=>{e.y+=n,c>0&&(e.y-=c)}))}))}(c),a(c),function(e){let{nodes:t}=e;(0,g.pipe)((0,g.groupBy)((0,g.prop)("x")),g.toPairs,(0,g.sort)(((e,t)=>t[0]-e[0])),(0,g.map)((0,g.nth)(1)))(t).forEach((e=>{(e=e.concat().sort(((e,t)=>e.y-t.y))).forEach(((t,r)=>{var o;if(null!==(o=t.sourceLinks)&&void 0!==o&&o.length){var l,a,i;const{target:o,ty:s,dy:c}=(0,g.last)(t.sourceLinks);let u=o.y+s+c-t.dy;(null===(l=e[r-1])||void 0===l?void 0:l.x)==t.x&&u<(null===(a=e[r-1])||void 0===a?void 0:a.y)+(null===(i=e[r-1])||void 0===i?void 0:i.dy)+n&&(u=e[r-1].y+e[r-1].dy+n),t.y>u&&(t.y=u)}}))}))}(c),c}function a(e){let{nodes:t}=e;(0,g.pipe)((0,g.groupBy)((0,g.prop)("x")),g.toPairs,(0,g.sort)(((e,t)=>e[0]-t[0])),(0,g.map)((0,g.nth)(1)))(t).forEach((e=>{e.forEach((e=>{var t,r;if(null!==(t=e.targetLinks)&&void 0!==t&&t.length){const t=[],r=e.targetLinks.map((e=>e.crosswalk.uuid)),n=[];e.targetLinks.forEach((function(e){-1==this.indexOf(e.source)&&this.push(e.source)}),n);for(let o=0;o<n.length;o++)for(let l=0;l<n[o].sourceLinks.length;l++){const a=r.indexOf(n[o].sourceLinks[l].crosswalk.uuid);-1!=a&&t.push(e.targetLinks[a])}e.targetLinks=t}if(null!==(r=e.sourceLinks)&&void 0!==r&&r.length){var n;const t=[];if(null!==(n=e.targetLinks)&&void 0!==n&&n.length){const r=e.sourceLinks.map((e=>e.crosswalk.uuid));for(let n=0;n<e.targetLinks.length;n++){const o=r.indexOf(e.targetLinks[n].crosswalk.uuid);-1!=o&&t.push(e.sourceLinks[o])}}const r=t.map((e=>e.crosswalk.uuid)),o=e.sourceLinks.filter((function(e){return-1==this.indexOf(e.crosswalk.uuid)}),r);if(e.sourceLinks=o.concat(t),t.length>0){let t=0;for(let e=0;e<o.length;e++)t+=o[e].dy;e.sizeForNewSources=t}}}))})),t.forEach((e=>{let t=0,r=e.sizeForNewSources||0;delete e.sizeForNewSources,e.sourceLinks.forEach((e=>{e.sy=t,t+=e.dy})),e.targetLinks.forEach((e=>{e.ty=r,r+=e.dy}))}))}return l.nodeWidth=()=>e,l.setNodeWidth=t=>(e=+t,l),l.nodePadding=()=>n,l.setNodePadding=e=>(n=+e,l),l.smallestNodeMaxHeight=()=>t,l.setSmallestNodeMaxHeight=e=>(t=+e,l),l.smallestNodeMinHeight=()=>r,l.setSmallestNodeMinHeight=e=>(r=+e,l),l.size=()=>o,l.setSize=e=>(o=e,l),l.update=e=>(a(e),e),l.link=()=>{let t=.5;function r(r){const n=!r.target.sourceLinks||0==r.target.sourceLinks.length,o=r.source.x+r.source.dx,l=r.target.x,a=(d=+(d=o),p=+(p=l),e=>d*(1-e)+p*e),i=a(t),s=a(1-t),c=r.source.y+r.sy-.13,u=r.target.y+r.ty-.13;var d,p;const m=n?"":`L${l+e},${u} L${l+e},${u+r.dy+.26}`;return c===u?`M${o},${c} \n L${l},${u}${m} \n L${l},${u+r.dy+.26} \n L${o},${c+r.dy+.26} Z`:`M${o},${c}\n C${i},${c} ${s},${u} ${l},${u}${m} \n L${l},${u+r.dy+.26} \n C${s},${u+r.dy+.26} ${i},${c+r.dy+.26} \n ${o},${c+r.dy+.26} Z`}return r.curvature=function(e){return arguments.length?(t=+e,r):t},r},l}().setNodeWidth(14).setNodePadding(20).setSize([o-2,r-2]),n=e.nodeWidth(),l=e.link(),a=(e=>{const t=e.nodes.map((e=>V({},e))),r=r=>{const n=e.nodes.indexOf(r);return t[n]},n=e.links.map((e=>V({},e,{source:r(e.source),target:r(e.target)})));return{nodes:t,links:n}})(t),{nodes:i,links:s}=e(a);return{nodes:i,links:s,nodeWidth:n,path:l}}),[t,o,r])};var Y=r(94111),q=r(12147),K=r(98685);const Q=(0,B.Z)({tooltipTitle:{fontWeight:500,fontSize:"16px",lineHeight:"24px",letterSpacing:"0.15px",marginBottom:"8px",userSelect:"none"},tooltipRow:{display:"flex",alignItems:"center",fontSize:"13px",lineHeight:"15px",fontWeight:"normal","&:not(:last-child)":{marginBottom:"4px"}},tooltipIcon:{fontSize:"18px",color:"rgba(0, 0, 0, 0.54)",marginRight:"8px"},node:{stroke:"#000000",strokeWidth:1,strokeOpacity:.38},rootNode:{transform:"rotate(90deg)",userSelect:"none",fontSize:"13px"},popupContainer:{padding:5,boxSizing:"border-box"}}),J=e=>{let{user:t,time:r,children:n}=e;const l=Q(),a=o().createElement("div",null,o().createElement("span",{className:l.tooltipTitle},m().text("Merge details")),o().createElement("div",{className:l.tooltipRow},o().createElement(q.Z,{className:l.tooltipIcon}),m().date(r,"L LTS")),o().createElement("div",{className:l.tooltipRow},o().createElement(K.Z,{className:l.tooltipIcon}),t));return o().createElement(Y.Z,{title:a,placement:"top"},n)};var ee=r(8818);function te(){return te=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},te.apply(this,arguments)}const re=e=>{let{styles:t={}}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,["styles"]);return o().createElement("svg",te({width:"24",height:"24",viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink"},r),o().createElement("defs",null,o().createElement("path",{d:"M17 13.138l4.5 4.5-4.5 4.5V18.5h-1.247l-3.488-3.479 1.413-1.414 2.901 2.893H17v-3.362zM17 1.5L21.5 6 17 10.5V7.138h-.421l-11.03 11H2v-2h2.723l11.03-11H17V1.5zm-11.45 4l3.294 3.286-1.414 1.413L4.723 7.5H2v-2h3.55z",id:"svg2499598299a"})),o().createElement("g",{stroke:"none",strokeWidth:"1",fill:"none",fillRule:"evenodd"},o().createElement("mask",{id:"svg2499598299b",fill:"#fff"},o().createElement("use",{xlinkHref:"#svg2499598299a"})),o().createElement("path",{fillOpacity:".54",fill:"#000",mask:"url(#svg2499598299b)",d:"M0 0h24v24H0z"})))},ne=e=>{let{node:t,nodeWidth:r,highlightEnabled:l,isColored:a,disableUnmerge:i,onUnmerge:s,isDragging:c}=e;const u=Q(),[d,p]=(0,n.useState)(0),[h,f]=(0,n.useState)(null),b=(0,n.useRef)(null),{x:y,y:v,name:k,label:E,targetLinks:x,sourceLinks:w,entity:{crosswalks:C=[],merges:S}}=t,[O]=C,{isDimmed:U,highlightCrosswalk:M,removeHighlight:P}=(0,T.pu)(O),L=(0,T.nX)(O),R=null!=C&&C.length?w[C.length-1].sy+w[C.length-1].dy:0,z=()=>f(null);return(0,n.useEffect)((()=>{var e;const r=t.dy,n=(null==b||null===(e=b.current)||void 0===e?void 0:e.clientWidth)||0;r<n&&p(r/2-n/2)}),[]),(0,n.useEffect)((()=>{c&&h&&z()}),[c]),o().createElement("g",{transform:`translate(${y},${v})`},"ROOT"===k?o().createElement("text",{dy:-5,dx:d,ref:b,className:u.rootNode},E||""):o().createElement(o().Fragment,null,o().createElement("rect",{height:R,width:14,className:u.node,fill:a?L:"#F0F0F0",key:"node-main",filter:l&&U?"url(#saturation)":null,opacity:l&&U?.19:1,onMouseEnter:()=>{l&&M()},onMouseLeave:()=>{l&&P()},onClick:i?I.ZT:e=>f(e.currentTarget),cursor:i?"default":"pointer","data-reltio-id":"reltio-sankey-chart-node"}),o().createElement(D.Popover,{open:!!h,anchorEl:h,anchorOrigin:{vertical:"top",horizontal:"right"},onClose:z,classes:{paper:u.popupContainer},"data-reltio-id":"reltio-unmerge-popup"},o().createElement(ee.k,{size:"XS",tooltipTitle:m().text("Unmerge"),icon:re,onClick:()=>{s(k),z()}})),!(null==x||!x.length)&&(()=>{const e=(0,g.pipe)((0,g.map)((0,g.prop)("source")),(0,g.groupBy)((0,g.prop)("time")))(x);return null==S?void 0:S.map(((t,n)=>{let{time:a,user:i}=t;const s=e[a];if(!s)return;const[c,d]=s.reduce(((e,t)=>{let{sourceLinks:r}=t;return[(0,g.min)((0,g.head)(r).ty,e[0]),(0,g.max)((0,g.last)(r).ty+(0,g.last)(r).dy,e[1])]}),[1/0,0]);return o().createElement(J,{user:i,time:a,key:"node-"+n},o().createElement("rect",{transform:`translate(0,${c})`,height:d-c,width:r,className:u.node,fillOpacity:.54,fill:"#F0F0F0",opacity:l&&U?.38:1}))}))})()))},oe=e=>{let{link:t,path:r,highlightEnabled:n,isColored:l}=e;const{crosswalk:a}=t,i=(0,T.nX)(a),{isDimmed:s,highlightCrosswalk:c,removeHighlight:u}=(0,T.pu)(a);return o().createElement("path",{d:r,fill:l?i:"#F0F0F0",filter:n&&s?"url(#saturation)":null,opacity:n&&s?.19:1,onMouseEnter:()=>{n&&c()},onMouseLeave:()=>{n&&u()}})},le=e=>{let{width:t,height:r,data:l,accentContributors:a,onUnmerge:i,disableUnmerge:s}=e;const[c,u]=(0,n.useState)(!1),[d,p]=(0,n.useState)(!1),[m,g]=(0,n.useState)(0),[h,f]=(0,n.useState)(0),{links:b,nodes:y,nodeWidth:v,path:k}=_({data:l,width:t,height:r});(0,n.useEffect)((()=>{f(0),g(0)}),[t,r]);const E=(0,n.useMemo)((()=>y.map(((e,t)=>o().createElement(ne,{highlightEnabled:a,isColored:a,node:e,nodeWidth:v,key:`SankeyNode-${t}`,disableUnmerge:s,onUnmerge:i,isDragging:c})))),[y,a,v,t,r,c]),x=(0,n.useMemo)((()=>b.map(((e,t)=>o().createElement(oe,{highlightEnabled:!a,isColored:!a,link:e,path:k(e),key:`SankeyLink-${t}`})))),[a,b,k]),w=e=>{const t=e.pageX,r=t-m;return g(t),r},C=()=>{p(!1),u(!1)},S=c?"none":"auto",O=c?"move":"auto";return o().createElement("svg",{width:t,height:r,cursor:O,onMouseDown:e=>{e.preventDefault(),p(!0),w(e)},onMouseMove:e=>{if(!d)return;u(!0);const t=w(e);f(h+t)},onMouseUp:C,onMouseLeave:C},o().createElement("filter",{id:"saturation",filterUnits:"objectBoundingBox"},o().createElement("feColorMatrix",{id:"saturate",type:"saturate",values:"0.2"})),o().createElement("g",{transform:`translate(${h},${r-1}) rotate(-90)`,pointerEvents:S},o().createElement("g",null,x),o().createElement("g",null,E)))};function ae(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const ie=(0,g.curry)(((e,t)=>!e||e.some((0,f.aFF)(t)))),se=(0,g.curry)(((e,t)=>(0,g.evolve)({crosswalks:(0,g.filter)(ie(e)),merges:(0,g.map)((0,g.evolve)({losers:(0,g.map)(se(e))}))},t))),ce=e=>{let t=1;const r=(0,g.pipe)((0,g.evolve)({crosswalks:(0,g.map)((e=>function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){ae(e,t,r[t])}))}return e}({},e,{uuid:t++})))}),(0,g.evolve)({merges:(0,g.map)((0,g.evolve)({losers:(0,g.map)((e=>r(e)))}))}));return r(e)},ue=e=>{const t=[],r=[],n=(e,o,l)=>{const{crosswalks:a=[],merges:i=[],uri:s="",label:c}=e;t.push({entity:e,name:s,time:l,label:c});const u=t.length-1,d=(0,g.pipe)((0,g.chain)((e=>{let{losers:t,time:r}=e;return(0,g.pipe)((0,g.filter)((e=>{var t,r;return(null===(t=e.crosswalks)||void 0===t?void 0:t.length)||(null===(r=e.merges)||void 0===r?void 0:r.length)})),(0,g.chain)((e=>n(e,u,r))))(t)})),(0,g.concat)(a))(i);return-1!=o&&d.forEach((e=>r.push({source:t[u],target:t[o],value:10,crosswalk:e}))),d};n(e,-1,Date.now());const o=(0,g.pipe)((0,g.chain)((e=>{let{source:t,target:r}=e;return[t,r]})),g.uniq)(r);return{nodes:t.filter((e=>o.includes(e))),links:r}},de=(0,B.Z)((()=>({graph:{padding:"8px 0px",boxSizing:"border-box",height:"100%",width:"100%"}}))),pe=(0,n.memo)((e=>{let{crosswalkTree:t,entityLabel:r,visibleCrosswalks:n,accentContributors:l,disableUnmerge:a=!1,onUnmerge:i=I.ZT}=e;const c=de(),u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0;return(0,g.pipe)(se(r),ce,ue)({uri:"ROOT",label:t,crosswalks:[],merges:[{time:Date.now(),losers:[e]}]})}(t,r,n);return o().createElement("div",{className:c.graph,"data-reltio-id":"reltio-crosswalk-tree"},o().createElement(s.Z,{refreshMode:"debounce",refreshRate:100,handleWidth:!0,handleHeight:!0},(e=>{let{width:t=0,height:r=200}=e;return o().createElement(le,{width:t,height:r,data:u,accentContributors:l,disableUnmerge:a,onUnmerge:i})})))}));var me=r(90186),ge=r(77243);function he(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){fe(e,t,r[t])}))}return e}function fe(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var be=r(52017),ye=r(79769),ve=r(71153),ke=r.n(ve),Ee=r(65549),xe=r(22983),we=r(72753),Ce=r(51229);const Se=(0,B.Z)((e=>({root:{display:"flex",alignItems:"center",paddingRight:"8px","& button + button":{marginLeft:"4px"}},focusedIcon:e=>{let{isFocused:t}=e;return{width:28,height:28,color:t?"#000":"rgba(0, 0, 0, 0.54)",borderRadius:0}},title:{color:e.palette.text.secondary,paddingLeft:"6px",paddingRight:"2px"},uri:{lineHeight:"15px",color:e.palette.text.primary}})));function Oe(){return Oe=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Oe.apply(this,arguments)}const Te=e=>{let{contributorUri:t,focusable:r,contributorActions:n,onToggleFocus:l,isFocused:a}=e;const i=Se({isFocused:a});return o().createElement("div",{className:i.root},o().createElement(ee.k,{size:"XXS",onClick:()=>l(),className:i.focusedIcon,icon:r&&we.Z,disabled:!r,tooltipTitle:r&&m().text("Focus")}),o().createElement(D.Typography,{variant:"body2",className:i.uri},o().createElement("span",{className:i.title},m().text("Entity ID:")),(0,f.nIW)(t)),o().createElement(Ce.Z,null),n.map(((e,t)=>{let{show:r}=e,n=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,["show"]);return r&&o().createElement(ee.k,Oe({key:t,size:"XS",showForDisabled:!0},n))})))},Ue=(0,B.Z)((()=>({root:e=>{let{contributorColor:t}=e;return{fontSize:"13px",position:"relative",display:"flex",flexDirection:"column",alignItems:"stretch",border:"1px solid rgba(0, 0, 0, 0.05)",paddingLeft:"8px","&:before":{content:'" "',borderLeft:`8px solid ${t}`,position:"absolute",top:-1,left:0,bottom:-1},"& > div + div":{marginTop:"1px"}}},editor:{padding:"0px 30px 0px 25px"}}))),Me=e=>{let{className:t,contributorUri:r,accentContributor:a,crosswalksBySources:i,expandedSources:s,canUnmerge:c,disableAddCrosswalk:u,disableEditCrosswalk:d,disableDeleteCrosswalk:p,disableUnmergeContributor:b,onUnmerge:y,onEdit:v,onDelete:k,onAdd:E,onToggleSourceExpanded:x,onUnsubscribeContributor:w}=e;const C=a?(0,f.GtP)(r):"rgba(0, 0, 0, 0.38)",S=Ue({contributorColor:C}),O=(0,l.useSelector)(h.ZP.selectors.getDataTenants),U=(0,n.useRef)(null),[M]=(0,T.RT)();(0,n.useEffect)((()=>{var e;a&&M&&((0,g.pipe)((0,g.find)((e=>{let{source:t}=e;return t===M.type})),(0,g.propOr)({},"crosswalksByTypes"),g.values,g.flatten)(i).some((e=>(0,f.aFF)(M,e)&&e!==M))&&(null==U||null===(e=U.current)||void 0===e||e.scrollIntoView({behavior:"smooth"})))}),[M]);const[P,L]=(0,n.useState)(!1),R=(0,g.pipe)((0,g.pluck)("crosswalksByTypes"),(0,g.find)((e=>e[ge.Y.Simple].length||e[ge.Y.Empty].length)),(0,g.props)([ge.Y.Simple,ge.Y.Empty]),g.flatten,g.head)(i),{toggleCrosswalkFocus:D,isFocused:z}=(0,T.BF)(R),j=(0,g.pipe)((0,g.pluck)("crosswalksByTypes"),(0,g.chain)(g.values),g.flatten)(i),Z=(0,f.KMQ)(j,O),B=[{icon:Ee.Z,tooltipTitle:m().text("Add crosswalk"),onClick:()=>L(!0),disabled:u,show:!!R},{icon:re,tooltipTitle:m().text("Unmerge"),onClick:()=>y(),disabled:b,show:c},{icon:xe.Z,tooltipTitle:m().text("Unsubscribe"),onClick:()=>w({contributorUri:r,dataTenant:Z,crosswalk:R}),disabled:b,show:c&&!!Z}];return o().createElement("div",{ref:U,className:ke()(S.root,t)},o().createElement(Te,{contributorUri:r,focusable:a&&!!R,isFocused:a&&z,onToggleFocus:D,contributorActions:B}),i.map((e=>{let{source:t,crosswalksByTypes:r}=e;return o().createElement(be.Z,{key:t,source:t,crosswalksByTypes:r,showCrosswalkColors:!a,crosswalksFocusEnabled:!a,expanded:null==s?void 0:s.includes(t),disableEditCrosswalk:d,disableDeleteCrosswalk:p,onEdit:v,onDelete:k,onToggleExpanded:()=>x(t)})})),P&&o().createElement(ye.Z,{className:S.editor,onAdd:e=>E({contributorCrosswalk:R,crosswalk:e}),onClose:()=>L(!1)}))},Pe=(0,B.Z)((()=>({table:{overflowY:"auto",overflowX:"hidden",paddingLeft:"16px",paddingRight:"6px"},tableRow:{"& + &":{marginTop:"10px"},margin:"auto",maxWidth:"448px"}})));function Le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){Re(e,t,r[t])}))}return e}function Re(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const De=(0,n.memo)((e=>{let{accentContributors:t,entity:r,entityType:l,contributors:a,selectedAttributeTypes:i,onChangeVisibleCrosswalks:s,readOnly:c,canUnmerge:u,disableUnmerge:d,onAddCrosswalk:p=I.ZT,onEditCrosswalk:m=I.ZT,onDeleteCrosswalk:h=I.ZT,onUnmergeContributor:b=I.ZT,onUnsubscribeContributor:y=I.ZT}=e;const v=Pe(),k=(0,n.useMemo)((()=>function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];const n=e.crosswalks,o=(0,f.PUO)(e);return t.filter((e=>!(0,f.O27)(e.crosswalks))).map((t=>{let{uri:l,crosswalks:a}=t;return{contributorUri:l,crosswalksBySources:(0,g.pipe)((0,g.map)((e=>{if("relation"===e.ownerType){const t=o.find((0,f.aFF)(e));return t&&he({ownerType:"relation"},t)}{const t=n.find((0,f.aFF)(e));return t&&he({ownerType:"entity"},t)}})),(0,g.filter)((e=>!!e)),(0,me.o)(e.type,r))(a)}})).filter((e=>{let{crosswalksBySources:t}=e;return t.length>0}))}(r,a,i)),[r,a,i]),[E,x]=(0,n.useState)({}),w=(0,n.useMemo)((()=>((e,t)=>e.reduce(((e,r)=>{let{contributorUri:n,crosswalksBySources:o}=r;const l=(0,g.chain)((e=>{var r;let{source:o,crosswalksByTypes:l}=e;const a=null===(r=t[n])||void 0===r?void 0:r.includes(o);return l[ge.Y.Simple].concat(l[ge.Y.Empty]).concat(a?l[ge.Y.Dependent]:[])}),o);return e.concat(l)}),[]))(k,E)),[k,E]);(0,n.useEffect)((()=>{s(w)}),[w]);const C=(0,n.useCallback)((e=>{h({entityUri:null==r?void 0:r.uri,crosswalkId:e})}),[null==r?void 0:r.uri,h]),S=(0,n.useCallback)((e=>{m(Le({},e,{entityUri:null==r?void 0:r.uri}))}),[null==r?void 0:r.uri,m]);return o().createElement("div",{className:v.table},k.map((e=>{let{contributorUri:n,crosswalksBySources:a}=e;return o().createElement(Me,{key:n,className:v.tableRow,canUnmerge:u,contributorUri:n,accentContributor:t,crosswalksBySources:a,disableAddCrosswalk:c||!(0,f.mkC)(l),disableEditCrosswalk:c||!(0,f.Zm0)(l),disableDeleteCrosswalk:c||!(0,f.a14)(l),disableUnmergeContributor:d,onAdd:e=>p(Le({},e,{entity:r})),onDelete:C,onEdit:S,onUnmerge:()=>b(n),onUnsubscribeContributor:y,expandedSources:E[n],onToggleSourceExpanded:e=>{x((0,g.pipe)((0,g.unless)((0,g.has)(n),(0,g.assoc)(n,[])),(0,g.evolve)({[n]:(0,g.ifElse)((0,g.includes)(e),(0,g.without)([e]),(0,g.append)(e))})))}})})))}));var ze=r(81556);const je=(0,B.Z)((e=>({container:{display:"flex",flexDirection:"column","& + &":{marginLeft:"16px"}},title:{fontSize:"13px",lineHeight:"15px",color:"#666666",marginBottom:"7px"},hintIcon:{width:"16px",height:"16px",verticalAlign:"middle"},graph:{width:"400px",height:"300px",borderRadius:"8px",background:"rgba(0, 0, 0, 0.03)",border:"1px solid rgba(0, 0, 0, 0.03)",position:"relative"},checkedIcon:{position:"absolute",height:"20px",width:"20px",right:"10px",top:"10px",color:e.palette.primary.main},selectedTree:{border:`1px solid ${e.palette.primary.main}`,background:"rgba(0, 114, 206, 0.05)"}}))),Ze=e=>{let{coloredCrosswalks:t,crosswalkTree:r,selected:l,title:a,onSelect:i=I.ZT}=e;const s=je(),c=(0,n.useCallback)((e=>t.includes(e.uri)?(0,f.CJp)((0,f.uKF)(e)):"#CACCD1"),[t]);return o().createElement(T.hR,{getCrosswalkColor:c},o().createElement("div",{className:s.container,onClick:i},o().createElement("span",{className:s.title},a," ",o().createElement(F.Z,{className:s.hintIcon})),o().createElement("div",{className:ke()(s.graph,{[`${s.selectedTree}`]:l})},l&&o().createElement(ze.Z,{className:s.checkedIcon}),o().createElement(pe,{crosswalkTree:r}))))},Be=(0,B.Z)((e=>({dialogContainer:{maxWidth:"unset"},dialogTitle:{padding:"13px 16px 0 16px",fontWeight:500,fontSize:"20px",lineHeight:"23px",letterSpacing:"0.25px"},dialogContent:{display:"flex",flexDirection:"column",padding:"13px 16px 0 16px"},trees:{display:"flex"},uri:{fontSize:"13px",lineHeight:"15px",color:e.palette.text.primary,marginBottom:"15px"},title:{fontSize:"13px",lineHeight:"15px",color:e.palette.text.secondary,paddingRight:"2px"}}))),Ne=e=>{let{canUnmerge:t,contributor:r,crosswalkTree:l,onClose:a,onUnmergeContributor:i}=e;const s=Be(),[c,u]=(0,n.useState)(f.MBD.Unmerge),d=(0,n.useCallback)((e=>(0,f.keo)(r,e).map((e=>{let{uri:t}=e;return t}))),[r]);return o().createElement(D.Dialog,{open:!0,onClose:a,classes:{paper:s.dialogContainer}},o().createElement(D.DialogTitle,{classes:{root:s.dialogTitle}},m().text("Unmerge")),o().createElement(D.DialogContent,{classes:{root:s.dialogContent}},o().createElement(D.Typography,{variant:"body2",className:s.uri},o().createElement("span",{className:s.title},m().text("Entity URI:")),(0,f.nIW)(r.uri).toUpperCase()),o().createElement("div",{className:s.trees},o().createElement(Ze,{onSelect:()=>u(f.MBD.Unmerge),selected:c===f.MBD.Unmerge,title:m().text("Unmerge"),crosswalkTree:l,coloredCrosswalks:d(!0)}),r.merges&&r.uri!==l.uri&&o().createElement(Ze,{onSelect:()=>u(f.MBD.TreeUnmerge),selected:c===f.MBD.TreeUnmerge,title:m().text("Tree unmerge"),crosswalkTree:l,coloredCrosswalks:d(!1)}))),o().createElement(D.DialogActions,null,o().createElement(D.Button,{onClick:a},m().text("Cancel")),o().createElement(D.Button,{disabled:!t,onClick:()=>{i(c),a()},color:"primary"},m().text("Unmerge"))))},He=(0,B.Z)((e=>({dialogContainer:{maxWidth:"unset"},dialogTitle:{padding:"13px 16px 0 16px",fontWeight:500,fontSize:"20px",lineHeight:"23px",letterSpacing:"0.25px"},dialogContent:{display:"flex",flexDirection:"column",padding:"13px 16px 0 16px"},uri:{fontSize:"13px",lineHeight:"15px",color:e.palette.text.primary,marginBottom:"15px"},title:{fontSize:"13px",lineHeight:"15px",color:e.palette.text.secondary,paddingRight:"2px"}}))),Fe=e=>{let{canUnsubscribe:t,contributor:r,crosswalkTree:l,onClose:a,onUnsubscribeContributor:i}=e;const s=He(),c=(0,n.useMemo)((()=>(0,f.keo)(r,!0).map((e=>{let{uri:t}=e;return t}))),[r]);return o().createElement(D.Dialog,{open:!0,onClose:a,classes:{paper:s.dialogContainer}},o().createElement(D.DialogTitle,{classes:{root:s.dialogTitle}},m().text("Unsubscribe")),o().createElement(D.DialogContent,{classes:{root:s.dialogContent}},o().createElement(D.Typography,{variant:"body2",className:s.uri},o().createElement("span",{className:s.title},m().text("Entity URI:")),(0,f.nIW)(r.uri).toUpperCase()),o().createElement(Ze,{selected:!0,title:m().text("Unsubscribe"),crosswalkTree:l,coloredCrosswalks:c})),o().createElement(D.DialogActions,null,o().createElement(D.Button,{onClick:a},m().text("Cancel")),o().createElement(D.Button,{disabled:!t,onClick:()=>{i(),a()},color:"primary"},m().text("Unsubscribe"))))},Ie=(0,B.Z)((e=>({root:{display:"flex",flexDirection:"column",alignItems:"center",height:"100%"},modeSwitcher:{backgroundColor:e.palette.background.paper,marginTop:"8px"},infoIcon:{fontSize:"18px",marginRight:"8px"},hint:{color:e.palette.text.secondary,display:"flex",flexDirection:"row",alignItems:"center",alignSelf:"flex-start",margin:"5px 12px 10px 12px"},hintText:{fontSize:"12px",lineHeight:"16px"},crosswalksList:{height:"100%",width:"calc(100% - 24px)",margin:"8px 12px",background:e.palette.divider,opacity:.2},pane:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",flexDirection:"column",overflow:"hidden"},resizablePanesWrapper:{flexGrow:1,width:"100%"}})));function $e(){return $e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},$e.apply(this,arguments)}const Ae=(0,n.memo)((e=>{let{activeMode:t,contributors:r,crosswalkTree:a,entity:i,onChangeMode:s,onUnmergeContributor:c=I.ZT,onUnsubscribeContributor:u=I.ZT}=e,d=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,["activeMode","contributors","crosswalkTree","entity","onChangeMode","onUnmergeContributor","onUnsubscribeContributor"]);const p=Ie(),b=(0,l.useSelector)(h.ZP.selectors.getMetadata),y=(0,f.nt9)(b,null==i?void 0:i.type),v=(0,n.useRef)(),[k,E]=(0,n.useState)(170),x=(0,n.useCallback)((e=>{let{percentageSize:t}=e;return E(t)}),[]),[w,C]=(0,n.useState)(),[S,O]=(0,n.useState)(),T=(0,n.useMemo)((()=>(0,f.Qbq)(a)),[a]),U=T>1;(0,n.useEffect)((()=>{var e;const t=Math.max(170,60*T),r=(null===(e=v.current)||void 0===e?void 0:e.clientHeight)-170;E(Math.min(r,t))}),[T]);const M=(0,n.useMemo)((()=>[{id:W.Crosswalk,title:m().text("Crosswalk")},{id:W.Source,title:m().text("Source")},{id:W.Contributor,title:m().text("Contributor")}]),[]),[P,L]=(0,n.useState)(),R=t===W.Contributor,D=d.readOnly||!(0,f.uGe)(f.BDP.UNMERGE,y);return o().createElement("div",{className:p.root,ref:v},w&&o().createElement(Ne,{canUnmerge:U,onClose:()=>C(null),onUnmergeContributor:e=>{c({entityUri:i.uri,contributorUri:w,operationType:e})},crosswalkTree:a,contributor:r.find((e=>{let{uri:t}=e;return t===w}))}),S&&o().createElement(Fe,{canUnsubscribe:U,onClose:()=>O(null),onUnsubscribeContributor:()=>u({dataTenant:S.dataTenant,crosswalk:S.crosswalk}),crosswalkTree:a,contributor:r.find((e=>{let{uri:t}=e;return t===S.contributorUri}))}),o().createElement($.Z,{modes:M,modeId:t,className:p.modeSwitcher,onChange:s}),o().createElement(A.u,{className:p.resizablePanesWrapper,orientation:"horizontal",size:k,minSize:170,maxSize:-170,allowResize:!0,onChange:x},o().createElement("div",{className:p.pane},a&&!(0,g.isEmpty)(P)&&o().createElement(pe,{entityLabel:(0,f.idV)(null==i?void 0:i.label),crosswalkTree:a,visibleCrosswalks:P,accentContributors:R,disableUnmerge:D||!U,onUnmerge:C})),o().createElement("div",{className:p.pane},o().createElement("div",{className:p.hint},o().createElement(F.Z,{className:p.infoIcon}),o().createElement("span",{className:p.hintText},m().text("You can drag a crosswalk to add values to attributes swimlanes"))),i&&o().createElement(De,$e({onUnmergeContributor:C,onUnsubscribeContributor:O,accentContributors:R,contributors:r,entity:i,entityType:y,onChangeVisibleCrosswalks:L,canUnmerge:U,disableUnmerge:D},d)))))}));var We=r(85229);function Ge(){return Ge=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ge.apply(this,arguments)}const Ve=e=>{let{styles:t={}}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,["styles"]);return o().createElement("svg",Ge({width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r),o().createElement("mask",{id:"svg4041339336a",masktype:"alpha",maskUnits:"userSpaceOnUse",x:"2",y:"3",width:"19",height:"17"},o().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.5 5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S4.83 6.5 4 6.5 2.5 5.83 2.5 5zM21 20H8v-2h13v2zM8 10h13V8H8v2zm0-4V4h13v2H8zm0 10h13v-2H8v2zm-2.5.5v-3h-3v3h3z",fill:"#fff"})),o().createElement("g",{mask:"url(#svg4041339336a)"},o().createElement("path",{fillOpacity:".54",fill:"#000",d:"M0 0h24v24H0z"})))},Xe=e=>{console.error(e),d.Z.addError({title:m().text("Error"),message:(0,f.xU7)(e,m().text("Something went wrong"))})};var _e=r(39417),Ye=r(58651),qe=r(13896);function Ke(){return Ke=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Ke.apply(this,arguments)}const Qe=e=>{let{styles:t={}}=e,r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,["styles"]);return o().createElement("svg",Ke({width:"90",height:"90",viewBox:"0 0 90 90",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r),o().createElement("circle",{cx:"45",cy:"45",r:"45",fill:"#0072CE",fillOpacity:".1"}),o().createElement("mask",{id:"svg985456408a",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"90",height:"90"},o().createElement("circle",{cx:"45",cy:"45",r:"45",fill:"#fff"})),o().createElement("g",{mask:"url(#svg985456408a)"},o().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M-5.625 3.164h90V90h-90V3.164z",fill:"url(#paint0_linear)"}),o().createElement("path",{opacity:".05",fillRule:"evenodd",clipRule:"evenodd",d:"M66.01 19.992l20.615 20.615v52.337H32.83L18.281 79.131V19.99H66.01z",fill:"url(#paint1_linear)"}),o().createElement("path",{opacity:".06",fillRule:"evenodd",clipRule:"evenodd",d:"M16.523 20.39H87.54A2.46 2.46 0 0190 22.853v55.195a2.46 2.46 0 01-2.46 2.46H16.522a2.46 2.46 0 01-2.46-2.46V22.852a2.46 2.46 0 012.46-2.461z",fill:"#000"}),o().createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.578 19.688h70.664c.971 0 1.758.787 1.758 1.757v55.196c0 .97-.787 1.757-1.758 1.757H17.578c-.97 0-1.758-.787-1.758-1.757V21.445c0-.97.787-1.758 1.758-1.758z",fill:"#fff"}),o().createElement("path",{opacity:".8",fillRule:"evenodd",clipRule:"evenodd",d:"M37.046 25.536c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z",fill:"#B6C7DB"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M36.914 29.754c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z",fill:"#979797"}),o().createElement("path",{opacity:".8",fillRule:"evenodd",clipRule:"evenodd",d:"M37.046 57.305c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z",fill:"#B6C7DB"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M36.914 61.523c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z",fill:"#979797"}),o().createElement("path",{opacity:".8",fillRule:"evenodd",clipRule:"evenodd",d:"M37.046 67.852c0-.583.472-1.055 1.055-1.055h28.696a1.055 1.055 0 110 2.11H38.1a1.055 1.055 0 01-1.055-1.055z",fill:"#B6C7DB"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M36.914 72.07c0-.582.472-1.054 1.055-1.054h26.087a1.055 1.055 0 110 2.109H37.97a1.055 1.055 0 01-1.055-1.055z",fill:"#979797"}),o().createElement("path",{opacity:".8",fillRule:"evenodd",clipRule:"evenodd",d:"M48.648 36.21c0-.582.472-1.054 1.054-1.054h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z",fill:"#B6C7DB"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M48.516 40.43c0-.583.472-1.055 1.054-1.055h22.572a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z",fill:"#979797"}),o().createElement("circle",{cx:"23.555",cy:"27.773",r:"3.164",fill:"#B6C7DB"}),o().createElement("circle",{cx:"23.555",cy:"27.773",r:"3.164",fill:"#B6C7DB"}),o().createElement("circle",{cx:"42.188",cy:"37.266",r:"2.109",fill:"#B6C7DB"}),o().createElement("circle",{cx:"42.188",cy:"47.813",r:"2.109",fill:"#B6C7DB"}),o().createElement("circle",{cx:"23.555",cy:"59.414",r:"3.164",fill:"#B6C7DB"}),o().createElement("circle",{cx:"23.555",cy:"69.961",r:"3.164",fill:"#B6C7DB"}),o().createElement("path",{opacity:".8",fillRule:"evenodd",clipRule:"evenodd",d:"M48.648 46.758c0-.583.472-1.055 1.054-1.055h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z",fill:"#B6C7DB"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M48.516 50.977c0-.583.472-1.055 1.054-1.055h26.088a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z",fill:"#979797"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M32.524 37.969v-2.813h-.703v14.191h3.93v-.703h-3.227v-9.972h3.227v-.703h-3.227z",fill:"#2B98F0"}),o().createElement("path",{opacity:".54",fillRule:"evenodd",clipRule:"evenodd",d:"M33.423 27.07l-1.242 1.243-1.243-1.243h2.485z",fill:"#000"}),o().createElement("path",{opacity:".6",fillRule:"evenodd",clipRule:"evenodd",d:"M17.578 7.734h65.39a2.11 2.11 0 012.11 2.11v6.328a2.11 2.11 0 01-2.11 2.11h-65.39a2.11 2.11 0 01-2.11-2.11V9.844a2.11 2.11 0 012.11-2.11z",fill:"#fff"}),o().createElement("path",{opacity:".2",fillRule:"evenodd",clipRule:"evenodd",d:"M20.39 13.008a2.11 2.11 0 012.11-2.11h24.61a2.11 2.11 0 110 4.22H22.5a2.11 2.11 0 01-2.11-2.11zM52.031 13.008a2.11 2.11 0 012.11-2.11h3.515a2.11 2.11 0 110 4.22h-3.515a2.11 2.11 0 01-2.11-2.11z",fill:"#979797"})),o().createElement("defs",null,o().createElement("linearGradient",{id:"paint0_linear",x1:"-5.625",y1:"3.164",x2:"-5.625",y2:"90",gradientUnits:"userSpaceOnUse"},o().createElement("stop",{stopColor:"#FAFAFA",stopOpacity:".01"}),o().createElement("stop",{offset:"1",stopColor:"#F4F4F4"})),o().createElement("linearGradient",{id:"paint1_linear",x1:"93.557",y1:"63.672",x2:"54.451",y2:"27.31",gradientUnits:"userSpaceOnUse"},o().createElement("stop",{stopOpacity:".01"}),o().createElement("stop",{offset:"1"}))))},Je=(0,B.Z)((e=>({root:{height:"100%",overflow:"hidden",background:e.palette.background.default,display:"flex",flexDirection:"column",alignItems:"center",paddingTop:"115px"},info:{color:e.palette.text.secondary,fontSize:"16px",lineHeight:"24px",marginTop:"16px"}}))),et=()=>{const e=Je();return o().createElement("div",{className:e.root},o().createElement(Qe,null),o().createElement("span",{className:e.info},m().text("Please persist your profile to be able to edit crosswalks")))};var tt=r(72383);const rt=(0,B.Z)({snackbarMessage:{display:"flex",alignItems:"center"},snackbarIcon:{paddingRight:16}}),nt=e=>{let{entity:t,message:r}=e;const a=rt(),i=(0,l.useSelector)(h.ZP.selectors.getUIPath),{generateEntityUrl:s}=(0,n.useContext)(tt.v),c=s({uiPath:i,uri:t.uri});return o().createElement("div",{className:a.snackbarMessage},o().createElement(F.Z,{className:a.snackbarIcon}),o().createElement(D.Typography,null,(0,f.idV)(t.label)," ",o().createElement(D.Link,{href:c,target:"_blank"},m().text("lookup profile"))," ",r))};var ot=r(24737);const lt=(0,B.Z)((e=>({root:{display:"flex",flexDirection:"column",alignItems:"flex-start",paddingTop:"14px",paddingBottom:"13px",borderBottom:"1px solid rgba(0, 0, 0, 0.05)",whiteSpace:"normal","&:last-child":{borderBottom:"none"}},label:{marginBottom:"2px",fontSize:"16px",lineHeight:"24px",color:e.palette.text.primary},description:{fontSize:"13px",lineHeight:"15px",color:e.palette.text.secondary}})));function at(){return at=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},at.apply(this,arguments)}const it=e=>{let{innerRef:t,innerProps:r,data:n}=e;const l=lt(),{label:a,description:i}=n;return o().createElement(D.MenuItem,at({className:l.root,ref:t},r),o().createElement(D.Typography,{className:l.label},a),i&&o().createElement(D.Typography,{className:l.description},i))};function st(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const ct=e=>{const{innerRef:t,getStyles:r,children:n}=e,l=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){st(e,t,r[t])}))}return e}({},r("menuList",e),{maxHeight:"500px",padding:0});return o().createElement("div",{ref:t,style:l},n)},ut=(0,B.Z)({root:{width:"280px"}});function dt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const pt=e=>{let{survivorshipGroups:t,currentSurvivorshipGroupUri:r,onChange:n}=e;const l=ut(),a=t.map((e=>function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?Object(arguments[t]):{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){dt(e,t,r[t])}))}return e}({},e,{label:(0,f.idV)(e.label)}))),i=a.find((0,g.propEq)("uri",r));return o().createElement(ot.Z,{height:40,className:l.root,components:{Option:it,MenuList:ct},label:m().text("Rulesets"),options:a,value:i,onChange:(0,g.pipe)((0,g.prop)("uri"),n)})},mt=(0,B.Z)({sourcesView:{position:"absolute",top:0,left:0,right:0,bottom:0,overflowX:"hidden",overflowY:"auto",fontFamily:"Roboto, Helvetica, Arial, sans-serif",display:"flex"},"@global div[role=tooltip]":{fontFamily:"Roboto, Helvetica, Arial, sans-serif"},"@global div[role=presentation]":{fontFamily:"Roboto, Helvetica, Arial, sans-serif"},resizablePanesWrapper:{flexGrow:1,height:"100%"},pane:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",flexDirection:"column",overflow:"hidden"},headerDivider:{marginLeft:"16px",marginRight:"8px",height:"32px",backgroundColor:"rgba(0, 0, 0, 0.12)"},attributesTable:{backgroundColor:"#fff"}}),gt="source";var ht;!function(e){e[e.Legend=0]="Legend",e[e.History=1]="History"}(ht||(ht={}));const ft=(0,l.connect)((e=>({entity:h.ZP.selectors.getEntity(e),metadata:h.ZP.selectors.getMetadata(e),historyEvent:h.ZP.selectors.getHistoryEvent(e)})))((e=>{let{config:t,entity:r,metadata:a,getSavedState:i,saveState:s,dispatch:c,historyEvent:u}=e;const d=mt(),[p,j]=(0,n.useState)(W.Crosswalk),[Z,B]=(0,n.useState)(!1),{survivorshipGroups:N,currentSurvivorshipGroupUri:F,onChangeSurvivorshipGroup:$,entity:A,isDefaultSurvivorshipGroupUri:G,isLoading:V}=(e=>{const t=null==e?void 0:e.type,r=(0,l.useSelector)(h.ZP.selectors.getMetadata),o=(0,g.pipe)((0,f.nt9)(r),(0,g.propOr)([],"survivorshipGroups"))(t),a=(0,g.pipe)((0,g.find)((0,g.propEq)("default",!0)),(0,g.prop)("uri"))(o),[i,s]=(0,n.useState)(null),[c,u]=(0,n.useState)(null),[d,p]=(0,n.useState)(!1),m=(0,We._)();return(0,n.useEffect)((()=>{e&&(u(e),s(a))}),[e,a]),{survivorshipGroups:o,currentSurvivorshipGroupUri:i,onChangeSurvivorshipGroup:(0,n.useCallback)((t=>{s(t),a===t?u(e):(p(!0),m((0,f.BXy)(c.uri,t)).then(u).finally((()=>p(!1))))}),[e,a,c,m]),entity:c,isLoading:d,isDefaultSurvivorshipGroupUri:a===i}})(r),{isHistoryEnabled:X,isProfilePersisted:_}=(0,b.C)({perspectiveId:gt,entity:A,historyButtonId:ht.History}),Y=_?A:null,q=null==Y?void 0:Y.uri,K=(0,f.nt9)(a,null==A?void 0:A.type),{historySlice:Q}=(0,y.a)({entity:Y,historyEvent:u}),[J,ee]=(0,n.useState)();(0,v.D)((()=>{ee(void 0)}),[Q]),(0,v.D)((()=>{ee(void 0)}),[q]);const{SnackbarRenderer:te,showSnackbarMessage:re}=(0,k.D)({anchorOrigin:{vertical:"top",horizontal:"center"},showDismiss:!0}),{isLoaded:ne,savedState:oe}=(0,E.a)(i),[le,ae]=(0,n.useState)();(0,n.useEffect)((()=>{ne&&ae(oe.visibleColumns)}),[ne]),(0,n.useEffect)((()=>{const e=!(0,g.equals)(le,oe.visibleColumns);ne&&e&&s({visibleColumns:le})}),[le]);const ie=(0,n.useCallback)((()=>{B(!1)}),[]),{crosswalkTree:se,reload:ce}=(e=>{let{entityUri:t,onSuccess:r=I.ZT}=e;const[o,l]=(0,n.useState)(null),a=(0,We._)(),i=e=>{console.warn("Failed to load crosswalk tree",e),l(null)},s=(0,n.useCallback)((()=>{t?a((0,f.wo0)({entityUri:t})).then((e=>{l(e)})).catch(i).finally(r):(l(null),r())}),[t,r]);return(0,n.useEffect)((()=>{s()}),[s]),{crosswalkTree:o,reload:s}})({entityUri:(null==Q?void 0:Q.aEntity.uri)||q,onSuccess:ie}),ue=(0,n.useMemo)((()=>(0,f.b7X)(se)),[se]),de=(0,n.useCallback)((()=>{q&&c(h.N5.entity.actions.loadEntity({viewId:t.id,uri:q}))}),[q,t,c]),pe=(0,n.useCallback)((0,g.pipe)(de,ce),[de,ce]),{modifiedEntity:me,crosswalksMap:ge,newlyCreatedAttributes:he,onDeleteAttribute:fe,onPinAttribute:be,onIgnoreAttribute:ye,onEditAttribute:ve,onAddAttribute:ke}=(0,x.Q)({entity:(null==Q?void 0:Q.aEntity)||Y,onModify:pe,onError:Xe}),Ee=(e=>{let{activeMode:t,contributors:r,entity:o}=e;const l=(0,n.useCallback)((e=>{var n;switch(t){case W.Source:return(0,f.kW2)(e.type);case W.Contributor:return(0,f.GtP)((null===(n=(0,f.A1W)(r,e))||void 0===n?void 0:n.uri)||"");case W.Crosswalk:return(0,f.CJp)((0,f.uKF)(e))}}),[t,r]),[a,i]=(0,n.useState)([]),s=(0,n.useRef)([]),c=(0,n.useCallback)((0,f.DsO)((()=>{i([...s.current])}),50),[]),u=(0,n.useCallback)((e=>{s.current=e,c(e)}),[c]),d=(0,n.useCallback)(((e,n)=>{if(e)if(n)if(t===W.Contributor){const t=(0,f.A1W)(r,e);u([e,...(null==t?void 0:t.crosswalks)||[]])}else u([e]);else u([])}),[t,u,r]),[p,m]=(0,n.useState)([]),h=(0,n.useCallback)(((e,t)=>(0,g.concat)(e.filter((e=>!(0,g.any)((0,f.aFF)(e),t))),t.filter((t=>!(0,g.any)((0,f.aFF)(t),e))))),[]),b=(0,n.useCallback)((e=>{if(e)if(t===W.Contributor){const t=(0,f.A1W)(r,e);m((r=>h([e,...(null==t?void 0:t.crosswalks)||[]],r)))}else m((t=>h([e],t)))}),[t,h,r]);return(0,n.useEffect)((()=>{p.length&&m([])}),[t,o]),{getCrosswalkColor:l,highlightedCrosswalks:(0,n.useMemo)((()=>[...a,...p]),[a,p]),focusedCrosswalks:p,toggleCrosswalkFocus:b,setCrosswalkHighlighted:d}})({activeMode:p,contributors:ue,entity:A}),xe=(0,n.useCallback)(((e,t)=>{re(t?o().createElement(nt,{entity:t,message:e}):e)}),[]),{addCrosswalk:we,deleteCrosswalk:Ce,editCrosswalk:Se,unmergeContributor:Oe,unsubscribeContributor:Te}=(e=>{let{onLoad:t=I.ZT,onSuccess:r=I.ZT,onError:o=I.ZT,onShowMessage:a=I.ZT}=e;const{addCrosswalk:i,editCrosswalk:s,deleteCrosswalk:c}=(0,_e.P)({onLoad:t,onSuccess:r,onError:o}),u=(0,l.useSelector)(h.ZP.selectors.getDtssPath),d=(0,l.useSelector)(h.ZP.selectors.getTenant),p=(0,n.useCallback)((e=>{t(),e.then((()=>{r()})).catch(o)}),[t,o,r]);return{addCrosswalk:i,editCrosswalk:s,deleteCrosswalk:c,unmergeContributor:(0,n.useCallback)((e=>(0,g.pipe)(f.L8n,(0,g.andThen)((e=>(a(m().text("has been unmerged"),e.b),e))),p)(e)),[p,a]),unsubscribeContributor:(0,n.useCallback)((e=>{let{crosswalk:t,dataTenant:r}=e;return(0,g.pipe)(f.R9X,(0,g.andThen)((e=>{if(!e.successful)throw new Error(m().text("Failed to unsubscribe contributor"));return e})),p)({dtssPath:u,value:t.value,type:t.type,sourceTable:t.sourceTable,dataTenant:r.id,customerTenant:d})}),[p,u,d])}})({onShowMessage:xe,onSuccess:pe,onError:(0,n.useCallback)((e=>{Xe(e),e.errorCode===f.Xt7.CROSSWALK_NOT_FOUND&&pe()}),[pe]),onLoad:(0,n.useCallback)((()=>B(!0)),[])}),{historyFilter:Ue,onApplyFilter:Me,isLoading:Pe,historicUris:Le,historyWithTotal:Re,canLoadMore:De,onLoadMore:ze}=(0,w.k6)({entity:Y,enabled:X}),je=[{buttonProps:{id:ht.Legend,icon:Ve,tooltipTitle:m().text("Legend")},title:o().createElement(D.Typography,{variant:"h6"},m().text("Legend")),content:o().createElement(Ae,{activeMode:p,onChangeMode:j,entity:(null==Q?void 0:Q.aEntity)||Y,crosswalkTree:se,contributors:ue,selectedAttributeTypes:J,readOnly:!!Q||Z,onAddCrosswalk:we,onUnmergeContributor:Oe,onUnsubscribeContributor:Te,onEditCrosswalk:Se,onDeleteCrosswalk:Ce})},{buttonProps:{id:ht.History,icon:z.Z,tooltipTitle:m().text("History")},title:o().createElement(C.Z,{total:((null==Le?void 0:Le.length)||0)+1,entityType:K,filter:Ue,onApplyFilter:Me}),content:_?o().createElement(S.Z,{isLoading:Pe,historyWithTotal:Re,contributorsUris:Le,entityUri:q,historyEvent:u,onLoadMore:ze,canLoadMore:De}):o().createElement(O.Z,null)}],Ze=o().createElement(o().Fragment,null,o().createElement(pt,{survivorshipGroups:N,currentSurvivorshipGroupUri:F,onChange:$}),o().createElement(D.Divider,{className:d.headerDivider,orientation:"vertical"}));return o().createElement("div",{className:d.sourcesView},o().createElement(T.hR,Ee,o().createElement(qe.DndProvider,{backend:Ye.default},o().createElement(U.Z,null),o().createElement(M.n,{perspectiveId:gt,buttonsProps:(0,g.pipe)((0,g.reject)((0,g.propEq)("hidden",!0)),(0,g.pluck)("buttonProps"))(je)},o().createElement(o().Fragment,null,o().createElement(P.n,{entity:A,historySlice:Q}),_?o().createElement(L.R,{attributeUris:he},o().createElement(R.Z,{className:d.attributesTable,isLoading:V,visibleColumns:le,onChangeVisibleColumns:ae,entity:me,crosswalksMap:ge,selectedAttributeTypes:J,onSelectAttributeTypes:ee,readOnly:!!Q||!G,onDelete:fe,onPin:be,onIgnore:ye,onEdit:ve,onAdd:ke,additionalHeaderItems:Ze,activeSurvivorshipGroupUri:F})):o().createElement(et,null)),o().createElement(H,{tabs:je})))),o().createElement(te,null))})),bt=(0,i.createGenerateClassName)({productionPrefix:"sourcesPerspective",disableGlobal:!0}),yt=e=>{let{config:t,store:r,onResize:p,saveState:m,getSavedState:g}=e;const h=(0,n.useCallback)((0,f.aYu)(g),[g]);return o().createElement(l.Provider,{store:r},o().createElement(u.m.Provider,{value:t.id},o().createElement(i.StylesProvider,{generateClassName:bt},o().createElement(c.MuiPickersUtilsProvider,{utils:a.Z},o().createElement(s.Z,{handleHeight:!0,onResize:(e,t)=>null==p?void 0:p(Math.floor(e),Math.floor(t))}),t&&o().createElement(ft,{config:t,saveState:m,getSavedState:h}),o().createElement(d.Z,null)))))}}}]);
|
|
2
|
+
//# sourceMappingURL=316.js.map
|
package/316.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"316.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","webpack://@reltio/remotes/../components/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../sources/src/components/RightSidePanel/styles.ts","webpack://@reltio/remotes/../sources/src/components/RightSidePanel/RightSidePanel.tsx","webpack://@reltio/remotes/../sources/src/types/LegendMode.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/sankey.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/useSankey.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/styles.ts","webpack://@reltio/remotes/../sources/src/components/SankeyChart/MergeTooltip.tsx","webpack://@reltio/remotes/../sources/src/icons/notMatch.svg","webpack://@reltio/remotes/../sources/src/components/SankeyChart/Node.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/Link.tsx","webpack://@reltio/remotes/../sources/src/components/SankeyChart/SankeyChart.tsx","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/helpers.ts","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/styles.ts","webpack://@reltio/remotes/../sources/src/components/CrosswalkTreeView/CrosswalkTreeView.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/ContributorRow/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/ContributorRow/ContributorRow.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTableRow/LegendTableRow.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendTable/LegendTable.tsx","webpack://@reltio/remotes/../sources/src/components/LegendTable/helpers.ts","webpack://@reltio/remotes/../sources/src/components/SelectableTree/styles.ts","webpack://@reltio/remotes/../sources/src/components/SelectableTree/SelectableTree.tsx","webpack://@reltio/remotes/../sources/src/components/UnmergeDialog/styles.ts","webpack://@reltio/remotes/../sources/src/components/UnmergeDialog/UnmergeDialog.tsx","webpack://@reltio/remotes/../sources/src/components/UnsubscribeDialog/styles.ts","webpack://@reltio/remotes/../sources/src/components/UnsubscribeDialog/UnsubscribeDialog.tsx","webpack://@reltio/remotes/../sources/src/components/LegendView/styles.ts","webpack://@reltio/remotes/../sources/src/components/LegendView/LegendView.tsx","webpack://@reltio/remotes/../sources/src/components/SourcesView/icons/LegendIcon.svg","webpack://@reltio/remotes/../sources/src/services/errors.ts","webpack://@reltio/remotes/../sources/src/components/EmptyState/icons/EmptySources.svg","webpack://@reltio/remotes/../sources/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../sources/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../sources/src/components/TreeActionSnackbar/styles.ts","webpack://@reltio/remotes/../sources/src/components/TreeActionSnackbar/TreeActionSnackbar.tsx","webpack://@reltio/remotes/../sources/src/components/RulesestsSelector/RulesetOption/styles.ts","webpack://@reltio/remotes/../sources/src/components/RulesestsSelector/RulesetOption/RulesetOption.tsx","webpack://@reltio/remotes/../sources/src/components/RulesestsSelector/RulesetsMenuList/RulesetsMenuList.tsx","webpack://@reltio/remotes/../sources/src/components/RulesestsSelector/styles.ts","webpack://@reltio/remotes/../sources/src/components/RulesestsSelector/RulesestsSelector.tsx","webpack://@reltio/remotes/../sources/src/components/SourcesView/styles.ts","webpack://@reltio/remotes/../sources/src/components/SourcesView/SourcesView.tsx","webpack://@reltio/remotes/../sources/src/hooks/useEntityWithSurvivorshipGroups.tsx","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalkTree.ts","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalksDisplay.ts","webpack://@reltio/remotes/../sources/src/hooks/useCrosswalkTreeActions.ts","webpack://@reltio/remotes/../sources/src/components/SourcesView/index.tsx","webpack://@reltio/remotes/./src/sources.ts"],"sourcesContent":["import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {useEffect, useState} from 'react';\n\nexport const useSavedState = <T>(getSavedState: () => Promise<T>) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [savedState, setSavedState] = useState<T | Record<string, never>>({});\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || {});\n })\n .then((_) => setIsLoaded(true))\n .catch((_) => setIsLoaded(true));\n }, []); // eslint-disable-line\n\n return {isLoaded, savedState};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n padding: '16px 12px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.12);'\n },\n closeButton: {\n marginRight: '12px'\n }\n});\n","import React from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {RightPanelTab, SmallIconButton} from '@reltio/components';\nimport {useStyles} from './styles';\n\ntype Props = {\n onClose?: () => void;\n active?: number;\n tabs: RightPanelTab[];\n};\n\nexport const RightSidePanel = ({active, onClose, tabs}: Props) => {\n const styles = useStyles();\n const {content, title} = tabs[active] || {};\n\n return (\n <>\n <div className={styles.header}>\n <SmallIconButton className={styles.closeButton} icon={CloseIcon} onClick={onClose} />\n {title}\n </div>\n {content}\n </>\n );\n};\n","export enum LegendMode {\n Crosswalk = 'crosswalks',\n Source = 'source',\n Contributor = 'contributor'\n}\n","import {sum, map, pipe, groupBy, toPairs, sort, nth, prop, reduce, last} from 'ramda';\nimport {SankeyLink, SankeyData} from '../../types/SankeyChartData';\n\nconst sumValues = (links: SankeyLink[]): number => pipe(map(prop('value')), sum)(links);\nconst interpolateNumber = (a: number, b: number) => ((a = +a), (b = +b), (t) => a * (1 - t) + b * t);\n\nexport default function Sankey() {\n const lastLinksSize = 22;\n\n let nodeWidth = 24,\n smallestNodeMaxHeight = 15,\n smallestNodeMinHeight = 10,\n nodePadding = 8,\n size = [1, 1] as [number, number];\n\n function sankey({nodes, links}: SankeyData) {\n const graph = {nodes, links};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeBreadths(graph);\n computeNodeDepths(graph);\n computeLinkDepths(graph);\n correctNodesDepth(graph);\n return graph;\n }\n\n sankey.nodeWidth = () => nodeWidth;\n sankey.setNodeWidth = (width: number) => ((nodeWidth = +width), sankey);\n\n sankey.nodePadding = () => nodePadding;\n sankey.setNodePadding = (padding: number) => ((nodePadding = +padding), sankey);\n\n sankey.smallestNodeMaxHeight = () => smallestNodeMaxHeight;\n sankey.setSmallestNodeMaxHeight = (height: number) => ((smallestNodeMaxHeight = +height), sankey);\n\n sankey.smallestNodeMinHeight = () => smallestNodeMinHeight;\n sankey.setSmallestNodeMinHeight = (height: number) => ((smallestNodeMinHeight = +height), sankey);\n\n sankey.size = () => size;\n sankey.setSize = (newSize: [number, number]) => ((size = newSize), sankey);\n\n sankey.update = (graph) => {\n computeLinkDepths(graph);\n return graph;\n };\n\n sankey.link = () => {\n let curvature = 0.5;\n\n function link(d) {\n const lastLine = !d.target.sourceLinks || d.target.sourceLinks.length == 0;\n const addPixels = 0.13;\n const x0 = d.source.x + d.source.dx,\n x1 = d.target.x,\n xi = interpolateNumber(x0, x1),\n x2 = xi(curvature),\n x3 = xi(1 - curvature),\n y0 = d.source.y + d.sy - addPixels,\n y1 = d.target.y + d.ty - addPixels;\n const appendix = !lastLine\n ? `L${x1 + nodeWidth},${y1} L${x1 + nodeWidth},${y1 + d.dy + 2 * addPixels}`\n : '';\n\n return y0 === y1\n ? `M${x0},${y0} \n L${x1},${y1}${appendix} \n L${x1},${y1 + d.dy + 2 * addPixels} \n L${x0},${y0 + d.dy + 2 * addPixels} Z`\n : `M${x0},${y0}\n C${x2},${y0} ${x3},${y1} ${x1},${y1}${appendix} \n L${x1},${y1 + d.dy + 2 * addPixels} \n C${x3},${y1 + d.dy + 2 * addPixels} ${x2},${y0 + d.dy + 2 * addPixels} \n ${x0},${y0 + d.dy + 2 * addPixels} Z`;\n }\n\n link.curvature = function (_) {\n if (!arguments.length) return curvature;\n curvature = +_;\n return link;\n };\n\n return link;\n };\n\n // Populate the sourceLinks and targetLinks for each node.\n function computeNodeLinks({nodes, links}: SankeyData) {\n nodes.forEach((node) => {\n node.sourceLinks = [];\n node.targetLinks = [];\n });\n links.forEach((link) => {\n link.source.sourceLinks.push(link);\n link.target.targetLinks.push(link);\n });\n }\n\n // Compute the value (size) of each node by summing the associated links.\n function computeNodeValues({nodes}: SankeyData) {\n nodes.forEach((node) => {\n node.value = Math.max(sumValues(node.sourceLinks), sumValues(node.targetLinks));\n });\n }\n\n // Iteratively assign the breadth (x-position) for each node.\n // Nodes are assigned the maximum breadth of incoming neighbors plus one;\n // nodes with no incoming links are assigned breadth zero, while\n // nodes with no outgoing links are assigned the maximum breadth.\n function computeNodeBreadths({nodes}: SankeyData) {\n if (!nodes.length) return;\n let remainingNodes = [nodes[0]],\n nextNodes,\n x = 0;\n\n while (remainingNodes.length) {\n nextNodes = [];\n remainingNodes.forEach((node) => {\n node.x = x;\n node.dx = nodeWidth;\n node.targetLinks.forEach((link) => {\n if (nextNodes.indexOf(link.source) < 0) {\n nextNodes.push(link.source);\n }\n });\n });\n remainingNodes = nextNodes;\n ++x;\n }\n\n nodes.forEach((node) => {\n node.x = x - 1 - node.x;\n });\n\n if (x > 2) {\n const w = (size[0] - 2 * nodeWidth - lastLinksSize) / (x - 2);\n nodes.forEach((node) => {\n if (!node.sourceLinks || node.sourceLinks.length == 0) node.x = size[0] - nodeWidth;\n else node.x *= w;\n });\n } else {\n nodes[0].x = size[0] - nodeWidth;\n nodes[1].x = nodes[0].x - lastLinksSize - nodeWidth;\n }\n }\n\n function computeNodeDepths({nodes, links}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a, b) => a[0] - b[0]),\n map(nth(1))\n )(nodes);\n\n //\n initializeNodeDepth();\n resolveCollisions();\n\n const max = pipe(\n map((nodes) => (nodes.length - 1) * nodePadding + sum(map((node) => node.dy, nodes))),\n reduce(Math.max, 0)\n )(nodesByBreadth);\n\n const y1 = (size[1] - max) / 2;\n\n nodesByBreadth.forEach((nodes) => {\n const {y, dy} = last(nodes);\n const y0 = size[1] - (y + dy);\n nodes.forEach((node) => {\n node.y += y0;\n if (y1 > 0) node.y -= y1;\n });\n });\n\n function initializeNodeDepth() {\n let ky = pipe(\n map((nodes) => (size[1] - (nodes.length - 1) * nodePadding) / sumValues(nodes)),\n reduce(Math.min, Infinity)\n )(nodesByBreadth);\n\n const min = pipe(\n map((node) => node.value / (node.targetLinks?.length || 1)),\n reduce(Math.min, Infinity)\n )(nodes);\n\n ky = Math.max(Math.min(ky, smallestNodeMaxHeight / min), smallestNodeMinHeight / min);\n\n nodesByBreadth.forEach((nodes) => {\n nodes.forEach((node, i) => {\n node.y = i;\n node.dy = node.value * ky;\n });\n });\n\n links.forEach((link) => {\n link.dy = link.value * ky;\n });\n }\n\n function resolveCollisions() {\n nodesByBreadth.forEach((nodes) => {\n let node,\n dy,\n y0 = 0,\n i;\n const n = nodes.length;\n\n // Push any overlapping nodes down.\n nodes.sort((a, b) => a.y - b.y);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dy = y0 - node.y;\n if (dy > 0) node.y += dy;\n y0 = node.y + node.dy + nodePadding;\n }\n\n // If the bottommost node goes outside the bounds, push it back up.\n dy = y0 - nodePadding - size[1];\n if (dy > 0) {\n y0 = node.y -= dy;\n\n // Push any overlapping nodes back up.\n for (i = n - 2; i >= 0; --i) {\n node = nodes[i];\n dy = node.y + node.dy + nodePadding - y0;\n if (dy > 0) node.y -= dy;\n y0 = node.y;\n }\n }\n });\n }\n }\n\n function computeLinkDepths({nodes}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a: number, b: number) => a[0] - b[0]),\n map(nth(1))\n )(nodes);\n\n nodesByBreadth.forEach((nodes) => {\n nodes.forEach((node) => {\n if (node.targetLinks?.length) {\n const result = [];\n const linksByUuid = node.targetLinks.map((l) => l.crosswalk.uuid);\n const sourceNodes = [];\n node.targetLinks.forEach(function (l) {\n if (this.indexOf(l.source) == -1) this.push(l.source);\n }, sourceNodes);\n for (let i = 0; i < sourceNodes.length; i++)\n for (let j = 0; j < sourceNodes[i].sourceLinks.length; j++) {\n const index = linksByUuid.indexOf(sourceNodes[i].sourceLinks[j].crosswalk.uuid);\n if (index != -1) result.push(node.targetLinks[index]);\n }\n node.targetLinks = result;\n }\n\n if (node.sourceLinks?.length) {\n const result = [];\n if (node.targetLinks?.length) {\n const linksByUuid = node.sourceLinks.map((l) => l.crosswalk.uuid);\n for (let i = 0; i < node.targetLinks.length; i++) {\n const index = linksByUuid.indexOf(node.targetLinks[i].crosswalk.uuid);\n if (index != -1) result.push(node.sourceLinks[index]);\n }\n }\n\n const resultByUuid = result.map((l) => l.crosswalk.uuid);\n const newSources = node.sourceLinks.filter(function (l) {\n return this.indexOf(l.crosswalk.uuid) == -1;\n }, resultByUuid);\n\n node.sourceLinks = newSources.concat(result);\n if (result.length > 0) {\n let sizeForNewSources = 0;\n for (let i = 0; i < newSources.length; i++) sizeForNewSources += newSources[i].dy;\n node.sizeForNewSources = sizeForNewSources;\n }\n }\n });\n });\n\n nodes.forEach((node) => {\n let sy = 0,\n ty = node.sizeForNewSources || 0;\n delete node.sizeForNewSources;\n node.sourceLinks.forEach((link) => {\n link.sy = sy;\n sy += link.dy;\n });\n node.targetLinks.forEach((link) => {\n link.ty = ty;\n ty += link.dy;\n });\n });\n }\n\n function correctNodesDepth({nodes}: SankeyData) {\n const nodesByBreadth = pipe(\n groupBy(prop('x')),\n toPairs,\n sort((a: number, b: number) => b[0] - a[0]),\n map(nth(1))\n )(nodes);\n\n nodesByBreadth.forEach((nodes) => {\n nodes = nodes.concat().sort((a, b) => a.y - b.y);\n nodes.forEach((node, i) => {\n if (node.sourceLinks?.length) {\n const {target, ty, dy} = last(node.sourceLinks);\n let y0 = target.y + ty + dy - node.dy;\n if (nodes[i - 1]?.x == node.x && y0 < nodes[i - 1]?.y + nodes[i - 1]?.dy + nodePadding)\n y0 = nodes[i - 1].y + nodes[i - 1].dy + nodePadding;\n if (node.y > y0) {\n node.y = y0;\n }\n }\n });\n });\n }\n\n return sankey;\n}\n","import {useMemo} from 'react';\nimport {SankeyData, SankeyNode} from '../../types/SankeyChartData';\nimport sankey from './sankey';\n\ntype Props = {\n width: number;\n height: number;\n data: SankeyData;\n};\n\nconst useSankey = ({data, width, height}: Props) =>\n useMemo(() => {\n if (!width || !height) return {nodes: [], links: []};\n\n const shallowCopy = (data: SankeyData): SankeyData => {\n const safeNodes = data.nodes.map((node) => ({...node}));\n const getSafeNode = (originalNode: SankeyNode) => {\n const index = data.nodes.indexOf(originalNode);\n return safeNodes[index];\n };\n\n const safeLinks = data.links.map((link) => ({\n ...link,\n source: getSafeNode(link.source),\n target: getSafeNode(link.target)\n }));\n return {nodes: safeNodes, links: safeLinks};\n };\n\n const sankeyLayout = sankey()\n .setNodeWidth(14)\n .setNodePadding(20)\n .setSize([height - 2, width - 2]);\n\n const nodeWidth = sankeyLayout.nodeWidth();\n const path = sankeyLayout.link();\n\n const safeData = shallowCopy(data);\n const {nodes, links}: SankeyData = sankeyLayout(safeData);\n\n return {nodes, links, nodeWidth, path};\n }, [data, height, width]);\n\nexport default useSankey;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tooltipTitle: {\n fontWeight: 500,\n fontSize: '16px',\n lineHeight: '24px',\n letterSpacing: '0.15px',\n marginBottom: '8px',\n userSelect: 'none'\n },\n tooltipRow: {\n display: 'flex',\n alignItems: 'center',\n fontSize: '13px',\n lineHeight: '15px',\n fontWeight: 'normal',\n '&:not(:last-child)': {\n marginBottom: '4px'\n }\n },\n tooltipIcon: {\n fontSize: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n marginRight: '8px'\n },\n node: {\n stroke: '#000000',\n strokeWidth: 1,\n strokeOpacity: 0.38\n },\n rootNode: {\n transform: 'rotate(90deg)',\n userSelect: 'none',\n fontSize: '13px'\n },\n popupContainer: {\n padding: 5,\n boxSizing: 'border-box'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {LightArrowTooltip} from '@reltio/components';\nimport CalendarTodayIcon from '@material-ui/icons/CalendarToday';\nimport PersonIcon from '@material-ui/icons/Person';\nimport {useStyles} from './styles';\n\ntype Props = {\n user: string;\n time: number;\n children: React.ReactElement;\n};\n\nexport const MergeTooltip = ({user, time, children}: Props) => {\n const styles = useStyles();\n const tooltipTitle = (\n <div>\n <span className={styles.tooltipTitle}>{i18n.text('Merge details')}</span>\n <div className={styles.tooltipRow}>\n <CalendarTodayIcon className={styles.tooltipIcon} />\n {i18n.date(time, 'L LTS')}\n </div>\n <div className={styles.tooltipRow}>\n <PersonIcon className={styles.tooltipIcon} />\n {user}\n </div>\n </div>\n );\n\n return (\n <LightArrowTooltip title={tooltipTitle} placement={'top'}>\n {children}\n </LightArrowTooltip>\n );\n};\n\nexport default MergeTooltip;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n}, props), React.createElement(\"defs\", null, React.createElement(\"path\", {\n d: \"M17 13.138l4.5 4.5-4.5 4.5V18.5h-1.247l-3.488-3.479 1.413-1.414 2.901 2.893H17v-3.362zM17 1.5L21.5 6 17 10.5V7.138h-.421l-11.03 11H2v-2h2.723l11.03-11H17V1.5zm-11.45 4l3.294 3.286-1.414 1.413L4.723 7.5H2v-2h3.55z\",\n id: \"svg2499598299a\"\n})), React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: \"1\",\n fill: \"none\",\n fillRule: \"evenodd\"\n}, React.createElement(\"mask\", {\n id: \"svg2499598299b\",\n fill: \"#fff\"\n}, React.createElement(\"use\", {\n xlinkHref: \"#svg2499598299a\"\n})), React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n mask: \"url(#svg2499598299b)\",\n d: \"M0 0h24v24H0z\"\n}))));","import React, {MouseEvent, useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Popover as Popover} from '@material-ui/core';\nimport MergeTooltip from './MergeTooltip';\nimport {SankeyNode} from '../../types/SankeyChartData';\nimport {SmallIconButtonWithTooltip, noop, useCrosswalkColor, useCrosswalkHighlight} from '@reltio/components';\nimport {groupBy, prop, pipe, map, head, last, max, min} from 'ramda';\nimport UnmergeIcon from '../../icons/notMatch.svg';\nimport {useStyles} from './styles';\n\ntype Props = {\n nodeWidth: number;\n node: SankeyNode;\n highlightEnabled: boolean;\n isColored: boolean;\n disableUnmerge: boolean;\n onUnmerge: (contributorUri: string) => void;\n isDragging: boolean;\n};\n\nexport const Node = ({node, nodeWidth, highlightEnabled, isColored, disableUnmerge, onUnmerge, isDragging}: Props) => {\n const styles = useStyles();\n const [labelX, setLabelX] = useState(0);\n const [anchorEl, setAnchorEl] = useState(null);\n const textRef = useRef(null);\n const {\n x,\n y,\n name,\n label,\n targetLinks,\n sourceLinks,\n entity: {crosswalks = [], merges}\n } = node;\n const [firstCrosswalk] = crosswalks;\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(firstCrosswalk);\n const color = useCrosswalkColor(firstCrosswalk);\n const startNodeHeight = crosswalks?.length\n ? sourceLinks[crosswalks.length - 1].sy + sourceLinks[crosswalks.length - 1].dy\n : 0;\n\n const renderMergeNodes = () => {\n const timeMap = pipe(map(prop('source')), groupBy(prop('time')))(targetLinks);\n\n return merges?.map(({time, user}, index) => {\n const sources = timeMap[time];\n if (!sources) return;\n\n const [start, end] = sources.reduce(\n (acc, {sourceLinks}) => [\n min(head(sourceLinks).ty, acc[0]),\n max(last(sourceLinks).ty + last(sourceLinks).dy, acc[1])\n ],\n [Infinity, 0]\n );\n\n return (\n <MergeTooltip user={user} time={time} key={'node-' + index}>\n <rect\n transform={`translate(0,${start})`}\n height={end - start}\n width={nodeWidth}\n className={styles.node}\n fillOpacity={0.54}\n fill={'#F0F0F0'}\n opacity={highlightEnabled && isDimmed ? 0.38 : 1}\n />\n </MergeTooltip>\n );\n });\n };\n\n const openPopup = (e: MouseEvent<SVGRectElement>) => setAnchorEl(e.currentTarget);\n const closePopup = () => setAnchorEl(null);\n const handleUnmerge = () => {\n onUnmerge(name);\n closePopup();\n };\n\n useEffect(() => {\n const nodeHeight = node.dy;\n const textWidth = textRef?.current?.clientWidth || 0;\n if (nodeHeight < textWidth) setLabelX(nodeHeight / 2 - textWidth / 2);\n }, []);\n\n useEffect(() => {\n if (isDragging && !!anchorEl) closePopup();\n }, [isDragging]);\n\n return (\n <g transform={`translate(${x},${y})`}>\n {name === 'ROOT' ? (\n <text dy={-5} dx={labelX} ref={textRef} className={styles.rootNode}>\n {label || ''}\n </text>\n ) : (\n <>\n <rect\n height={startNodeHeight}\n width={14}\n className={styles.node}\n fill={isColored ? color : '#F0F0F0'}\n key={'node-main'}\n filter={highlightEnabled && isDimmed ? 'url(#saturation)' : null}\n opacity={highlightEnabled && isDimmed ? 0.19 : 1}\n onMouseEnter={() => {\n if (highlightEnabled) highlightCrosswalk();\n }}\n onMouseLeave={() => {\n if (highlightEnabled) removeHighlight();\n }}\n onClick={disableUnmerge ? noop : openPopup}\n cursor={disableUnmerge ? 'default' : 'pointer'}\n data-reltio-id=\"reltio-sankey-chart-node\"\n />\n <Popover\n open={!!anchorEl}\n anchorEl={anchorEl}\n anchorOrigin={{vertical: 'top', horizontal: 'right'}}\n onClose={closePopup}\n classes={{paper: styles.popupContainer}}\n data-reltio-id=\"reltio-unmerge-popup\"\n >\n <SmallIconButtonWithTooltip\n size=\"XS\"\n tooltipTitle={i18n.text('Unmerge')}\n icon={UnmergeIcon}\n onClick={handleUnmerge}\n />\n </Popover>\n {!!targetLinks?.length && renderMergeNodes()}\n </>\n )}\n </g>\n );\n};\n\nexport default Node;\n","import React from 'react';\nimport {useCrosswalkColor, useCrosswalkHighlight} from '@reltio/components';\nimport {SankeyLink} from '../../types/SankeyChartData';\n\ntype Props = {\n link: SankeyLink;\n path: string;\n highlightEnabled: boolean;\n isColored: boolean;\n};\n\nexport const Link = ({link, path, highlightEnabled, isColored}: Props) => {\n const {crosswalk} = link;\n const color = useCrosswalkColor(crosswalk);\n const {isDimmed, highlightCrosswalk, removeHighlight} = useCrosswalkHighlight(crosswalk);\n return (\n <path\n d={path}\n fill={isColored ? color : '#F0F0F0'}\n filter={highlightEnabled && isDimmed ? 'url(#saturation)' : null}\n opacity={highlightEnabled && isDimmed ? 0.19 : 1}\n onMouseEnter={() => {\n if (highlightEnabled) highlightCrosswalk();\n }}\n onMouseLeave={() => {\n if (highlightEnabled) removeHighlight();\n }}\n />\n );\n};\n\nexport default Link;\n","import React, {useMemo, useState, useEffect} from 'react';\nimport useSankey from './useSankey';\nimport Node from './Node';\nimport Link from './Link';\nimport {SankeyData} from '../../types/SankeyChartData';\n\ntype Props = {\n width: number;\n height: number;\n data: SankeyData;\n accentContributors?: boolean;\n disableUnmerge: boolean;\n onUnmerge: (contributorUri: string) => void;\n};\n\nconst SankeyChart = ({width, height, data, accentContributors, onUnmerge, disableUnmerge}: Props) => {\n const [isDragging, setDragging] = useState(false);\n const [isMouseDown, setMouseDown] = useState(false);\n const [previousPageX, setPreviousPageX] = useState(0);\n const [offsetX, setOffsetX] = useState(0);\n const {links, nodes, nodeWidth, path} = useSankey({data, width, height});\n\n useEffect(() => {\n setOffsetX(0);\n setPreviousPageX(0);\n }, [width, height]);\n\n const sankeyNodes = useMemo(\n () =>\n nodes.map((node, index) => (\n <Node\n highlightEnabled={accentContributors}\n isColored={accentContributors}\n node={node}\n nodeWidth={nodeWidth}\n key={`SankeyNode-${index}`}\n disableUnmerge={disableUnmerge}\n onUnmerge={onUnmerge}\n isDragging={isDragging}\n />\n )),\n [nodes, accentContributors, nodeWidth, width, height, isDragging]\n );\n\n const sankeyLinks = useMemo(\n () =>\n links.map((link, index) => (\n <Link\n highlightEnabled={!accentContributors}\n isColored={!accentContributors}\n link={link}\n path={path(link)}\n key={`SankeyLink-${index}`}\n />\n )),\n [accentContributors, links, path]\n );\n\n const extractPositionDelta = (event: React.MouseEvent) => {\n const left = event.pageX;\n const offsetX = left - previousPageX;\n setPreviousPageX(left);\n return offsetX;\n };\n\n const onDown = (event: React.MouseEvent) => {\n event.preventDefault();\n setMouseDown(true);\n extractPositionDelta(event);\n };\n const onMove = (event: React.MouseEvent) => {\n if (!isMouseDown) return;\n setDragging(true);\n const left = extractPositionDelta(event);\n setOffsetX(offsetX + left);\n };\n const onUp = () => {\n setMouseDown(false);\n setDragging(false);\n };\n\n const pointerEvents = isDragging ? 'none' : 'auto';\n const cursor = isDragging ? 'move' : 'auto';\n\n return (\n <svg\n width={width}\n height={height}\n cursor={cursor}\n onMouseDown={onDown}\n onMouseMove={onMove}\n onMouseUp={onUp}\n onMouseLeave={onUp}\n >\n <filter id=\"saturation\" filterUnits=\"objectBoundingBox\">\n <feColorMatrix id=\"saturate\" type=\"saturate\" values=\"0.2\" />\n </filter>\n <g transform={`translate(${offsetX},${height - 1}) rotate(-90)`} pointerEvents={pointerEvents}>\n <g>{sankeyLinks}</g>\n <g>{sankeyNodes}</g>\n </g>\n </svg>\n );\n};\n\nexport default SankeyChart;\n","import {chain, concat, curry, evolve, filter, map, pipe, uniq} from 'ramda';\nimport {CrosswalkBase, CrosswalkTree, eqCrosswalks} from '@reltio/mdm-sdk';\nimport {SankeyLink, SankeyNode} from '../../types/SankeyChartData';\n\nconst isCrosswalkDisplayed = curry(\n (displayedCrosswalks: CrosswalkBase[], crosswalk: CrosswalkBase) =>\n !displayedCrosswalks || displayedCrosswalks.some(eqCrosswalks(crosswalk))\n);\n\nconst filterDisplayedCrosswalks = curry((displayedCrosswalks: CrosswalkBase[], tree: CrosswalkTree) => {\n return evolve(\n {\n crosswalks: filter(isCrosswalkDisplayed(displayedCrosswalks)),\n merges: map(\n evolve({\n losers: map(filterDisplayedCrosswalks(displayedCrosswalks))\n })\n )\n },\n tree\n );\n});\n\nconst addCrosswalkUniqueId = (tree: CrosswalkTree) => {\n let count = 1;\n const addIdToSubtree = pipe(\n evolve({crosswalks: map((crosswalk) => ({...crosswalk, uuid: count++}))}),\n evolve({\n merges: map(\n evolve({\n losers: map((loser) => addIdToSubtree(loser))\n })\n )\n })\n );\n return addIdToSubtree(tree);\n};\n\nconst processTree = (tree: CrosswalkTree & {label?: string}) => {\n const nodes: SankeyNode[] = [];\n const links: SankeyLink[] = [];\n\n const processSubTree = (tree, parentIndex, time) => {\n const {crosswalks = [], merges = [], uri = '', label} = tree;\n\n nodes.push({entity: tree, name: uri, time, label});\n const index = nodes.length - 1;\n\n const mergesCrosswalks = pipe(\n chain(({losers, time}) => {\n return pipe(\n filter((loser) => loser.crosswalks?.length || loser.merges?.length),\n chain((loser) => processSubTree(loser, index, time))\n )(losers);\n }),\n concat(crosswalks)\n )(merges);\n\n if (parentIndex != -1)\n mergesCrosswalks.forEach((crosswalk) =>\n links.push({\n source: nodes[index],\n target: nodes[parentIndex],\n value: 10,\n crosswalk\n })\n );\n\n return mergesCrosswalks;\n };\n processSubTree(tree, -1, Date.now());\n\n const linkedNodes = pipe(\n chain(({source, target}) => [source, target]),\n uniq\n )(links);\n\n return {nodes: nodes.filter((node) => linkedNodes.includes(node)), links};\n};\n\nexport const getSankeyData = (\n crosswalkTree: CrosswalkTree,\n entityLabel = '',\n displayedCrosswalks?: CrosswalkBase[]\n) => {\n return pipe(\n filterDisplayedCrosswalks(displayedCrosswalks),\n addCrosswalkUniqueId,\n processTree\n )({uri: 'ROOT', label: entityLabel, crosswalks: [], merges: [{time: Date.now(), losers: [crosswalkTree]}]});\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n graph: {\n padding: '8px 0px',\n boxSizing: 'border-box',\n height: '100%',\n width: '100%'\n }\n}));\n","import React, {memo} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {noop} from '@reltio/components';\nimport SankeyChart from '../SankeyChart/SankeyChart';\nimport {getSankeyData} from './helpers';\nimport {CrosswalkBase, CrosswalkTree} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n crosswalkTree: CrosswalkTree;\n entityLabel?: string;\n visibleCrosswalks?: CrosswalkBase[];\n accentContributors?: boolean;\n disableUnmerge?: boolean;\n onUnmerge?: (contributorUri: string) => void;\n};\n\nconst CrosswalkTreeView = ({\n crosswalkTree,\n entityLabel,\n visibleCrosswalks,\n accentContributors,\n disableUnmerge = false,\n onUnmerge = noop\n}: Props) => {\n const styles = useStyles();\n const sankeyData = getSankeyData(crosswalkTree, entityLabel, visibleCrosswalks);\n\n return (\n <div className={styles.graph} data-reltio-id=\"reltio-crosswalk-tree\">\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n {({width = 0, height = 200}: {width: number; height: number}) => (\n <SankeyChart\n width={width}\n height={height}\n data={sankeyData}\n accentContributors={accentContributors}\n disableUnmerge={disableUnmerge}\n onUnmerge={onUnmerge}\n />\n )}\n </ReactResizeDetector>\n </div>\n );\n};\n\nexport default memo(CrosswalkTreeView);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n isFocused?: boolean;\n};\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n paddingRight: '8px',\n '& button + button': {\n marginLeft: '4px'\n }\n },\n focusedIcon: ({isFocused}: StylesProps) => ({\n width: 28,\n height: 28,\n color: isFocused ? '#000' : 'rgba(0, 0, 0, 0.54)',\n borderRadius: 0\n }),\n title: {\n color: theme.palette.text.secondary,\n paddingLeft: '6px',\n paddingRight: '2px'\n },\n uri: {\n lineHeight: '15px',\n color: theme.palette.text.primary\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport {SmallIconButtonWithTooltip, Spacer} from '@reltio/components';\nimport {getLastUriPart} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype ContributorAction = React.ComponentPropsWithRef<typeof SmallIconButtonWithTooltip> & {\n show: boolean;\n};\n\ntype Props = {\n contributorUri: string;\n isFocused: boolean;\n focusable: boolean;\n onToggleFocus: () => void;\n contributorActions: ContributorAction[];\n};\n\nconst ContributorRow = ({contributorUri, focusable, contributorActions, onToggleFocus, isFocused}: Props) => {\n const styles = useStyles({isFocused});\n return (\n <div className={styles.root}>\n <SmallIconButtonWithTooltip\n size=\"XXS\"\n onClick={() => onToggleFocus()}\n className={styles.focusedIcon}\n icon={focusable && VisibilityIcon}\n disabled={!focusable}\n tooltipTitle={focusable && i18n.text('Focus')}\n />\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity ID:')}</span>\n {getLastUriPart(contributorUri)}\n </Typography>\n <Spacer />\n {contributorActions.map(({show, ...buttonProps}, i) => {\n return show && <SmallIconButtonWithTooltip key={i} size=\"XS\" showForDisabled {...buttonProps} />;\n })}\n </div>\n );\n};\n\nexport default ContributorRow;\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StylesProps = {\n contributorColor: string;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({contributorColor}: StylesProps) => ({\n fontSize: '13px',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n paddingLeft: '8px',\n '&:before': {\n content: '\" \"',\n borderLeft: `8px solid ${contributorColor}`,\n position: 'absolute',\n top: -1,\n left: 0,\n bottom: -1\n },\n '& > div + div': {\n marginTop: '1px'\n }\n }),\n editor: {\n padding: '0px 30px 0px 25px'\n }\n}));\n","import React, {useEffect, useRef, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport {\n CrosswalkEditor,\n SourceCrosswalksRow,\n CrosswalksByTypes,\n CrosswalkType,\n useCrosswalkFocus,\n useHighlightedCrosswalks\n} from '@reltio/components';\nimport mdm from '@reltio/mdm-module';\nimport {\n Crosswalk,\n DataTenant,\n eqCrosswalks,\n getContributorColor,\n getDataTenantFromCrosswalks,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {chain, find, flatten, head, pipe, pluck, propOr, props, values} from 'ramda';\nimport AddIcon from '@material-ui/icons/Add';\nimport UnmergeIcon from '../../../icons/notMatch.svg';\nimport UnsubscribeIcon from '@material-ui/icons/Delete';\nimport ContributorRow from './ContributorRow/ContributorRow';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n contributorUri: string;\n accentContributor?: boolean;\n crosswalksBySources: {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n }[];\n canUnmerge: boolean;\n disableAddCrosswalk: boolean;\n disableEditCrosswalk: boolean;\n disableDeleteCrosswalk: boolean;\n disableUnmergeContributor: boolean;\n onAdd: (event: {contributorCrosswalk: Crosswalk; crosswalk: Omit<Crosswalk, 'uri'>}) => void;\n onDelete: (crosswalkId: string) => void;\n onEdit: (event: {crosswalkId: string; attributeName: string; value?: string}) => void;\n onUnmerge: () => void;\n expandedSources?: string[];\n onToggleSourceExpanded: (sourceUri: string) => void;\n onUnsubscribeContributor: (event: {contributorUri: string; dataTenant: DataTenant; crosswalk: Crosswalk}) => void;\n};\n\nconst LegendTableRow = ({\n className,\n contributorUri,\n accentContributor,\n crosswalksBySources,\n expandedSources,\n canUnmerge,\n disableAddCrosswalk,\n disableEditCrosswalk,\n disableDeleteCrosswalk,\n disableUnmergeContributor,\n onUnmerge,\n onEdit,\n onDelete,\n onAdd,\n onToggleSourceExpanded,\n onUnsubscribeContributor\n}: Props) => {\n const contributorColor = accentContributor ? getContributorColor(contributorUri) : 'rgba(0, 0, 0, 0.38)';\n const styles = useStyles({contributorColor});\n const dataTenants = useSelector(mdm.selectors.getDataTenants);\n\n const ref = useRef(null);\n const [scrollToCrosswalk] = useHighlightedCrosswalks();\n useEffect(() => {\n if (accentContributor && scrollToCrosswalk) {\n const crosswalks = pipe(\n find(({source}) => source === scrollToCrosswalk.type),\n propOr({}, 'crosswalksByTypes'),\n values,\n flatten\n )(crosswalksBySources);\n if (\n crosswalks.some(\n (crosswalk) => eqCrosswalks(scrollToCrosswalk, crosswalk) && crosswalk !== scrollToCrosswalk\n )\n ) {\n ref?.current?.scrollIntoView({behavior: 'smooth'});\n }\n }\n }, [scrollToCrosswalk]);\n\n const [showEditor, setShowEditor] = useState(false);\n\n const contributorCrosswalk: Crosswalk = pipe(\n pluck('crosswalksByTypes'),\n find((crosswalks) => crosswalks[CrosswalkType.Simple].length || crosswalks[CrosswalkType.Empty].length),\n props([CrosswalkType.Simple, CrosswalkType.Empty]),\n flatten,\n head\n )(crosswalksBySources);\n const {toggleCrosswalkFocus, isFocused} = useCrosswalkFocus(contributorCrosswalk);\n\n const allContributorCrosswalks: (Crosswalk | RelationCrosswalk)[] = pipe(\n pluck('crosswalksByTypes'),\n chain(values),\n flatten\n )(crosswalksBySources);\n\n const dataTenantForExternalCrosswalk = getDataTenantFromCrosswalks(allContributorCrosswalks, dataTenants);\n\n const unsubscribeContributor = () =>\n onUnsubscribeContributor({\n contributorUri,\n dataTenant: dataTenantForExternalCrosswalk,\n crosswalk: contributorCrosswalk\n });\n\n const contributorActions = [\n {\n icon: AddIcon,\n tooltipTitle: i18n.text('Add crosswalk'),\n onClick: () => setShowEditor(true),\n disabled: disableAddCrosswalk,\n show: !!contributorCrosswalk\n },\n {\n icon: UnmergeIcon,\n tooltipTitle: i18n.text('Unmerge'),\n onClick: () => onUnmerge(),\n disabled: disableUnmergeContributor,\n show: canUnmerge\n },\n {\n icon: UnsubscribeIcon,\n tooltipTitle: i18n.text('Unsubscribe'),\n onClick: () => unsubscribeContributor(),\n disabled: disableUnmergeContributor,\n show: canUnmerge && !!dataTenantForExternalCrosswalk\n }\n ];\n\n return (\n <div ref={ref} className={classnames(styles.root, className)}>\n <ContributorRow\n contributorUri={contributorUri}\n focusable={accentContributor && !!contributorCrosswalk}\n isFocused={accentContributor && isFocused}\n onToggleFocus={toggleCrosswalkFocus}\n contributorActions={contributorActions}\n />\n {crosswalksBySources.map(({source, crosswalksByTypes}) => (\n <SourceCrosswalksRow\n key={source}\n source={source}\n crosswalksByTypes={crosswalksByTypes}\n showCrosswalkColors={!accentContributor}\n crosswalksFocusEnabled={!accentContributor}\n expanded={expandedSources?.includes(source)}\n disableEditCrosswalk={disableEditCrosswalk}\n disableDeleteCrosswalk={disableDeleteCrosswalk}\n onEdit={onEdit}\n onDelete={onDelete}\n onToggleExpanded={() => onToggleSourceExpanded(source)}\n />\n ))}\n {showEditor && (\n <CrosswalkEditor\n className={styles.editor}\n onAdd={(crosswalk) => onAdd({contributorCrosswalk, crosswalk})}\n onClose={() => setShowEditor(false)}\n />\n )}\n </div>\n );\n};\n\nexport default LegendTableRow;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n table: {\n overflowY: 'auto',\n overflowX: 'hidden',\n paddingLeft: '16px',\n paddingRight: '6px'\n },\n tableRow: {\n '& + &': {\n marginTop: '10px'\n },\n margin: 'auto',\n maxWidth: '448px'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useState} from 'react';\nimport {\n AttributeType,\n checkCanCreateCrosswalk,\n checkCanDeleteCrosswalk,\n checkCanEditCrosswalk,\n Contributor,\n CrosswalkBase,\n Entity,\n TEntityType\n} from '@reltio/mdm-sdk';\nimport {AddCrosswalkEvent, DeleteCrosswalkEvent, EditCrosswalkEvent, noop} from '@reltio/components';\nimport {buildTableRowsData, collectVisibleCrosswalks} from './helpers';\nimport LegendTableRow from './LegendTableRow/LegendTableRow';\nimport {append, assoc, evolve, has, ifElse, includes, pipe, unless, without} from 'ramda';\nimport {UnsubscribeContributorEvent} from '../../types';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n entityType: TEntityType;\n contributors: Contributor[];\n accentContributors?: boolean;\n selectedAttributeTypes?: AttributeType[];\n onChangeVisibleCrosswalks: (visibleCrosswalks: CrosswalkBase[]) => void;\n readOnly?: boolean;\n canUnmerge: boolean;\n disableUnmerge: boolean;\n onAddCrosswalk?: (event: AddCrosswalkEvent) => void;\n onEditCrosswalk?: (event: EditCrosswalkEvent) => void;\n onDeleteCrosswalk?: (event: DeleteCrosswalkEvent) => void;\n onUnmergeContributor?: (contributorUri: string) => void;\n onUnsubscribeContributor?: (event: UnsubscribeContributorEvent & {contributorUri: string}) => void;\n};\n\nconst LegendTable = ({\n accentContributors,\n entity,\n entityType,\n contributors,\n selectedAttributeTypes,\n onChangeVisibleCrosswalks,\n readOnly,\n canUnmerge,\n disableUnmerge,\n onAddCrosswalk = noop,\n onEditCrosswalk = noop,\n onDeleteCrosswalk = noop,\n onUnmergeContributor = noop,\n onUnsubscribeContributor = noop\n}: Props) => {\n const styles = useStyles();\n\n const rowsData = useMemo(\n () => buildTableRowsData(entity, contributors, selectedAttributeTypes),\n [entity, contributors, selectedAttributeTypes]\n );\n const [expandedByContributor, setExpandedByContributor] = useState<{[contributorUri: string]: string[]}>({});\n const visibleCrosswalks = useMemo(\n () => collectVisibleCrosswalks(rowsData, expandedByContributor),\n [rowsData, expandedByContributor]\n );\n useEffect(() => {\n onChangeVisibleCrosswalks(visibleCrosswalks);\n }, [visibleCrosswalks]);\n\n const handleDelete = useCallback(\n (crosswalkId: string) => {\n onDeleteCrosswalk({entityUri: entity?.uri, crosswalkId});\n },\n [entity?.uri, onDeleteCrosswalk]\n );\n\n const handleEdit = useCallback(\n (params: Omit<EditCrosswalkEvent, 'entityUri'>) => {\n onEditCrosswalk({...params, entityUri: entity?.uri});\n },\n [entity?.uri, onEditCrosswalk]\n );\n\n return (\n <div className={styles.table}>\n {rowsData.map(({contributorUri, crosswalksBySources}) => {\n return (\n <LegendTableRow\n key={contributorUri}\n className={styles.tableRow}\n canUnmerge={canUnmerge}\n contributorUri={contributorUri}\n accentContributor={accentContributors}\n crosswalksBySources={crosswalksBySources}\n disableAddCrosswalk={readOnly || !checkCanCreateCrosswalk(entityType)}\n disableEditCrosswalk={readOnly || !checkCanEditCrosswalk(entityType)}\n disableDeleteCrosswalk={readOnly || !checkCanDeleteCrosswalk(entityType)}\n disableUnmergeContributor={disableUnmerge}\n onAdd={(params) => onAddCrosswalk({...params, entity})}\n onDelete={handleDelete}\n onEdit={handleEdit}\n onUnmerge={() => onUnmergeContributor(contributorUri)}\n onUnsubscribeContributor={onUnsubscribeContributor}\n expandedSources={expandedByContributor[contributorUri]}\n onToggleSourceExpanded={(sourceUri: string) => {\n setExpandedByContributor(\n pipe(\n unless(has(contributorUri), assoc(contributorUri, [])),\n evolve({\n [contributorUri]: ifElse(\n includes(sourceUri),\n without([sourceUri]),\n append(sourceUri)\n )\n })\n )\n );\n }}\n />\n );\n })}\n </div>\n );\n};\n\nexport default memo(LegendTable);\n","import {\n AttributeType,\n Contributor,\n Crosswalk,\n Entity,\n eqCrosswalks,\n getRelationCrosswalks,\n isEmptyValue,\n RelationCrosswalk\n} from '@reltio/mdm-sdk';\nimport {chain, filter, map, pipe} from 'ramda';\nimport {CrosswalksByTypes, CrosswalkType, groupCrosswalksByTypesAndSources} from '@reltio/components';\n\ntype TableRow = {\n contributorUri: string;\n crosswalksBySources: {\n source: string;\n crosswalksByTypes: CrosswalksByTypes;\n }[];\n};\n\nexport const buildTableRowsData = (\n entity: Entity,\n contributors: Contributor[],\n selectedAttributeTypes: AttributeType[] = []\n): TableRow[] => {\n const entityCrosswalks: Crosswalk[] = entity.crosswalks;\n const relationCrosswalks: RelationCrosswalk[] = getRelationCrosswalks(entity);\n return contributors\n .filter((contributor) => !isEmptyValue(contributor.crosswalks))\n .map(({uri, crosswalks}) => {\n const crosswalksBySources = pipe(\n map((crosswalk) => {\n if (crosswalk.ownerType === 'relation') {\n const relationCrosswalk = relationCrosswalks.find(eqCrosswalks(crosswalk));\n return relationCrosswalk && {ownerType: 'relation', ...relationCrosswalk};\n } else {\n const entityCrosswalk = entityCrosswalks.find(eqCrosswalks(crosswalk));\n return entityCrosswalk && {ownerType: 'entity', ...entityCrosswalk};\n }\n }),\n filter((crosswalk) => !!crosswalk),\n groupCrosswalksByTypesAndSources(entity.type, selectedAttributeTypes)\n )(crosswalks);\n\n return {contributorUri: uri, crosswalksBySources};\n })\n .filter(({crosswalksBySources}) => crosswalksBySources.length > 0);\n};\n\nexport const collectVisibleCrosswalks = (\n rowsData: TableRow[],\n expandedByContributor: {[contributorUri: string]: string[]}\n) => {\n return rowsData.reduce((acc, {contributorUri, crosswalksBySources}) => {\n const visibleCrosswalks = chain(({source, crosswalksByTypes}) => {\n const isExpandedSource = expandedByContributor[contributorUri]?.includes(source);\n return crosswalksByTypes[CrosswalkType.Simple]\n .concat(crosswalksByTypes[CrosswalkType.Empty])\n .concat(isExpandedSource ? crosswalksByTypes[CrosswalkType.Dependent] : []);\n }, crosswalksBySources);\n return acc.concat(visibleCrosswalks);\n }, []);\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n '& + &': {\n marginLeft: '16px'\n }\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: '#666666',\n marginBottom: '7px'\n },\n hintIcon: {\n width: '16px',\n height: '16px',\n verticalAlign: 'middle'\n },\n graph: {\n width: '400px',\n height: '300px',\n borderRadius: '8px',\n background: 'rgba(0, 0, 0, 0.03)',\n border: '1px solid rgba(0, 0, 0, 0.03)',\n position: 'relative'\n },\n checkedIcon: {\n position: 'absolute',\n height: '20px',\n width: '20px',\n right: '10px',\n top: '10px',\n color: theme.palette.primary.main\n },\n selectedTree: {\n border: `1px solid ${theme.palette.primary.main}`,\n background: 'rgba(0, 114, 206, 0.05)'\n }\n}));\n","import React, {useCallback} from 'react';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport InfoIcon from '@material-ui/icons/Info';\nimport {CrosswalksDisplayProvider, noop} from '@reltio/components';\nimport {\n CrosswalkBase,\n CrosswalkTree,\n getCrosswalkColor as getUniqueCrosswalkColor,\n getCrosswalkId\n} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport CrosswalkTreeView from '../CrosswalkTreeView/CrosswalkTreeView';\nimport {useStyles} from './styles';\n\ntype Props = {\n coloredCrosswalks: string[];\n crosswalkTree: CrosswalkTree;\n selected: boolean;\n title: string;\n onSelect?: () => void;\n};\n\nexport const SelectableTree = ({coloredCrosswalks, crosswalkTree, selected, title, onSelect = noop}: Props) => {\n const styles = useStyles();\n const getCrosswalkColor = useCallback(\n (crosswalk: CrosswalkBase) => {\n return coloredCrosswalks.includes(crosswalk.uri)\n ? getUniqueCrosswalkColor(getCrosswalkId(crosswalk))\n : '#CACCD1';\n },\n [coloredCrosswalks]\n );\n return (\n <CrosswalksDisplayProvider getCrosswalkColor={getCrosswalkColor}>\n <div className={styles.container} onClick={onSelect}>\n <span className={styles.title}>\n {title} <InfoIcon className={styles.hintIcon} />\n </span>\n <div className={classnames(styles.graph, {[`${styles.selectedTree}`]: selected})}>\n {selected && <CheckCircleIcon className={styles.checkedIcon} />}\n <CrosswalkTreeView crosswalkTree={crosswalkTree} />\n </div>\n </div>\n </CrosswalksDisplayProvider>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n dialogContainer: {\n maxWidth: 'unset'\n },\n dialogTitle: {\n padding: '13px 16px 0 16px',\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px'\n },\n dialogContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: '13px 16px 0 16px'\n },\n trees: {\n display: 'flex'\n },\n uri: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.primary,\n marginBottom: '15px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary,\n paddingRight: '2px'\n }\n}));\n","import React, {useCallback, useState} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectableTree} from '../SelectableTree/SelectableTree';\nimport {\n collectCrosswalksFromContributor,\n Contributor,\n CrosswalkTree,\n getLastUriPart,\n UnmergeOperation\n} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n contributor: Contributor;\n crosswalkTree: CrosswalkTree;\n canUnmerge?: boolean;\n onClose: () => void;\n onUnmergeContributor: (operationType: UnmergeOperation) => void;\n};\n\nexport const UnmergeDialog = ({canUnmerge, contributor, crosswalkTree, onClose, onUnmergeContributor}: Props) => {\n const styles = useStyles();\n\n const [unmergeOperation, setUnmergeOperation] = useState(UnmergeOperation.Unmerge);\n\n const getColoredCrosswalks = useCallback(\n (includeMerges: boolean) => collectCrosswalksFromContributor(contributor, includeMerges).map(({uri}) => uri),\n [contributor]\n );\n\n const unmergeContributor = () => {\n onUnmergeContributor(unmergeOperation);\n onClose();\n };\n\n return (\n <Dialog open={true} onClose={onClose} classes={{paper: styles.dialogContainer}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>{i18n.text('Unmerge')}</DialogTitle>\n <DialogContent classes={{root: styles.dialogContent}}>\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity URI:')}</span>\n {getLastUriPart(contributor.uri).toUpperCase()}\n </Typography>\n <div className={styles.trees}>\n <SelectableTree\n onSelect={() => setUnmergeOperation(UnmergeOperation.Unmerge)}\n selected={unmergeOperation === UnmergeOperation.Unmerge}\n title={i18n.text('Unmerge')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={getColoredCrosswalks(true)}\n />\n {contributor.merges && contributor.uri !== crosswalkTree.uri && (\n <SelectableTree\n onSelect={() => setUnmergeOperation(UnmergeOperation.TreeUnmerge)}\n selected={unmergeOperation === UnmergeOperation.TreeUnmerge}\n title={i18n.text('Tree unmerge')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={getColoredCrosswalks(false)}\n />\n )}\n </div>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!canUnmerge} onClick={unmergeContributor} color=\"primary\">\n {i18n.text('Unmerge')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n dialogContainer: {\n maxWidth: 'unset'\n },\n dialogTitle: {\n padding: '13px 16px 0 16px',\n fontWeight: 500,\n fontSize: '20px',\n lineHeight: '23px',\n letterSpacing: '0.25px'\n },\n dialogContent: {\n display: 'flex',\n flexDirection: 'column',\n padding: '13px 16px 0 16px'\n },\n uri: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.primary,\n marginBottom: '15px'\n },\n title: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary,\n paddingRight: '2px'\n }\n}));\n","import React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Dialog as Dialog} from '@material-ui/core';\nimport {DialogActions as DialogActions} from '@material-ui/core';\nimport {DialogContent as DialogContent} from '@material-ui/core';\nimport {DialogTitle as DialogTitle} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {SelectableTree} from '../SelectableTree/SelectableTree';\nimport {collectCrosswalksFromContributor, Contributor, CrosswalkTree, getLastUriPart} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n contributor: Contributor;\n crosswalkTree: CrosswalkTree;\n canUnsubscribe?: boolean;\n onClose: () => void;\n onUnsubscribeContributor: () => void;\n};\n\nexport const UnsubscribeDialog = ({\n canUnsubscribe,\n contributor,\n crosswalkTree,\n onClose,\n onUnsubscribeContributor\n}: Props) => {\n const styles = useStyles();\n\n const coloredCrosswalks = useMemo(() => collectCrosswalksFromContributor(contributor, true).map(({uri}) => uri), [\n contributor\n ]);\n\n const unsubscribeContributor = () => {\n onUnsubscribeContributor();\n onClose();\n };\n\n return (\n <Dialog open={true} onClose={onClose} classes={{paper: styles.dialogContainer}}>\n <DialogTitle classes={{root: styles.dialogTitle}}>{i18n.text('Unsubscribe')}</DialogTitle>\n <DialogContent classes={{root: styles.dialogContent}}>\n <Typography variant={'body2'} className={styles.uri}>\n <span className={styles.title}>{i18n.text('Entity URI:')}</span>\n {getLastUriPart(contributor.uri).toUpperCase()}\n </Typography>\n <SelectableTree\n selected\n title={i18n.text('Unsubscribe')}\n crosswalkTree={crosswalkTree}\n coloredCrosswalks={coloredCrosswalks}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose}>{i18n.text('Cancel')}</Button>\n <Button disabled={!canUnsubscribe} onClick={unsubscribeContributor} color=\"primary\">\n {i18n.text('Unsubscribe')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: '100%'\n },\n modeSwitcher: {\n backgroundColor: theme.palette.background.paper,\n marginTop: '8px'\n },\n infoIcon: {\n fontSize: '18px',\n marginRight: '8px'\n },\n hint: {\n color: theme.palette.text.secondary,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n margin: '5px 12px 10px 12px'\n },\n hintText: {\n fontSize: '12px',\n lineHeight: '16px'\n },\n crosswalksList: {\n height: '100%',\n width: 'calc(100% - 24px)',\n margin: '8px 12px',\n background: theme.palette.divider,\n opacity: 0.2\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n width: '100%'\n }\n}));\n","import React, {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport InfoIcon from '@material-ui/icons/Info';\nimport i18n from 'ui-i18n';\nimport {isEmpty} from 'ramda';\nimport mdmModule from '@reltio/mdm-module';\nimport {\n AttributeType,\n calculateCrosswalkTreeDeep,\n checkMetadataPermission,\n Contributor,\n Crosswalk,\n CrosswalkBase,\n CrosswalkTree,\n DataTenant,\n Entity,\n getEntityType,\n getLabel,\n Metadata,\n MetadataPermissions,\n TEntityType,\n UnmergeOperation\n} from '@reltio/mdm-sdk';\nimport {\n AddCrosswalkEvent,\n DeleteCrosswalkEvent,\n EditCrosswalkEvent,\n ModeSwitcher,\n noop,\n ResizablePanes\n} from '@reltio/components';\nimport {LegendMode, UnmergeContributorEvent, UnsubscribeContributorEvent} from '../../types';\nimport CrosswalkTreeView from '../CrosswalkTreeView/CrosswalkTreeView';\nimport LegendTable from '../LegendTable/LegendTable';\nimport {UnmergeDialog} from '../UnmergeDialog/UnmergeDialog';\nimport {UnsubscribeDialog} from '../UnsubscribeDialog/UnsubscribeDialog';\n\nimport {useStyles} from './styles';\n\nexport const DEFAULT_LINK_HEIGHT = 60;\nexport const MIN_PANE1_SIZE = 170;\nexport const MIN_PANE2_SIZE = 170;\n\ntype Props = {\n activeMode: LegendMode;\n onChangeMode: (mode: LegendMode) => void;\n crosswalkTree: CrosswalkTree;\n entity: Entity;\n contributors: Contributor[];\n selectedAttributeTypes?: AttributeType[];\n readOnly?: boolean;\n onAddCrosswalk?: (event: AddCrosswalkEvent) => void;\n onEditCrosswalk?: (event: EditCrosswalkEvent) => void;\n onDeleteCrosswalk?: (event: DeleteCrosswalkEvent) => void;\n onUnmergeContributor?: (event: UnmergeContributorEvent) => void;\n onUnsubscribeContributor?: (event: UnsubscribeContributorEvent) => void;\n};\n\nconst LegendView = ({\n activeMode,\n contributors,\n crosswalkTree,\n entity,\n onChangeMode,\n onUnmergeContributor = noop,\n onUnsubscribeContributor = noop,\n ...tableProps\n}: Props) => {\n const styles = useStyles();\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityType: TEntityType = getEntityType(metadata, entity?.type);\n\n const viewRef = useRef<HTMLDivElement>();\n const [paneSize, setPaneSize] = useState(MIN_PANE1_SIZE);\n const handlePaneSizeChange = useCallback(({percentageSize}) => setPaneSize(percentageSize), []);\n\n const [contributorForUnmerge, setContributorForUnmerge] = useState<string>();\n const [unsubscribeInfo, setUnsubscribeInfo] = useState<{\n contributorUri: string;\n dataTenant: DataTenant;\n crosswalk: Crosswalk;\n }>();\n\n const crosswalkTreeDeep = useMemo(() => calculateCrosswalkTreeDeep(crosswalkTree), [crosswalkTree]);\n const canUnmerge = crosswalkTreeDeep > 1;\n\n useEffect(() => {\n const height = Math.max(MIN_PANE1_SIZE, crosswalkTreeDeep * DEFAULT_LINK_HEIGHT);\n const maxPaneHeight = viewRef.current?.clientHeight - MIN_PANE2_SIZE;\n setPaneSize(Math.min(maxPaneHeight, height));\n }, [crosswalkTreeDeep]);\n\n const modes = useMemo(\n () => [\n {\n id: LegendMode.Crosswalk,\n title: i18n.text('Crosswalk')\n },\n {\n id: LegendMode.Source,\n title: i18n.text('Source')\n },\n {\n id: LegendMode.Contributor,\n title: i18n.text('Contributor')\n }\n ],\n []\n );\n\n const [visibleCrosswalks, setVisibleCrosswalks] = useState<CrosswalkBase[]>();\n const accentContributors = activeMode === LegendMode.Contributor;\n const disableUnmerge = tableProps.readOnly || !checkMetadataPermission(MetadataPermissions.UNMERGE, entityType);\n\n return (\n <div className={styles.root} ref={viewRef}>\n {contributorForUnmerge && (\n <UnmergeDialog\n canUnmerge={canUnmerge}\n onClose={() => setContributorForUnmerge(null)}\n onUnmergeContributor={(operationType: UnmergeOperation) => {\n onUnmergeContributor({\n entityUri: entity.uri,\n contributorUri: contributorForUnmerge,\n operationType\n });\n }}\n crosswalkTree={crosswalkTree}\n contributor={contributors.find(({uri}) => uri === contributorForUnmerge)}\n />\n )}\n {unsubscribeInfo && (\n <UnsubscribeDialog\n canUnsubscribe={canUnmerge}\n onClose={() => setUnsubscribeInfo(null)}\n onUnsubscribeContributor={() =>\n onUnsubscribeContributor({\n dataTenant: unsubscribeInfo.dataTenant,\n crosswalk: unsubscribeInfo.crosswalk\n })\n }\n crosswalkTree={crosswalkTree}\n contributor={contributors.find(({uri}) => uri === unsubscribeInfo.contributorUri)}\n />\n )}\n <ModeSwitcher<LegendMode>\n modes={modes}\n modeId={activeMode}\n className={styles.modeSwitcher}\n onChange={onChangeMode}\n />\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n orientation=\"horizontal\"\n size={paneSize}\n minSize={MIN_PANE1_SIZE}\n maxSize={-MIN_PANE2_SIZE}\n allowResize\n onChange={handlePaneSizeChange}\n >\n <div className={styles.pane}>\n {crosswalkTree && !isEmpty(visibleCrosswalks) && (\n <CrosswalkTreeView\n entityLabel={getLabel(entity?.label)}\n crosswalkTree={crosswalkTree}\n visibleCrosswalks={visibleCrosswalks}\n accentContributors={accentContributors}\n disableUnmerge={disableUnmerge || !canUnmerge}\n onUnmerge={setContributorForUnmerge}\n />\n )}\n </div>\n <div className={styles.pane}>\n <div className={styles.hint}>\n <InfoIcon className={styles.infoIcon} />\n <span className={styles.hintText}>\n {i18n.text('You can drag a crosswalk to add values to attributes swimlanes')}\n </span>\n </div>\n {entity && (\n <LegendTable\n onUnmergeContributor={setContributorForUnmerge}\n onUnsubscribeContributor={setUnsubscribeInfo}\n accentContributors={accentContributors}\n contributors={contributors}\n entity={entity}\n entityType={entityType}\n onChangeVisibleCrosswalks={setVisibleCrosswalks}\n canUnmerge={canUnmerge}\n disableUnmerge={disableUnmerge}\n {...tableProps}\n />\n )}\n </div>\n </ResizablePanes>\n </div>\n );\n};\n\nexport default memo(LegendView);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg4041339336a\",\n masktype: \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: \"2\",\n y: \"3\",\n width: \"19\",\n height: \"17\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.5 5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S4.83 6.5 4 6.5 2.5 5.83 2.5 5zM21 20H8v-2h13v2zM8 10h13V8H8v2zm0-4V4h13v2H8zm0 10h13v-2H8v2zm-2.5.5v-3h-3v3h3z\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg4041339336a)\"\n}, React.createElement(\"path\", {\n fillOpacity: \".54\",\n fill: \"#000\",\n d: \"M0 0h24v24H0z\"\n}))));","import {ErrorPopup} from '@reltio/components';\nimport i18n from 'ui-i18n';\nimport {getRequestErrorMessage} from '@reltio/mdm-sdk';\n\nexport const showErrorMessage = (error: unknown) => {\n console.error(error); // eslint-disable-line\n ErrorPopup.addError({\n title: i18n.text('Error'),\n message: getRequestErrorMessage(error, i18n.text('Something went wrong'))\n });\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"90\",\n height: \"90\",\n viewBox: \"0 0 90 90\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"45\",\n cy: \"45\",\n r: \"45\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg985456408a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"90\",\n height: \"90\"\n}, React.createElement(\"circle\", {\n cx: \"45\",\n cy: \"45\",\n r: \"45\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg985456408a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.625 3.164h90V90h-90V3.164z\",\n fill: \"url(#paint0_linear)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.01 19.992l20.615 20.615v52.337H32.83L18.281 79.131V19.99H66.01z\",\n fill: \"url(#paint1_linear)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.523 20.39H87.54A2.46 2.46 0 0190 22.853v55.195a2.46 2.46 0 01-2.46 2.46H16.522a2.46 2.46 0 01-2.46-2.46V22.852a2.46 2.46 0 012.46-2.461z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.578 19.688h70.664c.971 0 1.758.787 1.758 1.757v55.196c0 .97-.787 1.757-1.758 1.757H17.578c-.97 0-1.758-.787-1.758-1.757V21.445c0-.97.787-1.758 1.758-1.758z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 25.536c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 29.754c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 57.305c0-.583.472-1.055 1.055-1.055h14.633a1.055 1.055 0 110 2.11H38.101a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 61.523c0-.582.472-1.054 1.055-1.054H60.54a1.055 1.055 0 110 2.11H37.969a1.055 1.055 0 01-1.055-1.056z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M37.046 67.852c0-.583.472-1.055 1.055-1.055h28.696a1.055 1.055 0 110 2.11H38.1a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.914 72.07c0-.582.472-1.054 1.055-1.054h26.087a1.055 1.055 0 110 2.109H37.97a1.055 1.055 0 01-1.055-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.648 36.21c0-.582.472-1.054 1.054-1.054h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.516 40.43c0-.583.472-1.055 1.054-1.055h22.572a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"27.773\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"27.773\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"42.188\",\n cy: \"37.266\",\n r: \"2.109\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"42.188\",\n cy: \"47.813\",\n r: \"2.109\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"59.414\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.555\",\n cy: \"69.961\",\n r: \"3.164\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.648 46.758c0-.583.472-1.055 1.054-1.055h28.696a1.055 1.055 0 110 2.11H49.702a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.516 50.977c0-.583.472-1.055 1.054-1.055h26.088a1.055 1.055 0 110 2.11H49.57a1.055 1.055 0 01-1.054-1.055z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.524 37.969v-2.813h-.703v14.191h3.93v-.703h-3.227v-9.972h3.227v-.703h-3.227z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.423 27.07l-1.242 1.243-1.243-1.243h2.485z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.578 7.734h65.39a2.11 2.11 0 012.11 2.11v6.328a2.11 2.11 0 01-2.11 2.11h-65.39a2.11 2.11 0 01-2.11-2.11V9.844a2.11 2.11 0 012.11-2.11z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.39 13.008a2.11 2.11 0 012.11-2.11h24.61a2.11 2.11 0 110 4.22H22.5a2.11 2.11 0 01-2.11-2.11zM52.031 13.008a2.11 2.11 0 012.11-2.11h3.515a2.11 2.11 0 110 4.22h-3.515a2.11 2.11 0 01-2.11-2.11z\",\n fill: \"#979797\"\n})), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: \"-5.625\",\n y1: \"3.164\",\n x2: \"-5.625\",\n y2: \"90\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear\",\n x1: \"93.557\",\n y1: \"63.672\",\n x2: \"54.451\",\n y2: \"27.31\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n height: '100%',\n overflow: 'hidden',\n background: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n paddingTop: '115px'\n },\n info: {\n color: theme.palette.text.secondary,\n fontSize: '16px',\n lineHeight: '24px',\n marginTop: '16px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport EmptyIcon from './icons/EmptySources.svg';\n\nimport {useStyles} from './styles';\n\nconst EmptyState = () => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n <EmptyIcon />\n <span className={styles.info}>\n {i18n.text('Please persist your profile to be able to edit crosswalks')}\n </span>\n </div>\n );\n};\n\nexport default EmptyState;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n snackbarMessage: {\n display: 'flex',\n alignItems: 'center'\n },\n snackbarIcon: {\n paddingRight: 16\n }\n});\n","import React, {useContext} from 'react';\nimport i18n from 'ui-i18n';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, getLabel} from '@reltio/mdm-sdk';\nimport {UrlGeneratorsContext} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Link as Link} from '@material-ui/core';\nimport InfoIcon from '@material-ui/icons/Info';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n entity: Entity;\n message: string;\n};\n\nconst TreeActionSnackbar = ({entity, message}: Props) => {\n const styles = useStyles();\n const uiPath = useSelector(mdmModule.selectors.getUIPath);\n const {generateEntityUrl} = useContext(UrlGeneratorsContext);\n const entityLink = generateEntityUrl({uiPath, uri: entity.uri});\n\n return (\n <div className={styles.snackbarMessage}>\n <InfoIcon className={styles.snackbarIcon} />\n <Typography>\n {getLabel(entity.label)}{' '}\n <Link href={entityLink} target=\"_blank\">\n {i18n.text('lookup profile')}\n </Link>{' '}\n {message}\n </Typography>\n </div>\n );\n};\n\nexport default TreeActionSnackbar;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n paddingTop: '14px',\n paddingBottom: '13px',\n borderBottom: '1px solid rgba(0, 0, 0, 0.05)',\n whiteSpace: 'normal',\n '&:last-child': {\n borderBottom: 'none'\n }\n },\n label: {\n marginBottom: '2px',\n fontSize: '16px',\n lineHeight: '24px',\n color: theme.palette.text.primary\n },\n description: {\n fontSize: '13px',\n lineHeight: '15px',\n color: theme.palette.text.secondary\n }\n}));\n","import React from 'react';\nimport {SurvivorshipGroupType} from '@reltio/mdm-sdk';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype MenuItemProps = React.ComponentPropsWithoutRef<typeof MenuItem>;\n\ntype Props = {\n innerRef: React.Ref<HTMLLIElement>;\n innerProps: MenuItemProps;\n data: SurvivorshipGroupType;\n};\n\nexport const RulesetOption = ({innerRef, innerProps, data}: Props) => {\n const styles = useStyles();\n const {label, description} = data;\n\n return (\n <MenuItem className={styles.root} ref={innerRef} {...innerProps}>\n <Typography className={styles.label}>{label}</Typography>\n {description && <Typography className={styles.description}>{description}</Typography>}\n </MenuItem>\n );\n};\n","import React from 'react';\nimport {MenuListComponentProps} from 'react-select';\n\nexport const RulesetsMenuList = <OptionType, IsMulti extends boolean>(\n props: MenuListComponentProps<OptionType, IsMulti>\n) => {\n const {innerRef, getStyles, children} = props;\n const styles = {...getStyles('menuList', props), maxHeight: '500px', padding: 0};\n return (\n <div ref={innerRef} style={styles}>\n {children}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n width: '280px'\n }\n});\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {pipe, propEq, prop} from 'ramda';\nimport {DropDownSelector} from '@reltio/components';\nimport {getLabel, SurvivorshipGroupType} from '@reltio/mdm-sdk';\nimport {RulesetOption} from './RulesetOption/RulesetOption';\nimport {RulesetsMenuList} from './RulesetsMenuList/RulesetsMenuList';\nimport {useStyles} from './styles';\n\ntype Props = {\n survivorshipGroups: SurvivorshipGroupType[];\n currentSurvivorshipGroupUri: string;\n onChange: (uri: string) => void;\n};\n\nexport const RulesetsSelector = ({survivorshipGroups, currentSurvivorshipGroupUri, onChange}: Props) => {\n const styles = useStyles();\n const options = survivorshipGroups.map((group) => ({...group, label: getLabel(group.label)}));\n const value = options.find(propEq('uri', currentSurvivorshipGroupUri));\n return (\n <DropDownSelector\n height={40}\n className={styles.root}\n components={{Option: RulesetOption, MenuList: RulesetsMenuList}}\n label={i18n.text('Rulesets')}\n options={options}\n value={value}\n onChange={pipe(prop('uri'), onChange)}\n />\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n sourcesView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex'\n },\n '@global div[role=tooltip]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n '@global div[role=presentation]': {\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif'\n },\n resizablePanesWrapper: {\n flexGrow: 1,\n height: '100%'\n },\n pane: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n headerDivider: {\n marginLeft: '16px',\n marginRight: '8px',\n height: '32px',\n backgroundColor: 'rgba(0, 0, 0, 0.12)'\n },\n attributesTable: {\n backgroundColor: '#fff'\n }\n});\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {Dispatch} from 'redux';\nimport {connect} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {equals, pipe, pluck, propEq, reject} from 'ramda';\nimport mdmModule, {HistoryEvent, profile} from '@reltio/mdm-module';\nimport {\n ApiError,\n ApiErrorCode,\n AttributeType,\n collectContributorsFromTree,\n Entity,\n getEntityType,\n Metadata,\n SourcesPerspectiveConfig\n} from '@reltio/mdm-sdk';\nimport {\n AttributesTable,\n CrosswalkDragLayer,\n CrosswalksDisplayProvider,\n ExpandedAttributesProvider,\n HistoryHeader,\n HistoryPanelEmptyState,\n HistoryView,\n ProfileResizablePanes,\n ScreenProfileBand,\n useDidUpdateEffect,\n useHistory,\n useHistoryEnabled,\n useHistorySlice,\n useModifiedEntity,\n useSavedState,\n useSnackbar\n} from '@reltio/components';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Divider as Divider} from '@material-ui/core';\nimport HistoryIcon from '@material-ui/icons/History';\nimport {RightSidePanel} from '../RightSidePanel/RightSidePanel';\nimport LegendView from '../LegendView/LegendView';\nimport {LegendMode, SourcesSavedState} from '../../types';\nimport {useCrosswalkTree} from '../../hooks/useCrosswalkTree';\nimport LegendIcon from './icons/LegendIcon.svg';\nimport {showErrorMessage} from '../../services/errors';\nimport {useCrosswalkTreeActions} from '../../hooks/useCrosswalkTreeActions';\nimport {useCrosswalksDisplay} from '../../hooks/useCrosswalksDisplay';\nimport {useEntityWithSurvivorshipGroups} from '../../hooks/useEntityWithSurvivorshipGroups';\nimport HTML5Backend from 'react-dnd-html5-backend';\nimport {DndProvider} from 'react-dnd';\nimport EmptyState from '../EmptyState/EmptyState';\nimport TreeActionSnackbar from '../TreeActionSnackbar/TreeActionSnackbar';\nimport {RulesetsSelector} from '../RulesestsSelector/RulesestsSelector';\nimport {useStyles} from './styles';\n\nconst perspectiveId = 'source';\n\ntype Props = {\n config: SourcesPerspectiveConfig;\n entity: Entity;\n metadata: Metadata;\n saveState: (state: SourcesSavedState) => void;\n getSavedState: () => Promise<SourcesSavedState>;\n dispatch: Dispatch;\n historyEvent: HistoryEvent;\n};\n\nenum ActivePanel {\n Legend,\n History\n}\n\nconst SourcesView = ({\n config,\n entity: defaultEntity,\n metadata,\n getSavedState,\n saveState,\n dispatch,\n historyEvent\n}: Props) => {\n const styles = useStyles();\n const [activeMode, setActiveMode] = useState(LegendMode.Crosswalk);\n const [isCrosswalkTreeLoading, setIsCrosswalkTreeLoading] = useState(false);\n\n const {\n survivorshipGroups,\n currentSurvivorshipGroupUri,\n onChangeSurvivorshipGroup,\n entity,\n isDefaultSurvivorshipGroupUri,\n isLoading: isEntityLoading\n } = useEntityWithSurvivorshipGroups(defaultEntity);\n\n const {isHistoryEnabled, isProfilePersisted} = useHistoryEnabled({\n perspectiveId,\n entity,\n historyButtonId: ActivePanel.History\n });\n\n const persistedEntity = isProfilePersisted ? entity : null;\n\n const entityUri = persistedEntity?.uri;\n const entityType = getEntityType(metadata, entity?.type);\n\n const {historySlice} = useHistorySlice({entity: persistedEntity, historyEvent});\n\n const [selectedAttrTypes, setSelectedAttrTypes] = useState<AttributeType[]>();\n useDidUpdateEffect(() => {\n setSelectedAttrTypes(undefined);\n }, [historySlice]);\n useDidUpdateEffect(() => {\n setSelectedAttrTypes(undefined);\n }, [entityUri]);\n\n const {SnackbarRenderer, showSnackbarMessage} = useSnackbar({\n anchorOrigin: {vertical: 'top', horizontal: 'center'},\n showDismiss: true\n });\n const {isLoaded, savedState} = useSavedState<SourcesSavedState>(getSavedState);\n const [visibleColumns, setVisibleColumns] = useState<string[]>();\n useEffect(() => {\n if (isLoaded) {\n setVisibleColumns(savedState.visibleColumns);\n }\n }, [isLoaded]); // eslint-disable-line\n useEffect(() => {\n const hasVisibleColumnsChanged = !equals(visibleColumns, savedState.visibleColumns);\n if (isLoaded && hasVisibleColumnsChanged) {\n saveState({visibleColumns});\n }\n }, [visibleColumns]); // eslint-disable-line\n\n const onCrosswalkTreeLoaded = useCallback(() => {\n setIsCrosswalkTreeLoading(false);\n }, []);\n\n const {crosswalkTree, reload: reloadCrosswalkTree} = useCrosswalkTree({\n entityUri: historySlice?.aEntity.uri || entityUri,\n onSuccess: onCrosswalkTreeLoaded\n });\n const contributors = useMemo(() => collectContributorsFromTree(crosswalkTree), [crosswalkTree]);\n\n const refreshEntity = useCallback(() => {\n entityUri &&\n dispatch(\n profile.entity.actions.loadEntity({\n viewId: config.id,\n uri: entityUri\n })\n );\n }, [entityUri, config, dispatch]);\n\n const refreshData = useCallback(pipe(refreshEntity, reloadCrosswalkTree), [refreshEntity, reloadCrosswalkTree]);\n\n const {\n modifiedEntity,\n crosswalksMap,\n newlyCreatedAttributes,\n onDeleteAttribute,\n onPinAttribute,\n onIgnoreAttribute,\n onEditAttribute,\n onAddAttribute\n } = useModifiedEntity({\n entity: historySlice?.aEntity || persistedEntity,\n onModify: refreshData,\n onError: showErrorMessage\n });\n\n const displayProps = useCrosswalksDisplay({activeMode, contributors, entity});\n const onShowMessage = useCallback((message: string, entity?: Entity) => {\n showSnackbarMessage(entity ? <TreeActionSnackbar entity={entity} message={message} /> : message);\n }, []);\n\n const {addCrosswalk, deleteCrosswalk, editCrosswalk, unmergeContributor, unsubscribeContributor} =\n useCrosswalkTreeActions({\n onShowMessage,\n onSuccess: refreshData,\n onError: useCallback(\n (error: ApiError) => {\n showErrorMessage(error);\n if (error.errorCode === ApiErrorCode.CROSSWALK_NOT_FOUND) {\n refreshData();\n }\n },\n [refreshData]\n ),\n onLoad: useCallback(() => setIsCrosswalkTreeLoading(true), [])\n });\n\n const {\n historyFilter,\n onApplyFilter,\n isLoading: isHistoryLoading,\n historicUris,\n historyWithTotal,\n canLoadMore,\n onLoadMore\n } = useHistory({entity: persistedEntity, enabled: isHistoryEnabled});\n\n const tabs = [\n {\n buttonProps: {\n id: ActivePanel.Legend,\n icon: LegendIcon,\n tooltipTitle: i18n.text('Legend')\n },\n title: <Typography variant=\"h6\">{i18n.text('Legend')}</Typography>,\n content: (\n <LegendView\n activeMode={activeMode}\n onChangeMode={setActiveMode}\n entity={historySlice?.aEntity || persistedEntity}\n crosswalkTree={crosswalkTree}\n contributors={contributors}\n selectedAttributeTypes={selectedAttrTypes}\n readOnly={!!historySlice || isCrosswalkTreeLoading}\n onAddCrosswalk={addCrosswalk}\n onUnmergeContributor={unmergeContributor}\n onUnsubscribeContributor={unsubscribeContributor}\n onEditCrosswalk={editCrosswalk}\n onDeleteCrosswalk={deleteCrosswalk}\n />\n )\n },\n {\n buttonProps: {\n id: ActivePanel.History,\n icon: HistoryIcon,\n tooltipTitle: i18n.text('History')\n },\n title: (\n <HistoryHeader\n total={(historicUris?.length || 0) + 1}\n entityType={entityType}\n filter={historyFilter}\n onApplyFilter={onApplyFilter}\n />\n ),\n content: isProfilePersisted ? (\n <HistoryView\n isLoading={isHistoryLoading}\n historyWithTotal={historyWithTotal}\n contributorsUris={historicUris}\n entityUri={entityUri}\n historyEvent={historyEvent}\n onLoadMore={onLoadMore}\n canLoadMore={canLoadMore}\n />\n ) : (\n <HistoryPanelEmptyState />\n )\n }\n ];\n const additionalHeaderItems = (\n <>\n <RulesetsSelector\n survivorshipGroups={survivorshipGroups}\n currentSurvivorshipGroupUri={currentSurvivorshipGroupUri}\n onChange={onChangeSurvivorshipGroup}\n />\n <Divider className={styles.headerDivider} orientation=\"vertical\" />\n </>\n );\n\n return (\n <div className={styles.sourcesView}>\n <CrosswalksDisplayProvider {...displayProps}>\n <DndProvider backend={HTML5Backend}>\n <CrosswalkDragLayer />\n <ProfileResizablePanes\n perspectiveId={perspectiveId}\n buttonsProps={pipe(reject(propEq('hidden', true)), pluck('buttonProps'))(tabs)}\n >\n <>\n <ScreenProfileBand entity={entity} historySlice={historySlice} />\n {isProfilePersisted ? (\n <ExpandedAttributesProvider attributeUris={newlyCreatedAttributes}>\n <AttributesTable\n className={styles.attributesTable}\n isLoading={isEntityLoading}\n visibleColumns={visibleColumns}\n onChangeVisibleColumns={setVisibleColumns}\n entity={modifiedEntity}\n crosswalksMap={crosswalksMap}\n selectedAttributeTypes={selectedAttrTypes}\n onSelectAttributeTypes={setSelectedAttrTypes}\n readOnly={!!historySlice || !isDefaultSurvivorshipGroupUri}\n onDelete={onDeleteAttribute}\n onPin={onPinAttribute}\n onIgnore={onIgnoreAttribute}\n onEdit={onEditAttribute}\n onAdd={onAddAttribute}\n additionalHeaderItems={additionalHeaderItems}\n activeSurvivorshipGroupUri={currentSurvivorshipGroupUri}\n />\n </ExpandedAttributesProvider>\n ) : (\n <EmptyState />\n )}\n </>\n <RightSidePanel tabs={tabs} />\n </ProfileResizablePanes>\n </DndProvider>\n </CrosswalksDisplayProvider>\n <SnackbarRenderer />\n </div>\n );\n};\n\nconst mapStateToProps = (state) => {\n return {\n entity: mdmModule.selectors.getEntity(state),\n metadata: mdmModule.selectors.getMetadata(state),\n historyEvent: mdmModule.selectors.getHistoryEvent(state)\n };\n};\n\nexport default connect(mapStateToProps)(SourcesView);\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {pipe, propOr, find, propEq, prop} from 'ramda';\nimport {getEntityType, getEntityBySurvivorshipGroupUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useEntityWithSurvivorshipGroups = (defaultEntity: Entity) => {\n const entityTypeUri = defaultEntity?.type;\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const survivorshipGroups = pipe(getEntityType(metadata), propOr([], 'survivorshipGroups'))(entityTypeUri);\n const defaultSurvivorshipGroupUri = pipe(find(propEq('default', true)), prop('uri'))(survivorshipGroups);\n const [currentSurvivorshipGroupUri, setCurrentSurvivorshipGroupUri] = useState(null);\n const [entity, setEntity] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const safePromise = useSafePromise();\n\n useEffect(() => {\n if (defaultEntity) {\n setEntity(defaultEntity);\n setCurrentSurvivorshipGroupUri(defaultSurvivorshipGroupUri);\n }\n }, [defaultEntity, defaultSurvivorshipGroupUri]);\n\n const onChangeSurvivorshipGroup = useCallback(\n (survivorshipGroupUri: string) => {\n setCurrentSurvivorshipGroupUri(survivorshipGroupUri);\n const isDefaultSurvivorshipGroupUri = defaultSurvivorshipGroupUri === survivorshipGroupUri;\n if (!isDefaultSurvivorshipGroupUri) {\n setIsLoading(true);\n safePromise(getEntityBySurvivorshipGroupUri(entity.uri, survivorshipGroupUri))\n .then(setEntity)\n .finally(() => setIsLoading(false));\n } else {\n setEntity(defaultEntity);\n }\n },\n [defaultEntity, defaultSurvivorshipGroupUri, entity, safePromise]\n );\n\n const isDefaultSurvivorshipGroupUri = defaultSurvivorshipGroupUri === currentSurvivorshipGroupUri;\n\n return {\n survivorshipGroups,\n currentSurvivorshipGroupUri,\n onChangeSurvivorshipGroup,\n entity,\n isLoading,\n isDefaultSurvivorshipGroupUri\n };\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {getCrosswalkTree, CrosswalkTree} from '@reltio/mdm-sdk';\nimport {noop, useSafePromise} from '@reltio/components';\n\ntype Props = {\n entityUri?: string;\n onSuccess?: () => void;\n};\n\nexport const useCrosswalkTree = ({entityUri, onSuccess = noop}: Props) => {\n const [crosswalkTree, setCrosswalkTree] = useState<CrosswalkTree>(null);\n const safePromise = useSafePromise();\n\n const onError = (e) => {\n console.warn('Failed to load crosswalk tree', e);\n setCrosswalkTree(null);\n };\n\n const loadData = useCallback(() => {\n if (entityUri) {\n safePromise(getCrosswalkTree({entityUri}))\n .then((results) => {\n setCrosswalkTree(results);\n })\n .catch(onError)\n .finally(onSuccess);\n } else {\n setCrosswalkTree(null);\n onSuccess();\n }\n }, [entityUri, onSuccess]);\n\n useEffect(() => {\n loadData();\n }, [loadData]);\n\n return {crosswalkTree, reload: loadData};\n};\n","import {useCallback, useEffect, useMemo, useState, useRef} from 'react';\nimport {any, concat} from 'ramda';\nimport {LegendMode} from '../types';\nimport {\n Contributor,\n CrosswalkBase,\n debounce,\n Entity,\n eqCrosswalks,\n findContributorForCrosswalk,\n getContributorColor,\n getCrosswalkColor,\n getCrosswalkId,\n getSourceColor\n} from '@reltio/mdm-sdk';\n\ntype Props = {\n activeMode: LegendMode;\n contributors: Contributor[];\n entity: Entity;\n};\n\nexport const useCrosswalksDisplay = ({activeMode, contributors, entity}: Props) => {\n const getCrosswalkColorForActiveMode = useCallback(\n (crosswalk: CrosswalkBase) => {\n switch (activeMode) {\n case LegendMode.Source:\n return getSourceColor(crosswalk.type);\n case LegendMode.Contributor:\n return getContributorColor(findContributorForCrosswalk(contributors, crosswalk)?.uri || '');\n case LegendMode.Crosswalk:\n return getCrosswalkColor(getCrosswalkId(crosswalk));\n }\n },\n [activeMode, contributors]\n );\n const [highlightedCrosswalks, setHighlightedCrosswalks] = useState<CrosswalkBase[]>([]);\n const highlightedCrosswalksCache = useRef([]);\n const applyHighlightedCrosswalks = useCallback(\n debounce(() => {\n setHighlightedCrosswalks([...highlightedCrosswalksCache.current]);\n }, 50),\n []\n );\n const cacheHighlightedCrosswalks = useCallback(\n (arr) => {\n highlightedCrosswalksCache.current = arr;\n applyHighlightedCrosswalks(arr);\n },\n [applyHighlightedCrosswalks]\n );\n\n const setCrosswalkHighlighted = useCallback(\n (crosswalk: CrosswalkBase, highlighted: boolean) => {\n if (!crosswalk) return;\n if (highlighted) {\n if (activeMode === LegendMode.Contributor) {\n const contributor = findContributorForCrosswalk(contributors, crosswalk);\n cacheHighlightedCrosswalks([crosswalk, ...(contributor?.crosswalks || [])]);\n } else {\n cacheHighlightedCrosswalks([crosswalk]);\n }\n } else {\n cacheHighlightedCrosswalks([]);\n }\n },\n [activeMode, cacheHighlightedCrosswalks, contributors]\n );\n\n const [focusedCrosswalks, setFocusedCrosswalks] = useState<CrosswalkBase[]>([]);\n const calculateFocusedCrosswalks = useCallback(\n (prev: CrosswalkBase[], next: CrosswalkBase[]) =>\n concat(\n prev.filter((prevCrosswalk) => !any(eqCrosswalks(prevCrosswalk), next)),\n next.filter((nextCrosswalk) => !any(eqCrosswalks(nextCrosswalk), prev))\n ),\n []\n );\n const toggleCrosswalkFocus = useCallback(\n (crosswalk: CrosswalkBase) => {\n if (!crosswalk) return;\n if (activeMode === LegendMode.Contributor) {\n const contributor = findContributorForCrosswalk(contributors, crosswalk);\n setFocusedCrosswalks((prevValue) =>\n calculateFocusedCrosswalks([crosswalk, ...(contributor?.crosswalks || [])], prevValue)\n );\n } else {\n setFocusedCrosswalks((prevValue) => calculateFocusedCrosswalks([crosswalk], prevValue));\n }\n },\n [activeMode, calculateFocusedCrosswalks, contributors]\n );\n\n useEffect(() => {\n if (focusedCrosswalks.length) {\n setFocusedCrosswalks([]);\n }\n }, [activeMode, entity]);\n\n return {\n getCrosswalkColor: getCrosswalkColorForActiveMode,\n highlightedCrosswalks: useMemo(\n () => [...highlightedCrosswalks, ...focusedCrosswalks],\n [highlightedCrosswalks, focusedCrosswalks]\n ),\n focusedCrosswalks,\n toggleCrosswalkFocus,\n setCrosswalkHighlighted\n };\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {andThen, pipe} from 'ramda';\nimport i18n from 'ui-i18n';\nimport mdm from '@reltio/mdm-module';\nimport {\n Entity,\n unmergeContributor as unmergeContributorRequest,\n unsubscribeEntityFromDataTenantEntity\n} from '@reltio/mdm-sdk';\nimport {useCrosswalkActions, noop} from '@reltio/components';\nimport {UnmergeContributorEvent, UnsubscribeContributorEvent} from '../types';\n\ntype Props = {\n onLoad?: () => void;\n onSuccess?: () => void;\n onError?: (error: unknown) => void;\n onShowMessage?: (message: string, entity?: Entity) => void;\n};\n\nexport const useCrosswalkTreeActions = ({\n onLoad = noop,\n onSuccess = noop,\n onError = noop,\n onShowMessage = noop\n}: Props) => {\n const {addCrosswalk, editCrosswalk, deleteCrosswalk} = useCrosswalkActions({onLoad, onSuccess, onError});\n const dtssPath = useSelector(mdm.selectors.getDtssPath);\n const tenant = useSelector(mdm.selectors.getTenant);\n\n const handleAction = useCallback(\n (request: Promise<unknown>) => {\n onLoad();\n request\n .then(() => {\n onSuccess();\n })\n .catch(onError);\n },\n [onLoad, onError, onSuccess]\n );\n\n const unmergeContributor = useCallback(\n (event: UnmergeContributorEvent) =>\n pipe(\n unmergeContributorRequest,\n andThen((response) => {\n onShowMessage(i18n.text('has been unmerged'), response.b);\n return response;\n }),\n handleAction\n )(event),\n [handleAction, onShowMessage]\n );\n\n const unsubscribeContributor = useCallback(\n ({crosswalk, dataTenant}: UnsubscribeContributorEvent) =>\n pipe(\n unsubscribeEntityFromDataTenantEntity,\n andThen((response) => {\n if (!response.successful) throw new Error(i18n.text('Failed to unsubscribe contributor'));\n return response;\n }),\n handleAction\n )({\n dtssPath,\n value: crosswalk.value,\n type: crosswalk.type,\n sourceTable: crosswalk.sourceTable,\n dataTenant: dataTenant.id,\n customerTenant: tenant\n }),\n [handleAction, dtssPath, tenant]\n );\n\n return {\n addCrosswalk,\n editCrosswalk,\n deleteCrosswalk,\n unmergeContributor,\n unsubscribeContributor\n };\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\n\nimport MomentUtils from '@date-io/moment';\nimport {createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport {ErrorPopup, ViewIdContext} from '@reltio/components';\nimport {SourcesSavedState} from '../../types';\nimport SourcesView from './SourcesView';\nimport {promisifyCallback, SourcesPerspectiveConfig} from '@reltio/mdm-sdk';\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'sourcesPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n config: SourcesPerspectiveConfig;\n store: Store<unknown>;\n onResize?: (width: number, height: number) => void;\n saveState: (state: SourcesSavedState) => void;\n getSavedState: (clb: (state: SourcesSavedState) => void) => void;\n};\n\nconst SourcesPerspective = ({config, store, onResize, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<SourcesSavedState> = useCallback(promisifyCallback(getSavedState), [\n getSavedState\n ]);\n return (\n <Provider store={store}>\n <ViewIdContext.Provider value={config.id}>\n <StylesProvider generateClassName={generateClassName}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => onResize?.(Math.floor(width), Math.floor(height))}\n />\n {config && (\n <SourcesView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n )}\n <ErrorPopup />\n </MuiPickersUtilsProvider>\n </StylesProvider>\n </ViewIdContext.Provider>\n </Provider>\n );\n};\n\nexport default SourcesPerspective;\n","import {SourcesView} from '@reltio/sources';\n\nexport default SourcesView;\n"],"names":["contextSelector","CellRenderer","withContext","TableContext","useSavedState","getSavedState","isLoaded","setIsLoaded","useState","savedState","setSavedState","useEffect","then","_","catch","useStyles","makeStyles","header","display","flexDirection","alignItems","padding","borderBottom","closeButton","marginRight","RightSidePanel","active","onClose","tabs","styles","content","title","className","SmallIconButton","icon","CloseIcon","onClick","LegendMode","sumValues","links","pipe","map","prop","sum","data","width","height","useMemo","nodes","sankeyLayout","nodeWidth","smallestNodeMaxHeight","smallestNodeMinHeight","nodePadding","size","sankey","graph","forEach","node","sourceLinks","targetLinks","link","source","push","target","computeNodeLinks","value","Math","max","computeNodeValues","length","nextNodes","remainingNodes","x","dx","indexOf","w","computeNodeBreadths","nodesByBreadth","groupBy","toPairs","sort","a","b","nth","ky","reduce","min","Infinity","i","y","dy","initializeNodeDepth","y0","n","y1","last","computeNodeDepths","computeLinkDepths","concat","ty","correctNodesDepth","result","linksByUuid","l","crosswalk","uuid","sourceNodes","this","j","index","resultByUuid","newSources","filter","sizeForNewSources","sy","setNodeWidth","setNodePadding","setSmallestNodeMaxHeight","setSmallestNodeMinHeight","setSize","newSize","update","curvature","d","lastLine","x0","x1","xi","t","x2","x3","appendix","arguments","path","safeData","safeNodes","getSafeNode","originalNode","safeLinks","shallowCopy","tooltipTitle","fontWeight","fontSize","lineHeight","letterSpacing","marginBottom","userSelect","tooltipRow","tooltipIcon","color","stroke","strokeWidth","strokeOpacity","rootNode","transform","popupContainer","boxSizing","user","time","children","i18n","CalendarToday","Person","LightArrowTooltip","placement","_extends","Object","assign","key","prototype","hasOwnProperty","call","apply","props","React","viewBox","version","xmlns","xmlnsXlink","id","fill","fillRule","xlinkHref","fillOpacity","mask","highlightEnabled","isColored","disableUnmerge","onUnmerge","isDragging","labelX","setLabelX","anchorEl","setAnchorEl","textRef","useRef","name","label","entity","crosswalks","merges","firstCrosswalk","isDimmed","highlightCrosswalk","removeHighlight","useCrosswalkHighlight","useCrosswalkColor","startNodeHeight","closePopup","nodeHeight","textWidth","current","clientWidth","ref","opacity","onMouseEnter","onMouseLeave","noop","e","currentTarget","cursor","Popover","open","anchorOrigin","vertical","horizontal","classes","paper","UnmergeIcon","timeMap","sources","start","end","acc","head","renderMergeNodes","accentContributors","setDragging","isMouseDown","setMouseDown","previousPageX","setPreviousPageX","offsetX","setOffsetX","useSankey","sankeyNodes","sankeyLinks","extractPositionDelta","event","left","pageX","onUp","pointerEvents","onMouseDown","preventDefault","onMouseMove","onMouseUp","filterUnits","type","values","isCrosswalkDisplayed","curry","displayedCrosswalks","some","eqCrosswalks","filterDisplayedCrosswalks","tree","evolve","losers","addCrosswalkUniqueId","count","addIdToSubtree","loser","processTree","processSubTree","parentIndex","uri","mergesCrosswalks","chain","Date","now","linkedNodes","uniq","includes","memo","crosswalkTree","entityLabel","visibleCrosswalks","sankeyData","getSankeyData","refreshMode","refreshRate","handleWidth","handleHeight","theme","root","paddingRight","marginLeft","focusedIcon","isFocused","borderRadius","palette","text","secondary","paddingLeft","primary","contributorUri","focusable","contributorActions","onToggleFocus","VisibilityIcon","disabled","Typography","variant","getLastUriPart","Spacer","show","buttonProps","showForDisabled","contributorColor","position","border","borderLeft","top","bottom","marginTop","editor","accentContributor","crosswalksBySources","expandedSources","canUnmerge","disableAddCrosswalk","disableEditCrosswalk","disableDeleteCrosswalk","disableUnmergeContributor","onEdit","onDelete","onAdd","onToggleSourceExpanded","onUnsubscribeContributor","getContributorColor","dataTenants","useSelector","mdm","scrollToCrosswalk","useHighlightedCrosswalks","find","propOr","flatten","scrollIntoView","behavior","showEditor","setShowEditor","contributorCrosswalk","pluck","CrosswalkType","toggleCrosswalkFocus","useCrosswalkFocus","allContributorCrosswalks","dataTenantForExternalCrosswalk","getDataTenantFromCrosswalks","AddIcon","UnsubscribeIcon","dataTenant","classnames","crosswalksByTypes","SourceCrosswalksRow","showCrosswalkColors","crosswalksFocusEnabled","expanded","onToggleExpanded","CrosswalkEditor","table","overflowY","overflowX","tableRow","margin","maxWidth","entityType","contributors","selectedAttributeTypes","onChangeVisibleCrosswalks","readOnly","onAddCrosswalk","onEditCrosswalk","onDeleteCrosswalk","onUnmergeContributor","rowsData","entityCrosswalks","relationCrosswalks","getRelationCrosswalks","contributor","isEmptyValue","ownerType","relationCrosswalk","entityCrosswalk","groupCrosswalksByTypesAndSources","buildTableRowsData","expandedByContributor","setExpandedByContributor","isExpandedSource","collectVisibleCrosswalks","handleDelete","useCallback","crosswalkId","entityUri","handleEdit","params","checkCanCreateCrosswalk","checkCanEditCrosswalk","checkCanDeleteCrosswalk","sourceUri","unless","has","assoc","ifElse","without","append","container","hintIcon","verticalAlign","background","checkedIcon","right","main","selectedTree","SelectableTree","coloredCrosswalks","selected","onSelect","getCrosswalkColor","getUniqueCrosswalkColor","getCrosswalkId","Info","CheckCircle","dialogContainer","dialogTitle","dialogContent","trees","UnmergeDialog","unmergeOperation","setUnmergeOperation","UnmergeOperation","getColoredCrosswalks","includeMerges","collectCrosswalksFromContributor","Dialog","DialogTitle","DialogContent","toUpperCase","DialogActions","Button","UnsubscribeDialog","canUnsubscribe","modeSwitcher","backgroundColor","infoIcon","hint","alignSelf","hintText","crosswalksList","divider","pane","overflow","resizablePanesWrapper","flexGrow","activeMode","onChangeMode","tableProps","metadata","mdmModule","getEntityType","viewRef","paneSize","setPaneSize","handlePaneSizeChange","percentageSize","contributorForUnmerge","setContributorForUnmerge","unsubscribeInfo","setUnsubscribeInfo","crosswalkTreeDeep","calculateCrosswalkTreeDeep","maxPaneHeight","clientHeight","modes","Crosswalk","Source","Contributor","setVisibleCrosswalks","checkMetadataPermission","MetadataPermissions","operationType","ModeSwitcher","modeId","onChange","ResizablePanes","orientation","minSize","maxSize","allowResize","isEmpty","getLabel","masktype","maskUnits","clipRule","showErrorMessage","error","console","ErrorPopup","message","getRequestErrorMessage","cx","cy","r","style","maskType","y2","gradientUnits","stopColor","stopOpacity","offset","default","paddingTop","info","snackbarMessage","snackbarIcon","uiPath","generateEntityUrl","useContext","UrlGeneratorsContext","entityLink","Link","href","paddingBottom","whiteSpace","description","RulesetOption","innerRef","innerProps","MenuItem","RulesetsMenuList","getStyles","maxHeight","RulesetsSelector","survivorshipGroups","currentSurvivorshipGroupUri","options","group","propEq","DropDownSelector","components","Option","MenuList","sourcesView","fontFamily","headerDivider","attributesTable","perspectiveId","ActivePanel","connect","state","historyEvent","config","defaultEntity","saveState","dispatch","setActiveMode","isCrosswalkTreeLoading","setIsCrosswalkTreeLoading","onChangeSurvivorshipGroup","isDefaultSurvivorshipGroupUri","isLoading","isEntityLoading","entityTypeUri","defaultSurvivorshipGroupUri","setCurrentSurvivorshipGroupUri","setEntity","setIsLoading","safePromise","useSafePromise","survivorshipGroupUri","getEntityBySurvivorshipGroupUri","finally","useEntityWithSurvivorshipGroups","isHistoryEnabled","isProfilePersisted","useHistoryEnabled","historyButtonId","History","persistedEntity","historySlice","useHistorySlice","selectedAttrTypes","setSelectedAttrTypes","useDidUpdateEffect","undefined","SnackbarRenderer","showSnackbarMessage","useSnackbar","showDismiss","visibleColumns","setVisibleColumns","hasVisibleColumnsChanged","equals","onCrosswalkTreeLoaded","reload","reloadCrosswalkTree","onSuccess","setCrosswalkTree","onError","warn","loadData","getCrosswalkTree","results","useCrosswalkTree","aEntity","collectContributorsFromTree","refreshEntity","profile","viewId","refreshData","modifiedEntity","crosswalksMap","newlyCreatedAttributes","onDeleteAttribute","onPinAttribute","onIgnoreAttribute","onEditAttribute","onAddAttribute","useModifiedEntity","onModify","displayProps","getCrosswalkColorForActiveMode","getSourceColor","findContributorForCrosswalk","highlightedCrosswalks","setHighlightedCrosswalks","highlightedCrosswalksCache","applyHighlightedCrosswalks","debounce","cacheHighlightedCrosswalks","arr","setCrosswalkHighlighted","highlighted","focusedCrosswalks","setFocusedCrosswalks","calculateFocusedCrosswalks","prev","next","prevCrosswalk","any","nextCrosswalk","prevValue","useCrosswalksDisplay","onShowMessage","addCrosswalk","deleteCrosswalk","editCrosswalk","unmergeContributor","unsubscribeContributor","onLoad","useCrosswalkActions","dtssPath","tenant","handleAction","request","unmergeContributorRequest","andThen","response","unsubscribeEntityFromDataTenantEntity","successful","Error","sourceTable","customerTenant","useCrosswalkTreeActions","errorCode","ApiErrorCode","historyFilter","onApplyFilter","isHistoryLoading","historicUris","historyWithTotal","canLoadMore","onLoadMore","useHistory","enabled","Legend","LegendIcon","HistoryIcon","HistoryHeader","total","HistoryView","contributorsUris","HistoryPanelEmptyState","additionalHeaderItems","Divider","DndProvider","backend","HTML5Backend","CrosswalkDragLayer","ProfileResizablePanes","buttonsProps","reject","ScreenProfileBand","attributeUris","AttributesTable","onChangeVisibleColumns","onSelectAttributeTypes","onPin","onIgnore","activeSurvivorshipGroupUri","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","onResize","getSavedStatePromisified","promisifyCallback","Provider","ViewIdContext","StylesProvider","MuiPickersUtilsProvider","utils","MomentUtils","floor"],"sourceRoot":""}
|