Socket
Socket
Sign inDemoInstall

@itwin/manage-versions-react

Package Overview
Dependencies
Maintainers
2
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@itwin/manage-versions-react - npm Package Compare versions

Comparing version 0.5.0 to 0.6.0

12

CHANGELOG.json

@@ -5,2 +5,14 @@ {

{
"version": "0.6.0",
"tag": "@itwin/manage-versions-react_v0.6.0",
"date": "Wed, 30 Jun 2021 12:19:08 GMT",
"comments": {
"minor": [
{
"comment": "Added View column and click handler prop. Currently allowing to view all Named Versions as APIM is missing Checkpoints API."
}
]
}
},
{
"version": "0.5.0",

@@ -7,0 +19,0 @@ "tag": "@itwin/manage-versions-react_v0.5.0",

9

CHANGELOG.md
# Change Log - @itwin/manage-versions-react
This log was last generated on Tue, 22 Jun 2021 07:28:46 GMT and should not be manually modified.
This log was last generated on Wed, 30 Jun 2021 12:19:08 GMT and should not be manually modified.
## 0.6.0
Wed, 30 Jun 2021 12:19:08 GMT
### Minor changes
- Added View column and click handler prop. Currently allowing to view all Named Versions as APIM is missing Checkpoints API.
## 0.5.0

@@ -6,0 +13,0 @@ Tue, 22 Jun 2021 07:28:46 GMT

/// <reference types="react" />
import { NamedVersion } from "../../models";
import { ApiOverrides, LogFunc, ManageVersionsStringOverrides } from "./types";

@@ -15,3 +16,5 @@ export declare const defaultStrings: ManageVersionsStringOverrides;

log?: LogFunc;
/** Callback when view Named Version is clicked. If not present, then `View` won't be shown. */
onViewClick?: (version: NamedVersion) => void;
};
export declare const ManageVersions: (props: ManageVersionsProps) => JSX.Element;

@@ -28,2 +28,4 @@ export declare enum RequestStatus {

update: string;
/** Default: `View` */
view: string;
/** Error message when failed to fetch Named Versions. Default `Could not get Named Versions. Please try again later.`. */

@@ -30,0 +32,0 @@ messageFailedGetNamedVersions: string;

@@ -10,4 +10,5 @@ /// <reference types="react" />

loadMoreVersions: () => void;
onViewClick?: (version: NamedVersion) => void;
};
declare const VersionsTab: (props: VersionsTabProps) => JSX.Element;
export default VersionsTab;
export { ManageVersions } from "./components/ManageVersions/ManageVersions";
export type { ManageVersionsProps } from "./components/ManageVersions/ManageVersions";
export type { ApiOverrides, LogFunc, ManageVersionsStringOverrides, } from "./components/ManageVersions/types";
export type { NamedVersion } from "./models";

2

cjs/index.js

@@ -15,2 +15,2 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@itwin/itwinui-react"),t=require("react"),a=require("@itwin/itwinui-icons-react");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n,i=s(t);!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer"}(n||(n={}));class r extends Error{constructor(e,t){super(null==e?void 0:e.message),this.code=null==e?void 0:e.code,this.statusCode=t}}class o{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){var a;const s={method:"GET",url:e,headers:Object.assign({},null==t?void 0:t.headers),signal:null===(a=null==t?void 0:t.abortController)||void 0===a?void 0:a.signal};return this.makeRequest(s)}async post(e,t,a){var s;const n={method:"POST",url:e,headers:Object.assign({},null==a?void 0:a.headers),body:t,signal:null===(s=null==a?void 0:a.abortController)||void 0===s?void 0:s.signal};return this.makeRequest(n)}async patch(e,t,a){var s;const n={method:"PATCH",url:e,headers:Object.assign({},null==a?void 0:a.headers),body:t,signal:null===(s=null==a?void 0:a.abortController)||void 0===s?void 0:s.signal};return this.makeRequest(n)}async delete(e,t){var a;const s={method:"DELETE",url:e,headers:Object.assign({},null==t?void 0:t.headers),signal:null===(a=null==t?void 0:t.abortController)||void 0===a?void 0:a.signal};return this.makeRequest(s)}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:null==e?void 0:e.signal}),a=await t.json();if(!t.ok)throw new r(null==a?void 0:a.error,t.status);return a}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers=Object.assign({[n.Authorization]:this._token,[n.ContentType]:"application/json"},e.headers)}logError(e,t){var a;null===(a=this._log)||void 0===a||a.call(this,`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t=Object.assign({},e.headers);return delete t[n.Authorization],{headers:t,url:e.url,method:e.method}}}class l{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`}}l.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>`$${e}=${t}`)).join("&");return t?`?${t}`:""};class d{constructor(e,t,a){this._http=new o(e,a),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${l.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${l.getQuery(Object.assign({orderBy:"index+desc"},t))}`,{headers:{[n.Prefer]:"return=representation"}}).then((e=>e.changesets))}}class c{constructor(e,t,a){this._http=new o(e,a),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${l.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${l.getQuery(t)}`,{headers:{[n.Prefer]:"return=representation"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(l.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,a){return this._http.patch(l.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),a).then((e=>e.namedVersion))}}

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */const u=i.default.createContext(void 0),m=e=>{const{children:t}=e,a=function(e,t){var a={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(a[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(e);n<s.length;n++)t.indexOf(s[n])<0&&Object.prototype.propertyIsEnumerable.call(e,s[n])&&(a[s[n]]=e[s[n]])}return a}(e,["children"]);return i.default.createElement(u.Provider,{value:a},t)},g=()=>{const e=i.default.useContext(u);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function h(e,t){void 0===t&&(t={});var a=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===a&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}h(".iac-changes-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-create-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");h(".iac-additional-info{display:flex;justify-content:space-between;padding:11px 12px;background-color:#F8F9FB;background-color:var(--iui-color-background-2)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:16px}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}\n");h(".iac-version-modal .iui-modal-dialog{max-width:calc(min(600px, 50%))}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}\n");const f=t=>{var a,s;const{initialVersion:n,isLoading:r,title:o,actionName:l,onClose:d,onActionClick:c,children:u}=t,{stringsOverrides:m}=g(),[h,f]=i.default.useState({name:null!==(a=null==n?void 0:n.name)&&void 0!==a?a:"",description:null!==(s=null==n?void 0:n.description)&&void 0!==s?s:""}),v=e=>{const t=e.target.name,a=e.target.value;f((e=>Object.assign(Object.assign({},e),{[t]:null!=a?a:""})))},p=e=>e.length<=255;return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Modal,{title:o,isOpen:!0,onClose:d,className:"iac-version-modal"},i.default.createElement(e.LabeledInput,{name:"name",label:m.name,onChange:v,value:h.name,status:p(h.name)?void 0:"negative",message:p(h.name)?void 0:m.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,setFocus:!0}),i.default.createElement(e.LabeledTextarea,{name:"description",label:m.description,onChange:v,value:h.description,status:p(h.description)?void 0:"negative",message:p(h.description)?void 0:m.messageValueTooLong.replace("{{length}}",255..toString()),rows:3}),u,i.default.createElement(e.ModalButtonBar,null,i.default.createElement(e.Button,{styleType:"high-visibility",onClick:()=>c(h.name,h.description),disabled:!(h.name&&(h.name!==(null==n?void 0:n.name)||h.description!==(null==n?void 0:n.description))&&p(h.name)&&p(h.description))},l),i.default.createElement(e.Button,{onClick:d},m.cancel)),r&&i.default.createElement("div",{className:"iui-progress-indicator-overlay"},i.default.createElement(e.ProgressRadial,{indeterminate:!0}))),r&&i.default.createElement("div",{className:"iac-version-modal-overlay"}))},v=t=>{const{latestVersion:a,changeset:s,onClose:n,onCreate:r}=t,{accessToken:o,imodelId:l,apiOverrides:d,stringsOverrides:u,log:m}=g(),[h,v]=i.default.useState(!1),p=i.default.useMemo((()=>new c(o,null==d?void 0:d.serverEnvironmentPrefix,m)),[o,null==d?void 0:d.serverEnvironmentPrefix,m]);return i.default.createElement(f,{title:u.createNamedVersion,actionName:u.create,isLoading:h,onClose:n,onActionClick:(t,a)=>{v(!0),e.toaster.closeAll(),p.create(l,{name:t,description:a,changeSetId:s.id}).then((()=>{v(!1),r(),e.toaster.positive(u.messageVersionCreated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{v(!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,"#",s.index),i.default.createElement("span",null,new Date(s.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()))))};var p;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(p||(p={}));const C=t=>{const{changesets:s,status:n,loadMoreChanges:r,onVersionCreated:o,latestVersion:l}=t,{stringsOverrides:d}=g(),[c,u]=i.default.useState(!1),[m,h]=i.default.useState(void 0),f=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:"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:62,Cell:e=>{const t=e.data[e.row.index];return i.default.createElement(i.default.Fragment,null,f(t)&&i.default.createElement("div",{className:"iac-create-version-icon",onClick:()=>{h(t),u(!0)},title:d.createNamedVersion},i.default.createElement(a.SvgNamedVersionAdd,null)))}}]}]),[f,d.createNamedVersion,d.description,d.time]),E=i.default.useMemo((()=>n===p.Failed?d.messageFailedGetChanges:d.messageNoChanges),[n,d.messageFailedGetChanges,d.messageNoChanges]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:C,data:s,isLoading:n===p.InProgress||n===p.NotStarted,emptyTableContent:E,onBottomReached:r,className:"iac-changes-table"}),c&&i.default.createElement(v,{changeset:m,onCreate:()=>{u(!1),o()},onClose:()=>u(!1),latestVersion:l}))};h(".iac-versions-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-update-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");const E=t=>{const{version:a,onClose:s,onUpdate:n}=t,{accessToken:r,imodelId:o,apiOverrides:l,stringsOverrides:d,log:u}=g(),[m,h]=i.default.useState(!1),v=i.default.useMemo((()=>new c(r,null==l?void 0:l.serverEnvironmentPrefix,u)),[r,null==l?void 0:l.serverEnvironmentPrefix,u]);return i.default.createElement(f,{title:d.updateNamedVersion,actionName:d.update,initialVersion:a,isLoading:m,onClose:s,onActionClick:(t,s)=>{h(!0),e.toaster.closeAll(),v.update(o,a.id,{name:t,description:s}).then((()=>{h(!1),n(),e.toaster.positive(d.messageVersionUpdated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{h(!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})}))}})},b=t=>{const{versions:s,status:n,onVersionUpdated:r,loadMoreVersions:o}=t,{stringsOverrides:l}=g(),[d,c]=i.default.useState(void 0),[u,m]=i.default.useState(!1),h=i.default.useMemo((()=>[{Header:"Name",columns:[{id:"NAME",Header:l.name,accessor:"name"},{id:"DESCRIPTION",Header:l.description,accessor:"description"},{id:"CREATED_DATE",Header:l.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>i.default.createElement("span",null,new Date(e.row.original.createdDateTime).toLocaleString())},{id:"versions-table-actions",width:62,Cell:e=>i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"iac-update-version-icon",onClick:()=>{c(e.row.original),m(!0)},title:l.updateNamedVersion},i.default.createElement(a.SvgEdit,null)))}]}]),[l.description,l.name,l.time,l.updateNamedVersion]),f=i.default.useMemo((()=>n===p.Failed?l.messageFailedGetNamedVersions:l.messageNoNamedVersions),[n,l.messageFailedGetNamedVersions,l.messageNoNamedVersions]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:h,data:s,isLoading:n===p.InProgress||n===p.NotStarted,emptyTableContent:f,onBottomReached:o,className:"iac-versions-table"}),u&&i.default.createElement(E,{version:d,onUpdate:()=>{m(!1),r()},onClose:()=>m(!1)}))},N={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",createNamedVersion:"Create a Named Version",cancel:"Cancel",create:"Create",updateNamedVersion:"Update a Named Version",update:"Update",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."};var V;!function(e){e[e.Version=0]="Version",e[e.Changes=1]="Changes"}(V||(V={}));exports.ManageVersions=t=>{const{accessToken:a,apiOverrides:s,imodelId:n,stringsOverrides:r=N,log:o}=t,l=i.default.useMemo((()=>new c(a,null==s?void 0:s.serverEnvironmentPrefix,o)),[a,null==s?void 0:s.serverEnvironmentPrefix,o]),u=i.default.useMemo((()=>new d(a,null==s?void 0:s.serverEnvironmentPrefix,o)),[a,null==s?void 0:s.serverEnvironmentPrefix,o]),[g,h]=i.default.useState(V.Version),[f,v]=i.default.useState(),[E,y]=i.default.useState(p.NotStarted),[w,x]=i.default.useState(),[T,P]=i.default.useState(p.NotStarted),S=i.default.useCallback((e=>{y(p.InProgress),l.get(n,{top:100,skip:e}).then((e=>{y(p.Finished),v((t=>[...null!=t?t:[],...e]))})).catch((()=>y(p.Failed)))}),[n,l]),O=i.default.useCallback((()=>{f&&f.length%100!=0||S(null==f?void 0:f.length)}),[S,f]),k=i.default.useCallback((()=>{v(void 0),S()}),[S]);i.default.useEffect((()=>{E===p.NotStarted&&S()}),[S,E]);const F=i.default.useCallback((()=>{w&&w.length%100!=0||(P(p.InProgress),u.get(n,{top:100,skip:null==w?void 0:w.length}).then((e=>{P(p.Finished),x([...null!=w?w:[],...e])})).catch((()=>P(p.Failed))))}),[u,w,n]);i.default.useEffect((()=>{g===V.Changes&&T===p.NotStarted&&F()}),[T,g,F]);const I=i.default.useCallback((()=>{h(V.Version),k(),x(void 0),P(p.NotStarted)}),[k]),_=i.default.useMemo((()=>[...null!=f?f:[]].sort(((e,t)=>new Date(e.createdDateTime).valueOf()<new Date(t.createdDateTime).valueOf()?1:-1))[0]),[f]);return i.default.createElement(m,{accessToken:a,imodelId:n,apiOverrides:s,stringsOverrides:r,log:o},i.default.createElement("div",null,i.default.createElement(e.HorizontalTabs,{labels:[r.namedVersions,r.changes],activeIndex:g,onTabSelected:e=>h(e),type:"borderless"}),g===V.Version&&i.default.createElement(b,{versions:null!=f?f:[],status:E,onVersionUpdated:k,loadMoreVersions:O}),g===V.Changes&&i.default.createElement(C,{changesets:null!=w?w:[],status:T,loadMoreChanges:F,onVersionCreated:I,latestVersion:_})))};
***************************************************************************** */const u=i.default.createContext(void 0),m=e=>{const{children:t}=e,a=function(e,t){var a={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(a[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(e);n<s.length;n++)t.indexOf(s[n])<0&&Object.prototype.propertyIsEnumerable.call(e,s[n])&&(a[s[n]]=e[s[n]])}return a}(e,["children"]);return i.default.createElement(u.Provider,{value:a},t)},g=()=>{const e=i.default.useContext(u);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function h(e,t){void 0===t&&(t={});var a=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===a&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}h(".iac-changes-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-create-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");h(".iac-additional-info{display:flex;justify-content:space-between;padding:11px 12px;background-color:#F8F9FB;background-color:var(--iui-color-background-2)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:16px}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}\n");h(".iac-version-modal .iui-modal-dialog{max-width:calc(min(600px, 50%))}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}\n");const f=t=>{var a,s;const{initialVersion:n,isLoading:r,title:o,actionName:l,onClose:d,onActionClick:c,children:u}=t,{stringsOverrides:m}=g(),[h,f]=i.default.useState({name:null!==(a=null==n?void 0:n.name)&&void 0!==a?a:"",description:null!==(s=null==n?void 0:n.description)&&void 0!==s?s:""}),v=e=>{const t=e.target.name,a=e.target.value;f((e=>Object.assign(Object.assign({},e),{[t]:null!=a?a:""})))},p=e=>e.length<=255;return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Modal,{title:o,isOpen:!0,onClose:d,className:"iac-version-modal"},i.default.createElement(e.LabeledInput,{name:"name",label:m.name,onChange:v,value:h.name,status:p(h.name)?void 0:"negative",message:p(h.name)?void 0:m.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,setFocus:!0}),i.default.createElement(e.LabeledTextarea,{name:"description",label:m.description,onChange:v,value:h.description,status:p(h.description)?void 0:"negative",message:p(h.description)?void 0:m.messageValueTooLong.replace("{{length}}",255..toString()),rows:3}),u,i.default.createElement(e.ModalButtonBar,null,i.default.createElement(e.Button,{styleType:"high-visibility",onClick:()=>c(h.name,h.description),disabled:!(h.name&&(h.name!==(null==n?void 0:n.name)||h.description!==(null==n?void 0:n.description))&&p(h.name)&&p(h.description))},l),i.default.createElement(e.Button,{onClick:d},m.cancel)),r&&i.default.createElement("div",{className:"iui-progress-indicator-overlay"},i.default.createElement(e.ProgressRadial,{indeterminate:!0}))),r&&i.default.createElement("div",{className:"iac-version-modal-overlay"}))},v=t=>{const{latestVersion:a,changeset:s,onClose:n,onCreate:r}=t,{accessToken:o,imodelId:l,apiOverrides:d,stringsOverrides:u,log:m}=g(),[h,v]=i.default.useState(!1),p=i.default.useMemo((()=>new c(o,null==d?void 0:d.serverEnvironmentPrefix,m)),[o,null==d?void 0:d.serverEnvironmentPrefix,m]);return i.default.createElement(f,{title:u.createNamedVersion,actionName:u.create,isLoading:h,onClose:n,onActionClick:(t,a)=>{v(!0),e.toaster.closeAll(),p.create(l,{name:t,description:a,changeSetId:s.id}).then((()=>{v(!1),r(),e.toaster.positive(u.messageVersionCreated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{v(!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,"#",s.index),i.default.createElement("span",null,new Date(s.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()))))};var p;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(p||(p={}));const C=t=>{const{changesets:s,status:n,loadMoreChanges:r,onVersionCreated:o,latestVersion:l}=t,{stringsOverrides:d}=g(),[c,u]=i.default.useState(!1),[m,h]=i.default.useState(void 0),f=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:"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:62,Cell:e=>{const t=e.data[e.row.index];return i.default.createElement(i.default.Fragment,null,f(t)&&i.default.createElement("div",{className:"iac-create-version-icon",onClick:()=>{h(t),u(!0)},title:d.createNamedVersion},i.default.createElement(a.SvgNamedVersionAdd,null)))}}]}]),[f,d.createNamedVersion,d.description,d.time]),E=i.default.useMemo((()=>n===p.Failed?d.messageFailedGetChanges:d.messageNoChanges),[n,d.messageFailedGetChanges,d.messageNoChanges]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:C,data:s,isLoading:n===p.InProgress||n===p.NotStarted,emptyTableContent:E,onBottomReached:r,className:"iac-changes-table"}),c&&i.default.createElement(v,{changeset:m,onCreate:()=>{u(!1),o()},onClose:()=>u(!1),latestVersion:l}))};h(".iac-versions-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-update-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");const E=t=>{const{version:a,onClose:s,onUpdate:n}=t,{accessToken:r,imodelId:o,apiOverrides:l,stringsOverrides:d,log:u}=g(),[m,h]=i.default.useState(!1),v=i.default.useMemo((()=>new c(r,null==l?void 0:l.serverEnvironmentPrefix,u)),[r,null==l?void 0:l.serverEnvironmentPrefix,u]);return i.default.createElement(f,{title:d.updateNamedVersion,actionName:d.update,initialVersion:a,isLoading:m,onClose:s,onActionClick:(t,s)=>{h(!0),e.toaster.closeAll(),v.update(o,a.id,{name:t,description:s}).then((()=>{h(!1),n(),e.toaster.positive(d.messageVersionUpdated.replace("{{name}}",t),{hasCloseButton:!0})})).catch((t=>{h(!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})}))}})},b=t=>{const{versions:s,status:n,onVersionUpdated:r,loadMoreVersions:o,onViewClick:l}=t,{stringsOverrides:d}=g(),[c,u]=i.default.useState(void 0),[m,h]=i.default.useState(!1),f=i.default.useMemo((()=>{const e=[{Header:"Name",columns:[{id:"NAME",Header:d.name,accessor:"name"},{id:"DESCRIPTION",Header:d.description,accessor:"description"},{id:"CREATED_DATE",Header:d.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>i.default.createElement("span",null,new Date(e.row.original.createdDateTime).toLocaleString())},{id:"versions-table-actions",width:62,Cell:e=>i.default.createElement(i.default.Fragment,null,i.default.createElement("div",{className:"iac-update-version-icon",onClick:()=>{u(e.row.original),h(!0)},title:d.updateNamedVersion},i.default.createElement(a.SvgEdit,null)))}]}];return l&&e[0].columns.splice(3,0,{id:"versions-table-view",width:100,Cell:e=>i.default.createElement("span",{className:"iui-anchor",onClick:()=>l(e.row.original)},d.view)}),e}),[l,d.description,d.name,d.time,d.updateNamedVersion,d.view]),v=i.default.useMemo((()=>n===p.Failed?d.messageFailedGetNamedVersions:d.messageNoNamedVersions),[n,d.messageFailedGetNamedVersions,d.messageNoNamedVersions]);return i.default.createElement(i.default.Fragment,null,i.default.createElement(e.Table,{columns:f,data:s,isLoading:n===p.InProgress||n===p.NotStarted,emptyTableContent:v,onBottomReached:o,className:"iac-versions-table"}),m&&i.default.createElement(E,{version:c,onUpdate:()=>{h(!1),r()},onClose:()=>h(!1)}))},N={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",createNamedVersion:"Create a Named Version",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."};var V;!function(e){e[e.Version=0]="Version",e[e.Changes=1]="Changes"}(V||(V={}));exports.ManageVersions=t=>{const{accessToken:a,apiOverrides:s,imodelId:n,stringsOverrides:r=N,log:o,onViewClick:l}=t,u=i.default.useMemo((()=>new c(a,null==s?void 0:s.serverEnvironmentPrefix,o)),[a,null==s?void 0:s.serverEnvironmentPrefix,o]),g=i.default.useMemo((()=>new d(a,null==s?void 0:s.serverEnvironmentPrefix,o)),[a,null==s?void 0:s.serverEnvironmentPrefix,o]),[h,f]=i.default.useState(V.Version),[v,E]=i.default.useState(),[w,y]=i.default.useState(p.NotStarted),[x,T]=i.default.useState(),[P,k]=i.default.useState(p.NotStarted),S=i.default.useCallback((e=>{y(p.InProgress),u.get(n,{top:100,skip:e}).then((e=>{y(p.Finished),E((t=>[...null!=t?t:[],...e]))})).catch((()=>y(p.Failed)))}),[n,u]),O=i.default.useCallback((()=>{v&&v.length%100!=0||S(null==v?void 0:v.length)}),[S,v]),F=i.default.useCallback((()=>{E(void 0),S()}),[S]);i.default.useEffect((()=>{w===p.NotStarted&&S()}),[S,w]);const I=i.default.useCallback((()=>{x&&x.length%100!=0||(k(p.InProgress),g.get(n,{top:100,skip:null==x?void 0:x.length}).then((e=>{k(p.Finished),T([...null!=x?x:[],...e])})).catch((()=>k(p.Failed))))}),[g,x,n]);i.default.useEffect((()=>{h===V.Changes&&P===p.NotStarted&&I()}),[P,h,I]);const _=i.default.useCallback((()=>{f(V.Version),F(),T(void 0),k(p.NotStarted)}),[F]),D=i.default.useMemo((()=>[...null!=v?v:[]].sort(((e,t)=>new Date(e.createdDateTime).valueOf()<new Date(t.createdDateTime).valueOf()?1:-1))[0]),[v]);return i.default.createElement(m,{accessToken:a,imodelId:n,apiOverrides:s,stringsOverrides:r,log:o},i.default.createElement("div",null,i.default.createElement(e.HorizontalTabs,{labels:[r.namedVersions,r.changes],activeIndex:h,onTabSelected:e=>f(e),type:"borderless"}),h===V.Version&&i.default.createElement(b,{versions:null!=v?v:[],status:w,onVersionUpdated:F,loadMoreVersions:O,onViewClick:l}),h===V.Changes&&i.default.createElement(C,{changesets:null!=x?x:[],status:P,loadMoreChanges:I,onVersionCreated:_,latestVersion:D})))};

@@ -7,2 +7,7 @@ export declare type NamedVersion = {

createdDateTime: string;
_links: {
changeSet: {
href: string;
};
};
};
/// <reference types="react" />
import { NamedVersion } from "../../models";
import { ApiOverrides, LogFunc, ManageVersionsStringOverrides } from "./types";

@@ -15,3 +16,5 @@ export declare const defaultStrings: ManageVersionsStringOverrides;

log?: LogFunc;
/** Callback when view Named Version is clicked. If not present, then `View` won't be shown. */
onViewClick?: (version: NamedVersion) => void;
};
export declare const ManageVersions: (props: ManageVersionsProps) => JSX.Element;

@@ -28,2 +28,4 @@ export declare enum RequestStatus {

update: string;
/** Default: `View` */
view: string;
/** Error message when failed to fetch Named Versions. Default `Could not get Named Versions. Please try again later.`. */

@@ -30,0 +32,0 @@ messageFailedGetNamedVersions: string;

@@ -10,4 +10,5 @@ /// <reference types="react" />

loadMoreVersions: () => void;
onViewClick?: (version: NamedVersion) => void;
};
declare const VersionsTab: (props: VersionsTabProps) => JSX.Element;
export default VersionsTab;
export { ManageVersions } from "./components/ManageVersions/ManageVersions";
export type { ManageVersionsProps } from "./components/ManageVersions/ManageVersions";
export type { ApiOverrides, LogFunc, ManageVersionsStringOverrides, } from "./components/ManageVersions/types";
export type { NamedVersion } from "./models";

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

import{Modal as e,LabeledInput as t,LabeledTextarea as s,ModalButtonBar as n,Button as a,ProgressRadial as i,toaster as r,Table as o,HorizontalTabs as l}from"@itwin/itwinui-react";import d from"react";import{SvgNamedVersionAdd as c,SvgEdit as m}from"@itwin/itwinui-icons-react";var u;!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer"}(u||(u={}));class g extends Error{constructor(e,t){super(null==e?void 0:e.message),this.code=null==e?void 0:e.code,this.statusCode=t}}class h{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){var s;const n={method:"GET",url:e,headers:Object.assign({},null==t?void 0:t.headers),signal:null===(s=null==t?void 0:t.abortController)||void 0===s?void 0:s.signal};return this.makeRequest(n)}async post(e,t,s){var n;const a={method:"POST",url:e,headers:Object.assign({},null==s?void 0:s.headers),body:t,signal:null===(n=null==s?void 0:s.abortController)||void 0===n?void 0:n.signal};return this.makeRequest(a)}async patch(e,t,s){var n;const a={method:"PATCH",url:e,headers:Object.assign({},null==s?void 0:s.headers),body:t,signal:null===(n=null==s?void 0:s.abortController)||void 0===n?void 0:n.signal};return this.makeRequest(a)}async delete(e,t){var s;const n={method:"DELETE",url:e,headers:Object.assign({},null==t?void 0:t.headers),signal:null===(s=null==t?void 0:t.abortController)||void 0===s?void 0:s.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:null==e?void 0:e.signal}),s=await t.json();if(!t.ok)throw new g(null==s?void 0:s.error,t.status);return s}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers=Object.assign({[u.Authorization]:this._token,[u.ContentType]:"application/json"},e.headers)}logError(e,t){var s;null===(s=this._log)||void 0===s||s.call(this,`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t=Object.assign({},e.headers);return delete t[u.Authorization],{headers:t,url:e.url,method:e.method}}}class v{static getBaseUrl(e){return`https://${e?`${e}-`:""}api.bentley.com`}static buildVersionsUrl(e,t,s){return`${this.getBaseUrl(s)}/imodels/${e}/namedversions${t?`/${t}`:""}`}static buildChangesetUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/changesets`}}v.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>`$${e}=${t}`)).join("&");return t?`?${t}`:""};class p{constructor(e,t,s){this._http=new h(e,s),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${v.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${v.getQuery(Object.assign({orderBy:"index+desc"},t))}`,{headers:{[u.Prefer]:"return=representation"}}).then((e=>e.changesets))}}class f{constructor(e,t,s){this._http=new h(e,s),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${v.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${v.getQuery(t)}`,{headers:{[u.Prefer]:"return=representation"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(v.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,s){return this._http.patch(v.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),s).then((e=>e.namedVersion))}}
import{Modal as e,LabeledInput as t,LabeledTextarea as s,ModalButtonBar as n,Button as a,ProgressRadial as i,toaster as r,Table as o,HorizontalTabs as l}from"@itwin/itwinui-react";import d from"react";import{SvgNamedVersionAdd as c,SvgEdit as m}from"@itwin/itwinui-icons-react";var u;!function(e){e.Authorization="Authorization",e.ContentType="Content-Type",e.Prefer="Prefer"}(u||(u={}));class g extends Error{constructor(e,t){super(null==e?void 0:e.message),this.code=null==e?void 0:e.code,this.statusCode=t}}class h{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){var s;const n={method:"GET",url:e,headers:Object.assign({},null==t?void 0:t.headers),signal:null===(s=null==t?void 0:t.abortController)||void 0===s?void 0:s.signal};return this.makeRequest(n)}async post(e,t,s){var n;const a={method:"POST",url:e,headers:Object.assign({},null==s?void 0:s.headers),body:t,signal:null===(n=null==s?void 0:s.abortController)||void 0===n?void 0:n.signal};return this.makeRequest(a)}async patch(e,t,s){var n;const a={method:"PATCH",url:e,headers:Object.assign({},null==s?void 0:s.headers),body:t,signal:null===(n=null==s?void 0:s.abortController)||void 0===n?void 0:n.signal};return this.makeRequest(a)}async delete(e,t){var s;const n={method:"DELETE",url:e,headers:Object.assign({},null==t?void 0:t.headers),signal:null===(s=null==t?void 0:t.abortController)||void 0===s?void 0:s.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:null==e?void 0:e.signal}),s=await t.json();if(!t.ok)throw new g(null==s?void 0:s.error,t.status);return s}catch(t){throw this.logError(t,e),t}}prepareHeaders(e){e.headers=Object.assign({[u.Authorization]:this._token,[u.ContentType]:"application/json"},e.headers)}logError(e,t){var s;null===(s=this._log)||void 0===s||s.call(this,`${this._errorMessagePrefix} - ${e.message||this._defaultErrorMessage}`,{request:this.getRequestToLog(t),error:e})}getRequestToLog(e){const t=Object.assign({},e.headers);return delete t[u.Authorization],{headers:t,url:e.url,method:e.method}}}class v{static getBaseUrl(e){return`https://${e?`${e}-`:""}api.bentley.com`}static buildVersionsUrl(e,t,s){return`${this.getBaseUrl(s)}/imodels/${e}/namedversions${t?`/${t}`:""}`}static buildChangesetUrl(e,t){return`${this.getBaseUrl(t)}/imodels/${e}/changesets`}}v.getQuery=e=>{const t=Object.entries(e).filter((([e,t])=>!!t)).map((([e,t])=>`$${e}=${t}`)).join("&");return t?`?${t}`:""};class p{constructor(e,t,s){this._http=new h(e,s),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${v.buildChangesetUrl(e,this._serverEnvironmentPrefix)}${v.getQuery(Object.assign({orderBy:"index+desc"},t))}`,{headers:{[u.Prefer]:"return=representation"}}).then((e=>e.changesets))}}class C{constructor(e,t,s){this._http=new h(e,s),this._serverEnvironmentPrefix=t}async get(e,t={}){return this._http.get(`${v.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix)}${v.getQuery(t)}`,{headers:{[u.Prefer]:"return=representation"}}).then((e=>e.namedVersions))}async create(e,t){return this._http.post(v.buildVersionsUrl(e,void 0,this._serverEnvironmentPrefix),t).then((e=>e.namedVersion))}async update(e,t,s){return this._http.patch(v.buildVersionsUrl(e,t,this._serverEnvironmentPrefix),s).then((e=>e.namedVersion))}}
/*! *****************************************************************************

@@ -15,2 +15,2 @@ Copyright (c) Microsoft Corporation.

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */const C=d.createContext(void 0),E=e=>{const{children:t}=e,s=function(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(s[n[a]]=e[n[a]])}return s}(e,["children"]);return d.createElement(C.Provider,{value:s},t)},N=()=>{const e=d.useContext(C);if(void 0===e)throw new Error("useConfig must be used within a ConfigContext");return e};function b(e,t){void 0===t&&(t={});var s=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===s&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}b(".iac-changes-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-create-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");b(".iac-additional-info{display:flex;justify-content:space-between;padding:11px 12px;background-color:#F8F9FB;background-color:var(--iui-color-background-2)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:16px}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}\n");b(".iac-version-modal .iui-modal-dialog{max-width:calc(min(600px, 50%))}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}\n");const V=r=>{var o,l;const{initialVersion:c,isLoading:m,title:u,actionName:g,onClose:h,onActionClick:v,children:p}=r,{stringsOverrides:f}=N(),[C,E]=d.useState({name:null!==(o=null==c?void 0:c.name)&&void 0!==o?o:"",description:null!==(l=null==c?void 0:c.description)&&void 0!==l?l:""}),b=e=>{const t=e.target.name,s=e.target.value;E((e=>Object.assign(Object.assign({},e),{[t]:null!=s?s:""})))},V=e=>e.length<=255;return d.createElement(d.Fragment,null,d.createElement(e,{title:u,isOpen:!0,onClose:h,className:"iac-version-modal"},d.createElement(t,{name:"name",label:f.name,onChange:b,value:C.name,status:V(C.name)?void 0:"negative",message:V(C.name)?void 0:f.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,setFocus:!0}),d.createElement(s,{name:"description",label:f.description,onChange:b,value:C.description,status:V(C.description)?void 0:"negative",message:V(C.description)?void 0:f.messageValueTooLong.replace("{{length}}",255..toString()),rows:3}),p,d.createElement(n,null,d.createElement(a,{styleType:"high-visibility",onClick:()=>v(C.name,C.description),disabled:!(C.name&&(C.name!==(null==c?void 0:c.name)||C.description!==(null==c?void 0:c.description))&&V(C.name)&&V(C.description))},g),d.createElement(a,{onClick:h},f.cancel)),m&&d.createElement("div",{className:"iui-progress-indicator-overlay"},d.createElement(i,{indeterminate:!0}))),m&&d.createElement("div",{className:"iac-version-modal-overlay"}))},y=e=>{const{latestVersion:t,changeset:s,onClose:n,onCreate:a}=e,{accessToken:i,imodelId:o,apiOverrides:l,stringsOverrides:c,log:m}=N(),[u,g]=d.useState(!1),h=d.useMemo((()=>new f(i,null==l?void 0:l.serverEnvironmentPrefix,m)),[i,null==l?void 0:l.serverEnvironmentPrefix,m]);return d.createElement(V,{title:c.createNamedVersion,actionName:c.create,isLoading:u,onClose:n,onActionClick:(e,t)=>{g(!0),r.closeAll(),h.create(o,{name:e,description:t,changeSetId:s.id}).then((()=>{g(!1),a(),r.positive(c.messageVersionCreated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{g(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return c.messageVersionNameExists;case"InsufficientPermissions":return c.messageInsufficientPermissionsToCreateVersion;default:return c.messageCouldNotCreateVersion}})(e.code),{hasCloseButton:!0})}))}},d.createElement("div",{className:"iui-input-container"},d.createElement("div",{className:"iui-label"},"Latest included change"),d.createElement("div",{className:"iac-additional-info"},d.createElement("span",null,"#",s.index),d.createElement("span",null,new Date(s.pushDateTime).toLocaleString()))),t&&d.createElement("div",{className:"iui-input-container"},d.createElement("div",{className:"iui-label"},"Latest Named Version"),d.createElement("div",{className:"iac-additional-info"},d.createElement("span",{className:"iac-cell-ellipsis"},t.name),d.createElement("span",null,new Date(t.createdDateTime).toLocaleString()))))};var w;!function(e){e[e.NotStarted=0]="NotStarted",e[e.InProgress=1]="InProgress",e[e.Finished=2]="Finished",e[e.Failed=3]="Failed"}(w||(w={}));const x=e=>{const{changesets:t,status:s,loadMoreChanges:n,onVersionCreated:a,latestVersion:i}=e,{stringsOverrides:r}=N(),[l,m]=d.useState(!1),[u,g]=d.useState(void 0),h=d.useCallback((e=>!e._links.namedVersion),[]),v=d.useMemo((()=>[{Header:"Name",columns:[{id:"INDEX",Header:"#",accessor:"index",width:90},{id:"DESCRIPTION",Header:r.description,accessor:"description"},{id:"PUSH_DATE",Header:r.time,accessor:"pushDateTime",maxWidth:220,Cell:e=>d.createElement("span",null,new Date(e.row.original.pushDateTime).toLocaleString())},{id:"changes-table-actions",width:62,Cell:e=>{const t=e.data[e.row.index];return d.createElement(d.Fragment,null,h(t)&&d.createElement("div",{className:"iac-create-version-icon",onClick:()=>{g(t),m(!0)},title:r.createNamedVersion},d.createElement(c,null)))}}]}]),[h,r.createNamedVersion,r.description,r.time]),p=d.useMemo((()=>s===w.Failed?r.messageFailedGetChanges:r.messageNoChanges),[s,r.messageFailedGetChanges,r.messageNoChanges]);return d.createElement(d.Fragment,null,d.createElement(o,{columns:v,data:t,isLoading:s===w.InProgress||s===w.NotStarted,emptyTableContent:p,onBottomReached:n,className:"iac-changes-table"}),l&&d.createElement(y,{changeset:u,onCreate:()=>{m(!1),a()},onClose:()=>m(!1),latestVersion:i}))};b(".iac-versions-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-update-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");const T=e=>{const{version:t,onClose:s,onUpdate:n}=e,{accessToken:a,imodelId:i,apiOverrides:o,stringsOverrides:l,log:c}=N(),[m,u]=d.useState(!1),g=d.useMemo((()=>new f(a,null==o?void 0:o.serverEnvironmentPrefix,c)),[a,null==o?void 0:o.serverEnvironmentPrefix,c]);return d.createElement(V,{title:l.updateNamedVersion,actionName:l.update,initialVersion:t,isLoading:m,onClose:s,onActionClick:(e,s)=>{u(!0),r.closeAll(),g.update(i,t.id,{name:e,description:s}).then((()=>{u(!1),n(),r.positive(l.messageVersionUpdated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{u(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return l.messageVersionNameExists;case"InsufficientPermissions":return l.messageInsufficientPermissionsToUpdateVersion;default:return l.messageCouldNotUpdateVersion}})(e.code),{hasCloseButton:!0})}))}})},P=e=>{const{versions:t,status:s,onVersionUpdated:n,loadMoreVersions:a}=e,{stringsOverrides:i}=N(),[r,l]=d.useState(void 0),[c,u]=d.useState(!1),g=d.useMemo((()=>[{Header:"Name",columns:[{id:"NAME",Header:i.name,accessor:"name"},{id:"DESCRIPTION",Header:i.description,accessor:"description"},{id:"CREATED_DATE",Header:i.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>d.createElement("span",null,new Date(e.row.original.createdDateTime).toLocaleString())},{id:"versions-table-actions",width:62,Cell:e=>d.createElement(d.Fragment,null,d.createElement("div",{className:"iac-update-version-icon",onClick:()=>{l(e.row.original),u(!0)},title:i.updateNamedVersion},d.createElement(m,null)))}]}]),[i.description,i.name,i.time,i.updateNamedVersion]),h=d.useMemo((()=>s===w.Failed?i.messageFailedGetNamedVersions:i.messageNoNamedVersions),[s,i.messageFailedGetNamedVersions,i.messageNoNamedVersions]);return d.createElement(d.Fragment,null,d.createElement(o,{columns:g,data:t,isLoading:s===w.InProgress||s===w.NotStarted,emptyTableContent:h,onBottomReached:a,className:"iac-versions-table"}),c&&d.createElement(T,{version:r,onUpdate:()=>{u(!1),n()},onClose:()=>u(!1)}))},S={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",createNamedVersion:"Create a Named Version",cancel:"Cancel",create:"Create",updateNamedVersion:"Update a Named Version",update:"Update",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."};var k;!function(e){e[e.Version=0]="Version",e[e.Changes=1]="Changes"}(k||(k={}));const O=e=>{const{accessToken:t,apiOverrides:s,imodelId:n,stringsOverrides:a=S,log:i}=e,r=d.useMemo((()=>new f(t,null==s?void 0:s.serverEnvironmentPrefix,i)),[t,null==s?void 0:s.serverEnvironmentPrefix,i]),o=d.useMemo((()=>new p(t,null==s?void 0:s.serverEnvironmentPrefix,i)),[t,null==s?void 0:s.serverEnvironmentPrefix,i]),[c,m]=d.useState(k.Version),[u,g]=d.useState(),[h,v]=d.useState(w.NotStarted),[C,N]=d.useState(),[b,V]=d.useState(w.NotStarted),y=d.useCallback((e=>{v(w.InProgress),r.get(n,{top:100,skip:e}).then((e=>{v(w.Finished),g((t=>[...null!=t?t:[],...e]))})).catch((()=>v(w.Failed)))}),[n,r]),T=d.useCallback((()=>{u&&u.length%100!=0||y(null==u?void 0:u.length)}),[y,u]),O=d.useCallback((()=>{g(void 0),y()}),[y]);d.useEffect((()=>{h===w.NotStarted&&y()}),[y,h]);const F=d.useCallback((()=>{C&&C.length%100!=0||(V(w.InProgress),o.get(n,{top:100,skip:null==C?void 0:C.length}).then((e=>{V(w.Finished),N([...null!=C?C:[],...e])})).catch((()=>V(w.Failed))))}),[o,C,n]);d.useEffect((()=>{c===k.Changes&&b===w.NotStarted&&F()}),[b,c,F]);const I=d.useCallback((()=>{m(k.Version),O(),N(void 0),V(w.NotStarted)}),[O]),_=d.useMemo((()=>[...null!=u?u:[]].sort(((e,t)=>new Date(e.createdDateTime).valueOf()<new Date(t.createdDateTime).valueOf()?1:-1))[0]),[u]);return d.createElement(E,{accessToken:t,imodelId:n,apiOverrides:s,stringsOverrides:a,log:i},d.createElement("div",null,d.createElement(l,{labels:[a.namedVersions,a.changes],activeIndex:c,onTabSelected:e=>m(e),type:"borderless"}),c===k.Version&&d.createElement(P,{versions:null!=u?u:[],status:h,onVersionUpdated:O,loadMoreVersions:T}),c===k.Changes&&d.createElement(x,{changesets:null!=C?C:[],status:b,loadMoreChanges:F,onVersionCreated:I,latestVersion:_})))};export{O as ManageVersions};
***************************************************************************** */const f=d.createContext(void 0),E=e=>{const{children:t}=e,s=function(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(s[n[a]]=e[n[a]])}return s}(e,["children"]);return d.createElement(f.Provider,{value:s},t)},N=()=>{const e=d.useContext(f);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 s=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===s&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}V(".iac-changes-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-create-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");V(".iac-additional-info{display:flex;justify-content:space-between;padding:11px 12px;background-color:#F8F9FB;background-color:var(--iui-color-background-2)}.iac-additional-info span{flex-shrink:0}.iac-additional-info span:not(:last-child){margin-right:16px}.iac-additional-info .iac-cell-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}\n");V(".iac-version-modal .iui-modal-dialog{max-width:calc(min(600px, 50%))}.iac-version-modal-overlay{position:fixed;z-index:99999;height:100vh;width:100vw;top:0;left:0}\n");const b=r=>{var o,l;const{initialVersion:c,isLoading:m,title:u,actionName:g,onClose:h,onActionClick:v,children:p}=r,{stringsOverrides:C}=N(),[f,E]=d.useState({name:null!==(o=null==c?void 0:c.name)&&void 0!==o?o:"",description:null!==(l=null==c?void 0:c.description)&&void 0!==l?l:""}),V=e=>{const t=e.target.name,s=e.target.value;E((e=>Object.assign(Object.assign({},e),{[t]:null!=s?s:""})))},b=e=>e.length<=255;return d.createElement(d.Fragment,null,d.createElement(e,{title:u,isOpen:!0,onClose:h,className:"iac-version-modal"},d.createElement(t,{name:"name",label:C.name,onChange:V,value:f.name,status:b(f.name)?void 0:"negative",message:b(f.name)?void 0:C.messageValueTooLong.replace("{{length}}",255..toString()),required:!0,setFocus:!0}),d.createElement(s,{name:"description",label:C.description,onChange:V,value:f.description,status:b(f.description)?void 0:"negative",message:b(f.description)?void 0:C.messageValueTooLong.replace("{{length}}",255..toString()),rows:3}),p,d.createElement(n,null,d.createElement(a,{styleType:"high-visibility",onClick:()=>v(f.name,f.description),disabled:!(f.name&&(f.name!==(null==c?void 0:c.name)||f.description!==(null==c?void 0:c.description))&&b(f.name)&&b(f.description))},g),d.createElement(a,{onClick:h},C.cancel)),m&&d.createElement("div",{className:"iui-progress-indicator-overlay"},d.createElement(i,{indeterminate:!0}))),m&&d.createElement("div",{className:"iac-version-modal-overlay"}))},w=e=>{const{latestVersion:t,changeset:s,onClose:n,onCreate:a}=e,{accessToken:i,imodelId:o,apiOverrides:l,stringsOverrides:c,log:m}=N(),[u,g]=d.useState(!1),h=d.useMemo((()=>new C(i,null==l?void 0:l.serverEnvironmentPrefix,m)),[i,null==l?void 0:l.serverEnvironmentPrefix,m]);return d.createElement(b,{title:c.createNamedVersion,actionName:c.create,isLoading:u,onClose:n,onActionClick:(e,t)=>{g(!0),r.closeAll(),h.create(o,{name:e,description:t,changeSetId:s.id}).then((()=>{g(!1),a(),r.positive(c.messageVersionCreated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{g(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return c.messageVersionNameExists;case"InsufficientPermissions":return c.messageInsufficientPermissionsToCreateVersion;default:return c.messageCouldNotCreateVersion}})(e.code),{hasCloseButton:!0})}))}},d.createElement("div",{className:"iui-input-container"},d.createElement("div",{className:"iui-label"},"Latest included change"),d.createElement("div",{className:"iac-additional-info"},d.createElement("span",null,"#",s.index),d.createElement("span",null,new Date(s.pushDateTime).toLocaleString()))),t&&d.createElement("div",{className:"iui-input-container"},d.createElement("div",{className:"iui-label"},"Latest Named Version"),d.createElement("div",{className:"iac-additional-info"},d.createElement("span",{className:"iac-cell-ellipsis"},t.name),d.createElement("span",null,new Date(t.createdDateTime).toLocaleString()))))};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=e=>{const{changesets:t,status:s,loadMoreChanges:n,onVersionCreated:a,latestVersion:i}=e,{stringsOverrides:r}=N(),[l,m]=d.useState(!1),[u,g]=d.useState(void 0),h=d.useCallback((e=>!e._links.namedVersion),[]),v=d.useMemo((()=>[{Header:"Name",columns:[{id:"INDEX",Header:"#",accessor:"index",width:90},{id:"DESCRIPTION",Header:r.description,accessor:"description"},{id:"PUSH_DATE",Header:r.time,accessor:"pushDateTime",maxWidth:220,Cell:e=>d.createElement("span",null,new Date(e.row.original.pushDateTime).toLocaleString())},{id:"changes-table-actions",width:62,Cell:e=>{const t=e.data[e.row.index];return d.createElement(d.Fragment,null,h(t)&&d.createElement("div",{className:"iac-create-version-icon",onClick:()=>{g(t),m(!0)},title:r.createNamedVersion},d.createElement(c,null)))}}]}]),[h,r.createNamedVersion,r.description,r.time]),p=d.useMemo((()=>s===y.Failed?r.messageFailedGetChanges:r.messageNoChanges),[s,r.messageFailedGetChanges,r.messageNoChanges]);return d.createElement(d.Fragment,null,d.createElement(o,{columns:v,data:t,isLoading:s===y.InProgress||s===y.NotStarted,emptyTableContent:p,onBottomReached:n,className:"iac-changes-table"}),l&&d.createElement(w,{changeset:u,onCreate:()=>{m(!1),a()},onClose:()=>m(!1),latestVersion:i}))};V(".iac-versions-table .iui-tables-body .iui-tables-cell{word-break:break-word}.iac-update-version-icon{width:16px;height:16px;fill:rgba(0,0,0,0.8);fill:var(--iui-icons-color-actionable);cursor:pointer}\n");const T=e=>{const{version:t,onClose:s,onUpdate:n}=e,{accessToken:a,imodelId:i,apiOverrides:o,stringsOverrides:l,log:c}=N(),[m,u]=d.useState(!1),g=d.useMemo((()=>new C(a,null==o?void 0:o.serverEnvironmentPrefix,c)),[a,null==o?void 0:o.serverEnvironmentPrefix,c]);return d.createElement(b,{title:l.updateNamedVersion,actionName:l.update,initialVersion:t,isLoading:m,onClose:s,onActionClick:(e,s)=>{u(!0),r.closeAll(),g.update(i,t.id,{name:e,description:s}).then((()=>{u(!1),n(),r.positive(l.messageVersionUpdated.replace("{{name}}",e),{hasCloseButton:!0})})).catch((e=>{u(!1),r.negative((e=>{switch(e){case"NamedVersionExists":return l.messageVersionNameExists;case"InsufficientPermissions":return l.messageInsufficientPermissionsToUpdateVersion;default:return l.messageCouldNotUpdateVersion}})(e.code),{hasCloseButton:!0})}))}})},P=e=>{const{versions:t,status:s,onVersionUpdated:n,loadMoreVersions:a,onViewClick:i}=e,{stringsOverrides:r}=N(),[l,c]=d.useState(void 0),[u,g]=d.useState(!1),h=d.useMemo((()=>{const e=[{Header:"Name",columns:[{id:"NAME",Header:r.name,accessor:"name"},{id:"DESCRIPTION",Header:r.description,accessor:"description"},{id:"CREATED_DATE",Header:r.time,accessor:"createdDateTime",maxWidth:220,Cell:e=>d.createElement("span",null,new Date(e.row.original.createdDateTime).toLocaleString())},{id:"versions-table-actions",width:62,Cell:e=>d.createElement(d.Fragment,null,d.createElement("div",{className:"iac-update-version-icon",onClick:()=>{c(e.row.original),g(!0)},title:r.updateNamedVersion},d.createElement(m,null)))}]}];return i&&e[0].columns.splice(3,0,{id:"versions-table-view",width:100,Cell:e=>d.createElement("span",{className:"iui-anchor",onClick:()=>i(e.row.original)},r.view)}),e}),[i,r.description,r.name,r.time,r.updateNamedVersion,r.view]),v=d.useMemo((()=>s===y.Failed?r.messageFailedGetNamedVersions:r.messageNoNamedVersions),[s,r.messageFailedGetNamedVersions,r.messageNoNamedVersions]);return d.createElement(d.Fragment,null,d.createElement(o,{columns:h,data:t,isLoading:s===y.InProgress||s===y.NotStarted,emptyTableContent:v,onBottomReached:a,className:"iac-versions-table"}),u&&d.createElement(T,{version:l,onUpdate:()=>{g(!1),n()},onClose:()=>g(!1)}))},k={namedVersions:"Named Versions",changes:"Changes",name:"Name",description:"Description",time:"Time",createNamedVersion:"Create a Named Version",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."};var S;!function(e){e[e.Version=0]="Version",e[e.Changes=1]="Changes"}(S||(S={}));const O=e=>{const{accessToken:t,apiOverrides:s,imodelId:n,stringsOverrides:a=k,log:i,onViewClick:r}=e,o=d.useMemo((()=>new C(t,null==s?void 0:s.serverEnvironmentPrefix,i)),[t,null==s?void 0:s.serverEnvironmentPrefix,i]),c=d.useMemo((()=>new p(t,null==s?void 0:s.serverEnvironmentPrefix,i)),[t,null==s?void 0:s.serverEnvironmentPrefix,i]),[m,u]=d.useState(S.Version),[g,h]=d.useState(),[v,f]=d.useState(y.NotStarted),[N,V]=d.useState(),[b,w]=d.useState(y.NotStarted),T=d.useCallback((e=>{f(y.InProgress),o.get(n,{top:100,skip:e}).then((e=>{f(y.Finished),h((t=>[...null!=t?t:[],...e]))})).catch((()=>f(y.Failed)))}),[n,o]),O=d.useCallback((()=>{g&&g.length%100!=0||T(null==g?void 0:g.length)}),[T,g]),F=d.useCallback((()=>{h(void 0),T()}),[T]);d.useEffect((()=>{v===y.NotStarted&&T()}),[T,v]);const I=d.useCallback((()=>{N&&N.length%100!=0||(w(y.InProgress),c.get(n,{top:100,skip:null==N?void 0:N.length}).then((e=>{w(y.Finished),V([...null!=N?N:[],...e])})).catch((()=>w(y.Failed))))}),[c,N,n]);d.useEffect((()=>{m===S.Changes&&b===y.NotStarted&&I()}),[b,m,I]);const _=d.useCallback((()=>{u(S.Version),F(),V(void 0),w(y.NotStarted)}),[F]),D=d.useMemo((()=>[...null!=g?g:[]].sort(((e,t)=>new Date(e.createdDateTime).valueOf()<new Date(t.createdDateTime).valueOf()?1:-1))[0]),[g]);return d.createElement(E,{accessToken:t,imodelId:n,apiOverrides:s,stringsOverrides:a,log:i},d.createElement("div",null,d.createElement(l,{labels:[a.namedVersions,a.changes],activeIndex:m,onTabSelected:e=>u(e),type:"borderless"}),m===S.Version&&d.createElement(P,{versions:null!=g?g:[],status:v,onVersionUpdated:F,loadMoreVersions:O,onViewClick:r}),m===S.Changes&&d.createElement(x,{changesets:null!=N?N:[],status:b,loadMoreChanges:I,onVersionCreated:_,latestVersion:D})))};export{O as ManageVersions};

@@ -7,2 +7,7 @@ export declare type NamedVersion = {

createdDateTime: string;
_links: {
changeSet: {
href: string;
};
};
};

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

"repository": "https://github.com/iTwin/admin-components-react/tree/main/package/manage-versions",
"version": "0.5.0",
"version": "0.6.0",
"main": "cjs/index.js",

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

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc