@descope/access-key-management-widget 0.0.0-next-0e292820-20250415

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Descope <help@descope.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # @descope/access-key-management-widget
2
+
3
+ ## Setup
4
+
5
+ ### Create an `.env` file
6
+
7
+ In the widget package create an `.env` file which includes;
8
+
9
+ ```
10
+ DESCOPE_BASE_URL= # env base url, default: "https://app.descope.com"
11
+ DESCOPE_PROJECT_ID= # your Descope's project ID
12
+ DESCOPE_TENANT= # tenant ID
13
+ DEBUG_MODE= # "true" / "false", default: "false"
14
+ DESCOPE_THEME= # "light" / "dark" / "os", default: "light"
15
+ DESCOPE_WIDGET_ID= # default: "access-key-management-widget"
16
+ ```
17
+
18
+ ### Example
19
+
20
+ ```
21
+ // replace x.x.x with the latest release of the widget: https://www.npmjs.com/package/@descope/access-key-management-widget
22
+ <script src="https://descopecdn.com/npm/@descope/access-key-management-widget@x.x.x/dist/index.js"></script>
23
+ <descope-access-key-management-widget
24
+ base-url="<DESCOPE_BASE_URL>"
25
+ project-id="<DESCOPE_PROJECT_ID>"
26
+ tenant="<DESCOPE_TENANT>"
27
+ debug="<DEBUG_MODE>"
28
+ theme="<DESCOPE_THEME>"
29
+ widget-id="<DESCOPE_WIDGET_ID>"
30
+ ></descope-access-key-management-widget>
31
+ ```
32
+
33
+ Use widget-id `access-key-management-widget` for admin view, to manage all tenant users' access keys.
34
+
35
+ Use widget-id `user-access-key-management-widget` for user view, to mange access key for the logged-in tenant's user.
36
+
37
+ ### Start the widget
38
+
39
+ run `npm start` to start the widget.
40
+
41
+ ### Authenticate
42
+
43
+ In order to work with the widget, you must be logged in as the tenant admin
44
+ In case you are not authenticated, a login flow will run first, and after logging in, the widget will be rendered
45
+
46
+ ## Project Structure
47
+
48
+ - `/app` - contains `index.html`
49
+ - `/lib` - widget's source code
50
+ - `lib/widget` - widget related implementations
51
+ - `lib/widget/api` - Logic related to API calls
52
+ - `lib/widget/mixins` - Widget specific logic
53
+ - `lib/widget/state` - State management logic
54
+
55
+ ### API
56
+
57
+ ---
58
+
59
+ ### Mixins
60
+
61
+ The widget is composed of mixins, each mixin contains specific logic parts, and sometime exposes an API that can be used in other mixins.
62
+
63
+ Mixins can be composed on top of each other, so we can create new mixins by composing several mixins together.
64
+
65
+ #### Mixins Creators
66
+
67
+ Functions that create mixins, can get a configuration, and returns the mixin functions.
68
+
69
+ #### Singleton Mixin
70
+
71
+ Since mixins are composable, in some cases we want to make sure a mixin is loaded only once. For example: When there is no need for its logic to run multiple times when composed in different mixins.
72
+
73
+ For this case we have a wrapper function (`createSingletonMixin`) to ensure that a mixin is loaded only once, regardless how many times it will be composed.
74
+
75
+ Mixins should be wrapped with the `createSingletonMixin` wrapper function, unless there is a reason for running the mixin's logic multiple times.
76
+
77
+ ### State
78
+
79
+ We're using several tools to handle the widget's state:
80
+
81
+ - [Redux Toolkit](https://redux-toolkit.js.org/) for the widget's state management.
82
+ - [Redux Thunk](https://github.com/reduxjs/redux-thunk) for API calls and async operations we're using
83
+ - [Reselect](https://github.com/reduxjs/reselect) to compute derived data without hitting performance or triggering state recalculation when state is not mutated.
84
+
85
+ ### Drivers
86
+
87
+ An abstraction layer that provides an API for components, and enables handling interactions with components within the widget.
88
+
89
+ The motivation to use drivers is to decouple the widget's code from the component's implementation, and therefore it's important to interact with components only using drivers (and not relying on component's implementation details).
90
+
91
+ ## Dev
92
+
93
+ ### Use mock screens
94
+
95
+ Since screen are fetched dynamically, when developing a new screen for the widget you will probably want to use mock templates. To do so, simply replace the call to `fetchWidgetPage` with a string which includes your HTML.
@@ -0,0 +1,6 @@
1
+
2
+ /**
3
+ * @descope/access-key-management-widget v0.4.15
4
+ */
5
+ import{pluralize as e,createSingletonMixin as t,compose as s,createTemplate as i,withMemCache as a,debounce as o}from"@descope/sdk-helpers";import{__awaiter as c,__classPrivateFieldGet as n,__classPrivateFieldSet as d}from"tslib";import{projectIdMixin as r,observeAttributesMixin as l,loggerMixin as u,baseUrlMixin as h,cookieConfigMixin as g,createValidateAttributesMixin as v,createStateManagementMixin as y,initLifecycleMixin as m,staticResourcesMixin as p,descopeUiMixin as f,initElementMixin as R,modalMixin as w,formMixin as k,notificationsMixin as b,debuggerMixin as K,themeMixin as M}from"@descope/sdk-mixins";import{GridDriver as A,ButtonDriver as W,TextDriver as C,MultiSelectDriver as x,TextFieldDriver as S}from"@descope/sdk-component-drivers";import{createSelector as j}from"reselect";import{createAsyncThunk as $}from"@reduxjs/toolkit";import I from"@descope/web-js-sdk";const T=e=>e.selectedAccessKeysIds,L=e=>e.notifications,O=j((e=>e.accessKeysList.data),(e=>e.map((e=>Object.assign(Object.assign({},e),{expireTimeFormatted:(null==e?void 0:e.expireTime)?new Date(1e3*((null==e?void 0:e.expireTime)||0)).toLocaleString():"Never",createdTimeFormatted:new Date(1e3*((null==e?void 0:e.createdTime)||0)).toLocaleString(),status:(null==e?void 0:e.expireTime)&&new Date(1e3*((null==e?void 0:e.expireTime)||0))<new Date?"expired":null==e?void 0:e.status}))))),P=j(T,O,((e,t)=>t.filter((t=>e.includes(t.id))))),B=j(T,(e=>!!e.length)),D=j(P,(e=>e.every((e=>e.editable)))),F=j(D,B,((e,t)=>e&&t));j(T,(e=>1===e.length));const q=j(P,(e=>1===e.length?e[0].name:`${e.length} access keys`)),E=e=>(...t)=>s=>{s.addCase(e.pending,((e,s)=>{t.forEach((({onPending:t})=>{null==t||t(e,s)}))})),s.addCase(e.fulfilled,((e,s)=>{t.forEach((({onFulfilled:t})=>{null==t||t(e,s)}))})),s.addCase(e.rejected,((e,s)=>{t.forEach((({onRejected:t})=>{null==t||t(e,s)}))}))},N=e=>({onFulfilled:t=>{e(t).loading=!1},onPending:t=>{e(t).loading=!0,e(t).error=null},onRejected:(t,s)=>{e(t).loading=!1,e(t).error=s.error}}),U=({getErrorMsg:e,getSuccessMsg:t})=>({onFulfilled:(e,s)=>{t&&e.notifications.push({type:"success",msg:t(s)})},onRejected:(t,s)=>{e&&t.notifications.push({type:"error",msg:e(s)})}}),H=$("accessKeys/create",((e,{extra:{api:t}})=>t.accesskey.create(e))),Z=E(H)({onFulfilled:(e,t)=>{e.accessKeysList.data.unshift(t.payload.key)}},N((e=>e.createAccessKey)),U({getSuccessMsg:()=>"Access Key created successfully",getErrorMsg:e=>{var t;return`\n <div>\n <div>Failed to create access key</div>\n ${null===(t=e.error)||void 0===t?void 0:t.message}\n </div>`}})),V={action:H,reducer:Z},z=$("accessKeys/delete",((e,{extra:{api:t}})=>t.accesskey.deleteBatch(e))),J=E(z)({onFulfilled:(e,t)=>{e.accessKeysList.data=e.accessKeysList.data.filter((e=>!t.meta.arg.includes(e.id))),e.selectedAccessKeysIds=[]}},N((e=>e.deleteAccessKey)),U({getSuccessMsg:t=>e(t.meta.arg.length)`${["",t.meta.arg.length]} ${["A","a"]}ccess key${["","s"]} deleted successfully`,getErrorMsg:t=>e(t.meta.arg.length)`Failed to delete access key${["","s"]}`})),G={action:z,reducer:J},Q=$("accessKeys/search",((e,{extra:{api:t},getState:s})=>{const i=s().searchParams;return t.accesskey.search(Object.assign(Object.assign({},i),e))})),X=E(Q)({onPending:(e,t)=>{e.searchParams=Object.assign(Object.assign({},e.searchParams),t.meta.arg)},onFulfilled:(e,t)=>{e.accessKeysList.data=t.payload}},N((e=>e.accessKeysList))),Y={action:Q,reducer:X},_=$("accessKeys/activate",((e,{extra:{api:t}})=>t.accesskey.activate(e))),ee=E(_)({onFulfilled:(e,t)=>{e.accessKeysList.data.forEach((e=>{t.meta.arg.includes(e.id)&&(e.status="active")}))}},N((e=>e.activateAccessKey)),U({getSuccessMsg:t=>e(t.meta.arg.length)`${["",t.meta.arg.length]} ${["A","a"]}ccess key${["","s"]} activated successfully`,getErrorMsg:t=>e(t.meta.arg.length)`Failed to activate access key${["","s"]}`})),te={action:_,reducer:ee},se=$("accessKeys/deactivate",((e,{extra:{api:t}})=>t.accesskey.deactivate(e))),ie=E(se)({onFulfilled:(e,t)=>{e.accessKeysList.data.forEach((e=>{t.meta.arg.includes(e.id)&&(e.status="inactive")}))}},N((e=>e.deactivateAccessKey)),U({getSuccessMsg:t=>e(t.meta.arg.length)`${["",t.meta.arg.length]} ${["A","a"]}ccess key${["","s"]} deactivated successfully`,getErrorMsg:t=>e(t.meta.arg.length)`Failed to deactivate access key${["","s"]}`})),ae={action:se,reducer:ie},oe=$("tenant/getTenantRoles",((e,{extra:{api:t}})=>t.tenant.getTenantRoles())),ce={action:oe,reducer:E(oe)({onFulfilled:(e,t)=>{e.tenantRoles.data=t.payload.roles}},N((e=>e.tenantRoles)))},ne={accessKeysList:{data:[],loading:!1,error:null},createAccessKey:{loading:!1,error:null},activateAccessKey:{loading:!1,error:null},deactivateAccessKey:{loading:!1,error:null},deleteAccessKey:{loading:!1,error:null},tenantRoles:{loading:!1,error:null,data:[]},searchParams:{text:"",sort:[]},selectedAccessKeysIds:[],notifications:[]},de={search:"/v1/mgmt/accesskey/search",deleteBatch:"/v1/mgmt/accesskey/delete/batch",create:"/v1/mgmt/accesskey/create",deactivate:"/v1/mgmt/accesskey/deactivate/batch",activate:"/v1/mgmt/accesskey/activate/batch"},re={roles:"/v1/mgmt/role/all"},le=e=>c(void 0,void 0,void 0,(function*(){const t=yield e.text(),s=JSON.parse(t);if(!e.ok){const t=`${s.errorDescription}${s.errorMessage?`: ${s.errorMessage}`:""}`;throw Error(t||`${e.status} ${e.statusText}`)}e.json=()=>Promise.resolve(s),e.text=()=>Promise.resolve(t)})),ue=(...e)=>c(void 0,[...e],void 0,(function*({text:e,sort:t}={}){return new Promise((s=>{const i=[],a=(new Date).getTime()/1e3+2592e3,o=new Date(a).toLocaleString();for(let e=1;e<10;e+=1)i.push({id:`access-key-id-${e}`,name:`Access Key ${e}`,createdBy:`User ${e}`,editable:!0,expireTime:a,expireTimeFormatted:o,createdTime:a,createdTimeFormatted:o,roleNames:[`Role ${e}`],permittedIps:["127.1.2.3"],status:"active",clientId:`Client ID ${e}`,boundUserId:`User ${e}`});t.forEach((e=>{i.sort(((t,s)=>{var i,a;return e.desc?null===(a=s[e.field])||void 0===a?void 0:a.localeCompare(t[e.field]):null===(i=t[e.field])||void 0===i?void 0:i.localeCompare(s[e.field])}))})),s(i.filter((t=>t.name.toLowerCase().includes(e.toLowerCase())||t.createdBy.toLowerCase().includes(e.toLowerCase()))))}))})),he=(e,t)=>c(void 0,[e,t],void 0,(function*({name:e,roleNames:t,userId:s,permittedIps:i},a){const o=Math.random().toString(10).substring(15);return new Promise((c=>{c({cleartext:Math.random().toString(20).substring(2),key:{id:`access-key-id-${o}`,name:e||`Access Key ${o}`,createdBy:s||`User ${o}`,editable:!0,expireTime:a,createdTime:(new Date).getTime()/1e3,roleNames:t,permittedIps:i,status:"active",clientId:`Client ID ${o}`,boundUserId:s||`User ${o}`}})}))})),ge=()=>c(void 0,void 0,void 0,(function*(){})),ve=()=>c(void 0,void 0,void 0,(function*(){})),ye=()=>c(void 0,void 0,void 0,(function*(){})),me=e=>new Promise((t=>{const s=[];for(let t=1;t<5;t+=1)s.push({name:`Role ${t}`,description:`Role description ${t}`,createdTime:new Date,permissionNames:[`Permission ${t}`],tenantId:e});t({roles:s})})),pe=({httpClient:e,tenant:t,mock:s})=>({search:(...i)=>c(void 0,[...i],void 0,(function*({page:i,limit:a=1e4,text:o,sort:c}={}){if(s)return ue({page:i,limit:a,text:o,sort:c});const n=yield e.post(de.search,{limit:a,page:i,text:o,sort:c},{queryParams:{tenant:t}});yield le(n);return(yield n.json()).keys})),deleteBatch:i=>c(void 0,void 0,void 0,(function*(){if(s)return ye();const a=yield e.post(de.deleteBatch,{ids:i},{queryParams:{tenant:t}});return yield le(a),a.json()})),create:i=>c(void 0,[i],void 0,(function*({name:i,expiration:a,roleNames:o,userId:c,permittedIps:n}){const d=new Date;d.setDate(d.getDate()+ +a);const r="0"===a[0]?0:Math.floor(d.getTime()/1e3);if(s)return he({name:i,expiration:a,roleNames:o,userId:c,permittedIps:n},r);const l=yield e.post(de.create,{name:i,expireTime:r,roleNames:o,userId:c,permittedIps:n},{queryParams:{tenant:t}});yield le(l);return yield l.json()})),activate:i=>c(void 0,void 0,void 0,(function*(){if(s)return ge();const a=yield e.post(de.activate,{ids:i},{queryParams:{tenant:t}});yield le(a);return yield a.json()})),deactivate:i=>c(void 0,void 0,void 0,(function*(){if(s)return ve();const a=yield e.post(de.deactivate,{ids:i},{queryParams:{tenant:t}});yield le(a);return yield a.json()}))}),fe=({httpClient:e,tenant:t,mock:s})=>({getTenantRoles:()=>c(void 0,void 0,void 0,(function*(){if(s)return me(t);const i=yield e.get(re.roles,{queryParams:{tenant:t}});return yield le(i),i.json()}))}),Re=t((e=>{var t,i,a,o;const y=s(r,l,u,h,g,v({tenant:v.missingAttrValidator}))(e);return o=class extends y{constructor(){super(...arguments),t.add(this),i.set(this,void 0)}get tenantId(){return this.getAttribute("tenant")}get widgetId(){return this.getAttribute("widget-id")}get mock(){return this.getAttribute("mock")}get api(){return n(this,i,"f")||n(this,t,"m",a).call(this),n(this,i,"f")}init(){const e=Object.create(null,{init:{get:()=>super.init}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.init)||void 0===s?void 0:s.call(this),this.observeAttributes(["project-id","base-url","tenant"],(()=>{n(this,i,"f")&&n(this,t,"m",a).call(this)}))}))}},i=new WeakMap,t=new WeakSet,a=function(){this.logger.debug("creating an sdk instance"),d(this,i,((e,t,s,i)=>{const a=I(Object.assign(Object.assign({},e),{persistTokens:!0,baseHeaders:{"x-descope-widget-type":"access-key-management-widget","x-descope-widget-id":i,"x-descope-widget-version":"0.4.15"}}));return{accesskey:pe({httpClient:a.httpClient,tenant:t,mock:s}),tenant:fe({httpClient:a.httpClient,tenant:t,mock:s})}})({projectId:this.projectId,baseUrl:this.baseUrl,refreshCookieName:this.refreshCookieName},this.tenantId,"true"===this.mock,this.widgetId),"f")},o})),we=t((e=>{const t=s(y({name:"widget",initialState:ne,reducers:{setSelectedAccessKeysIds:(e,{payload:t})=>{e.selectedAccessKeysIds=t},clearNotifications:e=>{e.notifications=[]}},extraReducers:e=>{V.reducer(e),G.reducer(e),Y.reducer(e),te.reducer(e),ae.reducer(e),ce.reducer(e)},asyncActions:{searchAccessKeys:Y.action,createAccessKey:V.action,activateAccessKeys:te.action,deactivateAccessKeys:ae.action,deleteAccessKeys:G.action,getTenantRoles:ce.action}}),m,u,Re)(e);return class extends t{constructor(...e){super(...e),this.state=ne,this.subscribe((e=>{this.logger.debug("State update:",e),this.state=e}))}}})),ke=t((e=>{const t=s(p,v({"widget-id":v.missingAttrValidator}))(e);return class extends t{get widgetId(){return this.getAttribute("widget-id")}fetchWidgetPage(e){return c(this,void 0,void 0,(function*(){return(yield this.fetchStaticResource(`access-key-management-widget/${this.widgetId}/${e}`,"text")).body}))}}})),be=t((e=>{var t,a,o;return o=class extends(s(u,m,f,R,ke,we)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){return c(this,void 0,void 0,(function*(){}))}init(){const e=Object.create(null,{init:{get:()=>super.init}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.init)||void 0===s?void 0:s.call(this),yield Promise.all([n(this,t,"m",a).call(this),this.actions.searchAccessKeys(),this.actions.getTenantRoles()]),this.onWidgetRootReady()}))}},t=new WeakSet,a=function(){return c(this,void 0,void 0,(function*(){const e=i(yield this.fetchWidgetPage("root.html"));yield this.loadDescopeUiComponents(e),this.contentRootElement.append(e.content.cloneNode(!0))}))},o})),Ke=t((e=>{var t,i,d,r,l;return l=class extends(s(we,u,be)(e)){constructor(){super(...arguments),t.add(this),d.set(this,a((e=>{this.accessKeysTable.data=e}))),r.set(this,o(((e,t)=>{const s=[],{value:i}=t;if(i){const t=e.path;s.push({field:t,desc:"desc"===i})}this.actions.searchAccessKeys({sort:s})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.accessKeysTable.columns.forEach((e=>{e.onSortDirectionChange((e=>{n(this,r,"f").call(this,e.target,e.detail)}))})),n(this,d,"f").call(this,O(this.state)),this.subscribe(n(this,d,"f").bind(this),O)}))}},d=new WeakMap,r=new WeakMap,t=new WeakSet,i=function(){var e;this.accessKeysTable=new A(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="access-keys-table"]'),{logger:this.logger}),this.accessKeysTable.onSelectedItemsChange((e=>{this.actions.setSelectedAccessKeysIds(e.detail.value.map((({id:e})=>e)))}))},l})),Me=t((e=>{var t,a,o;return o=class extends(s(we,w,u,be)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),yield n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){return c(this,void 0,void 0,(function*(){var e;this.activateAccessKeysModal=this.createModal(),this.activateAccessKeysModal.setContent(i(yield this.fetchWidgetPage("activate-access-keys-modal.html")));const t=new W((()=>{var e;return null===(e=this.activateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});t.onClick((()=>this.activateAccessKeysModal.close()));const s=new W((()=>{var e;return null===(e=this.activateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});s.onClick((()=>{const e=P(this.state);this.actions.activateAccessKeys(null==e?void 0:e.map((e=>e.id))),this.activateAccessKeysModal.close()}));const a=new C(null===(e=this.activateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="body-text"]'),{logger:this.logger});this.activateAccessKeysModal.beforeOpen=()=>{const e=q(this.state);a.text=`Activate ${e}?`}}))},o})),Ae=t((e=>{var t,i,o,d;return d=class extends(s(u,be,we,Me)(e)){constructor(){super(...arguments),t.add(this),o.set(this,a((e=>{e?this.activateButton.enable():this.activateButton.disable()})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.subscribe(n(this,o,"f").bind(this),F)}))}},o=new WeakMap,t=new WeakSet,i=function(){var e;this.activateButton=new W(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="activate-access-keys"]'),{logger:this.logger}),this.activateButton.disable(),this.activateButton.onClick((()=>{this.activateAccessKeysModal.open()}))},d})),We=t((e=>{var t,a,o;return o=class extends(s(we,w,k,u,be)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){return c(this,void 0,void 0,(function*(){this.createdAccessKeyModal=this.createModal(),this.createdAccessKeyModal.setContent(i(yield this.fetchWidgetPage("created-access-key-modal.html")));new W((()=>{var e;return null===(e=this.createdAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-close"]')}),{logger:this.logger}).onClick((()=>{navigator.clipboard.writeText(this.getFormData(this.createdAccessKeyModal.ele)["generated-key"]),this.resetFormData(this.createdAccessKeyModal.ele),this.createdAccessKeyModal.close()}))}))},o})),Ce=t((e=>{var t,a,o,r,l;return l=class extends(s(we,w,k,u,be,We)(e)){constructor(){super(...arguments),t.add(this),a.set(this,void 0),r.set(this,(()=>c(this,void 0,void 0,(function*(){var e,t;yield n(this,a,"f").setData(null===(t=this.state,e=t.tenantRoles.data||[])||void 0===e?void 0:e.map((({name:e})=>({value:e,label:e}))))}))))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",o).call(this)}))}},a=new WeakMap,r=new WeakMap,t=new WeakSet,o=function e(){return c(this,void 0,void 0,(function*(){this.createAccessKeyModal=this.createModal(),this.createAccessKeyModal.setContent(i(yield this.fetchWidgetPage("create-access-key-modal.html")));new W((()=>{var e;return null===(e=this.createAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger}).onClick((()=>{this.createAccessKeyModal.close(),this.resetFormData(this.createAccessKeyModal.ele)}));new W((()=>{var e;return null===(e=this.createAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger}).onClick((()=>c(this,void 0,void 0,(function*(){var e,t;if(this.validateForm(this.createAccessKeyModal.ele)){const s=yield this.actions.createAccessKey(Object.assign({},this.getFormData(this.createAccessKeyModal.ele)));this.createAccessKeyModal.close(),(null===(e=null==s?void 0:s.payload)||void 0===e?void 0:e.cleartext)&&(this.setFormData(this.createdAccessKeyModal.ele,{"generated-key":null===(t=null==s?void 0:s.payload)||void 0===t?void 0:t.cleartext}),this.createdAccessKeyModal.open())}})))),d(this,a,new x((()=>{var e;return null===(e=this.createAccessKeyModal.ele)||void 0===e?void 0:e.querySelector('[data-id="roles-multiselect"]')}),{logger:this.logger}),"f"),n(this,r,"f").call(this),this.createAccessKeyModal.afterClose=()=>{n(this,t,"m",e).call(this)}}))},l})),xe=t((e=>{var t,i,a;return a=class extends(s(u,Ce,be)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this)}))}},t=new WeakSet,i=function(){var e;this.createButton=new W(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="create-access-key"]'),{logger:this.logger}),this.createButton.onClick((()=>this.createAccessKeyModal.open()))},a})),Se=t((e=>{var t,a,o;return o=class extends(s(we,w,u,be)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),yield n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){return c(this,void 0,void 0,(function*(){var e;this.deactivateAccessKeysModal=this.createModal(),this.deactivateAccessKeysModal.setContent(i(yield this.fetchWidgetPage("deactivate-access-keys-modal.html")));const t=new W((()=>{var e;return null===(e=this.deactivateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});t.onClick((()=>this.deactivateAccessKeysModal.close()));const s=new W((()=>{var e;return null===(e=this.deactivateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});s.onClick((()=>{const e=P(this.state);this.actions.deactivateAccessKeys(null==e?void 0:e.map((e=>e.id))),this.deactivateAccessKeysModal.close()}));const a=new C(null===(e=this.deactivateAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="body-text"]'),{logger:this.logger});this.deactivateAccessKeysModal.beforeOpen=()=>{const e=q(this.state);a.text=`Deactivate ${e}?`}}))},o})),je=t((e=>{var t,i,o,d;return d=class extends(s(u,be,we,Se)(e)){constructor(){super(...arguments),t.add(this),o.set(this,a((e=>{e?this.deactivateButton.enable():this.deactivateButton.disable()})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.subscribe(n(this,o,"f").bind(this),F)}))}},o=new WeakMap,t=new WeakSet,i=function(){var e;this.deactivateButton=new W(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="deactivate-access-keys"]'),{logger:this.logger}),this.deactivateButton.disable(),this.deactivateButton.onClick((()=>{this.deactivateAccessKeysModal.open()}))},d})),$e=t((e=>{var t,a,o;return o=class extends(s(we,w,u,be)(e)){constructor(){super(...arguments),t.add(this)}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),yield n(this,t,"m",a).call(this)}))}},t=new WeakSet,a=function(){return c(this,void 0,void 0,(function*(){var e;this.deleteAccessKeysModal=this.createModal(),this.deleteAccessKeysModal.setContent(i(yield this.fetchWidgetPage("delete-access-keys-modal.html")));const t=new W((()=>{var e;return null===(e=this.deleteAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-cancel"]')}),{logger:this.logger});t.onClick((()=>this.deleteAccessKeysModal.close()));const s=new W((()=>{var e;return null===(e=this.deleteAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="modal-submit"]')}),{logger:this.logger});s.onClick((()=>{const e=P(this.state);this.actions.deleteAccessKeys(null==e?void 0:e.map((e=>e.id))),this.deleteAccessKeysModal.close()}));const a=new C(null===(e=this.deleteAccessKeysModal.ele)||void 0===e?void 0:e.querySelector('[data-id="body-text"]'),{logger:this.logger});this.deleteAccessKeysModal.beforeOpen=()=>{const e=q(this.state);a.text=`Delete ${e}?`}}))},o})),Ie=t((e=>{var t,i,o,d;return d=class extends(s(u,be,we,$e)(e)){constructor(){super(...arguments),t.add(this),o.set(this,a((e=>{e?this.deleteButton.enable():this.deleteButton.disable()})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",i).call(this),this.subscribe(n(this,o,"f").bind(this),F)}))}},o=new WeakMap,t=new WeakSet,i=function(){var e;this.deleteButton=new W(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="delete-access-keys"]'),{logger:this.logger}),this.deleteButton.disable(),this.deleteButton.onClick((()=>{this.deleteAccessKeysModal.open()}))},d})),Te=t((e=>{var t,i,a,d;return d=class extends(s(u,be,we)(e)){constructor(){super(...arguments),t.add(this),i.set(this,o((()=>{this.actions.searchAccessKeys({text:this.searchInput.value})})))}onWidgetRootReady(){const e=Object.create(null,{onWidgetRootReady:{get:()=>super.onWidgetRootReady}});return c(this,void 0,void 0,(function*(){var s;yield null===(s=e.onWidgetRootReady)||void 0===s?void 0:s.call(this),n(this,t,"m",a).call(this)}))}},i=new WeakMap,t=new WeakSet,a=function(){var e;this.searchInput=new S(null===(e=this.shadowRoot)||void 0===e?void 0:e.querySelector('[data-id="search-input"]'),{logger:this.logger}),this.searchInput.onInput(n(this,i,"f"))},d}));const Le={success:(new DOMParser).parseFromString('<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g id="Checkmark">\n<path id="Shape" d="M10.0485 15.6396C9.5799 15.171 8.8201 15.171 8.35147 15.6396C7.88284 16.1082 7.88284 16.868 8.35147 17.3367L12.7072 21.6924C13.1759 22.1611 13.9357 22.1611 14.4043 21.6924L24.7152 11.3815C25.1838 10.9129 25.1838 10.1531 24.7152 9.68448C24.2466 9.21585 23.4868 9.21585 23.0181 9.68448L13.5558 19.1469L10.0485 15.6396Z" fill="currentcolor"/>\n</g>\n</svg>\n',"image/svg+xml").firstChild,error:(new DOMParser).parseFromString('<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g id="Icon">\n<path id="Vector" d="M15.9998 26.6558C10.1118 26.6558 5.34375 21.8878 5.34375 15.9998C5.34375 10.1118 10.1118 5.34375 15.9998 5.34375C21.8878 5.34375 26.6558 10.1118 26.6558 15.9998C26.6558 21.8878 21.8878 26.6558 15.9998 26.6558ZM15.9998 24.4798C20.6718 24.4798 24.4798 20.7038 24.4798 15.9998C24.4798 11.3278 20.7038 7.51975 15.9998 7.51975C11.3278 7.51975 7.51975 11.2958 7.51975 15.9998C7.51975 20.6718 11.2958 24.4798 15.9998 24.4798ZM15.3278 9.34375H16.6718C17.0558 9.34375 17.3438 9.63175 17.3118 9.98375L16.9598 16.9278C16.9598 17.1838 16.7678 17.3438 16.5438 17.3438H15.4558C15.2318 17.3438 15.0398 17.1518 15.0398 16.9278L14.6878 9.98375C14.6878 9.63175 14.9758 9.34375 15.3278 9.34375ZM15.4558 19.4558H16.5438C16.9278 19.4558 17.2158 19.7438 17.1838 20.1278V21.1838C17.1838 21.5678 16.8958 21.8558 16.5438 21.8558H15.4558C15.0718 21.8558 14.7838 21.5678 14.7838 21.1838V20.1278C14.7838 19.7438 15.0718 19.4558 15.4558 19.4558Z" fill="currentcolor"/>\n</g>\n</svg>\n',"image/svg+xml").firstChild},Oe=t((e=>{var t,i,o,d,r;return r=class extends(s(u,we,b,m)(e)){constructor(){super(...arguments),t.add(this),d.set(this,a((e=>{e.length&&(e.forEach((({type:e,msg:s})=>{const a=n(this,t,"m",o).call(this,e);a.setContent(n(this,t,"m",i).call(this,{type:e,msg:s})),a.show()})),setTimeout((()=>this.actions.clearNotifications())))})))}init(){const e=Object.create(null,{init:{get:()=>super.init}});return c(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this),this.subscribe(n(this,d,"f").bind(this),L)}))}},d=new WeakMap,t=new WeakSet,i=function({type:e,msg:t}){const s=Le[e],i=Object.assign((new DOMParser).parseFromString('<svg width="2em" height="2em" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g id="Icon">\n<path id="Shape" d="M10.6712 12L7.27521 8.60406C6.90826 8.23711 6.90826 7.64216 7.27521 7.27521C7.64216 6.90826 8.23711 6.90826 8.60406 7.27521L12 10.6712L15.3959 7.27521C15.7629 6.90826 16.3578 6.90826 16.7248 7.27521C17.0917 7.64216 17.0917 8.23711 16.7248 8.60406L13.3288 12L16.7248 15.3959C17.0917 15.7629 17.0917 16.3578 16.7248 16.7248C16.3578 17.0917 15.7629 17.0917 15.3959 16.7248L12 13.3288L8.60406 16.7248C8.23711 17.0917 7.64216 17.0917 7.27521 16.7248C6.90826 16.3578 6.90826 15.7629 7.27521 15.3959L10.6712 12Z" fill="currentcolor"/>\n</g>\n</svg>\n',"image/svg+xml").firstChild,{slot:"close"});return`${(null==s?void 0:s.outerHTML)||""}${t}${i.outerHTML}`},o=function(e){return this.createNotification({mode:e,duration:"error"===e?0:3e3,position:"bottom-start",size:"sm"})},r})),Pe=t((e=>class extends(s(K,M,Ke,xe,Ie,Te,Ae,je,Oe)(e)){init(){const e=Object.create(null,{init:{get:()=>super.init}});return c(this,void 0,void 0,(function*(){var t;yield null===(t=e.init)||void 0===t?void 0:t.call(this)}))}})),Be=s((e=>class extends(Pe(e)){}))(HTMLElement);customElements.define("descope-access-key-management-widget",Be);export{Be as default};
6
+ //# sourceMappingURL=index.js.map