Socket
Socket
Sign inDemoInstall

@itwin/manage-versions-react

Package Overview
Dependencies
24
Maintainers
5
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.3.1 to 1.3.2

2

cjs/index.js

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@itwin/itwinui-react"),t=require("react"),a=require("@itwin/itwinui-icons-react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s,i=n(t);!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer",e.Accept="Accept"}(s||(s={}));class r extends Error{constructor(e,t){super(e?.message),this.code=e?.code,this.statusCode=t}}const o={year:"numeric",month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0};const l=e=>e.toLocaleDateString([...navigator.languages],o),d={title:"Change #",createdBy:"Created By",createdDate:"Date Created",application:"Application",connectionAttributes:"Connection Attributes",changedFiles:"Changed Files",noValue:"N/A"};class c{constructor(e,t){this._errorMessagePrefix="@itwin/manage-versions-react",this._defaultErrorMessage="HTTP error without a message.",this._token=e,this._log=t}async get(e,t){const a={method:"GET",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(a)}async post(e,t,a){const n={method:"POST",url:e,headers:{...a?.headers},body:t,signal:a?.abortController?.signal};return this.makeRequest(n)}async patch(e,t,a){const n={method:"PATCH",url:e,headers:{...a?.headers},body:t,signal:a?.abortController?.signal};return this.makeRequest(n)}async delete(e,t){const a={method:"DELETE",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(a)}async makeRequest(e){this.prepareHeaders(e);try{const t=await fetch(e.url,{method:e.method,headers:e.headers,body:e.body?JSON.stringify(e.body):void 0,signal:e?.signal}),a=await t.json();if(!t.ok)throw new r(a?.error,t.status);return a}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers={[s.Authorization]:this._token,[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json",[s.ContentType]:"application/json",...e.headers}}logError(e,t){this._log?.(`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t={...e.headers};return delete t[s.Authorization],{headers:t,url:e.url,method:e.method}}}class u{static getBaseUrl(e){return`https://${e?`${e}-`:""}api.bentley.com`}static buildVersionsUrl(e,t,a){return`${this.getBaseUrl(a)}/imodels/${e}/namedversions${t?`/${t}`:""}`}static buildChangesetUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/changesets`}static buildGetUsersUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/users`}}u.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>"lastIndex"===e?`${e}=${t}`:`$${e}=${t}`)).join("&");return t?`?${t}`:""};class m{constructor(e,t,a){this._http=new c(e,a),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${u.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${u.getQuery({orderBy:"index+desc",...t})}`,{headers:{[s.Prefer]:"return=representation",[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.changesets))}async getUsers(e){return this._http.get(`${u.buildGetUsersUrl(e,this._serverEnvironmentPrefix)}`,{headers:{[s.Prefer]:"return=representation",[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.users))}}class f{constructor(e,t,a){this._http=new c(e,a),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${u.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${u.getQuery(t)}`,{headers:{[s.Prefer]:"return=representation",[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(u.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,a){return this._http.patch(u.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),a).then((e=>e.namedVersion))}}const g=i.default.createContext(void 0),h=e=>{const{children:t,...a}=e;return i.default.createElement(g.Provider,{value:a},t)},p=()=>{const e=i.default.useContext(g);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function v(e,t){void 0===t&&(t={});var a=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===a&&n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}v(".iac-changes-table .iui-table-body .iui-table-cell{word-break:break-word}.iac-changes-table .iac-create-version-icon-hidden{visibility:hidden}.iac-changes-table .iac-changes-tab-actions{gap:var(--iui-size-2xs)}");v(".iac-additional-info{display:flex;justify-content:space-between;padding:var(--iui-size-s);background-color:var(--iui-color-background-backdrop)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:var(--iui-size-m)}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}");v(".iac-version-modal .iui-modal-dialog{max-width:min(600px,50%)}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}.iac-version-modal .iui-input-container{margin-bottom:var(--iui-size-s)}");const C=t=>{const{initialVersion:a,isLoading:n,title:s,actionName:r,onClose:o,onActionClick:l,children:d}=t,{stringsOverrides:c}=p(),[u,m]=i.default.useState({name:a?.name??"",description:a?.description??""}),f=e=>{const t=e.target.name,a=e.target.value;m((e=>({...e,[t]:a??""})))},g=e=>e.length<=255;return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Modal,{title:s,isOpen:!0,onClose:o,className:"iac-version-modal"},i.default.createElement(e.LabeledInput,{setFocus:!0,name:"name",label:c.name,onChange:f,value:u.name,status:g(u.name)?void 0:"negative",message:g(u.name)?void 0:c.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,autoComplete:"off"}),i.default.createElement(e.LabeledTextarea,{name:"description",label:c.description,onChange:f,value:u.description,status:g(u.description)?void 0:"negative",message:g(u.description)?void 0:c.messageValueTooLong.replace("{{length}}",255..toString()),rows:3,autoComplete:"off"}),d,i.default.createElement(e.ModalButtonBar,null,i.default.createElement(e.Button,{styleType:"high-visibility",onClick:()=>l(u.name,u.description),disabled:!(u.name&&(u.name!==a?.name||u.description!==a?.description)&&g(u.name)&&g(u.description))},r),i.default.createElement(e.Button,{onClick:o},c.cancel)),n&&i.default.createElement("div",{className:"iui-progress-indicator-overlay"},i.default.createElement(e.ProgressRadial,{indeterminate:!0}))),n&&i.default.createElement("div",{className:"iac-version-modal-overlay"}))},E=t=>{const{latestVersion:a,changeset:n,onClose:s,onCreate:r}=t,{accessToken:o,imodelId:l,apiOverrides:d,stringsOverrides:c,log:u}=p(),[m,g]=i.default.useState(!1),h=i.default.useMemo((()=>new f(o,d?.serverEnvironmentPrefix,u)),[o,d?.serverEnvironmentPrefix,u]);return i.default.createElement(C,{title:c.createNamedVersion,actionName:c.create,isLoading:m,onClose:s,onActionClick:(t,a)=>{g(!0),e.toaster.closeAll(),h.create(l,{name:t,description:a,changeSetId:n.id}).then((()=>{g(!1),r(),e.toaster.positive(c.messageVersionCreated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{g(!1),e.toaster.negative((e=>{switch(e){case"NamedVersionExists":return c.messageVersionNameExists;case"InsufficientPermissions":return c.messageInsufficientPermissionsToCreateVersion;default:return c.messageCouldNotCreateVersion}})(t.code),{hasCloseButton:!0})}))}},i.default.createElement("div",{className:"iui-input-container"},i.default.createElement("div",{className:"iui-label"},"Latest included change"),i.default.createElement("div",{className:"iac-additional-info"},i.default.createElement("span",null,"#",n.index),i.default.createElement("span",null,new Date(n.pushDateTime).toLocaleString()))),a&&i.default.createElement("div",{className:"iui-input-container"},i.default.createElement("div",{className:"iui-label"},"Latest Named Version"),i.default.createElement("div",{className:"iac-additional-info"},i.default.createElement("span",{className:"iac-cell-ellipsis"},a.name),i.default.createElement("span",null,new Date(a.createdDateTime).toLocaleString()))))};v(".iac-info-panel{width:400px;min-width:400px}.iac-info-panel .iac-info-panel-body .iac-info-panel-container{padding:var(--iui-size-xs)}.iac-info-panel .iac-info-panel-body .iac-info-panel-container+div{border-top:1px solid var(--iui-color-border-subtle)}.iac-info-panel .iac-info-panel-body .iac-info-panel-details{padding:var(--iui-size-xs);display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}.iac-info-panel .iac-info-panel-body .iac-info-panel-details .iac-info-panel-data-value{flex:2;min-width:50%}.iac-info-panel .iac-info-panel-body .iac-info-panel-property{display:flex;flex:1;margin-right:var(--iui-size-m);justify-content:right;color:var(--iui-color-text-disabled)}");const b=t=>{const{changeset:a,onClose:n,stringOverrides:s=d}=t,r=a.synchronizationInfo?.changedFiles?a.synchronizationInfo.changedFiles:[s.noValue],o=l(new Date(a.pushDateTime)),c=(e,t)=>i.default.createElement("div",{className:"iac-info-panel-details"},i.default.createElement("span",{className:"iac-info-panel-property"},`${e}: `),i.default.createElement("span",{className:"iac-info-panel-data-value"},t));return i.default.createElement(e.InformationPanel,{className:"iac-info-panel",resizable:!1,isOpen:!0},i.default.createElement(e.InformationPanelHeader,{onClose:n},i.default.createElement(e.Text,{variant:"subheading"},s.title+a.index)),i.default.createElement(e.InformationPanelBody,null,i.default.createElement("div",{className:"iac-info-panel-body"},i.default.createElement(e.Text,{className:"iac-info-panel-container"},a.description),i.default.createElement("div",{className:"iac-info-panel-container"},c(s.createdBy,a.createdBy??""),c(s.createdDate,o??""),c(s.application,a.application.name??s.noValue)),i.default.createElement("div",{className:"iac-info-panel-container"},i.default.createElement(e.Text,{variant:"leading"},s.connectionAttributes),c(s.changedFiles,r.join(","))))))};var y;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(y||(y={}));const x=t=>{const{changesets:n,status:s,loadMoreChanges:r,onVersionCreated:o,latestVersion:l}=t,{stringsOverrides:d}=p(),[c,u]=i.default.useState(!1),[m,f]=i.default.useState(void 0),[g,h]=i.default.useState(!1),v=i.default.useCallback((e=>!e._links.namedVersion),[]),C=i.default.useMemo((()=>[{Header:"Name",columns:[{id:"INDEX",Header:"#",accessor:"index",width:90},{id:"DESCRIPTION",Header:d.description,accessor:"description"},{id:"CREATOR",Header:d.user??"User",accessor:"createdBy",maxWidth:220,Cell:t=>""!==t.row.original.createdBy?i.default.createElement(e.Text,null,t.row.original.createdBy):i.default.createElement(e.Text,{isSkeleton:!0},"Loading user info")},{id:"CHANGED_FILES",Header:d.changedFiles,Cell:e=>{const t=e.row.original.synchronizationInfo?.changedFiles;return t?.length?t.join(", "):""}},{id:"PUSH_DATE",Header:d.time,accessor:"pushDateTime",maxWidth:220,Cell:e=>i.default.createElement("span",null,new Date(e.row.original.pushDateTime).toLocaleString())},{id:"changes-table-actions",width:100,cellClassName:"iac-changes-tab-actions",Cell:t=>{const n=t.data[t.row.index],s=v(n)?"":"iac-create-version-icon-hidden";return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.IconButton,{onClick:()=>{f(n),u(!0)},title:d.createNamedVersion,styleType:"borderless",className:s,size:"small"},i.default.createElement(a.SvgNamedVersionAdd,null)),i.default.createElement(e.IconButton,{title:d.informationPanel??"Information Panel",styleType:"borderless",onClick:()=>(f(n),void h(!0)),size:"small"},i.default.createElement(a.SvgInfoCircular,null)))}}]}]),[d.description,d.user,d.changedFiles,d.time,d.createNamedVersion,d.informationPanel,v]),x=i.default.useMemo((()=>s===y.Failed?d.messageFailedGetChanges:d.messageNoChanges),[s,d.messageFailedGetChanges,d.messageNoChanges]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:C,data:n,isLoading:s===y.InProgress||s===y.NotStarted,emptyTableContent:x,onBottomReached:r,className:"iac-changes-table"}),c&&i.default.createElement(E,{changeset:m,onCreate:()=>{u(!1),o()},onClose:()=>u(!1),latestVersion:l}),g&&m&&i.default.createElement(b,{changeset:m,onClose:()=>h(!1),stringOverrides:d.informationPanelStringOverrides}))};v(".iac-versions-table .iui-table-body .iui-table-cell{word-break:break-word}");const w=t=>{const{version:a,onClose:n,onUpdate:s}=t,{accessToken:r,imodelId:o,apiOverrides:l,stringsOverrides:d,log:c}=p(),[u,m]=i.default.useState(!1),g=i.default.useMemo((()=>new f(r,l?.serverEnvironmentPrefix,c)),[r,l?.serverEnvironmentPrefix,c]);return i.default.createElement(C,{title:d.updateNamedVersion,actionName:d.update,initialVersion:a,isLoading:u,onClose:n,onActionClick:(t,n)=>{m(!0),e.toaster.closeAll(),g.update(o,a.id,{name:t,description:n}).then((()=>{m(!1),s(),e.toaster.positive(d.messageVersionUpdated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{m(!1),e.toaster.negative((e=>{switch(e){case"NamedVersionExists":return d.messageVersionNameExists;case"InsufficientPermissions":return d.messageInsufficientPermissionsToUpdateVersion;default:return d.messageCouldNotUpdateVersion}})(t.code),{hasCloseButton:!0})}))}})},N=e=>"version"in e,V=t=>{const{status:n,onVersionUpdated:s,loadMoreVersions:r,onViewClick:o,tableData:l,changesetClient:d,setRelatedChangesets:c}=t,{stringsOverrides:u,imodelId:m}=p(),[f,g]=i.default.useState(void 0),[h,v]=i.default.useState(!1);const C=i.default.useMemo((()=>t=>{if(N(t))return i.default.createElement(e.Text,null,new Date(t.version.createdDateTime).toLocaleString());return""!==t.pushDateTime?i.default.createElement(e.Text,null,new Date(t.pushDateTime).toLocaleString()):i.default.createElement(e.Text,{isSkeleton:!0},"Loading Date")}),[]),E=i.default.useMemo((()=>(t,a)=>{if(["createdDateTime","pushDateTime"].includes(a))return C(t);if(N(t))return i.default.createElement(e.Text,null,t.version[a]);{const n=t[a];return""!==n?i.default.createElement(e.Text,null,n):i.default.createElement(e.Text,{isSkeleton:!0},"Loading")}}),[C]),b=i.default.useMemo((()=>{const t=[{Header:"Name",columns:[{id:"NAME",Header:u.name,accessor:"name",Cell:e=>{const t=N(e.row.original)?"name":"displayName";return E(e.row.original,t)}},{id:"DESCRIPTION",Header:u.description,accessor:"description",Cell:e=>E(e.row.original,"description")},{id:"CREATOR",Header:u.user??"User",accessor:"createdBy",maxWidth:220,Cell:t=>{const a=N(t.row.original)?t.row.original.version.createdBy:t.row.original.createdBy;return""!==a?i.default.createElement(e.Text,null,a):i.default.createElement(e.Text,{isSkeleton:!0},"Loading user info")}},{id:"CREATED_DATE",Header:u.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>{const t=N(e.row.original)?"createdDateTime":"pushDateTime";return E(e.row.original,t)}},{id:"versions-table-actions",width:62,Cell:t=>i.default.createElement(i.default.Fragment,null,N(t.row.original)?i.default.createElement(e.IconButton,{onClick:()=>{g(t.row.original.version),v(!0)},title:u.updateNamedVersion,styleType:"borderless"},i.default.createElement(a.SvgEdit,null)):i.default.createElement(i.default.Fragment,null))}]}];return o&&t[0].columns.splice(4,0,{id:"versions-table-view",width:100,Cell:e=>N(e.row.original)?i.default.createElement("span",{className:"iui-anchor",onClick:()=>o(e.row.original.version)},u.view):i.default.createElement(i.default.Fragment,null)}),t}),[u.name,u.description,u.user,u.time,u.updateNamedVersion,u.view,o,E]),x=i.default.useMemo((()=>n===y.Failed?u.messageFailedGetNamedVersions:u.messageNoNamedVersions),[n,u.messageFailedGetNamedVersions,u.messageNoNamedVersions]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:b,data:l,isLoading:n===y.InProgress||n===y.NotStarted,emptyTableContent:x,onBottomReached:r,className:"iac-versions-table",onExpand:e=>{e?.forEach((e=>{e.subRowsLoaded||async function(e){try{return await d.get(m,{top:10,lastIndex:e})}catch(e){throw e}}(e.version.changesetIndex).then((t=>{const a=[];if(void 0!==t)for(const n of t)if(n.index===e.version.changesetIndex&&null!==n._links.namedVersion||n.index<e.version.changesetIndex&&null===n._links.namedVersion)a.push(n);else if(n.index<e.version.changesetIndex&&null!==n._links.namedVersion)break;c(e.version.id??"",a)})).catch((()=>{console.error("Failed to get Changesets")}))}))},autoResetExpanded:!1}),h&&i.default.createElement(w,{version:f,onUpdate:()=>{v(!1),s()},onClose:()=>v(!1)}))},T={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",changedFiles:"Changed Files",createNamedVersion:"Create a Named Version",user:"User",informationPanel:"Information Panel",cancel:"Cancel",create:"Create",updateNamedVersion:"Update a Named Version",update:"Update",view:"View",messageFailedGetNamedVersions:"Could not get Named Versions. Please try again later.",messageNoNamedVersions:"There are no Named Versions created. To create first go to Changes.",messageFailedGetChanges:"Could not get changes. Please try again later.",messageNoChanges:"There are no changes synchronized.",messageVersionCreated:'Named Version "{{name}}" was successfully created.',messageVersionNameExists:"Named Version with the same name already exists.",messageInsufficientPermissionsToCreateVersion:"You do not have the required permissions to create a Named Version.",messageCouldNotCreateVersion:"Could not create a Named Version. Please try again later.",messageVersionUpdated:'Named Version "{{name}}" was successfully updated.',messageInsufficientPermissionsToUpdateVersion:"You do not have the required permissions to update a Named Version.",messageCouldNotUpdateVersion:"Could not update a Named Version. Please try again later.",messageValueTooLong:"The value exceeds allowed {{length}} characters.",informationPanelStringOverrides:d};var P;exports.ManageVersionsTabs=void 0,(P=exports.ManageVersionsTabs||(exports.ManageVersionsTabs={}))[P.Versions=0]="Versions",P[P.Changes=1]="Changes";const k={id:"",index:0,displayName:"",description:"",pushDateTime:"",synchronizationInfo:{changedFiles:[]},_links:{},creatorId:"",createdBy:"",application:{id:"",name:""}},S=(e,t)=>{if(e.length)return e.map((e=>{const a=e._links.creator.href.substring(e._links.creator.href.lastIndexOf("/")+1);return{...e,createdBy:t?.[a]??""}}))},I=(e,t)=>{if(e.length)return e.map((e=>({...e,createdBy:t?.[e.creatorId]??""})))};exports.ManageVersions=t=>{const{accessToken:a,apiOverrides:n,imodelId:s,stringsOverrides:r=T,log:o,onViewClick:l,currentTab:d=exports.ManageVersionsTabs.Versions,onTabChange:c}=t,u=i.default.useMemo((()=>new f(a,n?.serverEnvironmentPrefix,o)),[a,n?.serverEnvironmentPrefix,o]),g=i.default.useMemo((()=>new m(a,n?.serverEnvironmentPrefix,o)),[a,n?.serverEnvironmentPrefix,o]),[p,v]=i.default.useState(d),C=i.default.useRef(void 0),E=i.default.useCallback((async()=>{const e=(await g.getUsers(s)).reduce(((e,t)=>{const a=[t.givenName,t.surname].filter(Boolean);return e[t.id]=a.length?a.join(" "):t.displayName,e}),{});C.current=e}),[g,s]);i.default.useEffect((()=>{v(d)}),[d]);const[b,w]=i.default.useState(),[N,P]=i.default.useState(y.NotStarted),[D,F]=i.default.useState(),[B,_]=i.default.useState(y.NotStarted),U=i.default.useCallback((e=>{v(e),c?.(e)}),[c]),M=i.default.useCallback((e=>{P(y.InProgress),u.get(s,{top:100,skip:e}).then((e=>{const t=S(e,C.current);w((e=>{return[...(a=t??[],n=e,(a??[]).map(((e,t)=>{const a=n?.[t];return{version:e,subRows:a?.subRows??[k],subRowsLoaded:a?.subRowsLoaded??!1}})))];var a,n})),P(y.Finished)})).catch((()=>P(y.Failed)))}),[s,u]),A=i.default.useCallback((()=>{b&&b.length%100!=0||M(b?.length)}),[M,b]),L=i.default.useCallback((()=>{D&&D.length%100!=0||(_(y.InProgress),g.get(s,{top:100,skip:D?.length}).then((e=>{F([...D??[],...I(e,C.current)??[]]),_(y.Finished)})).catch((()=>_(y.Failed))))}),[D,g,s]),O=i.default.useCallback((()=>{M()}),[M]);i.default.useEffect((()=>{C.current||(async()=>{await E()})().then((()=>{const e=b?.map((e=>{const t=S([e.version]??[],C.current);return{...e,version:t?t[0]:e.version}}));w(e),F((e=>[...I(D??[],C.current)??e??[]]))})).catch((()=>{console.error("Unable to fetch users data")}))}),[D,E,b]),i.default.useEffect((()=>{N===y.NotStarted&&M()}),[M,N]),i.default.useEffect((()=>{p===exports.ManageVersionsTabs.Changes&&B===y.NotStarted&&L()}),[B,p,L]);const R=i.default.useCallback((()=>{U(exports.ManageVersionsTabs.Versions),O(),F(void 0),_(y.NotStarted)}),[U,O]),$=i.default.useMemo((()=>[...b??[]].sort(((e,t)=>new Date(e.version.createdDateTime).valueOf()<new Date(t.version.createdDateTime).valueOf()?1:-1))[0]),[b]);return i.default.createElement(e.ThemeProvider,{theme:"inherit"},i.default.createElement(h,{accessToken:a,imodelId:s,apiOverrides:n,stringsOverrides:r,log:o},i.default.createElement("div",null,i.default.createElement(e.HorizontalTabs,{labels:[r.namedVersions,r.changes],activeIndex:p,onTabSelected:e=>U(e),type:"borderless"}),p===exports.ManageVersionsTabs.Versions&&i.default.createElement(V,{status:N,onVersionUpdated:O,loadMoreVersions:A,onViewClick:l,tableData:b??[],changesetClient:g,setRelatedChangesets:(e,t)=>{const a=I(t,C.current)??[];w((t=>{const n=t?.map((t=>t.version.id===e?{...t,subRows:a,subRowsLoaded:!0}:t));return n??t}))}}),p===exports.ManageVersionsTabs.Changes&&i.default.createElement(x,{changesets:D??[],status:B,loadMoreChanges:L,onVersionCreated:R,latestVersion:$?.version}))))};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@itwin/itwinui-react"),t=require("react"),a=require("@itwin/itwinui-icons-react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s,i=n(t);!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer",e.Accept="Accept"}(s||(s={}));class r extends Error{constructor(e,t){super(e?.message),this.code=e?.code,this.statusCode=t}}const o={year:"numeric",month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0};const l=e=>e.toLocaleDateString([...navigator.languages],o),d={title:"Change #",createdBy:"Created By",createdDate:"Date Created",application:"Application",connectionAttributes:"Connection Attributes",changedFiles:"Changed Files",noValue:"N/A"};class c{constructor(e,t){this._errorMessagePrefix="@itwin/manage-versions-react",this._defaultErrorMessage="HTTP error without a message.",this._token=e,this._log=t}async get(e,t){const a={method:"GET",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(a)}async post(e,t,a){const n={method:"POST",url:e,headers:{...a?.headers},body:t,signal:a?.abortController?.signal};return this.makeRequest(n)}async patch(e,t,a){const n={method:"PATCH",url:e,headers:{...a?.headers},body:t,signal:a?.abortController?.signal};return this.makeRequest(n)}async delete(e,t){const a={method:"DELETE",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(a)}async makeRequest(e){this.prepareHeaders(e);try{const t=await fetch(e.url,{method:e.method,headers:e.headers,body:e.body?JSON.stringify(e.body):void 0,signal:e?.signal}),a=await t.json();if(!t.ok)throw new r(a?.error,t.status);return a}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers={[s.Authorization]:this._token,[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json",[s.ContentType]:"application/json",...e.headers}}logError(e,t){this._log?.(`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t={...e.headers};return delete t[s.Authorization],{headers:t,url:e.url,method:e.method}}}class u{static getBaseUrl(e){return`https://${e?`${e}-`:""}api.bentley.com`}static buildVersionsUrl(e,t,a){return`${this.getBaseUrl(a)}/imodels/${e}/namedversions${t?`/${t}`:""}`}static buildChangesetUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/changesets`}static buildGetUsersUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/users`}}u.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>"lastIndex"===e?`${e}=${t}`:`$${e}=${t}`)).join("&");return t?`?${t}`:""};class m{constructor(e,t,a){this._http=new c(e,a),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${u.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${u.getQuery({orderBy:"index+desc",...t})}`,{headers:{[s.Prefer]:"return=representation",[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.changesets))}async getUsers(e){return this._http.get(`${u.buildGetUsersUrl(e,this._serverEnvironmentPrefix)}`,{headers:{[s.Prefer]:"return=representation",[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.users))}}class f{constructor(e,t,a){this._http=new c(e,a),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${u.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${u.getQuery(t)}`,{headers:{[s.Prefer]:"return=representation",[s.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(u.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,a){return this._http.patch(u.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),a).then((e=>e.namedVersion))}}const g=i.default.createContext(void 0),h=e=>{const{children:t,...a}=e;return i.default.createElement(g.Provider,{value:a},t)},p=()=>{const e=i.default.useContext(g);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function v(e,t){void 0===t&&(t={});var a=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===a&&n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}v(".iac-changes-table .iui-table-body .iui-table-cell{word-break:break-word}.iac-changes-table .iac-create-version-icon-hidden{visibility:hidden}.iac-changes-table .iac-changes-tab-actions{gap:var(--iui-size-2xs)}");v(".iac-additional-info{display:flex;justify-content:space-between;padding:var(--iui-size-s);background-color:var(--iui-color-background-backdrop)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:var(--iui-size-m)}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}");v(".iac-version-modal .iui-modal-dialog{max-width:min(600px,50%)}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}.iac-version-modal .iui-input-container{margin-bottom:var(--iui-size-s)}");const C=t=>{const{initialVersion:a,isLoading:n,title:s,actionName:r,onClose:o,onActionClick:l,children:d}=t,{stringsOverrides:c}=p(),[u,m]=i.default.useState({name:a?.name??"",description:a?.description??""}),f=e=>{const t=e.target.name,a=e.target.value;m((e=>({...e,[t]:a??""})))},g=e=>e.length<=255;return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Modal,{title:s,isOpen:!0,onClose:o,className:"iac-version-modal"},i.default.createElement(e.LabeledInput,{setFocus:!0,name:"name",label:c.name,onChange:f,value:u.name,status:g(u.name)?void 0:"negative",message:g(u.name)?void 0:c.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,autoComplete:"off"}),i.default.createElement(e.LabeledTextarea,{name:"description",label:c.description,onChange:f,value:u.description,status:g(u.description)?void 0:"negative",message:g(u.description)?void 0:c.messageValueTooLong.replace("{{length}}",255..toString()),rows:3,autoComplete:"off"}),d,i.default.createElement(e.ModalButtonBar,null,i.default.createElement(e.Button,{styleType:"high-visibility",onClick:()=>l(u.name,u.description),disabled:!(u.name&&(u.name!==a?.name||u.description!==a?.description)&&g(u.name)&&g(u.description))},r),i.default.createElement(e.Button,{onClick:o},c.cancel)),n&&i.default.createElement("div",{className:"iui-progress-indicator-overlay"},i.default.createElement(e.ProgressRadial,{indeterminate:!0}))),n&&i.default.createElement("div",{className:"iac-version-modal-overlay"}))},E=t=>{const{latestVersion:a,changeset:n,onClose:s,onCreate:r}=t,{accessToken:o,imodelId:d,apiOverrides:c,stringsOverrides:u,log:m}=p(),[g,h]=i.default.useState(!1),v=i.default.useMemo((()=>new f(o,c?.serverEnvironmentPrefix,m)),[o,c?.serverEnvironmentPrefix,m]);return i.default.createElement(C,{title:u.createNamedVersion,actionName:u.create,isLoading:g,onClose:s,onActionClick:(t,a)=>{h(!0),e.toaster.closeAll(),v.create(d,{name:t,description:a,changeSetId:n.id}).then((()=>{h(!1),r(),e.toaster.positive(u.messageVersionCreated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{h(!1),e.toaster.negative((e=>{switch(e){case"NamedVersionExists":return u.messageVersionNameExists;case"InsufficientPermissions":return u.messageInsufficientPermissionsToCreateVersion;default:return u.messageCouldNotCreateVersion}})(t.code),{hasCloseButton:!0})}))}},i.default.createElement("div",{className:"iui-input-container"},i.default.createElement("div",{className:"iui-label"},"Latest included change"),i.default.createElement("div",{className:"iac-additional-info"},i.default.createElement("span",null,"#",n.index),i.default.createElement("span",null,l(new Date(n.pushDateTime))))),a&&i.default.createElement("div",{className:"iui-input-container"},i.default.createElement("div",{className:"iui-label"},"Latest Named Version"),i.default.createElement("div",{className:"iac-additional-info"},i.default.createElement("span",{className:"iac-cell-ellipsis"},a.name),i.default.createElement("span",null,l(new Date(a.createdDateTime))))))};v(".iac-info-panel{width:400px;min-width:400px}.iac-info-panel .iac-info-panel-body .iac-info-panel-container{padding:var(--iui-size-xs)}.iac-info-panel .iac-info-panel-body .iac-info-panel-container+div{border-top:1px solid var(--iui-color-border-subtle)}.iac-info-panel .iac-info-panel-body .iac-info-panel-details{padding:var(--iui-size-xs);display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}.iac-info-panel .iac-info-panel-body .iac-info-panel-details .iac-info-panel-data-value{flex:2;min-width:50%}.iac-info-panel .iac-info-panel-body .iac-info-panel-property{display:flex;flex:1;margin-right:var(--iui-size-m);justify-content:right;color:var(--iui-color-text-disabled)}");const b=t=>{const{changeset:a,onClose:n,stringOverrides:s=d}=t,r=a.synchronizationInfo?.changedFiles?a.synchronizationInfo.changedFiles:[s.noValue],o=l(new Date(a.pushDateTime)),c=(e,t)=>i.default.createElement("div",{className:"iac-info-panel-details"},i.default.createElement("span",{className:"iac-info-panel-property"},`${e}: `),i.default.createElement("span",{className:"iac-info-panel-data-value"},t));return i.default.createElement(e.InformationPanel,{className:"iac-info-panel",resizable:!1,isOpen:!0},i.default.createElement(e.InformationPanelHeader,{onClose:n},i.default.createElement(e.Text,{variant:"subheading"},s.title+a.index)),i.default.createElement(e.InformationPanelBody,null,i.default.createElement("div",{className:"iac-info-panel-body"},i.default.createElement(e.Text,{className:"iac-info-panel-container"},a.description),i.default.createElement("div",{className:"iac-info-panel-container"},c(s.createdBy,a.createdBy??""),c(s.createdDate,o??""),c(s.application,a.application.name??s.noValue)),i.default.createElement("div",{className:"iac-info-panel-container"},i.default.createElement(e.Text,{variant:"leading"},s.connectionAttributes),c(s.changedFiles,r.join(","))))))};var y;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(y||(y={}));const x=t=>{const{changesets:n,status:s,loadMoreChanges:r,onVersionCreated:o,latestVersion:d}=t,{stringsOverrides:c}=p(),[u,m]=i.default.useState(!1),[f,g]=i.default.useState(void 0),[h,v]=i.default.useState(!1),C=i.default.useCallback((e=>!e._links.namedVersion),[]),x=i.default.useMemo((()=>[{Header:"Name",columns:[{id:"INDEX",Header:"#",accessor:"index",width:90},{id:"DESCRIPTION",Header:c.description,accessor:"description"},{id:"CREATOR",Header:c.user??"User",accessor:"createdBy",maxWidth:220,Cell:t=>""!==t.row.original.createdBy?i.default.createElement(e.Text,null,t.row.original.createdBy):i.default.createElement(e.Text,{isSkeleton:!0},"Loading user info")},{id:"CHANGED_FILES",Header:c.changedFiles,Cell:e=>{const t=e.row.original.synchronizationInfo?.changedFiles;return t?.length?t.join(", "):""}},{id:"PUSH_DATE",Header:c.time,accessor:"pushDateTime",maxWidth:220,Cell:e=>i.default.createElement("span",null,l(new Date(e.row.original.pushDateTime)))},{id:"changes-table-actions",width:100,cellClassName:"iac-changes-tab-actions",Cell:t=>{const n=t.data[t.row.index],s=C(n)?"":"iac-create-version-icon-hidden";return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.IconButton,{onClick:()=>{g(n),m(!0)},title:c.createNamedVersion,styleType:"borderless",className:s,size:"small"},i.default.createElement(a.SvgNamedVersionAdd,null)),i.default.createElement(e.IconButton,{title:c.informationPanel??"Information Panel",styleType:"borderless",onClick:()=>(g(n),void v(!0)),size:"small"},i.default.createElement(a.SvgInfoCircular,null)))}}]}]),[c.description,c.user,c.changedFiles,c.time,c.createNamedVersion,c.informationPanel,C]),w=i.default.useMemo((()=>s===y.Failed?c.messageFailedGetChanges:c.messageNoChanges),[s,c.messageFailedGetChanges,c.messageNoChanges]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:x,data:n,isLoading:s===y.InProgress||s===y.NotStarted,emptyTableContent:w,onBottomReached:r,className:"iac-changes-table"}),u&&i.default.createElement(E,{changeset:f,onCreate:()=>{m(!1),o()},onClose:()=>m(!1),latestVersion:d}),h&&f&&i.default.createElement(b,{changeset:f,onClose:()=>v(!1),stringOverrides:c.informationPanelStringOverrides}))};v(".iac-versions-table .iui-table-body .iui-table-cell{word-break:break-word}");const w=t=>{const{version:a,onClose:n,onUpdate:s}=t,{accessToken:r,imodelId:o,apiOverrides:l,stringsOverrides:d,log:c}=p(),[u,m]=i.default.useState(!1),g=i.default.useMemo((()=>new f(r,l?.serverEnvironmentPrefix,c)),[r,l?.serverEnvironmentPrefix,c]);return i.default.createElement(C,{title:d.updateNamedVersion,actionName:d.update,initialVersion:a,isLoading:u,onClose:n,onActionClick:(t,n)=>{m(!0),e.toaster.closeAll(),g.update(o,a.id,{name:t,description:n}).then((()=>{m(!1),s(),e.toaster.positive(d.messageVersionUpdated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{m(!1),e.toaster.negative((e=>{switch(e){case"NamedVersionExists":return d.messageVersionNameExists;case"InsufficientPermissions":return d.messageInsufficientPermissionsToUpdateVersion;default:return d.messageCouldNotUpdateVersion}})(t.code),{hasCloseButton:!0})}))}})},V=e=>"version"in e,N=t=>{const{status:n,onVersionUpdated:s,loadMoreVersions:r,onViewClick:o,tableData:d,changesetClient:c,setRelatedChangesets:u}=t,{stringsOverrides:m,imodelId:f}=p(),[g,h]=i.default.useState(void 0),[v,C]=i.default.useState(!1);const E=i.default.useMemo((()=>t=>{if(V(t))return i.default.createElement(e.Text,null,l(new Date(t.version.createdDateTime)));return""!==t.pushDateTime?i.default.createElement(e.Text,null,l(new Date(t.pushDateTime))):i.default.createElement(e.Text,{isSkeleton:!0},"Loading Date")}),[]),b=i.default.useMemo((()=>(t,a)=>{if(["createdDateTime","pushDateTime"].includes(a))return E(t);if(V(t))return i.default.createElement(e.Text,null,t.version[a]);{const n=t[a];return""!==n?i.default.createElement(e.Text,null,n):i.default.createElement(e.Text,{isSkeleton:!0},"Loading")}}),[E]),x=i.default.useMemo((()=>{const t=[{Header:"Name",columns:[{id:"NAME",Header:m.name,accessor:"name",Cell:e=>{const t=V(e.row.original)?"name":"displayName";return b(e.row.original,t)}},{id:"DESCRIPTION",Header:m.description,accessor:"description",Cell:e=>b(e.row.original,"description")},{id:"CREATOR",Header:m.user??"User",accessor:"createdBy",maxWidth:220,Cell:t=>{const a=V(t.row.original)?t.row.original.version.createdBy:t.row.original.createdBy;return""!==a?i.default.createElement(e.Text,null,a):i.default.createElement(e.Text,{isSkeleton:!0},"Loading user info")}},{id:"CREATED_DATE",Header:m.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>{const t=V(e.row.original)?"createdDateTime":"pushDateTime";return b(e.row.original,t)}},{id:"versions-table-actions",width:62,Cell:t=>i.default.createElement(i.default.Fragment,null,V(t.row.original)?i.default.createElement(e.IconButton,{onClick:()=>{h(t.row.original.version),C(!0)},title:m.updateNamedVersion,styleType:"borderless"},i.default.createElement(a.SvgEdit,null)):i.default.createElement(i.default.Fragment,null))}]}];return o&&t[0].columns.splice(4,0,{id:"versions-table-view",width:100,Cell:e=>V(e.row.original)?i.default.createElement("span",{className:"iui-anchor",onClick:()=>o(e.row.original.version)},m.view):i.default.createElement(i.default.Fragment,null)}),t}),[m.name,m.description,m.user,m.time,m.updateNamedVersion,m.view,o,b]),N=i.default.useMemo((()=>n===y.Failed?m.messageFailedGetNamedVersions:m.messageNoNamedVersions),[n,m.messageFailedGetNamedVersions,m.messageNoNamedVersions]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:x,data:d,isLoading:n===y.InProgress||n===y.NotStarted,emptyTableContent:N,onBottomReached:r,className:"iac-versions-table",onExpand:e=>{e?.forEach((e=>{e.subRowsLoaded||async function(e){try{return await c.get(f,{top:10,lastIndex:e})}catch(e){throw e}}(e.version.changesetIndex).then((t=>{const a=[];if(void 0!==t)for(const n of t)if(n.index===e.version.changesetIndex&&null!==n._links.namedVersion||n.index<e.version.changesetIndex&&null===n._links.namedVersion)a.push(n);else if(n.index<e.version.changesetIndex&&null!==n._links.namedVersion)break;u(e.version.id??"",a)})).catch((()=>{console.error("Failed to get Changesets")}))}))},autoResetExpanded:!1}),v&&i.default.createElement(w,{version:g,onUpdate:()=>{C(!1),s()},onClose:()=>C(!1)}))},T={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",changedFiles:"Changed Files",createNamedVersion:"Create a Named Version",user:"User",informationPanel:"Information Panel",cancel:"Cancel",create:"Create",updateNamedVersion:"Update a Named Version",update:"Update",view:"View",messageFailedGetNamedVersions:"Could not get Named Versions. Please try again later.",messageNoNamedVersions:"There are no Named Versions created. To create first go to Changes.",messageFailedGetChanges:"Could not get changes. Please try again later.",messageNoChanges:"There are no changes synchronized.",messageVersionCreated:'Named Version "{{name}}" was successfully created.',messageVersionNameExists:"Named Version with the same name already exists.",messageInsufficientPermissionsToCreateVersion:"You do not have the required permissions to create a Named Version.",messageCouldNotCreateVersion:"Could not create a Named Version. Please try again later.",messageVersionUpdated:'Named Version "{{name}}" was successfully updated.',messageInsufficientPermissionsToUpdateVersion:"You do not have the required permissions to update a Named Version.",messageCouldNotUpdateVersion:"Could not update a Named Version. Please try again later.",messageValueTooLong:"The value exceeds allowed {{length}} characters.",informationPanelStringOverrides:d};var P;exports.ManageVersionsTabs=void 0,(P=exports.ManageVersionsTabs||(exports.ManageVersionsTabs={}))[P.Versions=0]="Versions",P[P.Changes=1]="Changes";const k={id:"",index:0,displayName:"",description:"",pushDateTime:"",synchronizationInfo:{changedFiles:[]},_links:{},creatorId:"",createdBy:"",application:{id:"",name:""}},I=(e,t,a)=>(e??[]).map(((e,n)=>{const s=t?.[n];return{version:e,subRows:a?[k]:s?.subRows??[k],subRowsLoaded:!a&&(s?.subRowsLoaded??!1)}})),S=(e,t)=>{if(e.length)return e.map((e=>{const a=e._links.creator.href.substring(e._links.creator.href.lastIndexOf("/")+1);return{...e,createdBy:t?.[a]??""}}))},D=(e,t)=>{if(e.length)return e.map((e=>({...e,createdBy:t?.[e.creatorId]??""})))};exports.ManageVersions=t=>{const{accessToken:a,apiOverrides:n,imodelId:s,stringsOverrides:r=T,log:o,onViewClick:l,currentTab:d=exports.ManageVersionsTabs.Versions,onTabChange:c}=t,u=i.default.useMemo((()=>new f(a,n?.serverEnvironmentPrefix,o)),[a,n?.serverEnvironmentPrefix,o]),g=i.default.useMemo((()=>new m(a,n?.serverEnvironmentPrefix,o)),[a,n?.serverEnvironmentPrefix,o]),[p,v]=i.default.useState(d),C=i.default.useRef(void 0),E=i.default.useCallback((async()=>{const e=(await g.getUsers(s)).reduce(((e,t)=>{const a=[t.givenName,t.surname].filter(Boolean);return e[t.id]=a.length?a.join(" "):t.displayName,e}),{});C.current=e}),[g,s]);i.default.useEffect((()=>{v(d)}),[d]);const[b,w]=i.default.useState(),[V,P]=i.default.useState(y.NotStarted),[k,F]=i.default.useState(),[B,_]=i.default.useState(y.NotStarted),M=i.default.useCallback((e=>{v(e),c?.(e)}),[c]),U=i.default.useCallback(((e,t)=>{P(y.InProgress),u.get(s,{top:100,skip:e}).then((e=>{e.sort(((e,t)=>t.changesetIndex-e.changesetIndex));const a=S(e,C.current);w((e=>[...I(a??[],e,t)])),P(y.Finished)})).catch((()=>P(y.Failed)))}),[s,u]),A=i.default.useCallback((()=>{b&&b.length%100!=0||U(b?.length)}),[U,b]),O=i.default.useCallback((()=>{k&&k.length%100!=0||(_(y.InProgress),g.get(s,{top:100,skip:k?.length}).then((e=>{F([...k??[],...D(e,C.current)??[]]),_(y.Finished)})).catch((()=>_(y.Failed))))}),[k,g,s]),R=i.default.useCallback((e=>{U(void 0,e)}),[U]);i.default.useEffect((()=>{C.current||(async()=>{await E()})().then((()=>{const e=b?.map((e=>{const t=S([e.version]??[],C.current);return{...e,version:t?t[0]:e.version}}));w(e),F((e=>[...D(k??[],C.current)??e??[]]))})).catch((()=>{console.error("Unable to fetch users data")}))}),[k,E,b]),i.default.useEffect((()=>{p===exports.ManageVersionsTabs.Versions&&V===y.NotStarted&&U()}),[p,U,V]),i.default.useEffect((()=>{p===exports.ManageVersionsTabs.Changes&&B===y.NotStarted&&O()}),[B,p,O]);const L=i.default.useCallback((()=>{M(exports.ManageVersionsTabs.Versions),R(!0),F(void 0),_(y.NotStarted)}),[M,R]),$=i.default.useMemo((()=>[...b??[]].sort(((e,t)=>new Date(e.version.createdDateTime).valueOf()<new Date(t.version.createdDateTime).valueOf()?1:-1))[0]),[b]);return i.default.createElement(e.ThemeProvider,{theme:"inherit"},i.default.createElement(h,{accessToken:a,imodelId:s,apiOverrides:n,stringsOverrides:r,log:o},i.default.createElement("div",null,i.default.createElement(e.HorizontalTabs,{labels:[r.namedVersions,r.changes],activeIndex:p,onTabSelected:e=>M(e),type:"borderless"}),p===exports.ManageVersionsTabs.Versions&&i.default.createElement(N,{status:V,onVersionUpdated:R,loadMoreVersions:A,onViewClick:l,tableData:b??[],changesetClient:g,setRelatedChangesets:(e,t)=>{const a=D(t,C.current)??[];w((t=>{const n=t?.map((t=>t.version.id===e?{...t,subRows:a,subRowsLoaded:!0}:t));return n??t}))}}),p===exports.ManageVersionsTabs.Changes&&i.default.createElement(x,{changesets:k??[],status:B,loadMoreChanges:O,onVersionCreated:L,latestVersion:$?.version}))))};

