@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.
Files changed (87) hide show
  1. package/1032.js +1 -1
  2. package/1032.js.map +1 -1
  3. package/1268.js +1 -1
  4. package/1396.js +1 -1
  5. package/1396.js.map +1 -1
  6. package/1901.js +3 -0
  7. package/1901.js.map +1 -0
  8. package/233.js +2 -0
  9. package/233.js.map +1 -0
  10. package/316.js +2 -0
  11. package/316.js.map +1 -0
  12. package/3164.js +2 -0
  13. package/3164.js.map +1 -0
  14. package/3396.js +1 -1
  15. package/3396.js.map +1 -1
  16. package/3758.js +2 -0
  17. package/3758.js.map +1 -0
  18. package/385.js +2 -0
  19. package/385.js.map +1 -0
  20. package/4120.js +2 -0
  21. package/4120.js.map +1 -0
  22. package/4183.js +1 -1
  23. package/4183.js.map +1 -1
  24. package/4571.js +1 -1
  25. package/545.js +2 -0
  26. package/545.js.map +1 -0
  27. package/5605.js.map +1 -1
  28. package/566.js +2 -0
  29. package/566.js.map +1 -0
  30. package/{4407.css → 574.css} +1 -1
  31. package/574.css.map +1 -0
  32. package/574.js +2 -0
  33. package/574.js.map +1 -0
  34. package/{6046.js → 6211.js} +2 -2
  35. package/6211.js.map +1 -0
  36. package/6233.js +1 -1
  37. package/6233.js.map +1 -1
  38. package/6299.js.map +1 -1
  39. package/{5285.js → 6578.js} +2 -2
  40. package/6578.js.map +1 -0
  41. package/7198.js +2 -0
  42. package/7198.js.map +1 -0
  43. package/769.js +2 -0
  44. package/769.js.map +1 -0
  45. package/8594.js +2 -0
  46. package/8594.js.map +1 -0
  47. package/8684.js +1 -1
  48. package/{3294.js → 8768.js} +2 -2
  49. package/8768.js.map +1 -0
  50. package/9835.js +2 -0
  51. package/9835.js.map +1 -0
  52. package/package.json +1 -1
  53. package/remoteEntry.js +1 -1
  54. package/remoteEntry.js.map +1 -1
  55. package/3270.js +0 -2
  56. package/3270.js.map +0 -1
  57. package/3294.js.map +0 -1
  58. package/4407.css.map +0 -1
  59. package/4407.js +0 -2
  60. package/4407.js.map +0 -1
  61. package/5285.js.map +0 -1
  62. package/6046.js.map +0 -1
  63. package/6103.js +0 -2
  64. package/6103.js.map +0 -1
  65. package/6244.js +0 -2
  66. package/6244.js.map +0 -1
  67. package/6413.js +0 -3
  68. package/6413.js.map +0 -1
  69. package/6669.js +0 -2
  70. package/6669.js.map +0 -1
  71. package/6719.js +0 -2
  72. package/6719.js.map +0 -1
  73. package/6880.js +0 -2
  74. package/6880.js.map +0 -1
  75. package/8443.js +0 -2
  76. package/8443.js.map +0 -1
  77. package/8932.js +0 -2
  78. package/8932.js.map +0 -1
  79. package/929.js +0 -2
  80. package/929.js.map +0 -1
  81. package/9481.js +0 -2
  82. package/9481.js.map +0 -1
  83. package/9561.js +0 -2
  84. package/9561.js.map +0 -1
  85. package/9852.js +0 -2
  86. package/9852.js.map +0 -1
  87. /package/{6413.js.LICENSE.txt → 1901.js.LICENSE.txt} +0 -0
package/8594.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_reltio_remotes=self.webpackChunk_reltio_remotes||[]).push([[8594],{68439:(e,t,n)=>{n.d(t,{Z:()=>h});var a=n(24328),r=n.n(a),i=n(52730),o=n(71153),l=n.n(o),s=n(94079),c=n(67958),u=n(49885),d=n(95613);const p=(0,n(79692).Z)({"entityType-overflow":{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap"},"entityType-small":{padding:"1px 4px",fontSize:"10px",lineHeight:"normal",marginRight:"12px",borderRadius:"2px",flexShrink:0},"entityType-medium":{padding:"2px 8px 3px",borderRadius:"2px",fontSize:"13px",fontWeight:500,lineHeight:"15px",marginRight:"16px",flexShrink:0}}),h=e=>{let{entity:t,className:n,size:a="small"}=e;const o=p(),h=(0,i.useSelector)(u.ZP.selectors.getMetadata),m=t.type,b=(0,c.nt9)(h,m)||{},g=(0,c.VD3)(h,b,"typeColor")||c.rSc.palette.primary.main,f=(0,c.jFi)(h,t);return r().createElement(d.Z,{value:f,placement:"top"},r().createElement(s.Typography,{style:{backgroundColor:g,color:c.P6Y.Colors.getColor(g)?"#FFFFFF":"#212121"},className:l()(o[`entityType-${a}`],o["entityType-overflow"],n),component:"div"},f))}},64459:(e,t,n)=>{n.d(t,{Z:()=>f});var a=n(24328),r=n.n(a),i=n(71153),o=n.n(i),l=n(52730),s=n(17440),c=n(94079),u=n(87918),d=n.n(u),p=n(67958),h=n(49885),m=n(53180),b=n(68439);const g=(0,n(79692).Z)((e=>({profileBandWrapper:{flexShrink:0},profileBand:{display:"flex",padding:"16px 12px 16px 16px",alignItems:"flex-start",backgroundColor:"#fff",boxShadow:"0px 1px 0px rgba(0, 0, 0, 0.12)",marginBottom:"1px","&:after":{content:'""',minHeight:"inherit",fontSize:0}},inactive:{background:e.inactiveBackground},profileIcon:{marginRight:"12px"},imageProfileIcon:{width:"48px",height:"48px"},profileInfo:{display:"flex",flexDirection:"column",flex:"1 1 50%"},badge:{},label:{lineHeight:"1.2",letterSpacing:"0.25px",color:e.palette.text.primary,wordBreak:"break-word","&+ $specialInfo":{marginTop:"4px"}},secondaryLabel:{display:"inline-flex",color:e.palette.text.primary,marginTop:"2px",lineHeight:"16px",fontSize:"14px",fontWeight:400,"&+ $businessCard":{marginLeft:"12px"}},businessCard:{color:e.palette.text.secondary,display:"inline-flex",fontSize:"14px",marginTop:"4px",lineHeight:"1.2"},specialInfo:{display:"flex",justifyContent:"space-between",flexWrap:"wrap",width:"100%",marginTop:"8px"},entityType:{display:"flex",flexWrap:"wrap"},entityId:{fontSize:"13px",color:e.palette.text.secondary,whiteSpace:"nowrap",cursor:"pointer","&:hover":{textDecoration:"underline"}}}))),f=e=>{let{className:t,entity:n,children:i,classes:u,renderLabel:f=s.identity}=e;const y=g({classes:u}),x=(0,l.useSelector)(h.ZP.selectors.getMetadata),v=(0,l.useSelector)(h.ZP.selectors.getShowEntityId),S=(0,a.useCallback)((()=>{navigator.clipboard.writeText((0,p.BTI)(n))}),[n]);if((0,s.isNil)(n))return null;const P=(0,p.idV)(n.label),C=n.secondaryLabel,k=(0,p.ptG)(x,n),E=(0,p.Fn9)(n),O=n.uri,I=(0,p.BTI)(n);return r().createElement("div",{className:o()(y.profileBandWrapper,t)},r().createElement("div",{className:o()(y.profileBand,{[y.inactive]:!E}),"data-entity-uri":O},r().createElement(m.Z,{key:n.uri,entity:n,avatarClassName:y.profileIcon,imageClassName:y.imageProfileIcon}),r().createElement("div",{className:y.profileInfo},r().createElement("div",null,r().createElement(c.Typography,{variant:"h6",className:y.label},f(P)),C&&r().createElement(c.Typography,{variant:"subtitle2",className:y.secondaryLabel},C),k&&r().createElement(c.Typography,{variant:"subtitle1",className:y.businessCard},k)),r().createElement("div",{className:y.specialInfo},r().createElement("div",{className:y.entityType},r().createElement(b.Z,{entity:n,size:"medium",className:y.badge}),!(0,p.ZiX)(O)&&v&&r().createElement(c.Tooltip,{title:d().text("Copy to clipboard")},r().createElement(c.Typography,{display:"inline",variant:"body2",className:y.entityId,onClick:S},d().text("Entity ID"),": ",I))))),i&&r().createElement("div",null,i)))}},79618:(e,t,n)=>{n.d(t,{a:()=>L});var a=n(24328),r=n.n(a),i=n(94079),o=n(67766),l=n(42767),s=n(67958),c=n(71153),u=n.n(c),d=n(17440),p=n(87918),h=n.n(p),m=n(79468),b=n(83348),g=n(8818);const f=(0,n(79692).Z)({container:{display:"flex",alignItems:"center"},link:{whiteSpace:"nowrap",marginRight:"9px"}}),y=(0,b.Z)(i.Link),x=e=>{var t;let{className:n,total:i=0,onPrev:c,onNext:p,onSearchResultsClick:b,isPrevDisabled:x,isNextDisabled:v}=e;const S=f(),P=(0,a.useContext)(m.T),{OPEN_RESULTS:C,SEARCH_RESULT:k,SEARCH_RESULTS:E,NEXT_PROFILE:O,PREVIOUS_PROFILE:I}=(0,d.mergeRight)({OPEN_RESULTS:h().text("Go to search results"),SEARCH_RESULT:h().text("Search result"),SEARCH_RESULTS:h().text("Search results"),PREVIOUS_PROFILE:h().text("Go to previous profile"),NEXT_PROFILE:h().text("Go to next profile")},null!==(t=null==P?void 0:P.profileBand)&&void 0!==t?t:{});return r().createElement("div",{className:u()(S.container,n)},r().createElement(y,{className:S.link,component:"button",variant:"caption",onClick:b,underline:"none",tooltipTitle:C},(0,s.k7L)(i,1e6)," ",1===i?k:E),r().createElement(g.k,{size:"L",icon:o.Z,tooltipTitle:I,onClick:c,disabled:x,showForDisabled:!0}),r().createElement(g.k,{size:"L",icon:l.Z,tooltipTitle:O,onClick:p,disabled:v,showForDisabled:!0}))};var v=n(52730),S=n(49885),P=n(94622),C=n(47898),k=n(54198),E=n(85229);function O(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){I(e,t,n[t])}))}return e}function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class w{constructor(e){var t=this;let{data:{query:n,sortField:a,sortOrder:r},tenant:i,searchTenant:o,apiPath:l,dtssPath:c,globalSearchRequestOptions:u}=e;this.query=void 0,this.sortField=void 0,this.sortOrder=void 0,this.tenant=void 0,this.searchTenant=void 0,this.apiPath=void 0,this.dtssPath=void 0,this.globalSearchRequestOptions=void 0,this.isDT=()=>this.tenant!==this.searchTenant,this.getQueryFilter=()=>({rawFilter:this.query}),this.getEntities=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=[t.getQueryFilter(),...e],r=O({},t.globalSearchRequestOptions,{sort:t.sortField,order:t.sortOrder,select:"uri,label,type",scoreEnabled:!1},n);return t.isDT()?(0,s.uqV)({filters:a,options:r,customerTenant:t.tenant,dataTenant:t.searchTenant,dtssPath:t.dtssPath}):(0,s.ZOr)(a,r)},this.checkEntity=e=>this.getEntities([{filter:"equals",fieldName:"uri",values:[e]}],{offset:0,max:1}).then((t=>t&&t.length>0&&t[0].uri===e)),this.requestEntities=(e,t)=>this.getEntities([],{offset:t,max:e}),this.requestTotal=()=>{const e=[this.getQueryFilter()],t=this.globalSearchRequestOptions;return(this.isDT()?(0,s.J$m)({filters:e,options:t,customerTenant:this.tenant,dataTenant:this.searchTenant,dtssPath:this.dtssPath}):(0,s.j_Q)(e,t)).then((e=>e.total))},this.query=n,this.sortField=a,this.sortOrder=r,this.tenant=i,this.searchTenant=o,this.apiPath=l,this.dtssPath=c,this.globalSearchRequestOptions=u}}function T(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){N(e,t,n[t])}))}return e}function N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class j{constructor(e){var t=this;let{data:n,tenant:a,apiPath:r}=e;this.searchBody=void 0,this.tenant=void 0,this.apiPath=void 0,this.getEntities=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=[{rawFilter:t.searchBody.filter},...e];return(0,s.P2h)({apiPath:t.apiPath,tenant:t.tenant,searchBody:T({},t.searchBody,{filter:e.length?(0,s.Uqd)()(a):t.searchBody.filter}),options:n})},this.checkEntity=e=>this.getEntities([{filter:"equals",fieldName:"id",values:[(0,s.BTI)({uri:e})]}],{from:0,max:1}).then((t=>t&&t.length>0&&t[0].uri===e)),this.requestEntities=(e,t)=>this.getEntities([],{from:t,max:e}),this.requestTotal=()=>(0,s.dED)({apiPath:this.apiPath,tenant:this.tenant,searchBody:this.searchBody}).then((e=>e.count)),this.searchBody=n,this.tenant=a,this.apiPath=r}}function R(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){z(e,t,n[t])}))}return e}function z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Z=(e,t)=>(0,d.pipe)((0,d.map)((0,d.prop)("uri")),(0,d.reject)((e=>t.includes(e))))(e),D=()=>{const e=(0,E._)(),t=(0,E._)(),n=(0,E._)(),{uri:r,index:i,total:o,tenant:l,cache:c}=(0,v.useSelector)(S.ZP.selectors.getSearchNavigationData)||{},{type:u,data:d}=(0,v.useSelector)(S.ZP.selectors.getSearchProviderData)||{},p=(0,v.useSelector)(S.ZP.selectors.getTenant),h=(0,v.useSelector)(S.ZP.selectors.getApiPath),m=(0,v.useSelector)(S.ZP.selectors.getDtssPath),b=(0,v.useSelector)((e=>S.ZP.selectors.getGlobalSearchRequestOptions(e,["ovOnly"]))),{updateEntitiesNavigationLoadingState:g}=(0,P.M)(),f=(0,a.useContext)(C.m),y=(0,v.useDispatch)(),[x,O]=(0,a.useState)(!1),I=(0,a.useMemo)((()=>((e,t)=>{switch(e){case"search":return new w(t);case"graphsearch":return new j(t)}})(u,{data:d,tenant:p,searchTenant:l,apiPath:h,dtssPath:m,globalSearchRequestOptions:b})),[u,d,p,l,h,m,b]),T=(0,a.useCallback)((e=>{y(S.yC.actions.updateSearchNavigationDataFields(e))}),[y]),N=(0,a.useCallback)((e=>{const t=p!==l?(0,s.wwR)({uri:e,dataTenant:l}):e;y(S.ui.actions.openEntity({uri:t,viewId:f,source:"navigation"}))}),[y,f,p,l]),z=(0,a.useCallback)((()=>{y(S.ui.actions.openPerspective({perspectiveId:u,viewId:f}))}),[y,u,f]);(0,a.useEffect)((()=>{i>=o?T({index:o-1}):i<0&&T({index:0})}),[o,i,T]);const D=(0,k.u)();(0,a.useEffect)((()=>{const e=D(((e,t)=>{switch(e.type){case S.yC.constants.UPDATE_SEARCH_NAVIGATION_DATA_ON_MERGE:{const n=S.ZP.selectors.getSearchNavigationData(t);n&&T(((e,t)=>{const{winnerUri:n,losersUris:a=[]}=t,r=((e,t)=>{let{uri:n,index:a,total:r,cache:i}=e;if(t&&t!==n){if(i&&i.includes(n)){i=[...i];const e=i.indexOf(t);let o=i.indexOf(n);e>=0&&(i.splice(e,1),r--,e<o&&a--),o=i.indexOf(n),i.splice(o,1,t)}return n=t,R({},e,{uri:n,index:a,cache:i,total:r})}return e})(e,n);return((e,t)=>{const{cache:n=[],index:a,total:r,uri:i}=e,o=t.filter((e=>n.includes(e)));if(0===o.length)return e;const l=r-o.length,s=n.indexOf(i);let c=a;for(const e of o)n.indexOf(e)<s&&c--;const u=n.filter((e=>!o.includes(e)));return R({},e,{cache:u,index:c,total:l})})(r,a)})(n,e.payload));break}}}));return()=>e()}),[D,T]);const L=(0,a.useCallback)(((e,a,r)=>{O(!0),t(I.requestTotal()).then((e=>T({total:e})));const i=r+1;return n(I.requestEntities(15,i)).then((t=>{if(t){if(t.length){const n=Z(t,e);if(n.length>0)return T({cache:e.concat(n),uri:n[0],index:i+t.length-n.length}),void N(n[0]);if(r+t.length<a-1)return L(e,a-t.length,r+t.length)}T({index:i})}})).finally((()=>{O(!1)}))}),[I,T,N]),U=(0,a.useCallback)(((e,a)=>{O(!0),t(I.requestTotal()).then((e=>T({total:e})));const r=a-1,i=Math.max(0,a-15),o=15+Math.min(0,a-15);return n(I.requestEntities(o,i)).then((t=>{if(t){if(t.length){const n=Z(t,e);if(n.length>0)return T({cache:n.concat(e),uri:n[n.length-1],index:r-(t.length-n.length)}),void N(n[n.length-1]);if(a-t.length>0)return U(e,a-t.length)}T({index:0})}})).finally((()=>{O(!1)}))}),[I,T,N]),F=(0,a.useCallback)(((t,n,a,r)=>{if(n<t.length){const i=t[n];return O(!0),e(I.checkEntity(i)).then((e=>{if(!e){const e=[...t];return e.splice(n,1),F(e,n,a-1,r)}T({index:r+1,uri:i,cache:t,total:a}),N(i)})).finally((()=>{O(!1)}))}if(!(r>=a-1))return L(t,a,r);T({cache:t,total:a,index:a-1})}),[I,T,N,L]),B=(0,a.useCallback)(((t,n,a,r)=>{if(n>-1){const i=t[n];return O(!0),e(I.checkEntity(i)).then((e=>{if(!e){const e=[...t];return e.splice(n,1),B(e,n-1,a-1,r-1)}T({index:r-1,uri:i,cache:t,total:a}),N(i)})).finally((()=>{O(!1)}))}if(!(r<=0))return U(t,r);T({index:0,cache:t,total:a})}),[I,T,N,U]),q=(0,a.useCallback)((()=>{if(c&&r){const e=c.indexOf(r)-1;B(c,e,o,i)}}),[B,c,r,o,i]),_=(0,a.useCallback)((()=>{if(c&&r){const e=c.indexOf(r)+1;F(c,e,o,i)}}),[F,c,r,o,i]);return(0,a.useEffect)((()=>{g(x)}),[g,x]),(0,a.useEffect)((()=>()=>g(!1)),[]),{total:o,onPrev:q,onNext:_,onSearchResultsClick:z,isPrevDisabled:x||i<=0,isNextDisabled:x||i>=o-1}},L=e=>{let{className:t}=e;const{total:n,onPrev:a,onNext:i,onSearchResultsClick:o,isPrevDisabled:l,isNextDisabled:c}=D();return(()=>{const{cache:e}=(0,v.useSelector)(S.ZP.selectors.getSearchNavigationData)||{},t=(0,v.useSelector)(S.ZP.selectors.getMode),n=(0,v.useSelector)(S.ZP.selectors.getEntity);return(0,s.uzs)(t)&&(null==e?void 0:e.includes(null==n?void 0:n.uri))})()?r().createElement(x,{className:t,total:n,onPrev:a,onNext:i,onSearchResultsClick:o,isPrevDisabled:l,isNextDisabled:c}):null}},97499:(e,t,n)=>{n.d(t,{n:()=>d});var a=n(24328),r=n.n(a),i=n(18798),o=n(39827),l=n(19701),s=n(17440);const c=(0,n(79692).Z)((()=>({resizablePanesWrapper:{flexGrow:1,height:"100%",marginRight:"1px"},pane:{position:"absolute",top:0,left:0,right:0,bottom:0,display:"flex",flexDirection:"column",overflow:"hidden"}}))),u=480,d=e=>{let{perspectiveId:t,children:n,buttonsProps:d,disabled:p,defaultTab:h}=e;const m=c(),{perspectiveSettings:b,updatePerspectiveSettings:g}=(0,l._)(t),{width:f=u}=b||{},y=h||(null==b?void 0:b.active),x=!(0,s.isNil)(y)&&!p,v=(0,a.useCallback)((e=>{g(e)}),[g]),S=(0,a.useCallback)((e=>{v({active:y===e?null:e})}),[y,v]),P=(0,a.useCallback)((()=>{v({active:null})}),[v]),C=(0,a.useCallback)((e=>{let{size:t}=e;v({width:t})}),[v]);return r().createElement(r().Fragment,null,r().createElement(i.u,{className:m.resizablePanesWrapper,primary:"second",orientation:"vertical",size:x?f:0,minSize:320,maxSize:640,allowResize:x,onChange:C,debounceInterval:2500},r().createElement("div",{className:m.pane},n[0]),r().createElement("div",{className:m.pane},(0,a.cloneElement)(n[1],{active:y,onClose:P}))),r().createElement(o.G,{disabled:p,buttonsProps:d,onButtonClick:S,activeIndexId:y}))};d.displayName="ProfileResizablePanes"},18798:(e,t,n)=>{n.d(t,{u:()=>h});var a=n(24328),r=n.n(a),i=n(71153),o=n.n(i),l=n(31396),s=n(60364),c=n(67958);const u=(0,n(79692).Z)((()=>({container:{position:"relative","& .Resizer":{zIndex:1,boxSizing:"border-box",backgroundClip:"padding-box","&.disabled":{cursor:"initial",height:0,margin:0},"&.horizontal":{height:"11px",backgroundImage:"linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))",backgroundRepeat:"no-repeat",backgroundSize:"100% 1px",backgroundPosition:"top",width:"100%",marginBottom:"-10px","&:not(.disabled):hover":{cursor:"row-resize",backgroundImage:"linear-gradient(rgba(0, 114, 206, 0), rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1))",backgroundSize:"100% 3px"}},"&.vertical":{width:"11px",backgroundImage:"linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))",backgroundRepeat:"no-repeat",backgroundSize:"1px 100%",backgroundPosition:"left",height:"100%",marginRight:"-10px","&:not(.disabled):hover":{cursor:"col-resize",backgroundImage:"linear-gradient(to left, rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1), rgba(0, 114, 206, 0.35))",backgroundSize:"3px 100%"}}}}}))),d=250,p=e=>"horizontal"===e,h=e=>{let{className:t,children:n,orientation:i,primary:h,defaultSize:m,size:b,minSize:g,maxSize:f,allowResize:y,debounceInterval:x=d,onChange:v}=e;const S=u(),P=(0,s.Z)(),[C,k]=(0,a.useState)(null),[E,O]=(0,a.useState)(!0),I=(0,a.useCallback)((()=>O(!0)),[]),w=(0,a.useCallback)((()=>O(!1)),[]),T=()=>p(i)?null==C?void 0:C.clientHeight:null==C?void 0:C.clientWidth,N=(0,a.useCallback)((0,c.DsO)((e=>{const t=T();v({percentageSize:e/t*100+"%",isMaxSize:f>0?e===f:e===t+f,isMinSize:e===g,size:e})}),x),[v,i,f,C]),j=(0,a.useMemo)((()=>({transition:P.transitions.create(p(i)?"height":"width",{easing:P.transitions.easing.sharp,duration:P.transitions.duration.leavingScreen})})),[i,P]);return"number"==typeof b&&b<0&&(b=(T()||0)+b),r().createElement("div",{ref:k,className:o()(S.container,t)},r().createElement(l.Z,{split:i,size:b,primary:h,allowResize:y,onChange:N,defaultSize:m,minSize:g,maxSize:f,onDragStarted:w,onDragFinished:I,pane1Style:E?j:void 0},n))};h.displayName="ResizablePanes"},39827:(e,t,n)=>{n.d(t,{G:()=>h});var a=n(24328),r=n.n(a),i=n(71153),o=n.n(i),l=n(8818),s=n(79692),c=n(41128);const u=(0,s.Z)((e=>({container:{display:"flex",flexDirection:"column",flexShrink:0,width:"64px",paddingTop:"8px",backgroundColor:e.palette.background.paper,boxShadow:"0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)"},active:{backgroundColor:(0,c.U1)(e.palette.primary.main,.12),color:e.palette.primary.main,"&:after":{content:'""',position:"absolute",height:"42px",width:"3px",backgroundColor:e.palette.primary.main,left:"-8px",borderRadius:"0 6px 6px 0"}},buttonWrapper:{position:"relative",width:"48px",height:"44px",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"6px",margin:"2px 8px",color:e.palette.text.secondary}})));function d(){return d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},d.apply(this,arguments)}function p(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}const h=e=>{let{disabled:t,buttonsProps:n,activeIndexId:a,className:i,onButtonClick:s,classes:c={}}=e;const h=u(),{active:m,buttonWrapper:b}=c,g=p(c,["active","buttonWrapper"]);return r().createElement("div",{className:o()(h.container,i)},n.map((e=>{let{id:n}=e,i=p(e,["id"]);return r().createElement(l.k,d({},i,{disabled:t,classes:g,size:"S",key:n,className:o()({[o()(h.active,m)]:a===n},h.buttonWrapper,b),onClick:()=>s(n),"data-reltio-id":`reltio-profile-right-side-button-${n}`}))})))}},3409:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(24328),r=n.n(a),i=n(52730),o=n(49885),l=n(94079),s=n(17440),c=n(87918),u=n.n(c);const d=(0,n(79692).Z)({root:{display:"flex",alignItems:"flex-start"},slice:{fontWeight:500},cancelButton:{width:"88px",flexShrink:0,marginLeft:"15px"}}),p=()=>{const e=d(),t=(0,i.useSelector)(o.ZP.selectors.getHistoryEvent),n=(0,i.useDispatch)(),a=(0,s.pipe)(o.N5.history.actions.clearHistoryEvent,n);return t?r().createElement("div",{className:e.root},r().createElement(l.Typography,{component:"div"},u().text("You are viewing a historic slice:")," ",r().createElement("span",{className:e.slice},u().date(t.aStamp,"llll"))),r().createElement(l.Button,{className:e.cancelButton,variant:"contained",color:"primary",onClick:a},u().text("Cancel"))):null}},54198:(e,t,n)=>{n.d(t,{G:()=>o,u:()=>l});var a=n(24328),r=n.n(a);const i=(0,a.createContext)(null);i.displayName="ActionsHookContext";const o=e=>{let{children:t,hook:n}=e;return r().createElement(i.Provider,{value:n},t)},l=()=>{const e=(0,a.useContext)(i);if(!e)throw new Error("ActionsHookContext must be provided");return e}},94622:(e,t,n)=>{n.d(t,{f:()=>u,M:()=>d});var a=n(24328),r=n.n(a),i=n(31276);function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){l(e,t,n[t])}))}return e}function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const s=r().createContext({isLoading:!1,updateEntityLoadingState:i.ZT,updateEntitiesNavigationLoadingState:i.ZT,resetLoadingState:i.ZT}),c={entitiesNavigation:!1,entity:!1},u=e=>{let{children:t}=e;const n=(()=>{const[e,t]=(0,a.useState)(c),n=(0,a.useCallback)((e=>{t((t=>o({},t,{entity:e})))}),[]),r=(0,a.useCallback)((e=>{t((t=>o({},t,{entitiesNavigation:e})))}),[]),i=(0,a.useCallback)((()=>{t(c)}),[]);return{isLoading:Object.values(e).includes(!0),updateEntityLoadingState:n,updateEntitiesNavigationLoadingState:r,resetLoadingState:i}})();return r().createElement(s.Provider,{value:n},t)},d=()=>(0,a.useContext)(s)},79468:(e,t,n)=>{n.d(t,{T:()=>r});var a=n(24328);const r=n.n(a)().createContext({profileBand:{}});r.displayName="LabelsContext"},19701:(e,t,n)=>{n.d(t,{n:()=>r,_:()=>i});var a=n(24328);const r=n.n(a)().createContext({settings:{},onChange:()=>{}});r.displayName="PerspectivesSettingsContext";const i=e=>{const{settings:t,onChange:n}=(0,a.useContext)(r)||{},i=null==t?void 0:t[e];return{updatePerspectiveSettings:(0,a.useCallback)((t=>{n(e,t)}),[e,n]),perspectiveSettings:i}}},7718:(e,t,n)=>{n.d(t,{C:()=>m});var a=n(24328),r=n(52730),i=n(17440),o=n(67958),l=n(49885);function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},a=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),a.forEach((function(t){c(e,t,n[t])}))}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const u=(e,t)=>t.filter((t=>t.replyId!==e)),d=(e,t)=>{const n=e.replies.findIndex((e=>{let{replyId:n}=e;return n===t.replyId})),a=[...e.replies];return a[n]=t,a},p=[],h=e=>console.error("Collaboration error",e),m=e=>{let{objectIds:t=p,objectTypes:n,enabled:c=!0}=e;const m=(0,r.useSelector)(l.ZP.selectors.getEntity),b=(0,r.useSelector)(l.ZP.selectors.getTenant),g=(0,r.useSelector)(l.ZP.selectors.getCollaborationPath),f=(0,r.useSelector)(l.ZP.selectors.isCollaborationEnabled)&&c,[y,x]=(0,a.useState)(null),[v,S]=(0,a.useState)([]),[P,C]=(0,a.useState)(null),[k,E]=(0,a.useState)(null),[O,I]=(0,a.useState)(!1),[w,T]=(0,a.useState)(!1),[N,j]=(0,a.useState)({}),R=(0,a.useCallback)((e=>{C((t=>s({},t,e)))}),[]),z=null==m?void 0:m.uri,Z=(0,a.useCallback)((function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(f&&z&&!(0,o.ZiX)(z)){const n=e=>{console.warn("Collaboration error",e),C(null)};(0,i.pipe)(o.$oF,(0,i.andThen)((0,i.map)((0,i.props)(["objectId","comments"]))),(0,i.andThen)(i.fromPairs),(0,i.andThen)(t?C:R),(0,i.otherwise)(n))({uris:e,tenant:b,collaborationPath:g})}else C(null)}),[R,g,z,f,b]);(0,a.useEffect)((()=>{Z(t,!0)}),[t,Z]);const D=(0,a.useCallback)(((e,t)=>{(0,o.liG)({collaborationPath:g,tenant:b,relatedObjectUri:e,pageToken:t}).then((e=>{let{items:n,nextPageToken:a}=e;S((e=>t?(0,i.uniqBy)((0,i.prop)("commentId"),[...e,...n]):n)),x(a)})).catch(h)}),[g,b]),L=(0,a.useCallback)((e=>{T(!0),(0,o.d7q)({collaborationPath:g,tenant:b,commentId:e}).then(E).catch(h).finally((()=>T(!1)))}),[g,b]),U=(0,a.useCallback)((e=>{let{content:t,namedUsers:n,objectType:a,uri:r,relatedObjectUris:i}=e;I(!0);const l={objectId:r,content:t,relatedObjectUris:i,objectType:a,visibility:"public",namedUsers:n,permanentLink:`${window.location.href}&commentId=${encodeURIComponent("{commentId}")}`};return(0,o.Yrx)({collaborationPath:g,tenant:b,data:l}).then((e=>{let[t]=e;return((e,t)=>{E(e),C((n=>s({},n,{[t]:[...n[t]||[],{commentId:e.commentId,replies:0,status:"open"}]}))),S((t=>[e,...t]))})(t,r)})).catch(h).finally((()=>I(!1)))}),[g,b]),F=(0,a.useCallback)((e=>{let{content:t,namedUsers:n,objectType:a,uri:r,relatedObjectUris:l,commentId:c,replies:u}=e;I(!0);const d={objectId:r,content:t,relatedObjectUris:l,objectType:a,visibility:"public",namedUsers:n,commentId:c,replies:u};return(0,o.uAg)({collaborationPath:g,tenant:b,data:d}).then((e=>(e=>{E(e),S((0,i.map)((0,i.when)((0,i.propEq)("commentId",e.commentId),(0,i.always)(e))))})(s({},e,{replies:u})))).catch(h).finally((()=>I(!1)))}),[g,b]),B=(0,a.useCallback)((e=>{let{uri:t,commentId:n}=e;I(!0),(0,o.YFy)({collaborationPath:g,tenant:b,commentId:n}).then((()=>((e,t)=>{E(null),C((n=>{const a=n[t]||[];return s({},n,{[t]:a.filter((t=>t.commentId!==e))})})),S((t=>t.filter((t=>t.commentId!==e))))})(n,t))).catch(h).finally((()=>I(!1)))}),[g,b]),q=(0,a.useCallback)(((e,t,n,a)=>{const r="resolve"===e.action?"resolved":"open",{replyId:i}=e;E("resolved"===r?e=>{if(e)return null}:t=>{if(t)return s({},t,{replies:a?u(i,t.replies):[...t.replies,e]})}),C((e=>s({},e,{[t]:(e[t]||[]).map((e=>e.commentId===n?s({},e,{status:r,replies:a?e.replies-1:e.replies+1}):e))}))),S((t=>t.map((t=>t.commentId===n?s({},t,{status:r,replies:a?u(e.replyId,t.replies):[...t.replies,e]}):t))))}),[]),_=(0,a.useCallback)((e=>{let{uri:t,commentId:n,reply:a}=e;I(!0),(0,o.Mfr)({collaborationPath:g,tenant:b,commentId:n,replyId:a.replyId}).then((()=>q(a,t,n,!0))).catch(h).finally((()=>I(!1)))}),[g,q,b]),H=(0,a.useCallback)(((e,t)=>{E((t=>{if(t)return s({},t,{replies:d(t,e)})})),S((n=>n.map((n=>n.commentId===t?s({},n,{replies:d(n,e)}):n))))}),[]),A=(0,a.useCallback)((e=>{let{content:t,namedUsers:n,commentId:a,replyId:r}=e;I(!0);const i={content:t,namedUsers:n};return(0,o.ufV)({collaborationPath:g,tenant:b,commentId:a,replyId:r,data:i}).then((e=>H(e,a))).catch(h).finally((()=>I(!1)))}),[g,b,H]),M=(0,a.useCallback)((e=>{let{content:t,namedUsers:n,commentId:a,action:r,uri:i}=e;I(!0);const l={content:t,action:r,namedUsers:n};return(0,o.PP2)({collaborationPath:g,tenant:b,commentId:a,data:l}).then((e=>{let[t]=e;return q(t,i,a)})).catch(h).finally((()=>I(!1)))}),[g,b,q]),W=(0,a.useCallback)((e=>{let{commentId:t,uri:n}=e;M({content:"",namedUsers:[],commentId:t,action:"resolve",uri:n})}),[M]),G=(0,a.useCallback)((e=>{let{commentId:t,uri:n}=e;M({content:"",namedUsers:[],commentId:t,action:"reopen",uri:n})}),[M]);return{clearCurrentComment:(0,a.useCallback)((()=>{E(null)}),[]),comments:v,commentsMap:P,getCommentState:(e,t)=>(0,i.pathOr)({},[e,t],N),updateCommentState:(e,t,n)=>{j((a=>{const r=[e,t],o=(0,i.path)(r,a);return(0,i.assocPath)(r,(0,i.mergeRight)(o,n),a)}))},clearCommentState:(e,t)=>j((0,i.dissocPath)([e,t])),createComment:U,createReply:M,currentComment:k,deleteComment:B,editComment:F,getComment:L,getComments:D,getCommentsCount:Z,loading:w,objectTypes:n,pageToken:y,reOpenThread:G,resolveThread:W,sending:O,deleteReply:_,editReply:A}}}}]);
2
+ //# sourceMappingURL=8594.js.map
package/8594.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"8594.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/styles.ts","webpack://@reltio/remotes/../components/src/components/EntityTypeBadge/EntityTypeBadge.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBand/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBand/ProfileBand.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/ProfileBandNavigationWidget.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/MainSearchProvider.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/GraphSearchProvider.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/helpers/index.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigation.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/searchProviders/SearchProviderFactory.ts","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/ProfileBandNavigation.tsx","webpack://@reltio/remotes/../components/src/components/ProfileBandNavigation/hooks/useSearchNavigationVisibility.ts","webpack://@reltio/remotes/../components/src/components/ProfileResizablePanes/styles.ts","webpack://@reltio/remotes/../components/src/components/ProfileResizablePanes/ProfileResizablePanes.tsx","webpack://@reltio/remotes/../components/src/components/ResizablePanes/styles.ts","webpack://@reltio/remotes/../components/src/components/ResizablePanes/ResizablePanes.tsx","webpack://@reltio/remotes/../components/src/components/SideIconPanel/styles.ts","webpack://@reltio/remotes/../components/src/components/SideIconPanel/SideButtonsPanel.tsx","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/styles.ts","webpack://@reltio/remotes/../components/src/components/history/ProfileBandHistory/ProfileBandHistory.tsx","webpack://@reltio/remotes/../components/src/contexts/ActionsHookContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/EntityLoadingIndicationContext/index.tsx","webpack://@reltio/remotes/../components/src/contexts/LabelsContext/index.ts","webpack://@reltio/remotes/../components/src/contexts/PerspectivesSettingsContext/index.ts","webpack://@reltio/remotes/../components/src/hooks/useCollaboration.ts"],"sourcesContent":["import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n 'entityType-overflow': {\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n },\n\n 'entityType-small': {\n padding: '1px 4px',\n fontSize: '10px',\n lineHeight: 'normal',\n marginRight: '12px',\n borderRadius: '2px',\n flexShrink: 0\n },\n 'entityType-medium': {\n padding: '2px 8px 3px',\n borderRadius: '2px',\n fontSize: '13px',\n fontWeight: 500,\n lineHeight: '15px',\n marginRight: '16px',\n flexShrink: 0\n }\n});\n\nexport default useStyles;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport classnames from 'classnames';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {getEntityType, getEntityTypeLabel, getPropWithInheritance, theme, utils, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport ExpandedValueTooltip from '../ExpandedValueTooltip/ExpandedValueTooltip';\nimport useStyles from './styles';\n\ntype Props = {\n entity: Entity;\n className?: string;\n size?: 'small' | 'medium';\n};\n\nconst EntityTypeBadge = ({entity, className, size = 'small'}: Props) => {\n const styles = useStyles();\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypeUri = entity.type;\n const entityType = getEntityType(metadata, entityTypeUri) || {};\n const entityTypeColor = getPropWithInheritance(metadata, entityType, 'typeColor') || theme.palette.primary.main;\n const entityTypeLabel = getEntityTypeLabel(metadata, entity);\n\n return (\n <ExpandedValueTooltip value={entityTypeLabel} placement=\"top\">\n <Typography\n style={{\n backgroundColor: entityTypeColor,\n color: utils.Colors.getColor(entityTypeColor) ? '#FFFFFF' : '#212121'\n }}\n className={classnames(styles[`entityType-${size}`], styles['entityType-overflow'], className)}\n component=\"div\"\n >\n {entityTypeLabel}\n </Typography>\n </ExpandedValueTooltip>\n );\n};\n\nexport default EntityTypeBadge;\n","import {makeStyles, Theme} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme & {inactiveBackground: string}) => ({\n profileBandWrapper: {\n // especially for IE (overflow fix)\n flexShrink: 0\n },\n profileBand: {\n display: 'flex',\n padding: '16px 12px 16px 16px',\n alignItems: 'flex-start',\n backgroundColor: '#fff',\n boxShadow: '0px 1px 0px rgba(0, 0, 0, 0.12)',\n marginBottom: '1px',\n '&:after': {\n // IE workaround for minHeight and centering items\n content: '\"\"',\n minHeight: 'inherit',\n fontSize: 0\n }\n },\n inactive: {\n background: theme.inactiveBackground\n },\n profileIcon: {\n marginRight: '12px'\n },\n imageProfileIcon: {\n width: '48px',\n height: '48px'\n },\n profileInfo: {\n display: 'flex',\n flexDirection: 'column',\n flex: '1 1 50%'\n },\n badge: {},\n label: {\n lineHeight: '1.2',\n letterSpacing: '0.25px',\n color: theme.palette.text.primary,\n wordBreak: 'break-word',\n\n '&+ $specialInfo': {\n marginTop: '4px'\n }\n },\n secondaryLabel: {\n display: 'inline-flex',\n color: theme.palette.text.primary,\n marginTop: '2px',\n lineHeight: '16px',\n fontSize: '14px',\n fontWeight: 400,\n\n '&+ $businessCard': {\n marginLeft: '12px'\n }\n },\n businessCard: {\n color: theme.palette.text.secondary,\n display: 'inline-flex',\n fontSize: '14px',\n marginTop: '4px',\n lineHeight: '1.2'\n },\n specialInfo: {\n display: 'flex',\n justifyContent: 'space-between',\n flexWrap: 'wrap',\n width: '100%',\n marginTop: '8px'\n },\n entityType: {\n display: 'flex',\n flexWrap: 'wrap'\n },\n entityId: {\n fontSize: '13px',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n}));\n\nexport default useStyles;\n","import React, {ReactNode, useCallback} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\nimport {isNil, identity} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport i18n from 'ui-i18n';\n\nimport {getLabel, isActiveObject, getBusinessCardAttributesText, getEntityId, isTempUri, Entity} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport EntityAvatar from '../EntityAvatar/EntityAvatar';\nimport EntityTypeBadge from '../EntityTypeBadge/EntityTypeBadge';\n\nimport useStyles from './styles';\n\ntype Props = {\n className?: string;\n entity?: Entity;\n children?: ReactNode;\n classes?: Partial<ReturnType<typeof useStyles>>;\n renderLabel?: (label: string) => React.ReactNode;\n};\n\nconst ProfileBand = ({className, entity, children, classes, renderLabel = identity}: Props) => {\n const styles = useStyles({classes});\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const showEntityId = useSelector(mdmModule.selectors.getShowEntityId);\n const handleCopyEntityIdToClipboard = useCallback(() => {\n navigator.clipboard.writeText(getEntityId(entity));\n }, [entity]);\n\n if (isNil(entity)) {\n return null;\n }\n\n const label = getLabel(entity.label);\n const secondaryLabel = entity.secondaryLabel;\n const businessCardText = getBusinessCardAttributesText(metadata, entity);\n const isActive = isActiveObject(entity);\n const entityUri = entity.uri;\n const entityId = getEntityId(entity);\n return (\n <div className={classnames(styles.profileBandWrapper, className)}>\n <div\n className={classnames(styles.profileBand, {\n [styles.inactive]: !isActive\n })}\n data-entity-uri={entityUri}\n >\n <EntityAvatar\n key={entity.uri}\n entity={entity}\n avatarClassName={styles.profileIcon}\n imageClassName={styles.imageProfileIcon}\n />\n <div className={styles.profileInfo}>\n <div>\n <Typography variant=\"h6\" className={styles.label}>\n {renderLabel(label)}\n </Typography>\n {secondaryLabel && (\n <Typography variant=\"subtitle2\" className={styles.secondaryLabel}>\n {secondaryLabel}\n </Typography>\n )}\n {businessCardText && (\n <Typography variant=\"subtitle1\" className={styles.businessCard}>\n {businessCardText}\n </Typography>\n )}\n </div>\n <div className={styles.specialInfo}>\n <div className={styles.entityType}>\n <EntityTypeBadge entity={entity} size=\"medium\" className={styles.badge} />\n {!isTempUri(entityUri) && showEntityId && (\n <Tooltip title={i18n.text('Copy to clipboard')}>\n <Typography\n display=\"inline\"\n variant=\"body2\"\n className={styles.entityId}\n onClick={handleCopyEntityIdToClipboard}\n >\n {i18n.text('Entity ID')}: {entityId}\n </Typography>\n </Tooltip>\n )}\n </div>\n </div>\n </div>\n {children && <div>{children}</div>}\n </div>\n </div>\n );\n};\n\nexport default ProfileBand;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: {\n display: 'flex',\n alignItems: 'center'\n },\n link: {\n whiteSpace: 'nowrap',\n marginRight: '9px'\n }\n});\n","import React, {useContext} from 'react';\nimport {Link as Link} from '@material-ui/core';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport classnames from 'classnames';\nimport {mergeRight} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {LabelsContext} from '../../contexts/LabelsContext';\nimport {withTooltip} from '../../HOCs';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\n\nimport {useStyles} from './styles';\n\nconst LinkWithTooltip = withTooltip<typeof Link, {component: string}>(Link);\n\ntype Props = {\n className?: string;\n total?: number;\n onPrev?: () => void;\n onNext?: () => void;\n onSearchResultsClick?: () => void;\n isPrevDisabled?: boolean;\n isNextDisabled?: boolean;\n};\n\nconst ProfileBandNavigationWidget = ({\n className,\n total = 0,\n onPrev,\n onNext,\n onSearchResultsClick,\n isPrevDisabled,\n isNextDisabled\n}: Props) => {\n const styles = useStyles();\n const labels = useContext(LabelsContext);\n const {OPEN_RESULTS, SEARCH_RESULT, SEARCH_RESULTS, NEXT_PROFILE, PREVIOUS_PROFILE} = mergeRight(\n {\n OPEN_RESULTS: i18n.text('Go to search results'),\n SEARCH_RESULT: i18n.text('Search result'),\n SEARCH_RESULTS: i18n.text('Search results'),\n PREVIOUS_PROFILE: i18n.text('Go to previous profile'),\n NEXT_PROFILE: i18n.text('Go to next profile')\n },\n labels?.profileBand ?? {}\n );\n return (\n <div className={classnames(styles.container, className)}>\n <LinkWithTooltip\n className={styles.link}\n component=\"button\"\n variant=\"caption\"\n onClick={onSearchResultsClick}\n underline=\"none\"\n tooltipTitle={OPEN_RESULTS}\n >\n {formatNumberAsMetric(total, 1000000)} {total === 1 ? SEARCH_RESULT : SEARCH_RESULTS}\n </LinkWithTooltip>\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowLeft}\n tooltipTitle={PREVIOUS_PROFILE}\n onClick={onPrev}\n disabled={isPrevDisabled}\n showForDisabled\n />\n <SmallIconButtonWithTooltip\n size=\"L\"\n icon={KeyboardArrowRight}\n tooltipTitle={NEXT_PROFILE}\n onClick={onNext}\n disabled={isNextDisabled}\n showForDisabled\n />\n </div>\n );\n};\n\nexport {ProfileBandNavigationWidget, LinkWithTooltip};\n","import {\n Entity,\n getFilteredEntities,\n getFilteredEntitiesFromDataTenant,\n getTotals,\n getTotalFromDataTenant,\n TotalResponse\n} from '@reltio/mdm-sdk';\n\nimport {SearchProvider} from './SearchProvider';\n\nexport class MainSearchProvider implements SearchProvider {\n private readonly query;\n private readonly sortField;\n private readonly sortOrder;\n private readonly tenant;\n private readonly searchTenant;\n private readonly apiPath;\n private readonly dtssPath;\n private readonly globalSearchRequestOptions;\n\n constructor({\n data: {query, sortField, sortOrder},\n tenant,\n searchTenant,\n apiPath,\n dtssPath,\n globalSearchRequestOptions\n }) {\n this.query = query;\n this.sortField = sortField;\n this.sortOrder = sortOrder;\n this.tenant = tenant;\n this.searchTenant = searchTenant;\n this.apiPath = apiPath;\n this.dtssPath = dtssPath;\n this.globalSearchRequestOptions = globalSearchRequestOptions;\n }\n\n private isDT = () => this.tenant !== this.searchTenant;\n\n private getQueryFilter = () => ({rawFilter: this.query});\n\n private getEntities = (filters = [], options = {}): Promise<Entity[]> => {\n const requestFilters = [this.getQueryFilter(), ...filters];\n const requestOptions = {\n ...this.globalSearchRequestOptions,\n sort: this.sortField,\n order: this.sortOrder,\n select: 'uri,label,type',\n scoreEnabled: false,\n ...options\n };\n return this.isDT()\n ? getFilteredEntitiesFromDataTenant({\n filters: requestFilters,\n options: requestOptions,\n customerTenant: this.tenant,\n dataTenant: this.searchTenant,\n dtssPath: this.dtssPath\n })\n : getFilteredEntities(requestFilters, requestOptions);\n };\n\n checkEntity = (uri): Promise<boolean> => {\n return this.getEntities(\n [\n {\n filter: 'equals',\n fieldName: 'uri',\n values: [uri]\n }\n ],\n {offset: 0, max: 1}\n ).then((entities) => {\n return entities && entities.length > 0 && entities[0].uri === uri;\n });\n };\n\n requestEntities = (max, offset): Promise<Entity[]> => {\n return this.getEntities([], {offset, max});\n };\n\n requestTotal = (): Promise<number> => {\n const filters = [this.getQueryFilter()];\n const options = this.globalSearchRequestOptions;\n return (this.isDT()\n ? getTotalFromDataTenant({\n filters,\n options,\n customerTenant: this.tenant,\n dataTenant: this.searchTenant,\n dtssPath: this.dtssPath\n })\n : getTotals(filters, options)\n ).then((json) => (json as TotalResponse).total);\n };\n}\n","import {\n Entity,\n getGraphSearchCount,\n getGraphSearchEntities,\n getEntityId,\n buildFilterQueryString\n} from '@reltio/mdm-sdk';\n\nimport {SearchProvider} from './SearchProvider';\n\nexport class GraphSearchProvider implements SearchProvider {\n private readonly searchBody;\n private readonly tenant;\n private readonly apiPath;\n\n constructor({data, tenant, apiPath}) {\n this.searchBody = data;\n this.tenant = tenant;\n this.apiPath = apiPath;\n }\n\n private getEntities = (filters = [], options = {}): Promise<Entity[]> => {\n const allFilters = [\n {\n rawFilter: this.searchBody.filter\n },\n ...filters\n ];\n return getGraphSearchEntities({\n apiPath: this.apiPath,\n tenant: this.tenant,\n searchBody: {\n ...this.searchBody,\n filter: filters.length ? buildFilterQueryString()(allFilters) : this.searchBody.filter\n },\n options\n });\n };\n\n checkEntity = (uri): Promise<boolean> => {\n return this.getEntities(\n [\n {\n filter: 'equals',\n fieldName: 'id',\n values: [getEntityId({uri})]\n }\n ],\n {from: 0, max: 1}\n ).then((entities) => {\n return entities && entities.length > 0 && entities[0].uri === uri;\n });\n };\n\n requestEntities = (max, from): Promise<Entity[]> => {\n return this.getEntities([], {from, max});\n };\n\n requestTotal = (): Promise<number> => {\n return getGraphSearchCount({\n apiPath: this.apiPath,\n tenant: this.tenant,\n searchBody: this.searchBody\n }).then((json) => json.count);\n };\n}\n","import {SearchNavigationData} from '../types';\n\ntype Payload = {\n winnerUri: string;\n losersUris: string[];\n};\n\nconst replaceWithWinnerUri = (searchNavigationData: SearchNavigationData, winnerUri: string): SearchNavigationData => {\n let {uri, index, total, cache} = searchNavigationData;\n if (winnerUri && winnerUri !== uri) {\n if (cache && cache.includes(uri)) {\n cache = [...cache];\n const winnerIndex = cache.indexOf(winnerUri);\n let uriIndex = cache.indexOf(uri);\n if (winnerIndex >= 0) {\n cache.splice(winnerIndex, 1);\n total--;\n if (winnerIndex < uriIndex) {\n index--;\n }\n }\n uriIndex = cache.indexOf(uri);\n cache.splice(uriIndex, 1, winnerUri);\n }\n uri = winnerUri;\n return {\n ...searchNavigationData,\n uri,\n index,\n cache,\n total\n };\n }\n return searchNavigationData;\n};\n\nconst removeLosersUris = (searchNavigationData: SearchNavigationData, losersUris: string[]): SearchNavigationData => {\n const {cache = [], index, total, uri} = searchNavigationData;\n const losersInCache = losersUris.filter((uri) => cache.includes(uri));\n if (losersInCache.length === 0) {\n return searchNavigationData;\n }\n const updatedTotal = total - losersInCache.length;\n const uriIndex = cache.indexOf(uri);\n let updatedIndex = index;\n for (const loser of losersInCache) {\n const loserIndex = cache.indexOf(loser);\n if (loserIndex < uriIndex) {\n updatedIndex--;\n }\n }\n const updatedCache = cache.filter((uri) => !losersInCache.includes(uri));\n\n return {\n ...searchNavigationData,\n cache: updatedCache,\n index: updatedIndex,\n total: updatedTotal\n };\n};\n\nexport const applyMergeToSearchNavigationData = (\n searchNavigationData: SearchNavigationData,\n payload: Payload\n): SearchNavigationData => {\n const {winnerUri, losersUris = []} = payload;\n const updatedSearchNavigationData = replaceWithWinnerUri(searchNavigationData, winnerUri);\n return removeLosersUris(updatedSearchNavigationData, losersUris);\n};\n","import {useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {search as mdmModuleSearch, ui as mdmModuleUi} from '@reltio/mdm-module';\nimport {getEntityUriForLink} from '@reltio/mdm-sdk';\nimport {map, pipe, prop, reject} from 'ramda';\nimport {useEntityLoadingIndication, useActionsHook, ViewIdContext} from '../../../contexts';\nimport {useSafePromise} from '../../../hooks';\nimport {getSearchProvider} from '../searchProviders/SearchProviderFactory';\nimport {SearchNavigationData, SearchProviderData} from '../types';\nimport {applyMergeToSearchNavigationData} from '../helpers';\n\nexport const REQUEST_PAGE_SIZE = 15;\n\nconst getNewUris = (entities, cache) =>\n pipe(\n map(prop('uri')),\n reject((uri) => cache.includes(uri))\n )(entities);\n\nconst useSearchNavigation = () => {\n const safeCheckEntityPromise = useSafePromise();\n const safeRequestTotalPromise = useSafePromise();\n const safeRequestEntitiesPromise = useSafePromise();\n const {\n uri,\n index,\n total,\n tenant: searchTenant,\n cache\n } = useSelector<unknown, SearchNavigationData>(mdmModule.selectors.getSearchNavigationData) || {};\n const {type, data} = useSelector<unknown, SearchProviderData>(mdmModule.selectors.getSearchProviderData) || {};\n const tenant = useSelector<unknown, string>(mdmModule.selectors.getTenant);\n const apiPath = useSelector<unknown, string>(mdmModule.selectors.getApiPath);\n const dtssPath = useSelector<unknown, string>(mdmModule.selectors.getDtssPath);\n const globalSearchRequestOptions = useSelector((state) =>\n mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly'])\n );\n const {updateEntitiesNavigationLoadingState} = useEntityLoadingIndication();\n const viewId = useContext(ViewIdContext);\n const dispatch = useDispatch();\n const [loading, setLoading] = useState<boolean>(false);\n\n const searchProvider = useMemo(\n () => getSearchProvider(type, {data, tenant, searchTenant, apiPath, dtssPath, globalSearchRequestOptions}),\n [type, data, tenant, searchTenant, apiPath, dtssPath, globalSearchRequestOptions]\n );\n\n const updateNavigationData = useCallback(\n (data: Partial<SearchNavigationData>) => {\n dispatch(mdmModuleSearch.actions.updateSearchNavigationDataFields(data));\n },\n [dispatch]\n );\n\n const openEntity = useCallback(\n (uri: string) => {\n const preparedUri = tenant !== searchTenant ? getEntityUriForLink({uri, dataTenant: searchTenant}) : uri;\n dispatch(mdmModuleUi.actions.openEntity({uri: preparedUri, viewId, source: 'navigation'}));\n },\n [dispatch, viewId, tenant, searchTenant]\n );\n\n const onSearchResultsClick = useCallback(() => {\n dispatch(mdmModuleUi.actions.openPerspective({perspectiveId: type, viewId}));\n }, [dispatch, type, viewId]);\n\n useEffect(() => {\n if (index >= total) {\n updateNavigationData({\n index: total - 1\n });\n } else if (index < 0) {\n updateNavigationData({\n index: 0\n });\n }\n }, [total, index, updateNavigationData]);\n\n const listenToActions = useActionsHook();\n\n useEffect(() => {\n const stopListeningActions = listenToActions((action, state) => {\n switch (action.type) {\n case mdmModuleSearch.constants.UPDATE_SEARCH_NAVIGATION_DATA_ON_MERGE: {\n const searchNavigationData: SearchNavigationData =\n mdmModule.selectors.getSearchNavigationData(state);\n if (searchNavigationData) {\n updateNavigationData(applyMergeToSearchNavigationData(searchNavigationData, action.payload));\n }\n break;\n }\n }\n });\n return () => stopListeningActions();\n }, [listenToActions, updateNavigationData]);\n\n const requestNextPage = useCallback(\n (cache: string[], total: number, index: number): Promise<void> => {\n setLoading(true);\n safeRequestTotalPromise(searchProvider.requestTotal()).then((total) => updateNavigationData({total}));\n\n const newIndex = index + 1;\n return safeRequestEntitiesPromise(searchProvider.requestEntities(REQUEST_PAGE_SIZE, newIndex))\n .then((entities) => {\n if (!entities) {\n return;\n }\n if (entities.length) {\n const newUris = getNewUris(entities, cache);\n if (newUris.length > 0) {\n updateNavigationData({\n cache: cache.concat(newUris),\n uri: newUris[0],\n index: newIndex + entities.length - newUris.length\n });\n openEntity(newUris[0]);\n return;\n } else if (index + entities.length < total - 1) {\n return requestNextPage(cache, total - entities.length, index + entities.length);\n }\n }\n updateNavigationData({\n index: newIndex\n });\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [searchProvider, updateNavigationData, openEntity]\n );\n\n const requestPrevPage = useCallback(\n (cache: string[], index: number): Promise<void> => {\n setLoading(true);\n safeRequestTotalPromise(searchProvider.requestTotal()).then((total) => updateNavigationData({total}));\n\n const newIndex = index - 1;\n const offset = Math.max(0, index - REQUEST_PAGE_SIZE);\n const max = REQUEST_PAGE_SIZE + Math.min(0, index - REQUEST_PAGE_SIZE);\n return safeRequestEntitiesPromise(searchProvider.requestEntities(max, offset))\n .then((entities) => {\n if (!entities) {\n return;\n }\n if (entities.length) {\n const newUris = getNewUris(entities, cache);\n if (newUris.length > 0) {\n updateNavigationData({\n cache: newUris.concat(cache),\n uri: newUris[newUris.length - 1],\n index: newIndex - (entities.length - newUris.length)\n });\n openEntity(newUris[newUris.length - 1]);\n return;\n } else if (index - entities.length > 0) {\n return requestPrevPage(cache, index - entities.length);\n }\n }\n updateNavigationData({\n index: 0\n });\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [searchProvider, updateNavigationData, openEntity]\n );\n\n const stepForwardWithCheck = useCallback(\n (cache: string[], cacheIndex: number, total: number, index: number): Promise<void> | void => {\n if (cacheIndex < cache.length) {\n const uri = cache[cacheIndex];\n setLoading(true);\n return safeCheckEntityPromise(searchProvider.checkEntity(uri))\n .then((isExists) => {\n if (isExists) {\n updateNavigationData({\n index: index + 1,\n uri,\n cache,\n total\n });\n openEntity(uri);\n } else {\n const clearedCache = [...cache];\n clearedCache.splice(cacheIndex, 1);\n return stepForwardWithCheck(clearedCache, cacheIndex, total - 1, index);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n } else if (index >= total - 1) {\n updateNavigationData({\n cache,\n total,\n index: total - 1\n });\n } else {\n return requestNextPage(cache, total, index);\n }\n },\n [searchProvider, updateNavigationData, openEntity, requestNextPage]\n );\n\n const stepBackWithCheck = useCallback(\n (cache: string[], cacheIndex: number, total: number, index: number): Promise<void> | void => {\n if (cacheIndex > -1) {\n const uri = cache[cacheIndex];\n setLoading(true);\n return safeCheckEntityPromise(searchProvider.checkEntity(uri))\n .then((isExists) => {\n if (isExists) {\n updateNavigationData({\n index: index - 1,\n uri,\n cache,\n total\n });\n openEntity(uri);\n } else {\n const clearedCache = [...cache];\n clearedCache.splice(cacheIndex, 1);\n return stepBackWithCheck(clearedCache, cacheIndex - 1, total - 1, index - 1);\n }\n })\n .finally(() => {\n setLoading(false);\n });\n } else if (index <= 0) {\n updateNavigationData({\n index: 0,\n cache,\n total\n });\n } else {\n return requestPrevPage(cache, index);\n }\n },\n [searchProvider, updateNavigationData, openEntity, requestPrevPage]\n );\n\n const onPrev = useCallback(() => {\n if (cache && uri) {\n const cacheIndex = cache.indexOf(uri) - 1;\n stepBackWithCheck(cache, cacheIndex, total, index);\n }\n }, [stepBackWithCheck, cache, uri, total, index]);\n\n const onNext = useCallback(() => {\n if (cache && uri) {\n const cacheIndex = cache.indexOf(uri) + 1;\n stepForwardWithCheck(cache, cacheIndex, total, index);\n }\n }, [stepForwardWithCheck, cache, uri, total, index]);\n\n useEffect(() => {\n updateEntitiesNavigationLoadingState(loading);\n }, [updateEntitiesNavigationLoadingState, loading]);\n\n useEffect(() => {\n return () => updateEntitiesNavigationLoadingState(false);\n }, []);\n\n const isPrevDisabled = loading || index <= 0;\n const isNextDisabled = loading || index >= total - 1;\n return {total, onPrev, onNext, onSearchResultsClick, isPrevDisabled, isNextDisabled};\n};\n\nexport {useSearchNavigation};\n","import {MainSearchProvider} from './MainSearchProvider';\nimport {GraphSearchProvider} from './GraphSearchProvider';\n\nexport const getSearchProvider = (type: string, options) => {\n switch (type) {\n case 'search':\n return new MainSearchProvider(options);\n case 'graphsearch':\n return new GraphSearchProvider(options);\n }\n};\n","import React from 'react';\n\nimport {ProfileBandNavigationWidget} from './ProfileBandNavigationWidget';\nimport {useSearchNavigation} from './hooks/useSearchNavigation';\nimport {useSearchNavigationVisibility} from './hooks/useSearchNavigationVisibility';\n\ntype Props = {\n className?: string;\n};\n\nconst ProfileBandNavigation = ({className}: Props) => {\n const {total, onPrev, onNext, onSearchResultsClick, isPrevDisabled, isNextDisabled} = useSearchNavigation();\n const isVisible = useSearchNavigationVisibility();\n return isVisible ? (\n <ProfileBandNavigationWidget\n className={className}\n total={total}\n onPrev={onPrev}\n onNext={onNext}\n onSearchResultsClick={onSearchResultsClick}\n isPrevDisabled={isPrevDisabled}\n isNextDisabled={isNextDisabled}\n />\n ) : null;\n};\n\nexport {ProfileBandNavigation};\n","import {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {Entity, isViewMode} from '@reltio/mdm-sdk';\nimport {SearchNavigationData} from '../types';\n\nconst useSearchNavigationVisibility = () => {\n const {cache} = useSelector<unknown, SearchNavigationData>(mdmModule.selectors.getSearchNavigationData) || {};\n const mode = useSelector<unknown, string>(mdmModule.selectors.getMode);\n const entity = useSelector<unknown, Entity>(mdmModule.selectors.getEntity);\n\n return isViewMode(mode) && cache?.includes(entity?.uri);\n};\n\nexport {useSearchNavigationVisibility};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n resizablePanesWrapper: {\n flexGrow: 1,\n height: '100%',\n marginRight: '1px'\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}));\n\nexport {useStyles};\n","import React, {useCallback, cloneElement} from 'react';\nimport {ResizablePanes} from '../ResizablePanes/ResizablePanes';\nimport {SideButtonsPanel} from '../SideIconPanel/SideButtonsPanel';\nimport {usePerspectivesSettings} from '../../contexts';\nimport {isNil} from 'ramda';\n\nimport {useStyles} from './styles';\nimport {RightPanelTab} from '../../types';\n\nconst DEFAULT_R_PANE_SIZE = 480;\nconst MIN_R_PANE_SIZE = 320;\nconst MAX_R_PANE_SIZE = 640;\n\ntype Props = {\n perspectiveId: string;\n children: [React.ReactElement, React.ReactElement];\n buttonsProps: Array<RightPanelTab['buttonProps']>;\n disabled?: boolean;\n defaultTab?: number;\n};\n\nexport const ProfileResizablePanes = ({perspectiveId, children, buttonsProps, disabled, defaultTab}: Props) => {\n const styles = useStyles();\n\n const {perspectiveSettings, updatePerspectiveSettings} = usePerspectivesSettings(perspectiveId);\n const {width = DEFAULT_R_PANE_SIZE} = perspectiveSettings || {};\n const active = defaultTab || perspectiveSettings?.active;\n const isSidePanelOpen = !isNil(active) && !disabled;\n\n const handleUpdateSettings = useCallback(\n (newSetting) => {\n updatePerspectiveSettings(newSetting);\n },\n [updatePerspectiveSettings]\n );\n\n const toggleActive = useCallback(\n (newId: number) => {\n const newActive = active === newId ? null : newId;\n handleUpdateSettings({active: newActive});\n },\n [active, handleUpdateSettings]\n );\n\n const resetActive = useCallback((): void => {\n handleUpdateSettings({active: null});\n }, [handleUpdateSettings]);\n\n const handlePaneSizeChange = useCallback(\n ({size}) => {\n handleUpdateSettings({width: size});\n },\n [handleUpdateSettings]\n );\n\n return (\n <>\n <ResizablePanes\n className={styles.resizablePanesWrapper}\n primary=\"second\"\n orientation=\"vertical\"\n size={isSidePanelOpen ? width : 0}\n minSize={MIN_R_PANE_SIZE}\n maxSize={MAX_R_PANE_SIZE}\n allowResize={isSidePanelOpen}\n onChange={handlePaneSizeChange}\n debounceInterval={2500}\n >\n <div className={styles.pane}>{children[0]}</div>\n <div className={styles.pane}>{cloneElement(children[1], {active, onClose: resetActive})}</div>\n </ResizablePanes>\n <SideButtonsPanel\n disabled={disabled}\n buttonsProps={buttonsProps}\n onButtonClick={toggleActive}\n activeIndexId={active}\n />\n </>\n );\n};\n\nProfileResizablePanes.displayName = 'ProfileResizablePanes';\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(() => ({\n container: {\n position: 'relative',\n '& .Resizer': {\n zIndex: 1,\n boxSizing: 'border-box',\n backgroundClip: 'padding-box',\n '&.disabled': {\n cursor: 'initial',\n height: 0,\n margin: 0\n },\n '&.horizontal': {\n height: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '100% 1px',\n backgroundPosition: 'top',\n width: '100%',\n marginBottom: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'row-resize',\n backgroundImage:\n 'linear-gradient(rgba(0, 114, 206, 0), rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1))',\n backgroundSize: '100% 3px'\n }\n },\n '&.vertical': {\n width: '11px',\n backgroundImage: 'linear-gradient(rgba(0,0,0,0.33), rgba(0,0,0,0.33))',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '1px 100%',\n backgroundPosition: 'left',\n height: '100%',\n marginRight: '-10px',\n '&:not(.disabled):hover': {\n cursor: 'col-resize',\n backgroundImage:\n 'linear-gradient(to left, rgba(0, 114, 206, 0.35), rgba(0, 114, 206, 1), rgba(0, 114, 206, 0.35))',\n backgroundSize: '3px 100%'\n }\n }\n }\n }\n}));\n\nexport {useStyles};\n","import React, {useCallback, useMemo, useState} from 'react';\nimport classnames from 'classnames';\nimport SplitPane from 'react-split-pane';\nimport {useTheme} from '@material-ui/core/styles';\nimport {debounce} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nconst HANDLE_CHANGE_DEBOUNCE_INTERVAL = 250;\n\nconst isHorizontal = (orientation) => orientation === 'horizontal';\n\nexport type Size = string | number;\ntype OnChange = {\n size: number;\n percentageSize: string;\n isMaxSize: boolean;\n isMinSize: boolean;\n};\n\ntype Props = {\n className?: string;\n children: React.ReactElement[];\n allowResize?: boolean;\n primary?: 'first' | 'second';\n minSize?: Size;\n maxSize?: Size;\n defaultSize?: Size;\n debounceInterval?: number;\n size?: Size;\n orientation?: 'vertical' | 'horizontal';\n onChange?: ({size, percentageSize, isMaxSize, isMinSize}: OnChange) => void;\n};\n\nexport const ResizablePanes = ({\n className,\n children,\n orientation,\n primary,\n defaultSize,\n size,\n minSize,\n maxSize,\n allowResize,\n debounceInterval = HANDLE_CHANGE_DEBOUNCE_INTERVAL,\n onChange\n}: Props) => {\n const styles = useStyles();\n const theme = useTheme();\n const [containerEl, setContainerEl] = useState(null);\n const [isPaneAnimationEnabled, setIsPaneAnimationEnabled] = useState(true);\n\n const enableAnimation = useCallback(() => setIsPaneAnimationEnabled(true), []);\n const disableAnimation = useCallback(() => setIsPaneAnimationEnabled(false), []);\n const getContainerSize = () => (isHorizontal(orientation) ? containerEl?.clientHeight : containerEl?.clientWidth);\n\n const handleChange = useCallback(\n debounce((size) => {\n const containerSize = getContainerSize();\n onChange({\n percentageSize: `${(size / containerSize) * 100}%`,\n isMaxSize: maxSize > 0 ? size === maxSize : size === containerSize + maxSize,\n isMinSize: size === minSize,\n size\n });\n }, debounceInterval),\n [onChange, orientation, maxSize, containerEl]\n );\n\n const paneAnimationStyle = useMemo(\n () => ({\n transition: theme.transitions.create(isHorizontal(orientation) ? 'height' : 'width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen\n })\n }),\n [orientation, theme]\n );\n\n if (typeof size === 'number' && size < 0) {\n size = (getContainerSize() || 0) + size;\n }\n\n return (\n <div ref={setContainerEl} className={classnames(styles.container, className)}>\n <SplitPane\n split={orientation}\n size={size}\n primary={primary}\n allowResize={allowResize}\n onChange={handleChange}\n defaultSize={defaultSize}\n minSize={minSize}\n maxSize={maxSize}\n onDragStarted={disableAnimation}\n onDragFinished={enableAnimation}\n pane1Style={isPaneAnimationEnabled ? paneAnimationStyle : undefined}\n >\n {children}\n </SplitPane>\n </div>\n );\n};\n\nResizablePanes.displayName = 'ResizablePanes';\n","import {fade, makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n width: '64px',\n paddingTop: '8px',\n backgroundColor: theme.palette.background.paper,\n boxShadow: '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.2)'\n },\n active: {\n backgroundColor: fade(theme.palette.primary.main, 0.12),\n color: theme.palette.primary.main,\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n height: '42px',\n width: '3px',\n backgroundColor: theme.palette.primary.main,\n left: '-8px',\n borderRadius: '0 6px 6px 0'\n }\n },\n buttonWrapper: {\n position: 'relative',\n width: '48px',\n height: '44px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '6px',\n margin: '2px 8px',\n color: theme.palette.text.secondary\n }\n}));\n","import React, {ElementType} from 'react';\nimport classnames from 'classnames';\nimport {IconButtonProps} from '@material-ui/core/IconButton';\nimport {SmallIconButtonWithTooltip} from '../SmallIconButton';\nimport {useStyles} from './styles';\n\ntype Props = {\n disabled: boolean;\n buttonsProps: Array<{\n icon: ElementType;\n tooltipTitle: string;\n id: number;\n }>;\n classes?: {active?: string; buttonWrapper?: string} & IconButtonProps['classes'];\n activeIndexId: number;\n className?: string;\n onButtonClick: (id: number) => void;\n};\n\nexport const SideButtonsPanel = ({\n disabled,\n buttonsProps,\n activeIndexId,\n className,\n onButtonClick,\n classes = {}\n}: Props) => {\n const styles = useStyles();\n const {active, buttonWrapper, ...iconButtonClasses} = classes;\n\n return (\n <div className={classnames(styles.container, className)}>\n {buttonsProps.map(({id, ...buttonProps}) => {\n return (\n <SmallIconButtonWithTooltip\n {...buttonProps}\n disabled={disabled}\n classes={iconButtonClasses}\n size=\"S\"\n key={id}\n className={classnames(\n {[classnames(styles.active, active)]: activeIndexId === id},\n styles.buttonWrapper,\n buttonWrapper\n )}\n onClick={() => onButtonClick(id)}\n data-reltio-id={`reltio-profile-right-side-button-${id}`}\n />\n );\n })}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'flex-start'\n },\n slice: {\n fontWeight: 500\n },\n cancelButton: {\n width: '88px',\n flexShrink: 0,\n marginLeft: '15px'\n }\n});\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {profile} from '@reltio/mdm-module';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport {pipe} from 'ramda';\nimport i18n from 'ui-i18n';\n\nimport {useStyles} from './styles';\n\nconst ProfileBandHistory = () => {\n const styles = useStyles();\n\n const historyEvent = useSelector(mdmModule.selectors.getHistoryEvent);\n const dispatch = useDispatch();\n const onCancel = pipe(profile.history.actions.clearHistoryEvent, dispatch);\n\n return historyEvent ? (\n <div className={styles.root}>\n <Typography component={'div'}>\n {i18n.text('You are viewing a historic slice:')}{' '}\n <span className={styles.slice}>{i18n.date(historyEvent.aStamp, 'llll')}</span>\n </Typography>\n <Button className={styles.cancelButton} variant=\"contained\" color=\"primary\" onClick={onCancel}>\n {i18n.text('Cancel')}\n </Button>\n </div>\n ) : null;\n};\n\nexport default ProfileBandHistory;\n","import React, {createContext, useContext} from 'react';\nimport {AnyAction} from 'redux';\n\ntype ActionsHook = (listener: (action: AnyAction, state: any) => void) => () => void;\n\nconst ActionsHookContext = createContext<ActionsHook | null>(null);\nActionsHookContext.displayName = 'ActionsHookContext';\n\ntype ProviderProps = {\n hook: ActionsHook;\n children: React.ReactNode;\n};\n\nexport const ActionsHookProvider = ({children, hook}: ProviderProps) => {\n return <ActionsHookContext.Provider value={hook}>{children}</ActionsHookContext.Provider>;\n};\n\nexport const useActionsHook = () => {\n const listenToActions = useContext(ActionsHookContext);\n if (!listenToActions) {\n throw new Error('ActionsHookContext must be provided');\n }\n return listenToActions;\n};\n","import React, {useState, useCallback, useContext} from 'react';\nimport {noop} from '../../core/utils';\n\ntype LoadingState = {\n entitiesNavigation: boolean;\n entity: boolean;\n};\n\ntype ContextValue = {\n isLoading: boolean;\n updateEntityLoadingState: (loading: boolean) => void;\n updateEntitiesNavigationLoadingState: (loading: boolean) => void;\n resetLoadingState: () => void;\n};\n\nconst EntityLoadingIndicationContext = React.createContext<ContextValue>({\n isLoading: false,\n updateEntityLoadingState: noop,\n updateEntitiesNavigationLoadingState: noop,\n resetLoadingState: noop\n});\n\nconst defaultLoadingState: LoadingState = {entitiesNavigation: false, entity: false};\n\nconst useEntityLoadingIndicationHook = () => {\n const [loadingState, setLoadingState] = useState(defaultLoadingState);\n\n const updateEntityLoadingState = useCallback((loading: boolean) => {\n setLoadingState((prevLoadingState) => ({...prevLoadingState, entity: loading}));\n }, []);\n\n const updateEntitiesNavigationLoadingState = useCallback((loading: boolean) => {\n setLoadingState((prevLoadingState) => ({...prevLoadingState, entitiesNavigation: loading}));\n }, []);\n\n const resetLoadingState = useCallback(() => {\n setLoadingState(defaultLoadingState);\n }, []);\n\n const isLoading = Object.values(loadingState).includes(true);\n\n return {isLoading, updateEntityLoadingState, updateEntitiesNavigationLoadingState, resetLoadingState};\n};\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const EntityLoadingIndicationProvider = ({children}: Props) => {\n const value = useEntityLoadingIndicationHook();\n return <EntityLoadingIndicationContext.Provider value={value}>{children}</EntityLoadingIndicationContext.Provider>;\n};\n\nexport const useEntityLoadingIndication = () => {\n return useContext(EntityLoadingIndicationContext);\n};\n","import React from 'react';\n\ntype Labels = {\n profileBand: {\n OPEN_RESULTS?: string;\n SEARCH_RESULT?: string;\n SEARCH_RESULTS?: string;\n NEXT_PROFILE?: string;\n PREVIOUS_PROFILE?: string;\n };\n};\nexport const LabelsContext = React.createContext<Labels>({\n profileBand: {}\n});\n\nLabelsContext.displayName = 'LabelsContext';\n","import React, {useCallback, useContext} from 'react';\nimport {PerspectivesSettings, PerspectiveSettingItem} from '../../types';\n\ntype PerspectivesSettingsProps = {\n settings: PerspectivesSettings;\n onChange: (perspectiveId: string, newSetting: Partial<PerspectiveSettingItem>) => void;\n};\n\nexport const PerspectivesSettingsContext = React.createContext<PerspectivesSettingsProps>({\n settings: {},\n onChange: () => {}\n});\n\nPerspectivesSettingsContext.displayName = 'PerspectivesSettingsContext';\n\nexport const usePerspectivesSettings = (perspectiveId: string) => {\n const {settings, onChange} = useContext(PerspectivesSettingsContext) || {};\n const perspectiveSettings = settings?.[perspectiveId];\n\n const updatePerspectiveSettings = useCallback(\n (newSetting: Partial<PerspectiveSettingItem>) => {\n onChange(perspectiveId, newSetting);\n },\n [perspectiveId, onChange]\n );\n\n return {updatePerspectiveSettings, perspectiveSettings};\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {\n andThen,\n fromPairs,\n map,\n otherwise,\n pipe,\n props,\n uniqBy,\n prop,\n propEq,\n when,\n always,\n assocPath,\n dissocPath,\n path,\n pathOr,\n mergeRight\n} from 'ramda';\nimport {\n CollaborationObjectTypes,\n Comment,\n CommentsMap,\n createComment as createCommentRequest,\n createReply as createReplyRequest,\n getComment as getCommentRequest,\n getCommentsCount as getCommentsCountRequest,\n Reply,\n updateComment as updateCommentRequest,\n updateReply as updateReplyRequest,\n deleteComment as deleteCommentRequest,\n deleteReply as deleteReplyRequest,\n getComments as getCommentsRequest,\n isTempUri,\n CollaborationStateMap,\n CommentState\n} from '@reltio/mdm-sdk';\nimport mdm from '@reltio/mdm-module';\n\ntype Props = {\n objectIds?: string[];\n objectTypes?: CollaborationObjectTypes[];\n enabled?: boolean;\n};\n\nconst filterReplies = (replyId: string, replies: Reply[]) => replies.filter((reply) => reply.replyId !== replyId);\n\nconst getUpdatedReplies = (comment: Comment, reply: Reply) => {\n const changedReplyIndex = comment.replies.findIndex(({replyId}) => replyId === reply.replyId);\n const newReplies = [...comment.replies];\n newReplies[changedReplyIndex] = reply;\n return newReplies;\n};\n\nconst defaultObjectIds = [];\nconst catchErrorInRequest = (e) => console.error('Collaboration error', e);\nexport const useCollaboration = ({objectIds = defaultObjectIds, objectTypes, enabled = true}: Props) => {\n const entity = useSelector(mdm.selectors.getEntity);\n const tenant: string = useSelector(mdm.selectors.getTenant);\n const collaborationPath: string = useSelector(mdm.selectors.getCollaborationPath);\n const isCollaborationEnabled = useSelector(mdm.selectors.isCollaborationEnabled) && enabled;\n\n const [pageToken, setPageToken] = useState<string | null>(null);\n const [comments, setComments] = useState<Comment[]>([]);\n const [commentsMap, setCommentsMap] = useState<CommentsMap>(null);\n const [currentComment, setCurrentComment] = useState<Comment | null>(null);\n const [sending, setSending] = useState(false);\n const [loading, setLoading] = useState(false);\n const [collaborationStateMap, setCollaborationStateMap] = useState<CollaborationStateMap>({});\n\n const addCommentsToCommentsMap = useCallback((commentsMap: CommentsMap) => {\n setCommentsMap((currentCommentsMap) => ({\n ...currentCommentsMap,\n ...commentsMap\n }));\n }, []);\n const entityUri = entity?.uri;\n const getCommentsCount = useCallback(\n (objectIds: string[], shouldResetCommentsMap = false) => {\n if (isCollaborationEnabled && entityUri && !isTempUri(entityUri)) {\n const onError = (e) => {\n console.warn('Collaboration error', e);\n setCommentsMap(null);\n };\n pipe(\n getCommentsCountRequest,\n andThen(map(props(['objectId', 'comments']))),\n andThen(fromPairs),\n andThen(shouldResetCommentsMap ? setCommentsMap : addCommentsToCommentsMap),\n otherwise(onError)\n )({uris: objectIds, tenant, collaborationPath});\n } else {\n setCommentsMap(null);\n }\n },\n [addCommentsToCommentsMap, collaborationPath, entityUri, isCollaborationEnabled, tenant]\n );\n\n useEffect(() => {\n getCommentsCount(objectIds, true);\n }, [objectIds, getCommentsCount]);\n\n const getComments = useCallback(\n (relatedObjectUri: string, pageToken?: string) => {\n getCommentsRequest({collaborationPath, tenant, relatedObjectUri, pageToken})\n .then(({items, nextPageToken}) => {\n setComments((prevComments) => {\n if (!pageToken) {\n return items;\n }\n return uniqBy(prop('commentId'), [...prevComments, ...items]);\n });\n setPageToken(nextPageToken);\n })\n .catch(catchErrorInRequest);\n },\n [collaborationPath, tenant]\n );\n\n const getComment = useCallback(\n (commentId: string) => {\n setLoading(true);\n\n getCommentRequest({collaborationPath, tenant, commentId})\n .then(setCurrentComment)\n .catch(catchErrorInRequest)\n .finally(() => setLoading(false));\n },\n [collaborationPath, tenant]\n );\n\n const addCommentToState = (comment: Comment, uri: string) => {\n setCurrentComment(comment);\n setCommentsMap((prevCommentsMap) => {\n return {\n ...prevCommentsMap,\n [uri]: [...(prevCommentsMap[uri] || []), {commentId: comment.commentId, replies: 0, status: 'open'}]\n };\n });\n setComments((prevComments) => [comment, ...prevComments]);\n };\n const updateCommentInState = (comment: Comment) => {\n setCurrentComment(comment);\n setComments(map(when(propEq('commentId', comment.commentId), always(comment))));\n };\n const deleteCommentFromState = (commentId: string, uri: string) => {\n setCurrentComment(null);\n setCommentsMap((prevCommentsMap) => {\n const comments = prevCommentsMap[uri] || [];\n return {\n ...prevCommentsMap,\n [uri]: comments.filter((c) => c.commentId !== commentId)\n };\n });\n setComments((prevComments) => {\n return prevComments.filter((comment) => comment.commentId !== commentId);\n });\n };\n const createComment = useCallback(\n ({content, namedUsers, objectType, uri, relatedObjectUris}) => {\n setSending(true);\n\n const data = {\n objectId: uri,\n content,\n relatedObjectUris,\n objectType,\n visibility: 'public',\n namedUsers,\n permanentLink: `${window.location.href}&commentId=${encodeURIComponent('{commentId}')}`\n };\n\n return createCommentRequest({collaborationPath, tenant, data})\n .then(([comment]) => addCommentToState(comment, uri))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const editComment = useCallback(\n ({content, namedUsers, objectType, uri, relatedObjectUris, commentId, replies}) => {\n setSending(true);\n\n const data = {\n objectId: uri,\n content,\n relatedObjectUris,\n objectType,\n visibility: 'public',\n namedUsers,\n commentId,\n replies\n };\n\n return updateCommentRequest({collaborationPath, tenant, data})\n .then((comment) => updateCommentInState({...comment, replies}))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const deleteComment = useCallback(\n ({uri, commentId}) => {\n setSending(true);\n\n deleteCommentRequest({collaborationPath, tenant, commentId})\n .then(() => deleteCommentFromState(commentId, uri))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant]\n );\n\n const updateReplyInState = useCallback((reply: Reply, uri: string, commentId: string, isDeleteReply?: boolean) => {\n const newStatus = reply.action === 'resolve' ? 'resolved' : 'open';\n const {replyId} = reply;\n if (newStatus === 'resolved') {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return null;\n }\n });\n } else {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return {\n ...prevCurrentComment,\n replies: isDeleteReply\n ? filterReplies(replyId, prevCurrentComment.replies)\n : [...prevCurrentComment.replies, reply]\n };\n }\n });\n }\n\n setCommentsMap((prevCommentsMap) => ({\n ...prevCommentsMap,\n [uri]: (prevCommentsMap[uri] || []).map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n status: newStatus,\n replies: isDeleteReply ? comment.replies - 1 : comment.replies + 1\n };\n }\n\n return comment;\n })\n }));\n\n setComments((prevComments) => {\n return prevComments.map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n status: newStatus,\n replies: isDeleteReply\n ? filterReplies(reply.replyId, comment.replies)\n : [...comment.replies, reply]\n };\n }\n\n return comment;\n });\n });\n }, []);\n\n const deleteReply = useCallback(\n ({uri, commentId, reply}) => {\n setSending(true);\n\n deleteReplyRequest({collaborationPath, tenant, commentId, replyId: reply.replyId})\n .then(() => updateReplyInState(reply, uri, commentId, true))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, updateReplyInState, tenant]\n );\n\n const editReplyInState = useCallback((reply: Reply, commentId: string) => {\n setCurrentComment((prevCurrentComment) => {\n if (prevCurrentComment) {\n return {\n ...prevCurrentComment,\n replies: getUpdatedReplies(prevCurrentComment, reply)\n };\n }\n });\n\n setComments((prevComments) => {\n return prevComments.map((comment) => {\n if (comment.commentId === commentId) {\n return {\n ...comment,\n replies: getUpdatedReplies(comment, reply)\n };\n }\n\n return comment;\n });\n });\n }, []);\n\n const editReply = useCallback(\n ({content, namedUsers, commentId, replyId}) => {\n setSending(true);\n const data = {\n content,\n namedUsers\n };\n return updateReplyRequest({collaborationPath, tenant, commentId, replyId, data})\n .then((reply) => editReplyInState(reply, commentId))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant, editReplyInState]\n );\n\n const createReply = useCallback(\n ({content, namedUsers, commentId, action, uri}) => {\n setSending(true);\n\n const data = {\n content,\n action,\n namedUsers\n };\n\n return createReplyRequest({collaborationPath, tenant, commentId, data})\n .then(([reply]) => updateReplyInState(reply, uri, commentId))\n .catch(catchErrorInRequest)\n .finally(() => setSending(false));\n },\n [collaborationPath, tenant, updateReplyInState]\n );\n\n const resolveThread = useCallback(\n ({commentId, uri}) => {\n createReply({content: '', namedUsers: [], commentId, action: 'resolve', uri});\n },\n [createReply]\n );\n\n const reOpenThread = useCallback(\n ({commentId, uri}) => {\n createReply({content: '', namedUsers: [], commentId, action: 'reopen', uri});\n },\n [createReply]\n );\n\n const clearCurrentComment = useCallback(() => {\n setCurrentComment(null);\n }, []);\n\n const getCommentState = (uri: string, commentUri: string) => pathOr({}, [uri, commentUri], collaborationStateMap);\n\n const clearCommentState = (uri: string, commentUri: string) =>\n setCollaborationStateMap(dissocPath([uri, commentUri]));\n\n const updateCommentState = (uri: string, commentUri: string, newState: CommentState) => {\n setCollaborationStateMap((prevCollaborationStateMap) => {\n const pathToCommentState = [uri, commentUri];\n const prevCommentState = path(pathToCommentState, prevCollaborationStateMap);\n return assocPath(pathToCommentState, mergeRight(prevCommentState, newState), prevCollaborationStateMap);\n });\n };\n\n return {\n clearCurrentComment,\n comments,\n commentsMap,\n getCommentState,\n updateCommentState,\n clearCommentState,\n createComment,\n createReply,\n currentComment,\n deleteComment,\n editComment,\n getComment,\n getComments,\n getCommentsCount,\n loading,\n objectTypes,\n pageToken,\n reOpenThread,\n resolveThread,\n sending,\n deleteReply,\n editReply\n };\n};\n"],"names":["makeStyles","textOverflow","overflow","whiteSpace","padding","fontSize","lineHeight","marginRight","borderRadius","flexShrink","fontWeight","entity","className","size","styles","useStyles","metadata","useSelector","mdmModule","entityTypeUri","type","entityType","getEntityType","entityTypeColor","getPropWithInheritance","theme","entityTypeLabel","getEntityTypeLabel","ExpandedValueTooltip","value","placement","Typography","style","backgroundColor","color","utils","classnames","component","profileBandWrapper","profileBand","display","alignItems","boxShadow","marginBottom","content","minHeight","inactive","background","inactiveBackground","profileIcon","imageProfileIcon","width","height","profileInfo","flexDirection","flex","badge","label","letterSpacing","palette","text","primary","wordBreak","marginTop","secondaryLabel","marginLeft","businessCard","secondary","specialInfo","justifyContent","flexWrap","entityId","cursor","textDecoration","children","classes","renderLabel","identity","showEntityId","handleCopyEntityIdToClipboard","useCallback","navigator","clipboard","writeText","getEntityId","isNil","getLabel","businessCardText","getBusinessCardAttributesText","isActive","isActiveObject","entityUri","uri","EntityAvatar","key","avatarClassName","imageClassName","variant","EntityTypeBadge","isTempUri","Tooltip","title","i18n","onClick","container","link","LinkWithTooltip","withTooltip","Link","ProfileBandNavigationWidget","total","onPrev","onNext","onSearchResultsClick","isPrevDisabled","isNextDisabled","labels","useContext","LabelsContext","OPEN_RESULTS","SEARCH_RESULT","SEARCH_RESULTS","NEXT_PROFILE","PREVIOUS_PROFILE","mergeRight","underline","tooltipTitle","formatNumberAsMetric","SmallIconButton","icon","KeyboardArrowLeft","disabled","showForDisabled","KeyboardArrowRight","MainSearchProvider","constructor","data","query","sortField","sortOrder","tenant","searchTenant","apiPath","dtssPath","globalSearchRequestOptions","isDT","this","getQueryFilter","rawFilter","getEntities","filters","options","requestFilters","requestOptions","sort","order","select","scoreEnabled","getFilteredEntitiesFromDataTenant","customerTenant","dataTenant","getFilteredEntities","checkEntity","filter","fieldName","values","offset","max","then","entities","length","requestEntities","requestTotal","getTotalFromDataTenant","getTotals","json","GraphSearchProvider","searchBody","allFilters","getGraphSearchEntities","buildFilterQueryString","from","getGraphSearchCount","count","getNewUris","cache","pipe","map","prop","reject","includes","useSearchNavigation","safeCheckEntityPromise","useSafePromise","safeRequestTotalPromise","safeRequestEntitiesPromise","index","state","updateEntitiesNavigationLoadingState","useEntityLoadingIndication","viewId","ViewIdContext","dispatch","useDispatch","loading","setLoading","useState","searchProvider","useMemo","getSearchProvider","updateNavigationData","mdmModuleSearch","openEntity","preparedUri","getEntityUriForLink","mdmModuleUi","source","perspectiveId","useEffect","listenToActions","useActionsHook","stopListeningActions","action","searchNavigationData","payload","winnerUri","losersUris","updatedSearchNavigationData","winnerIndex","indexOf","uriIndex","splice","replaceWithWinnerUri","losersInCache","updatedTotal","updatedIndex","loser","updatedCache","removeLosersUris","applyMergeToSearchNavigationData","requestNextPage","newIndex","newUris","concat","finally","requestPrevPage","Math","min","stepForwardWithCheck","cacheIndex","isExists","clearedCache","stepBackWithCheck","ProfileBandNavigation","mode","isViewMode","useSearchNavigationVisibility","resizablePanesWrapper","flexGrow","pane","position","top","left","right","bottom","DEFAULT_R_PANE_SIZE","ProfileResizablePanes","buttonsProps","defaultTab","perspectiveSettings","updatePerspectiveSettings","usePerspectivesSettings","active","isSidePanelOpen","handleUpdateSettings","newSetting","toggleActive","newId","resetActive","handlePaneSizeChange","ResizablePanes","orientation","minSize","maxSize","allowResize","onChange","debounceInterval","cloneElement","onClose","SideButtonsPanel","onButtonClick","activeIndexId","displayName","zIndex","boxSizing","backgroundClip","margin","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","HANDLE_CHANGE_DEBOUNCE_INTERVAL","isHorizontal","defaultSize","useTheme","containerEl","setContainerEl","isPaneAnimationEnabled","setIsPaneAnimationEnabled","enableAnimation","disableAnimation","getContainerSize","clientHeight","clientWidth","handleChange","debounce","containerSize","percentageSize","isMaxSize","isMinSize","paneAnimationStyle","transition","transitions","create","easing","sharp","duration","leavingScreen","ref","split","onDragStarted","onDragFinished","pane1Style","undefined","paddingTop","paper","fade","main","buttonWrapper","iconButtonClasses","id","buttonProps","root","slice","cancelButton","historyEvent","onCancel","profile","aStamp","Button","ActionsHookContext","createContext","ActionsHookProvider","hook","Provider","Error","EntityLoadingIndicationContext","React","isLoading","updateEntityLoadingState","noop","resetLoadingState","defaultLoadingState","entitiesNavigation","EntityLoadingIndicationProvider","loadingState","setLoadingState","prevLoadingState","Object","useEntityLoadingIndicationHook","PerspectivesSettingsContext","settings","filterReplies","replyId","replies","reply","getUpdatedReplies","comment","changedReplyIndex","findIndex","newReplies","defaultObjectIds","catchErrorInRequest","e","console","error","useCollaboration","objectIds","objectTypes","enabled","mdm","collaborationPath","isCollaborationEnabled","pageToken","setPageToken","comments","setComments","commentsMap","setCommentsMap","currentComment","setCurrentComment","sending","setSending","collaborationStateMap","setCollaborationStateMap","addCommentsToCommentsMap","currentCommentsMap","getCommentsCount","shouldResetCommentsMap","onError","warn","getCommentsCountRequest","andThen","props","fromPairs","otherwise","uris","getComments","relatedObjectUri","getCommentsRequest","items","nextPageToken","prevComments","uniqBy","catch","getComment","commentId","getCommentRequest","createComment","namedUsers","objectType","relatedObjectUris","objectId","visibility","permanentLink","window","location","href","encodeURIComponent","createCommentRequest","prevCommentsMap","status","addCommentToState","editComment","updateCommentRequest","when","propEq","always","updateCommentInState","deleteComment","deleteCommentRequest","c","deleteCommentFromState","updateReplyInState","isDeleteReply","newStatus","prevCurrentComment","deleteReply","deleteReplyRequest","editReplyInState","editReply","updateReplyRequest","createReply","createReplyRequest","resolveThread","reOpenThread","clearCurrentComment","getCommentState","commentUri","pathOr","updateCommentState","newState","prevCollaborationStateMap","pathToCommentState","prevCommentState","path","assocPath","clearCommentState","dissocPath"],"sourceRoot":""}
package/8684.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_reltio_remotes=self.webpackChunk_reltio_remotes||[]).push([[8684],{33405:(e,t,s)=>{s.r(t),s.d(t,{default:()=>r});const r=s(25285).tM}}]);
1
+ "use strict";(self.webpackChunk_reltio_remotes=self.webpackChunk_reltio_remotes||[]).push([[8684],{33405:(e,t,s)=>{s.r(t),s.d(t,{default:()=>r});const r=s(66578).tM}}]);
2
2
  //# sourceMappingURL=8684.js.map