@@ -1,1 +0,1 @@

import{Modal as e,LabeledInput as t,LabeledTextarea as n,ModalButtonBar as a,Button as i,ProgressRadial as s,toaster as r,InformationPanel as o,InformationPanelHeader as l,Text as c,InformationPanelBody as d,IconButton as m,Table as u,ThemeProvider as g,HorizontalTabs as h}from"@itwin/itwinui-react";import p from"react";import{SvgNamedVersionAdd as v,SvgInfoCircular as f,SvgEdit as C}from"@itwin/itwinui-icons-react";var E;!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer",e.Accept="Accept"}(E||(E={}));class b extends Error{constructor(e,t){super(e?.message),this.code=e?.code,this.statusCode=t}}const y={year:"numeric",month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0};const w=e=>e.toLocaleDateString([...navigator.languages],y),N={title:"Change #",createdBy:"Created By",createdDate:"Date Created",application:"Application",connectionAttributes:"Connection Attributes",changedFiles:"Changed Files",noValue:"N/A"};class V{constructor(e,t){this._errorMessagePrefix="@itwin/manage-versions-react",this._defaultErrorMessage="HTTP error without a message.",this._token=e,this._log=t}async get(e,t){const n={method:"GET",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(n)}async post(e,t,n){const a={method:"POST",url:e,headers:{...n?.headers},body:t,signal:n?.abortController?.signal};return this.makeRequest(a)}async patch(e,t,n){const a={method:"PATCH",url:e,headers:{...n?.headers},body:t,signal:n?.abortController?.signal};return this.makeRequest(a)}async delete(e,t){const n={method:"DELETE",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(n)}async makeRequest(e){this.prepareHeaders(e);try{const t=await fetch(e.url,{method:e.method,headers:e.headers,body:e.body?JSON.stringify(e.body):void 0,signal:e?.signal}),n=await t.json();if(!t.ok)throw new b(n?.error,t.status);return n}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers={[E.Authorization]:this._token,[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json",[E.ContentType]:"application/json",...e.headers}}logError(e,t){this._log?.(`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t={...e.headers};return delete t[E.Authorization],{headers:t,url:e.url,method:e.method}}}class x{static getBaseUrl(e){return`https://${e?`${e}-`:""}api.bentley.com`}static buildVersionsUrl(e,t,n){return`${this.getBaseUrl(n)}/imodels/${e}/namedversions${t?`/${t}`:""}`}static buildChangesetUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/changesets`}static buildGetUsersUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/users`}}x.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>"lastIndex"===e?`${e}=${t}`:`$${e}=${t}`)).join("&");return t?`?${t}`:""};class T{constructor(e,t,n){this._http=new V(e,n),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${x.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${x.getQuery({orderBy:"index+desc",...t})}`,{headers:{[E.Prefer]:"return=representation",[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.changesets))}async getUsers(e){return this._http.get(`${x.buildGetUsersUrl(e,this._serverEnvironmentPrefix)}`,{headers:{[E.Prefer]:"return=representation",[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.users))}}class k{constructor(e,t,n){this._http=new V(e,n),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${x.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${x.getQuery(t)}`,{headers:{[E.Prefer]:"return=representation",[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(x.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,n){return this._http.patch(x.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),n).then((e=>e.namedVersion))}}const P=p.createContext(void 0),S=e=>{const{children:t,...n}=e;return p.createElement(P.Provider,{value:n},t)},D=()=>{const e=p.useContext(P);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function I(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}I(".iac-changes-table .iui-table-body .iui-table-cell{word-break:break-word}.iac-changes-table .iac-create-version-icon-hidden{visibility:hidden}.iac-changes-table .iac-changes-tab-actions{gap:var(--iui-size-2xs)}");I(".iac-additional-info{display:flex;justify-content:space-between;padding:var(--iui-size-s);background-color:var(--iui-color-background-backdrop)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:var(--iui-size-m)}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}");I(".iac-version-modal .iui-modal-dialog{max-width:min(600px,50%)}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}.iac-version-modal .iui-input-container{margin-bottom:var(--iui-size-s)}");const F=r=>{const{initialVersion:o,isLoading:l,title:c,actionName:d,onClose:m,onActionClick:u,children:g}=r,{stringsOverrides:h}=D(),[v,f]=p.useState({name:o?.name??"",description:o?.description??""}),C=e=>{const t=e.target.name,n=e.target.value;f((e=>({...e,[t]:n??""})))},E=e=>e.length<=255;return p.createElement(p.Fragment,null,p.createElement(e,{title:c,isOpen:!0,onClose:m,className:"iac-version-modal"},p.createElement(t,{setFocus:!0,name:"name",label:h.name,onChange:C,value:v.name,status:E(v.name)?void 0:"negative",message:E(v.name)?void 0:h.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,autoComplete:"off"}),p.createElement(n,{name:"description",label:h.description,onChange:C,value:v.description,status:E(v.description)?void 0:"negative",message:E(v.description)?void 0:h.messageValueTooLong.replace("{{length}}",255..toString()),rows:3,autoComplete:"off"}),g,p.createElement(a,null,p.createElement(i,{styleType:"high-visibility",onClick:()=>u(v.name,v.description),disabled:!(v.name&&(v.name!==o?.name||v.description!==o?.description)&&E(v.name)&&E(v.description))},d),p.createElement(i,{onClick:m},h.cancel)),l&&p.createElement("div",{className:"iui-progress-indicator-overlay"},p.createElement(s,{indeterminate:!0}))),l&&p.createElement("div",{className:"iac-version-modal-overlay"}))},U=e=>{const{latestVersion:t,changeset:n,onClose:a,onCreate:i}=e,{accessToken:s,imodelId:o,apiOverrides:l,stringsOverrides:c,log:d}=D(),[m,u]=p.useState(!1),g=p.useMemo((()=>new k(s,l?.serverEnvironmentPrefix,d)),[s,l?.serverEnvironmentPrefix,d]);return p.createElement(F,{title:c.createNamedVersion,actionName:c.create,isLoading:m,onClose:a,onActionClick:(e,t)=>{u(!0),r.closeAll(),g.create(o,{name:e,description:t,changeSetId:n.id}).then((()=>{u(!1),i(),r.positive(c.messageVersionCreated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{u(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return c.messageVersionNameExists;case"InsufficientPermissions":return c.messageInsufficientPermissionsToCreateVersion;default:return c.messageCouldNotCreateVersion}})(e.code),{hasCloseButton:!0})}))}},p.createElement("div",{className:"iui-input-container"},p.createElement("div",{className:"iui-label"},"Latest included change"),p.createElement("div",{className:"iac-additional-info"},p.createElement("span",null,"#",n.index),p.createElement("span",null,new Date(n.pushDateTime).toLocaleString()))),t&&p.createElement("div",{className:"iui-input-container"},p.createElement("div",{className:"iui-label"},"Latest Named Version"),p.createElement("div",{className:"iac-additional-info"},p.createElement("span",{className:"iac-cell-ellipsis"},t.name),p.createElement("span",null,new Date(t.createdDateTime).toLocaleString()))))};I(".iac-info-panel{width:400px;min-width:400px}.iac-info-panel .iac-info-panel-body .iac-info-panel-container{padding:var(--iui-size-xs)}.iac-info-panel .iac-info-panel-body .iac-info-panel-container+div{border-top:1px solid var(--iui-color-border-subtle)}.iac-info-panel .iac-info-panel-body .iac-info-panel-details{padding:var(--iui-size-xs);display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}.iac-info-panel .iac-info-panel-body .iac-info-panel-details .iac-info-panel-data-value{flex:2;min-width:50%}.iac-info-panel .iac-info-panel-body .iac-info-panel-property{display:flex;flex:1;margin-right:var(--iui-size-m);justify-content:right;color:var(--iui-color-text-disabled)}");const _=e=>{const{changeset:t,onClose:n,stringOverrides:a=N}=e,i=t.synchronizationInfo?.changedFiles?t.synchronizationInfo.changedFiles:[a.noValue],s=w(new Date(t.pushDateTime)),r=(e,t)=>p.createElement("div",{className:"iac-info-panel-details"},p.createElement("span",{className:"iac-info-panel-property"},`${e}: `),p.createElement("span",{className:"iac-info-panel-data-value"},t));return p.createElement(o,{className:"iac-info-panel",resizable:!1,isOpen:!0},p.createElement(l,{onClose:n},p.createElement(c,{variant:"subheading"},a.title+t.index)),p.createElement(d,null,p.createElement("div",{className:"iac-info-panel-body"},p.createElement(c,{className:"iac-info-panel-container"},t.description),p.createElement("div",{className:"iac-info-panel-container"},r(a.createdBy,t.createdBy??""),r(a.createdDate,s??""),r(a.application,t.application.name??a.noValue)),p.createElement("div",{className:"iac-info-panel-container"},p.createElement(c,{variant:"leading"},a.connectionAttributes),r(a.changedFiles,i.join(","))))))};var A;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(A||(A={}));const L=e=>{const{changesets:t,status:n,loadMoreChanges:a,onVersionCreated:i,latestVersion:s}=e,{stringsOverrides:r}=D(),[o,l]=p.useState(!1),[d,g]=p.useState(void 0),[h,C]=p.useState(!1),E=p.useCallback((e=>!e._links.namedVersion),[]),b=p.useMemo((()=>[{Header:"Name",columns:[{id:"INDEX",Header:"#",accessor:"index",width:90},{id:"DESCRIPTION",Header:r.description,accessor:"description"},{id:"CREATOR",Header:r.user??"User",accessor:"createdBy",maxWidth:220,Cell:e=>""!==e.row.original.createdBy?p.createElement(c,null,e.row.original.createdBy):p.createElement(c,{isSkeleton:!0},"Loading user info")},{id:"CHANGED_FILES",Header:r.changedFiles,Cell:e=>{const t=e.row.original.synchronizationInfo?.changedFiles;return t?.length?t.join(", "):""}},{id:"PUSH_DATE",Header:r.time,accessor:"pushDateTime",maxWidth:220,Cell:e=>p.createElement("span",null,new Date(e.row.original.pushDateTime).toLocaleString())},{id:"changes-table-actions",width:100,cellClassName:"iac-changes-tab-actions",Cell:e=>{const t=e.data[e.row.index],n=E(t)?"":"iac-create-version-icon-hidden";return p.createElement(p.Fragment,null,p.createElement(m,{onClick:()=>{g(t),l(!0)},title:r.createNamedVersion,styleType:"borderless",className:n,size:"small"},p.createElement(v,null)),p.createElement(m,{title:r.informationPanel??"Information Panel",styleType:"borderless",onClick:()=>(g(t),void C(!0)),size:"small"},p.createElement(f,null)))}}]}]),[r.description,r.user,r.changedFiles,r.time,r.createNamedVersion,r.informationPanel,E]),y=p.useMemo((()=>n===A.Failed?r.messageFailedGetChanges:r.messageNoChanges),[n,r.messageFailedGetChanges,r.messageNoChanges]);return p.createElement(p.Fragment,null,p.createElement(u,{columns:b,data:t,isLoading:n===A.InProgress||n===A.NotStarted,emptyTableContent:y,onBottomReached:a,className:"iac-changes-table"}),o&&p.createElement(U,{changeset:d,onCreate:()=>{l(!1),i()},onClose:()=>l(!1),latestVersion:s}),h&&d&&p.createElement(_,{changeset:d,onClose:()=>C(!1),stringOverrides:r.informationPanelStringOverrides}))};I(".iac-versions-table .iui-table-body .iui-table-cell{word-break:break-word}");const B=e=>{const{version:t,onClose:n,onUpdate:a}=e,{accessToken:i,imodelId:s,apiOverrides:o,stringsOverrides:l,log:c}=D(),[d,m]=p.useState(!1),u=p.useMemo((()=>new k(i,o?.serverEnvironmentPrefix,c)),[i,o?.serverEnvironmentPrefix,c]);return p.createElement(F,{title:l.updateNamedVersion,actionName:l.update,initialVersion:t,isLoading:d,onClose:n,onActionClick:(e,n)=>{m(!0),r.closeAll(),u.update(s,t.id,{name:e,description:n}).then((()=>{m(!1),a(),r.positive(l.messageVersionUpdated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{m(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return l.messageVersionNameExists;case"InsufficientPermissions":return l.messageInsufficientPermissionsToUpdateVersion;default:return l.messageCouldNotUpdateVersion}})(e.code),{hasCloseButton:!0})}))}})},O=e=>"version"in e,R=e=>{const{status:t,onVersionUpdated:n,loadMoreVersions:a,onViewClick:i,tableData:s,changesetClient:r,setRelatedChangesets:o}=e,{stringsOverrides:l,imodelId:d}=D(),[g,h]=p.useState(void 0),[v,f]=p.useState(!1);const E=p.useMemo((()=>e=>{if(O(e))return p.createElement(c,null,new Date(e.version.createdDateTime).toLocaleString());return""!==e.pushDateTime?p.createElement(c,null,new Date(e.pushDateTime).toLocaleString()):p.createElement(c,{isSkeleton:!0},"Loading Date")}),[]),b=p.useMemo((()=>(e,t)=>{if(["createdDateTime","pushDateTime"].includes(t))return E(e);if(O(e))return p.createElement(c,null,e.version[t]);{const n=e[t];return""!==n?p.createElement(c,null,n):p.createElement(c,{isSkeleton:!0},"Loading")}}),[E]),y=p.useMemo((()=>{const e=[{Header:"Name",columns:[{id:"NAME",Header:l.name,accessor:"name",Cell:e=>{const t=O(e.row.original)?"name":"displayName";return b(e.row.original,t)}},{id:"DESCRIPTION",Header:l.description,accessor:"description",Cell:e=>b(e.row.original,"description")},{id:"CREATOR",Header:l.user??"User",accessor:"createdBy",maxWidth:220,Cell:e=>{const t=O(e.row.original)?e.row.original.version.createdBy:e.row.original.createdBy;return""!==t?p.createElement(c,null,t):p.createElement(c,{isSkeleton:!0},"Loading user info")}},{id:"CREATED_DATE",Header:l.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>{const t=O(e.row.original)?"createdDateTime":"pushDateTime";return b(e.row.original,t)}},{id:"versions-table-actions",width:62,Cell:e=>p.createElement(p.Fragment,null,O(e.row.original)?p.createElement(m,{onClick:()=>{h(e.row.original.version),f(!0)},title:l.updateNamedVersion,styleType:"borderless"},p.createElement(C,null)):p.createElement(p.Fragment,null))}]}];return i&&e[0].columns.splice(4,0,{id:"versions-table-view",width:100,Cell:e=>O(e.row.original)?p.createElement("span",{className:"iui-anchor",onClick:()=>i(e.row.original.version)},l.view):p.createElement(p.Fragment,null)}),e}),[l.name,l.description,l.user,l.time,l.updateNamedVersion,l.view,i,b]),w=p.useMemo((()=>t===A.Failed?l.messageFailedGetNamedVersions:l.messageNoNamedVersions),[t,l.messageFailedGetNamedVersions,l.messageNoNamedVersions]);return p.createElement(p.Fragment,null,p.createElement(u,{columns:y,data:s,isLoading:t===A.InProgress||t===A.NotStarted,emptyTableContent:w,onBottomReached:a,className:"iac-versions-table",onExpand:e=>{e?.forEach((e=>{e.subRowsLoaded||async function(e){try{return await r.get(d,{top:10,lastIndex:e})}catch(e){throw e}}(e.version.changesetIndex).then((t=>{const n=[];if(void 0!==t)for(const a of t)if(a.index===e.version.changesetIndex&&null!==a._links.namedVersion||a.index<e.version.changesetIndex&&null===a._links.namedVersion)n.push(a);else if(a.index<e.version.changesetIndex&&null!==a._links.namedVersion)break;o(e.version.id??"",n)})).catch((()=>{console.error("Failed to get Changesets")}))}))},autoResetExpanded:!1}),v&&p.createElement(B,{version:g,onUpdate:()=>{f(!1),n()},onClose:()=>f(!1)}))},$={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",changedFiles:"Changed Files",createNamedVersion:"Create a Named Version",user:"User",informationPanel:"Information Panel",cancel:"Cancel",create:"Create",updateNamedVersion:"Update a Named Version",update:"Update",view:"View",messageFailedGetNamedVersions:"Could not get Named Versions. Please try again later.",messageNoNamedVersions:"There are no Named Versions created. To create first go to Changes.",messageFailedGetChanges:"Could not get changes. Please try again later.",messageNoChanges:"There are no changes synchronized.",messageVersionCreated:'Named Version "{{name}}" was successfully created.',messageVersionNameExists:"Named Version with the same name already exists.",messageInsufficientPermissionsToCreateVersion:"You do not have the required permissions to create a Named Version.",messageCouldNotCreateVersion:"Could not create a Named Version. Please try again later.",messageVersionUpdated:'Named Version "{{name}}" was successfully updated.',messageInsufficientPermissionsToUpdateVersion:"You do not have the required permissions to update a Named Version.",messageCouldNotUpdateVersion:"Could not update a Named Version. Please try again later.",messageValueTooLong:"The value exceeds allowed {{length}} characters.",informationPanelStringOverrides:N};var z;!function(e){e[e.Versions=0]="Versions",e[e.Changes=1]="Changes"}(z||(z={}));const M={id:"",index:0,displayName:"",description:"",pushDateTime:"",synchronizationInfo:{changedFiles:[]},_links:{},creatorId:"",createdBy:"",application:{id:"",name:""}},H=(e,t)=>{if(e.length)return e.map((e=>{const n=e._links.creator.href.substring(e._links.creator.href.lastIndexOf("/")+1);return{...e,createdBy:t?.[n]??""}}))},j=(e,t)=>{if(e.length)return e.map((e=>({...e,createdBy:t?.[e.creatorId]??""})))},q=e=>{const{accessToken:t,apiOverrides:n,imodelId:a,stringsOverrides:i=$,log:s,onViewClick:r,currentTab:o=z.Versions,onTabChange:l}=e,c=p.useMemo((()=>new k(t,n?.serverEnvironmentPrefix,s)),[t,n?.serverEnvironmentPrefix,s]),d=p.useMemo((()=>new T(t,n?.serverEnvironmentPrefix,s)),[t,n?.serverEnvironmentPrefix,s]),[m,u]=p.useState(o),v=p.useRef(void 0),f=p.useCallback((async()=>{const e=(await d.getUsers(a)).reduce(((e,t)=>{const n=[t.givenName,t.surname].filter(Boolean);return e[t.id]=n.length?n.join(" "):t.displayName,e}),{});v.current=e}),[d,a]);p.useEffect((()=>{u(o)}),[o]);const[C,E]=p.useState(),[b,y]=p.useState(A.NotStarted),[w,N]=p.useState(),[V,x]=p.useState(A.NotStarted),P=p.useCallback((e=>{u(e),l?.(e)}),[l]),D=p.useCallback((e=>{y(A.InProgress),c.get(a,{top:100,skip:e}).then((e=>{const t=H(e,v.current);E((e=>{return[...(n=t??[],a=e,(n??[]).map(((e,t)=>{const n=a?.[t];return{version:e,subRows:n?.subRows??[M],subRowsLoaded:n?.subRowsLoaded??!1}})))];var n,a})),y(A.Finished)})).catch((()=>y(A.Failed)))}),[a,c]),I=p.useCallback((()=>{C&&C.length%100!=0||D(C?.length)}),[D,C]),F=p.useCallback((()=>{w&&w.length%100!=0||(x(A.InProgress),d.get(a,{top:100,skip:w?.length}).then((e=>{N([...w??[],...j(e,v.current)??[]]),x(A.Finished)})).catch((()=>x(A.Failed))))}),[w,d,a]),U=p.useCallback((()=>{D()}),[D]);p.useEffect((()=>{v.current||(async()=>{await f()})().then((()=>{const e=C?.map((e=>{const t=H([e.version]??[],v.current);return{...e,version:t?t[0]:e.version}}));E(e),N((e=>[...j(w??[],v.current)??e??[]]))})).catch((()=>{console.error("Unable to fetch users data")}))}),[w,f,C]),p.useEffect((()=>{b===A.NotStarted&&D()}),[D,b]),p.useEffect((()=>{m===z.Changes&&V===A.NotStarted&&F()}),[V,m,F]);const _=p.useCallback((()=>{P(z.Versions),U(),N(void 0),x(A.NotStarted)}),[P,U]),B=p.useMemo((()=>[...C??[]].sort(((e,t)=>new Date(e.version.createdDateTime).valueOf()<new Date(t.version.createdDateTime).valueOf()?1:-1))[0]),[C]);return p.createElement(g,{theme:"inherit"},p.createElement(S,{accessToken:t,imodelId:a,apiOverrides:n,stringsOverrides:i,log:s},p.createElement("div",null,p.createElement(h,{labels:[i.namedVersions,i.changes],activeIndex:m,onTabSelected:e=>P(e),type:"borderless"}),m===z.Versions&&p.createElement(R,{status:b,onVersionUpdated:U,loadMoreVersions:I,onViewClick:r,tableData:C??[],changesetClient:d,setRelatedChangesets:(e,t)=>{const n=j(t,v.current)??[];E((t=>{const a=t?.map((t=>t.version.id===e?{...t,subRows:n,subRowsLoaded:!0}:t));return a??t}))}}),m===z.Changes&&p.createElement(L,{changesets:w??[],status:V,loadMoreChanges:F,onVersionCreated:_,latestVersion:B?.version}))))};export{q as ManageVersions,z as ManageVersionsTabs};
import{Modal as e,LabeledInput as t,LabeledTextarea as n,ModalButtonBar as a,Button as s,ProgressRadial as i,toaster as r,InformationPanel as o,InformationPanelHeader as l,Text as c,InformationPanelBody as d,IconButton as m,Table as u,ThemeProvider as h,HorizontalTabs as g}from"@itwin/itwinui-react";import p from"react";import{SvgNamedVersionAdd as v,SvgInfoCircular as f,SvgEdit as C}from"@itwin/itwinui-icons-react";var E;!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer",e.Accept="Accept"}(E||(E={}));class b extends Error{constructor(e,t){super(e?.message),this.code=e?.code,this.statusCode=t}}const y={year:"numeric",month:"short",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0};const w=e=>e.toLocaleDateString([...navigator.languages],y),N={title:"Change #",createdBy:"Created By",createdDate:"Date Created",application:"Application",connectionAttributes:"Connection Attributes",changedFiles:"Changed Files",noValue:"N/A"};class V{constructor(e,t){this._errorMessagePrefix="@itwin/manage-versions-react",this._defaultErrorMessage="HTTP error without a message.",this._token=e,this._log=t}async get(e,t){const n={method:"GET",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(n)}async post(e,t,n){const a={method:"POST",url:e,headers:{...n?.headers},body:t,signal:n?.abortController?.signal};return this.makeRequest(a)}async patch(e,t,n){const a={method:"PATCH",url:e,headers:{...n?.headers},body:t,signal:n?.abortController?.signal};return this.makeRequest(a)}async delete(e,t){const n={method:"DELETE",url:e,headers:{...t?.headers},signal:t?.abortController?.signal};return this.makeRequest(n)}async makeRequest(e){this.prepareHeaders(e);try{const t=await fetch(e.url,{method:e.method,headers:e.headers,body:e.body?JSON.stringify(e.body):void 0,signal:e?.signal}),n=await t.json();if(!t.ok)throw new b(n?.error,t.status);return n}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers={[E.Authorization]:this._token,[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json",[E.ContentType]:"application/json",...e.headers}}logError(e,t){this._log?.(`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t={...e.headers};return delete t[E.Authorization],{headers:t,url:e.url,method:e.method}}}class x{static getBaseUrl(e){return`https://${e?`${e}-`:""}api.bentley.com`}static buildVersionsUrl(e,t,n){return`${this.getBaseUrl(n)}/imodels/${e}/namedversions${t?`/${t}`:""}`}static buildChangesetUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/changesets`}static buildGetUsersUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/users`}}x.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>"lastIndex"===e?`${e}=${t}`:`$${e}=${t}`)).join("&");return t?`?${t}`:""};class T{constructor(e,t,n){this._http=new V(e,n),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${x.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${x.getQuery({orderBy:"index+desc",...t})}`,{headers:{[E.Prefer]:"return=representation",[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.changesets))}async getUsers(e){return this._http.get(`${x.buildGetUsersUrl(e,this._serverEnvironmentPrefix)}`,{headers:{[E.Prefer]:"return=representation",[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.users))}}class k{constructor(e,t,n){this._http=new V(e,n),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${x.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${x.getQuery(t)}`,{headers:{[E.Prefer]:"return=representation",[E.Accept]:"application/vnd.bentley.itwin-platform.v2+json"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(x.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,n){return this._http.patch(x.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),n).then((e=>e.namedVersion))}}const P=p.createContext(void 0),I=e=>{const{children:t,...n}=e;return p.createElement(P.Provider,{value:n},t)},S=()=>{const e=p.useContext(P);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function D(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===n&&a.firstChild?a.insertBefore(s,a.firstChild):a.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}D(".iac-changes-table .iui-table-body .iui-table-cell{word-break:break-word}.iac-changes-table .iac-create-version-icon-hidden{visibility:hidden}.iac-changes-table .iac-changes-tab-actions{gap:var(--iui-size-2xs)}");D(".iac-additional-info{display:flex;justify-content:space-between;padding:var(--iui-size-s);background-color:var(--iui-color-background-backdrop)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:var(--iui-size-m)}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}");D(".iac-version-modal .iui-modal-dialog{max-width:min(600px,50%)}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}.iac-version-modal .iui-input-container{margin-bottom:var(--iui-size-s)}");const F=r=>{const{initialVersion:o,isLoading:l,title:c,actionName:d,onClose:m,onActionClick:u,children:h}=r,{stringsOverrides:g}=S(),[v,f]=p.useState({name:o?.name??"",description:o?.description??""}),C=e=>{const t=e.target.name,n=e.target.value;f((e=>({...e,[t]:n??""})))},E=e=>e.length<=255;return p.createElement(p.Fragment,null,p.createElement(e,{title:c,isOpen:!0,onClose:m,className:"iac-version-modal"},p.createElement(t,{setFocus:!0,name:"name",label:g.name,onChange:C,value:v.name,status:E(v.name)?void 0:"negative",message:E(v.name)?void 0:g.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,autoComplete:"off"}),p.createElement(n,{name:"description",label:g.description,onChange:C,value:v.description,status:E(v.description)?void 0:"negative",message:E(v.description)?void 0:g.messageValueTooLong.replace("{{length}}",255..toString()),rows:3,autoComplete:"off"}),h,p.createElement(a,null,p.createElement(s,{styleType:"high-visibility",onClick:()=>u(v.name,v.description),disabled:!(v.name&&(v.name!==o?.name||v.description!==o?.description)&&E(v.name)&&E(v.description))},d),p.createElement(s,{onClick:m},g.cancel)),l&&p.createElement("div",{className:"iui-progress-indicator-overlay"},p.createElement(i,{indeterminate:!0}))),l&&p.createElement("div",{className:"iac-version-modal-overlay"}))},U=e=>{const{latestVersion:t,changeset:n,onClose:a,onCreate:s}=e,{accessToken:i,imodelId:o,apiOverrides:l,stringsOverrides:c,log:d}=S(),[m,u]=p.useState(!1),h=p.useMemo((()=>new k(i,l?.serverEnvironmentPrefix,d)),[i,l?.serverEnvironmentPrefix,d]);return p.createElement(F,{title:c.createNamedVersion,actionName:c.create,isLoading:m,onClose:a,onActionClick:(e,t)=>{u(!0),r.closeAll(),h.create(o,{name:e,description:t,changeSetId:n.id}).then((()=>{u(!1),s(),r.positive(c.messageVersionCreated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{u(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return c.messageVersionNameExists;case"InsufficientPermissions":return c.messageInsufficientPermissionsToCreateVersion;default:return c.messageCouldNotCreateVersion}})(e.code),{hasCloseButton:!0})}))}},p.createElement("div",{className:"iui-input-container"},p.createElement("div",{className:"iui-label"},"Latest included change"),p.createElement("div",{className:"iac-additional-info"},p.createElement("span",null,"#",n.index),p.createElement("span",null,w(new Date(n.pushDateTime))))),t&&p.createElement("div",{className:"iui-input-container"},p.createElement("div",{className:"iui-label"},"Latest Named Version"),p.createElement("div",{className:"iac-additional-info"},p.createElement("span",{className:"iac-cell-ellipsis"},t.name),p.createElement("span",null,w(new Date(t.createdDateTime))))))};D(".iac-info-panel{width:400px;min-width:400px}.iac-info-panel .iac-info-panel-body .iac-info-panel-container{padding:var(--iui-size-xs)}.iac-info-panel .iac-info-panel-body .iac-info-panel-container+div{border-top:1px solid var(--iui-color-border-subtle)}.iac-info-panel .iac-info-panel-body .iac-info-panel-details{padding:var(--iui-size-xs);display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between}.iac-info-panel .iac-info-panel-body .iac-info-panel-details .iac-info-panel-data-value{flex:2;min-width:50%}.iac-info-panel .iac-info-panel-body .iac-info-panel-property{display:flex;flex:1;margin-right:var(--iui-size-m);justify-content:right;color:var(--iui-color-text-disabled)}");const _=e=>{const{changeset:t,onClose:n,stringOverrides:a=N}=e,s=t.synchronizationInfo?.changedFiles?t.synchronizationInfo.changedFiles:[a.noValue],i=w(new Date(t.pushDateTime)),r=(e,t)=>p.createElement("div",{className:"iac-info-panel-details"},p.createElement("span",{className:"iac-info-panel-property"},`${e}: `),p.createElement("span",{className:"iac-info-panel-data-value"},t));return p.createElement(o,{className:"iac-info-panel",resizable:!1,isOpen:!0},p.createElement(l,{onClose:n},p.createElement(c,{variant:"subheading"},a.title+t.index)),p.createElement(d,null,p.createElement("div",{className:"iac-info-panel-body"},p.createElement(c,{className:"iac-info-panel-container"},t.description),p.createElement("div",{className:"iac-info-panel-container"},r(a.createdBy,t.createdBy??""),r(a.createdDate,i??""),r(a.application,t.application.name??a.noValue)),p.createElement("div",{className:"iac-info-panel-container"},p.createElement(c,{variant:"leading"},a.connectionAttributes),r(a.changedFiles,s.join(","))))))};var A;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(A||(A={}));const B=e=>{const{changesets:t,status:n,loadMoreChanges:a,onVersionCreated:s,latestVersion:i}=e,{stringsOverrides:r}=S(),[o,l]=p.useState(!1),[d,h]=p.useState(void 0),[g,C]=p.useState(!1),E=p.useCallback((e=>!e._links.namedVersion),[]),b=p.useMemo((()=>[{Header:"Name",columns:[{id:"INDEX",Header:"#",accessor:"index",width:90},{id:"DESCRIPTION",Header:r.description,accessor:"description"},{id:"CREATOR",Header:r.user??"User",accessor:"createdBy",maxWidth:220,Cell:e=>""!==e.row.original.createdBy?p.createElement(c,null,e.row.original.createdBy):p.createElement(c,{isSkeleton:!0},"Loading user info")},{id:"CHANGED_FILES",Header:r.changedFiles,Cell:e=>{const t=e.row.original.synchronizationInfo?.changedFiles;return t?.length?t.join(", "):""}},{id:"PUSH_DATE",Header:r.time,accessor:"pushDateTime",maxWidth:220,Cell:e=>p.createElement("span",null,w(new Date(e.row.original.pushDateTime)))},{id:"changes-table-actions",width:100,cellClassName:"iac-changes-tab-actions",Cell:e=>{const t=e.data[e.row.index],n=E(t)?"":"iac-create-version-icon-hidden";return p.createElement(p.Fragment,null,p.createElement(m,{onClick:()=>{h(t),l(!0)},title:r.createNamedVersion,styleType:"borderless",className:n,size:"small"},p.createElement(v,null)),p.createElement(m,{title:r.informationPanel??"Information Panel",styleType:"borderless",onClick:()=>(h(t),void C(!0)),size:"small"},p.createElement(f,null)))}}]}]),[r.description,r.user,r.changedFiles,r.time,r.createNamedVersion,r.informationPanel,E]),y=p.useMemo((()=>n===A.Failed?r.messageFailedGetChanges:r.messageNoChanges),[n,r.messageFailedGetChanges,r.messageNoChanges]);return p.createElement(p.Fragment,null,p.createElement(u,{columns:b,data:t,isLoading:n===A.InProgress||n===A.NotStarted,emptyTableContent:y,onBottomReached:a,className:"iac-changes-table"}),o&&p.createElement(U,{changeset:d,onCreate:()=>{l(!1),s()},onClose:()=>l(!1),latestVersion:i}),g&&d&&p.createElement(_,{changeset:d,onClose:()=>C(!1),stringOverrides:r.informationPanelStringOverrides}))};D(".iac-versions-table .iui-table-body .iui-table-cell{word-break:break-word}");const O=e=>{const{version:t,onClose:n,onUpdate:a}=e,{accessToken:s,imodelId:i,apiOverrides:o,stringsOverrides:l,log:c}=S(),[d,m]=p.useState(!1),u=p.useMemo((()=>new k(s,o?.serverEnvironmentPrefix,c)),[s,o?.serverEnvironmentPrefix,c]);return p.createElement(F,{title:l.updateNamedVersion,actionName:l.update,initialVersion:t,isLoading:d,onClose:n,onActionClick:(e,n)=>{m(!0),r.closeAll(),u.update(i,t.id,{name:e,description:n}).then((()=>{m(!1),a(),r.positive(l.messageVersionUpdated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{m(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return l.messageVersionNameExists;case"InsufficientPermissions":return l.messageInsufficientPermissionsToUpdateVersion;default:return l.messageCouldNotUpdateVersion}})(e.code),{hasCloseButton:!0})}))}})},R=e=>"version"in e,$=e=>{const{status:t,onVersionUpdated:n,loadMoreVersions:a,onViewClick:s,tableData:i,changesetClient:r,setRelatedChangesets:o}=e,{stringsOverrides:l,imodelId:d}=S(),[h,g]=p.useState(void 0),[v,f]=p.useState(!1);const E=p.useMemo((()=>e=>{if(R(e))return p.createElement(c,null,w(new Date(e.version.createdDateTime)));return""!==e.pushDateTime?p.createElement(c,null,w(new Date(e.pushDateTime))):p.createElement(c,{isSkeleton:!0},"Loading Date")}),[]),b=p.useMemo((()=>(e,t)=>{if(["createdDateTime","pushDateTime"].includes(t))return E(e);if(R(e))return p.createElement(c,null,e.version[t]);{const n=e[t];return""!==n?p.createElement(c,null,n):p.createElement(c,{isSkeleton:!0},"Loading")}}),[E]),y=p.useMemo((()=>{const e=[{Header:"Name",columns:[{id:"NAME",Header:l.name,accessor:"name",Cell:e=>{const t=R(e.row.original)?"name":"displayName";return b(e.row.original,t)}},{id:"DESCRIPTION",Header:l.description,accessor:"description",Cell:e=>b(e.row.original,"description")},{id:"CREATOR",Header:l.user??"User",accessor:"createdBy",maxWidth:220,Cell:e=>{const t=R(e.row.original)?e.row.original.version.createdBy:e.row.original.createdBy;return""!==t?p.createElement(c,null,t):p.createElement(c,{isSkeleton:!0},"Loading user info")}},{id:"CREATED_DATE",Header:l.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>{const t=R(e.row.original)?"createdDateTime":"pushDateTime";return b(e.row.original,t)}},{id:"versions-table-actions",width:62,Cell:e=>p.createElement(p.Fragment,null,R(e.row.original)?p.createElement(m,{onClick:()=>{g(e.row.original.version),f(!0)},title:l.updateNamedVersion,styleType:"borderless"},p.createElement(C,null)):p.createElement(p.Fragment,null))}]}];return s&&e[0].columns.splice(4,0,{id:"versions-table-view",width:100,Cell:e=>R(e.row.original)?p.createElement("span",{className:"iui-anchor",onClick:()=>s(e.row.original.version)},l.view):p.createElement(p.Fragment,null)}),e}),[l.name,l.description,l.user,l.time,l.updateNamedVersion,l.view,s,b]),N=p.useMemo((()=>t===A.Failed?l.messageFailedGetNamedVersions:l.messageNoNamedVersions),[t,l.messageFailedGetNamedVersions,l.messageNoNamedVersions]);return p.createElement(p.Fragment,null,p.createElement(u,{columns:y,data:i,isLoading:t===A.InProgress||t===A.NotStarted,emptyTableContent:N,onBottomReached:a,className:"iac-versions-table",onExpand:e=>{e?.forEach((e=>{e.subRowsLoaded||async function(e){try{return await r.get(d,{top:10,lastIndex:e})}catch(e){throw e}}(e.version.changesetIndex).then((t=>{const n=[];if(void 0!==t)for(const a of t)if(a.index===e.version.changesetIndex&&null!==a._links.namedVersion||a.index<e.version.changesetIndex&&null===a._links.namedVersion)n.push(a);else if(a.index<e.version.changesetIndex&&null!==a._links.namedVersion)break;o(e.version.id??"",n)})).catch((()=>{console.error("Failed to get Changesets")}))}))},autoResetExpanded:!1}),v&&p.createElement(O,{version:h,onUpdate:()=>{f(!1),n()},onClose:()=>f(!1)}))},L={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",changedFiles:"Changed Files",createNamedVersion:"Create a Named Version",user:"User",informationPanel:"Information Panel",cancel:"Cancel",create:"Create",updateNamedVersion:"Update a Named Version",update:"Update",view:"View",messageFailedGetNamedVersions:"Could not get Named Versions. Please try again later.",messageNoNamedVersions:"There are no Named Versions created. To create first go to Changes.",messageFailedGetChanges:"Could not get changes. Please try again later.",messageNoChanges:"There are no changes synchronized.",messageVersionCreated:'Named Version "{{name}}" was successfully created.',messageVersionNameExists:"Named Version with the same name already exists.",messageInsufficientPermissionsToCreateVersion:"You do not have the required permissions to create a Named Version.",messageCouldNotCreateVersion:"Could not create a Named Version. Please try again later.",messageVersionUpdated:'Named Version "{{name}}" was successfully updated.',messageInsufficientPermissionsToUpdateVersion:"You do not have the required permissions to update a Named Version.",messageCouldNotUpdateVersion:"Could not update a Named Version. Please try again later.",messageValueTooLong:"The value exceeds allowed {{length}} characters.",informationPanelStringOverrides:N};var z;!function(e){e[e.Versions=0]="Versions",e[e.Changes=1]="Changes"}(z||(z={}));const M={id:"",index:0,displayName:"",description:"",pushDateTime:"",synchronizationInfo:{changedFiles:[]},_links:{},creatorId:"",createdBy:"",application:{id:"",name:""}},H=(e,t,n)=>(e??[]).map(((e,a)=>{const s=t?.[a];return{version:e,subRows:n?[M]:s?.subRows??[M],subRowsLoaded:!n&&(s?.subRowsLoaded??!1)}})),j=(e,t)=>{if(e.length)return e.map((e=>{const n=e._links.creator.href.substring(e._links.creator.href.lastIndexOf("/")+1);return{...e,createdBy:t?.[n]??""}}))},q=(e,t)=>{if(e.length)return e.map((e=>({...e,createdBy:t?.[e.creatorId]??""})))},G=e=>{const{accessToken:t,apiOverrides:n,imodelId:a,stringsOverrides:s=L,log:i,onViewClick:r,currentTab:o=z.Versions,onTabChange:l}=e,c=p.useMemo((()=>new k(t,n?.serverEnvironmentPrefix,i)),[t,n?.serverEnvironmentPrefix,i]),d=p.useMemo((()=>new T(t,n?.serverEnvironmentPrefix,i)),[t,n?.serverEnvironmentPrefix,i]),[m,u]=p.useState(o),v=p.useRef(void 0),f=p.useCallback((async()=>{const e=(await d.getUsers(a)).reduce(((e,t)=>{const n=[t.givenName,t.surname].filter(Boolean);return e[t.id]=n.length?n.join(" "):t.displayName,e}),{});v.current=e}),[d,a]);p.useEffect((()=>{u(o)}),[o]);const[C,E]=p.useState(),[b,y]=p.useState(A.NotStarted),[w,N]=p.useState(),[V,x]=p.useState(A.NotStarted),P=p.useCallback((e=>{u(e),l?.(e)}),[l]),S=p.useCallback(((e,t)=>{y(A.InProgress),c.get(a,{top:100,skip:e}).then((e=>{e.sort(((e,t)=>t.changesetIndex-e.changesetIndex));const n=j(e,v.current);E((e=>[...H(n??[],e,t)])),y(A.Finished)})).catch((()=>y(A.Failed)))}),[a,c]),D=p.useCallback((()=>{C&&C.length%100!=0||S(C?.length)}),[S,C]),F=p.useCallback((()=>{w&&w.length%100!=0||(x(A.InProgress),d.get(a,{top:100,skip:w?.length}).then((e=>{N([...w??[],...q(e,v.current)??[]]),x(A.Finished)})).catch((()=>x(A.Failed))))}),[w,d,a]),U=p.useCallback((e=>{S(void 0,e)}),[S]);p.useEffect((()=>{v.current||(async()=>{await f()})().then((()=>{const e=C?.map((e=>{const t=j([e.version]??[],v.current);return{...e,version:t?t[0]:e.version}}));E(e),N((e=>[...q(w??[],v.current)??e??[]]))})).catch((()=>{console.error("Unable to fetch users data")}))}),[w,f,C]),p.useEffect((()=>{m===z.Versions&&b===A.NotStarted&&S()}),[m,S,b]),p.useEffect((()=>{m===z.Changes&&V===A.NotStarted&&F()}),[V,m,F]);const _=p.useCallback((()=>{P(z.Versions),U(!0),N(void 0),x(A.NotStarted)}),[P,U]),O=p.useMemo((()=>[...C??[]].sort(((e,t)=>new Date(e.version.createdDateTime).valueOf()<new Date(t.version.createdDateTime).valueOf()?1:-1))[0]),[C]);return p.createElement(h,{theme:"inherit"},p.createElement(I,{accessToken:t,imodelId:a,apiOverrides:n,stringsOverrides:s,log:i},p.createElement("div",null,p.createElement(g,{labels:[s.namedVersions,s.changes],activeIndex:m,onTabSelected:e=>P(e),type:"borderless"}),m===z.Versions&&p.createElement($,{status:b,onVersionUpdated:U,loadMoreVersions:D,onViewClick:r,tableData:C??[],changesetClient:d,setRelatedChangesets:(e,t)=>{const n=q(t,v.current)??[];E((t=>{const a=t?.map((t=>t.version.id===e?{...t,subRows:n,subRowsLoaded:!0}:t));return a??t}))}}),m===z.Changes&&p.createElement(B,{changesets:w??[],status:V,loadMoreChanges:F,onVersionCreated:_,latestVersion:O?.version}))))};export{G as ManageVersions,z as ManageVersionsTabs};

@@ -5,3 +5,3 @@ {

"repository": "https://github.com/iTwin/admin-components-react/tree/main/packages/modules/manage-versions",
"version": "1.3.1",
"version": "1.3.2",
"main": "cjs/index.js",

@@ -8,0 +8,0 @@ "module": "esm/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc