ldap-rest 0.20.2 → 0.20.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/abstract/ldapFlat.js +1 -1
  2. package/dist/config/schema.js +1 -1
  3. package/dist/lib/expressFormatedResponses.js +1 -1
  4. package/dist/lib/instanceProviders.js +1 -1
  5. package/dist/lib/ldapActions.js +1 -1
  6. package/dist/plugins/ldap/accountLifecycle.js +1 -1
  7. package/dist/plugins/ldap/groups.js +1 -1
  8. package/dist/plugins/ldap/organizations.js +1 -1
  9. package/dist/plugins/ldap/passwordPolicy.js +1 -1
  10. package/dist/plugins/ldap/raw.js +1 -1
  11. package/dist/plugins/twake/clouderyProvision.js +1 -1
  12. package/dist/plugins/twake/instances.js +1 -1
  13. package/dist/src/browser/ldap-group-editor/api/GroupApiClient.d.ts +10 -5
  14. package/dist/src/browser/ldap-group-editor/types.d.ts +8 -0
  15. package/dist/src/browser/ldap-resource-editor/api/ResourceApiClient.d.ts +7 -1
  16. package/dist/src/browser/ldap-unit-editor/api/UnitApiClient.d.ts +7 -5
  17. package/dist/src/browser/ldap-user-editor/LdapUserEditor.d.ts +2 -0
  18. package/dist/src/browser/ldap-user-editor/api/UserApiClient.d.ts +7 -1
  19. package/dist/src/browser/shared/utils/form.d.ts +30 -0
  20. package/dist/src/config/schema.d.ts +30 -1
  21. package/dist/src/lib/instanceProviders.d.ts +11 -0
  22. package/dist/src/lib/ldapActions.d.ts +9 -0
  23. package/dist/src/plugins/ldap/accountLifecycle.d.ts +2 -0
  24. package/dist/src/plugins/twake/clouderyProvision.d.ts +7 -1
  25. package/docs/client-development/api/rest-api.md +19 -0
  26. package/docs/usage/plugins/integrations/instances.md +9 -5
  27. package/docs/usage/plugins/ldap/account-lifecycle.md +9 -1
  28. package/docs/usage/upgrading.md +20 -0
  29. package/examples/web/README.md +5 -1
  30. package/examples/web/ldap-user-editor.html +9 -15
  31. package/examples/web/totp-client.html +51 -14
  32. package/package.json +1 -1
  33. package/static/browser/ldap-group-editor/api/GroupApiClient.js +27 -13
  34. package/static/browser/ldap-group-editor/api/GroupApiClient.js.map +1 -1
  35. package/static/browser/ldap-group-editor/components/CreateGroupModal.js +5 -17
  36. package/static/browser/ldap-group-editor/components/CreateGroupModal.js.map +1 -1
  37. package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js +28 -12
  38. package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js.map +1 -1
  39. package/static/browser/ldap-group-editor/components/MoveGroupModal.js.map +1 -1
  40. package/static/browser/ldap-group-editor.esm.js +114 -42
  41. package/static/browser/ldap-group-editor.esm.js.map +1 -1
  42. package/static/browser/ldap-group-editor.js +114 -42
  43. package/static/browser/ldap-group-editor.js.map +1 -1
  44. package/static/browser/ldap-group-editor.min.js +1 -1
  45. package/static/browser/ldap-group-editor.min.js.map +1 -1
  46. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js +8 -2
  47. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js.map +1 -1
  48. package/static/browser/ldap-unit-editor/api/UnitApiClient.js +8 -13
  49. package/static/browser/ldap-unit-editor/api/UnitApiClient.js.map +1 -1
  50. package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js +5 -2
  51. package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js.map +1 -1
  52. package/static/browser/ldap-unit-editor.esm.js +52 -15
  53. package/static/browser/ldap-unit-editor.esm.js.map +1 -1
  54. package/static/browser/ldap-unit-editor.js +52 -15
  55. package/static/browser/ldap-unit-editor.js.map +1 -1
  56. package/static/browser/ldap-unit-editor.min.js +1 -1
  57. package/static/browser/ldap-unit-editor.min.js.map +1 -1
  58. package/static/browser/ldap-user-editor/LdapUserEditor.js +22 -21
  59. package/static/browser/ldap-user-editor/LdapUserEditor.js.map +1 -1
  60. package/static/browser/ldap-user-editor/api/UserApiClient.js +8 -2
  61. package/static/browser/ldap-user-editor/api/UserApiClient.js.map +1 -1
  62. package/static/browser/ldap-user-editor/components/UserEditor.js +19 -9
  63. package/static/browser/ldap-user-editor/components/UserEditor.js.map +1 -1
  64. package/static/browser/ldap-user-editor.esm.js +88 -32
  65. package/static/browser/ldap-user-editor.esm.js.map +1 -1
  66. package/static/browser/ldap-user-editor.js +88 -32
  67. package/static/browser/ldap-user-editor.js.map +1 -1
  68. package/static/browser/ldap-user-editor.min.js +1 -1
  69. package/static/browser/ldap-user-editor.min.js.map +1 -1
  70. package/static/browser/shared/index.js +1 -1
  71. package/static/browser/shared/utils/form.js +51 -1
  72. package/static/browser/shared/utils/form.js.map +1 -1
  73. package/static/browser/shared.esm.js +51 -1
  74. package/static/browser/shared.esm.js.map +1 -1
  75. package/static/browser/shared.js +53 -0
  76. package/static/browser/shared.js.map +1 -1
  77. package/static/browser/shared.min.js +1 -1
  78. package/static/browser/shared.min.js.map +1 -1
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LdapGroupEditor={})}(this,function(e){"use strict";class t{constructor(e){this.baseUrl=e}async getConfig(){const e=await fetch(`${this.baseUrl}/api/v1/config`);if(!e.ok)throw new Error(`Failed to load config: ${e.statusText}`);return e.json()}async getOrganizations(){const e=await fetch(`${this.baseUrl}/api/v1/ldap/organizations/top`);if(!e.ok)throw new Error(`Failed to load organizations: ${e.statusText}`);return e.json()}async getGroups(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes?objectClass=groupOfNames`);if(!t.ok)throw new Error(`Failed to load groups: ${t.statusText}`);return(await t.json()).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:[e.objectClass];return t.includes("groupOfNames")||t.includes("group")})}async getGroup(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Failed to load group: ${t.statusText}`);return t.json()}async updateGroup(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const e=await n.text();throw new Error(`Failed to update group: ${e}`)}}async createEntry(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const e=await n.text();throw new Error(`Failed to create entry: ${e}`)}}async deleteEntry(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}`,{method:"DELETE"});if(!t.ok){const e=await t.text();throw new Error(`Failed to delete entry: ${e}`)}}async moveGroup(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}/move`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetOrgDn:t})});if(!n.ok){const e=await n.text();throw new Error(`Failed to move group: ${e}`)}}async renameGroup(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}/rename`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newCn:t})});if(!n.ok){const e=await n.text();throw new Error(`Failed to rename group: ${e}`)}}async getPointerOptions(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/search?base=${encodeURIComponent(e)}&scope=one`);if(!t.ok)throw new Error(`Failed to load pointer options: ${t.statusText}`);return(await t.json()).map(e=>({dn:e.dn,label:e.cn?.[0]||e.ou?.[0]||e.dn}))}}class n{constructor(e,t,n){this.expandedNodes=new Set,this.selectedDn=null,this.rootDn=null,this.container=e,this.apiBaseUrl=t,this.onOrgSelect=n}async init(){this.container.innerHTML='\n <div class="group-tree">\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">account_tree</span>\n Organizations\n </h3>\n <div id="tree-content">\n <div class="loading"><div class="spinner"></div></div>\n </div>\n </div>\n ';try{const e=await fetch(`${this.apiBaseUrl}/api/v1/ldap/organizations/top`);if(!e.ok)throw new Error("Failed to load organizations");const t=await e.json();this.rootDn=t.dn,await this.renderTree()}catch(e){console.error("Failed to init tree:",e);const t=this.container.querySelector("#tree-content");t&&(t.innerHTML='<p style="color: #f44336;">Failed to load organizations</p>')}}async renderTree(){const e=this.container.querySelector("#tree-content");if(e&&this.rootDn)try{const t=await this.renderNode(this.rootDn,0);e.innerHTML=t,this.attachEventListeners()}catch(t){console.error("Failed to render tree:",t),e.innerHTML='<p style="color: #f44336;">Error rendering tree</p>'}}async renderNode(e,t){const n=this.expandedNodes.has(e),r=this.selectedDn===e,o=20*t,i=await fetch(`${this.apiBaseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);if(!i.ok)throw new Error("Failed to load node");const a=await i.json();let s=e;a.ou?s=Array.isArray(a.ou)?a.ou[0]:a.ou:a.cn&&(s=Array.isArray(a.cn)?a.cn[0]:a.cn);let l=`\n <div class="tree-node ${r?"active":""}" style="padding-left: ${o}px; padding: 8px 8px 8px ${o}px; cursor: pointer; display: flex; align-items: center; gap: 4px;">\n <span class="material-icons tree-node-toggle" data-dn="${this.escapeHtml(e)}" style="font-size: 18px; cursor: pointer;">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons" style="font-size: 18px;">business</span>\n <span class="tree-node-label" data-dn="${this.escapeHtml(e)}">${this.escapeHtml(s)}</span>\n </div>\n `;if(n)try{const n=await fetch(`${this.apiBaseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes`);if(!n.ok)throw new Error("Failed to load subnodes");const r=(await n.json()).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:e.objectClass?[e.objectClass]:[];return t.includes("organizationalUnit")||t.includes("organization")});for(const e of r)l+=await this.renderNode(e.dn,t+1)}catch(t){console.error("Failed to load subnodes for",e,t)}return l}attachEventListeners(){this.container.querySelectorAll(".tree-node-toggle").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.renderTree())})}),this.container.querySelectorAll(".tree-node-label").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.selectedDn=n,this.onOrgSelect(n),this.renderTree())})})}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}class r{constructor(e,t,n){this.modal=null,this.expandedNodes=new Set,this.selectedOrgDn=null,this.api=e,this.currentOrgDn=t,this.onMove=n}async show(){this.modal=document.createElement("div"),this.modal.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n ";const e=document.createElement("div");e.style.cssText="\n background: white;\n border-radius: 8px;\n padding: 24px;\n max-width: 600px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n ",e.innerHTML='\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">drive_file_move</span>\n Move Group to Organization\n </h3>\n <p style="margin: 0 0 16px 0; color: #666;">Select the target organization:</p>\n <div id="org-tree" style="margin-bottom: 24px; max-height: 400px; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; padding: 12px;">\n <div class="loading"><div class="spinner"></div></div>\n </div>\n <div style="display: flex; gap: 12px; justify-content: flex-end;">\n <button type="button" id="cancel-move-btn" style="padding: 10px 20px; border: 1px solid #ddd; background: white; border-radius: 4px; cursor: pointer;">Cancel</button>\n <button type="button" id="confirm-move-btn" disabled style="padding: 10px 20px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">drive_file_move</span>\n Move Here\n </button>\n </div>\n ',this.modal.appendChild(e),document.body.appendChild(this.modal);const t=this.modal.querySelector("#cancel-move-btn");t&&t.addEventListener("click",()=>this.close());const n=this.modal.querySelector("#confirm-move-btn");n&&n.addEventListener("click",()=>this.handleConfirm()),this.modal.addEventListener("click",e=>{e.target===this.modal&&this.close()}),await this.loadOrgTree()}async loadOrgTree(){const e=this.modal?.querySelector("#org-tree");if(e)try{const t=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/top`);if(!t.ok)throw new Error("Failed to load organizations");const n=(await t.json()).dn,r=await this.renderNode(n,0);e.innerHTML=r,this.attachTreeEventListeners()}catch(t){console.error("Failed to load organization tree:",t),e.innerHTML='<p style="color: #f44336;">Failed to load organizations</p>'}}async renderNode(e,t){const n=this.expandedNodes.has(e),r=this.selectedOrgDn===e,o=this.currentOrgDn===e,i=20*t,a=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);if(!a.ok)throw new Error("Failed to load node");const s=await a.json();let l=e;s.ou?l=Array.isArray(s.ou)?s.ou[0]:s.ou:s.cn&&(l=Array.isArray(s.cn)?s.cn[0]:s.cn);let d=`\n <div class="${`tree-node ${r?"selected":""} ${o?"current-org":""}`}" style="${`padding-left: ${i}px; padding: 8px 8px 8px ${i}px; cursor: ${o?"not-allowed":"pointer"}; display: flex; align-items: center; gap: 4px; ${o?"opacity: 0.5; background: #f5f5f5;":r?"background: #e3f2fd;":""}`}" data-dn="${this.escapeHtml(e)}" data-is-current="${o}">\n <span class="material-icons tree-node-toggle" data-dn="${this.escapeHtml(e)}" style="font-size: 18px; cursor: pointer;">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons" style="font-size: 18px;">business</span>\n <span class="tree-node-label" data-dn="${this.escapeHtml(e)}">${this.escapeHtml(l)}</span>\n ${o?'<span style="font-size: 12px; color: #666; margin-left: 8px;">(current)</span>':""}\n </div>\n `;if(n)try{const n=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes`);if(!n.ok)throw new Error("Failed to load subnodes");const r=(await n.json()).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:e.objectClass?[e.objectClass]:[];return t.includes("organizationalUnit")||t.includes("organization")});for(const e of r)d+=await this.renderNode(e.dn,t+1)}catch(t){console.error("Failed to load subnodes for",e,t)}return d}attachTreeEventListeners(){const e=this.modal?.querySelector("#org-tree");e&&(e.querySelectorAll(".tree-node-toggle").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.loadOrgTree())})}),e.querySelectorAll(".tree-node").forEach(t=>{t.addEventListener("click",()=>{if("true"===t.getAttribute("data-is-current"))return;const n=t.getAttribute("data-dn");if(!n)return;this.selectedOrgDn=n,e.querySelectorAll(".tree-node").forEach(e=>{e.classList.remove("selected"),e.style.background=""}),t.classList.add("selected"),t.style.background="#e3f2fd";const r=this.modal?.querySelector("#confirm-move-btn");r&&(r.disabled=!1,r.style.opacity="1",r.style.cursor="pointer")})}))}async handleConfirm(){if(this.selectedOrgDn)try{await this.onMove(this.selectedOrgDn),this.close()}catch(e){console.error("Failed to move group:",e)}}close(){this.modal&&(document.body.removeChild(this.modal),this.modal=null)}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}class o{constructor(e,t,n){this.group=null,this.schema=null,this.saveCallback=null,this.container=e,this.api=t,this.groupDn=n}async init(){try{await this.loadGroup(),await this.loadSchema(),this.render(),this.attachEventListeners()}catch(e){throw console.error("Failed to init GroupPropertyEditor:",e),e}}async loadGroup(){console.warn("[GroupPropertyEditor] Loading group:",this.groupDn),this.group=await this.api.getGroup(this.groupDn),console.warn("[GroupPropertyEditor] Group loaded:",this.group)}async loadSchema(){console.warn("[GroupPropertyEditor] Loading schema...");const e=await this.api.getConfig();console.warn("[GroupPropertyEditor] Config loaded:",e);const t=e.features?.ldapGroups;if(console.warn("[GroupPropertyEditor] Groups config:",t),t?.schemaUrl){const e=await fetch(t.schemaUrl);this.schema=await e.json(),console.warn("[GroupPropertyEditor] Schema loaded from URL:",this.schema)}else if(t?.schema)this.schema=t.schema,console.warn("[GroupPropertyEditor] Schema loaded from config:",this.schema);else{const t=e.features?.ldapFlatGeneric?.flatResources?.find(e=>"groups"===e.pluralName||"groups"===e.name);if(console.warn("[GroupPropertyEditor] Groups resource (flatResources):",t),t?.schemaUrl){const e=await fetch(t.schemaUrl);this.schema=await e.json(),console.warn("[GroupPropertyEditor] Schema loaded from URL (flatResources):",this.schema)}else t?.schema?(this.schema=t.schema,console.warn("[GroupPropertyEditor] Schema loaded from config (flatResources):",this.schema)):(console.warn("[GroupPropertyEditor] No schema configured, creating default schema from group attributes"),this.schema=this.createDefaultSchema(),console.warn("[GroupPropertyEditor] Default schema created:",this.schema))}}createDefaultSchema(){if(!this.group)return{entity:{objectClass:[]},attributes:{}};const e={};for(const[t,n]of Object.entries(this.group)){if("dn"===t||"*"===t||"objectClass"===t)continue;const r=Array.isArray(n);e[t]={type:r?"array":"string",required:!1,fixed:"dn"===t}}return{entity:{objectClass:Array.isArray(this.group.objectClass)?this.group.objectClass:[this.group.objectClass]},attributes:e}}onSave(e){this.saveCallback=e}render(){this.group&&(this.container.innerHTML=`\n <div class="group-property-editor">\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">group</span>\n Edit Group\n </h3>\n <form id="group-edit-form">\n ${this.renderFields()}\n <div class="form-actions" style="margin-top: 24px; padding-top: 24px; border-top: 1px solid #e0e0e0; display: flex; gap: 12px; justify-content: space-between;">\n <button type="button" id="move-group-btn" class="btn btn-secondary" style="background: #757575; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">drive_file_move</span>\n Move\n </button>\n <div style="display: flex; gap: 12px;">\n <button type="button" id="delete-group-btn" class="btn btn-danger" style="background: #d32f2f; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">delete</span>\n Delete Group\n </button>\n <button type="submit" class="btn btn-primary" style="background: var(--primary-color, #6200ee); color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">save</span>\n Save Changes\n </button>\n </div>\n </div>\n </form>\n </div>\n `)}renderFields(){if(!this.group||!this.schema)return"<div>Loading...</div>";let e="";const t=[],n=[],r=[];for(const[e,o]of Object.entries(this.schema.attributes))o.fixed||"objectClass"===e||("member"===e||"owner"===e?n.push([e,o]):e.includes("mail")||e.includes("Mail")?r.push([e,o]):t.push([e,o]));if(t.length>0){e+='<div class="field-group" style="margin-bottom: 20px; padding: 16px; background: #f9f9f9; border-radius: 4px;">',e+='<div class="field-group-title" style="font-weight: 500; color: var(--primary-color, #6200ee); margin-bottom: 12px; font-size: 14px; text-transform: uppercase;">Basic Information</div>';for(const[n,r]of t)e+=this.renderField(n,r);e+="</div>"}if(r.length>0){e+='<div class="field-group" style="margin-bottom: 20px; padding: 16px; background: #f9f9f9; border-radius: 4px;">',e+='<div class="field-group-title" style="font-weight: 500; color: var(--primary-color, #6200ee); margin-bottom: 12px; font-size: 14px; text-transform: uppercase;">Email/Mailbox Settings</div>';for(const[t,n]of r)e+=this.renderField(t,n);e+="</div>"}if(n.length>0){e+='<div class="field-group" style="margin-bottom: 20px; padding: 16px; background: #f9f9f9; border-radius: 4px;">',e+='<div class="field-group-title" style="font-weight: 500; color: var(--primary-color, #6200ee); margin-bottom: 12px; font-size: 14px; text-transform: uppercase;">Members & Owners</div>';for(const[t,r]of n)e+=this.renderField(t,r);e+="</div>"}return e}renderField(e,t){const n=this.group?.[e],r=this.getFieldLabel(e),o=t.required?"required":"";if("array"===t.type){const t=Array.isArray(n)?n.join("\n"):"";return"member"===e||"owner"===e?`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <div style="display: flex; gap: 8px; margin-bottom: 8px;">\n <input type="text" id="${e}-add-input" placeholder="Search DN or email..." style="flex: 1; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" list="${e}-suggestions" />\n <datalist id="${e}-suggestions"></datalist>\n <button type="button" class="btn-add-${e}" style="padding: 8px 16px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 4px;">\n <span class="material-icons" style="font-size: 16px;">add</span>\n Add\n </button>\n </div>\n <textarea name="${this.escapeHtml(e)}" id="${e}-list" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; min-height: 120px; font-family: 'Roboto', sans-serif;" ${o}>${this.escapeHtml(t)}</textarea>\n <div style="font-size: 12px; color: #666; margin-top: 4px;">\n One DN per line. Type to search for users, or enter DN/email manually. Select a line and press Delete to remove.\n </div>\n </div>\n `:`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <textarea name="${this.escapeHtml(e)}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; min-height: 80px; font-family: 'Roboto', sans-serif;" ${o}>${this.escapeHtml(t)}</textarea>\n <div style="font-size: 12px; color: #666; margin-top: 4px;">Enter one value per line</div>\n </div>\n `}if("number"===t.type||"integer"===t.type)return`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <input type="number" name="${this.escapeHtml(e)}" value="${n||""}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px;" ${o} />\n </div>\n `;const i=e.toLowerCase().includes("mail")?"email":"text";return`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <input type="${i}" name="${this.escapeHtml(e)}" value="${this.escapeHtml(String(n||""))}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px;" ${o} />\n </div>\n `}getFieldLabel(e){return{cn:"Group Name",description:"Description",member:"Members",owner:"Owners",mail:"Email Address",twakeMailboxType:"Mailbox Type"}[e]||e.replace(/([A-Z])/g," $1").replace(/_/g," ").replace(/^./,e=>e.toUpperCase())}attachEventListeners(){const e=document.getElementById("group-edit-form");e&&e.addEventListener("submit",e=>this.handleSubmit(e));const t=document.getElementById("delete-group-btn");t&&t.addEventListener("click",()=>this.handleDelete());const n=document.getElementById("move-group-btn");n&&n.addEventListener("click",()=>this.handleMove());const r=this.container.querySelector(".btn-add-member");r&&r.addEventListener("click",()=>this.handleAddMember("member"));const o=this.container.querySelector(".btn-add-owner");o&&o.addEventListener("click",()=>this.handleAddMember("owner")),["member","owner"].forEach(e=>{const t=document.getElementById(`${e}-list`);t&&t.addEventListener("keydown",e=>{"Delete"===e.key&&this.handleDeleteMember(t,e)});const n=document.getElementById(`${e}-add-input`);if(n){let t;n.addEventListener("input",()=>{clearTimeout(t),t=window.setTimeout(()=>{this.searchUsers(n.value,e)},300)})}})}async searchUsers(e,t){if(e&&!(e.length<2))try{const n=await fetch(`${this.api.baseUrl}/api/v1/ldap/search?filter=(|(cn=*${encodeURIComponent(e)}*)(uid=*${encodeURIComponent(e)}*)(mail=*${encodeURIComponent(e)}*))`);if(!n.ok)return;const r=await n.json(),o=document.getElementById(`${t}-suggestions`);if(!o)return;o.innerHTML=r.slice(0,10).map(e=>{const t=e.cn?.[0]||e.uid?.[0]||e.mail?.[0]||e.dn;return`<option value="${this.escapeHtml(e.dn)}">${this.escapeHtml(t)}</option>`}).join("")}catch(e){console.error("Failed to search users:",e)}}async handleAddMember(e){const t=document.getElementById(`${e}-add-input`),n=document.getElementById(`${e}-list`);if(!t||!n)return;const r=t.value.trim();if(!r)return void alert("Please enter a DN or email address");const o=n.value.split("\n").map(e=>e.trim()).filter(e=>e);o.includes(r)?alert(`This ${e} already exists`):(o.push(r),n.value=o.join("\n"),t.value="",t.focus())}handleDeleteMember(e,t){const n=e.selectionStart,r=e.selectionEnd,o=e.value.split("\n");let i=0,a=0,s=0;for(let e=0;e<o.length;e++){const t=o[e].length+1;if(i<=n&&n<i+t&&(a=e),i<=r&&r<=i+t){s=e;break}i+=t}t.preventDefault();const l=o.filter((e,t)=>t<a||t>s);e.value=l.join("\n")}async handleSubmit(e){e.preventDefault();const t=e.target,n=new FormData(t),r={};for(const[e,t]of n.entries())"array"===this.schema?.attributes[e]?.type?r[e]=t.split("\n").map(e=>e.trim()).filter(e=>e):"number"===this.schema?.attributes[e]?.type||"integer"===this.schema?.attributes[e]?.type?r[e]=Number(t):r[e]=t;try{if(r.cn&&this.group?.cn){const e=Array.isArray(this.group.cn)?this.group.cn[0]:this.group.cn,t=r.cn;if(e!==t){delete r.cn,await this.api.renameGroup(this.groupDn,t);const n=this.groupDn.replace(new RegExp(`^cn=${e},`),`cn=${t},`);this.groupDn=n,Object.keys(r).length>0&&await this.api.updateGroup(this.groupDn,r)}else await this.api.updateGroup(this.groupDn,r)}else await this.api.updateGroup(this.groupDn,r);alert("Group updated successfully!"),this.saveCallback&&this.saveCallback()}catch(e){console.error("Failed to update group:",e),alert(`Failed to update group: ${e.message}`)}}async handleMove(){if(!this.group)return;const e=this.group.twakeDepartmentLink;if(!e)return void alert("Cannot move group: no organization link attribute found. This group may not support move operation.");const t=this.groupDn.match(/^cn=([^,]+)/),n=t?t[1]:this.groupDn,o=new r(this.api,e,async e=>{try{await this.api.moveGroup(n,e),alert("Group moved successfully!"),await this.loadGroup(),this.render(),this.attachEventListeners(),this.saveCallback&&this.saveCallback()}catch(e){console.error("Failed to move group:",e),alert(`Failed to move group: ${e.message}`)}});await o.show()}async handleDelete(){if(confirm(`Are you sure you want to delete this group?\n\n${this.groupDn}\n\nThis action cannot be undone.`))try{await this.api.deleteEntry(this.groupDn),alert("Group deleted successfully!"),this.container.innerHTML='\n <div class="empty-state">\n <span class="material-icons">group</span>\n <p>Group deleted. Select another group to edit.</p>\n </div>\n '}catch(e){console.error("Failed to delete group:",e),alert(`Failed to delete group: ${e.message}`)}}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}class i{constructor(e,t,n,r){this.modal=null,this.api=e,this.config=t,this.orgDn=n,this.onCreated=r}async show(){this.modal=document.createElement("div"),this.modal.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n ";const e=await this.getOrgPath(this.orgDn),t=document.createElement("div");t.style.cssText="\n background: white;\n border-radius: 8px;\n padding: 24px;\n max-width: 500px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n ",t.innerHTML=`\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">group_add</span>\n Create New Group\n </h3>\n <form id="create-group-form" style="display: flex; flex-direction: column; gap: 16px;">\n <div>\n <label for="group-cn" style="display: block; margin-bottom: 4px; font-weight: 500;">Group Name (cn) *</label>\n <input type="text" id="group-cn" required pattern="[a-zA-Z][a-zA-Z0-9-]{0,254}"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"\n placeholder="e.g., developers" />\n <small style="color: #666; font-size: 12px;">Must start with a letter, contain only letters, numbers, and hyphens</small>\n </div>\n\n <div>\n <label for="group-mail" style="display: block; margin-bottom: 4px; font-weight: 500;">Email Address</label>\n <input type="email" id="group-mail"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"\n placeholder="e.g., developers@example.com" />\n </div>\n\n <div>\n <label for="group-description" style="display: block; margin-bottom: 4px; font-weight: 500;">Description</label>\n <textarea id="group-description" rows="3"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; resize: vertical;"\n placeholder="Group description..."></textarea>\n </div>\n\n <div style="padding: 12px; background: #f5f5f5; border-radius: 4px;">\n <p style="margin: 0 0 8px 0; font-size: 14px; color: #666;">Organization:</p>\n <p style="margin: 0; font-weight: 500;">${this.escapeHtml(e||this.orgDn)}</p>\n </div>\n\n <div id="error-message" style="display: none; padding: 12px; background: #ffebee; border-radius: 4px; color: #c62828;"></div>\n\n <div style="display: flex; gap: 12px; justify-content: flex-end;">\n <button type="button" id="cancel-create-btn" style="padding: 10px 20px; border: 1px solid #ddd; background: white; border-radius: 4px; cursor: pointer;">Cancel</button>\n <button type="submit" style="padding: 10px 20px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">group_add</span>\n Create Group\n </button>\n </div>\n </form>\n `,this.modal.appendChild(t),document.body.appendChild(this.modal);const n=this.modal.querySelector("#cancel-create-btn");n&&n.addEventListener("click",()=>this.close());const r=this.modal.querySelector("#create-group-form");r&&r.addEventListener("submit",e=>this.handleSubmit(e)),this.modal.addEventListener("click",e=>{e.target===this.modal&&this.close()})}async getOrgPath(e){try{const t=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);if(!t.ok)return null;const n=await t.json(),r=this.config.features?.organizations?.pathAttribute;return r&&n[r]?Array.isArray(n[r])?n[r][0]:n[r]:e}catch(e){return console.error("Failed to load organization path:",e),null}}async handleSubmit(e){e.preventDefault();const t=this.modal?.querySelector("#group-cn"),n=this.modal?.querySelector("#group-mail"),r=this.modal?.querySelector("#group-description"),o=this.modal?.querySelector("#error-message");if(!t)return;const i=t.value.trim();if(i)try{const e=await this.getOrgPath(this.orgDn),t={cn:i};n?.value.trim()&&(t.mail=n.value.trim()),r?.value.trim()&&(t.description=r.value.trim());const a=this.config.features?.organizations?.linkAttribute,s=this.config.features?.organizations?.pathAttribute;if(a&&s){if(!e)return void this.showError(o,"Failed to get organization path");t[a]=this.orgDn,t[s]=e}const l=await fetch(`${this.api.baseUrl}/api/v1/ldap/groups`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!l.ok){const e=await l.text();throw new Error(e||"Failed to create group")}await this.onCreated(),this.close()}catch(e){console.error("Failed to create group:",e),this.showError(o,e.message)}else this.showError(o,"Group name is required")}showError(e,t){e&&(e.textContent=`Error: ${t}`,e.style.display="block")}close(){this.modal&&(document.body.removeChild(this.modal),this.modal=null)}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}e.LdapGroupEditor=class{constructor(e){this.container=null,this.groupTree=null,this.groupEditor=null,this.currentGroupDn=null,this.currentOrgDn=null,this.config=null,this.options={apiBaseUrl:"undefined"!=typeof window?window.location.origin:"",...e},this.api=new t(this.options.apiBaseUrl||"")}async init(){if(this.container=document.getElementById(this.options.containerId),!this.container)throw new Error(`Container #${this.options.containerId} not found`);this.config=await this.api.getConfig(),this.render(),await this.initComponents()}render(){this.container&&(this.container.innerHTML='\n <div class="ldap-group-editor">\n <div class="editor-layout">\n <div id="group-tree-container" class="demo-panel"></div>\n <div id="group-editor-container" class="demo-panel">\n <div class="empty-state">\n <span class="material-icons">group</span>\n <p>Select a group from the tree to edit its properties</p>\n </div>\n </div>\n </div>\n </div>\n ')}async initComponents(){const e=document.getElementById("group-tree-container");if(e){this.groupTree=new n(e,this.options.apiBaseUrl||window.location.origin,e=>this.onOrgSelected(e));try{await this.groupTree.init()}catch(e){this.handleError(e)}}}async onOrgSelected(e){const t=document.getElementById("group-editor-container");if(t){this.currentOrgDn=e;try{const n=await this.api.getGroups(e);t.innerHTML=`\n <div style="padding: 20px;">\n <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">\n <h3 style="margin: 0;">Groups</h3>\n <button type="button" id="create-group-btn" style="padding: 8px 16px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">group_add</span>\n Create\n </button>\n </div>\n ${0===n.length?'\n <div class="empty-state">\n <span class="material-icons">group</span>\n <p>No groups in this organization</p>\n </div>\n ':`\n <div style="display: flex; flex-direction: column; gap: 8px;">\n ${n.map(e=>`\n <div class="group-item" data-dn="${this.escapeHtml(e.dn)}" style="padding: 12px; border: 1px solid #ddd; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">group</span>\n <span>${this.escapeHtml(e.cn||e.dn)}</span>\n </div>\n `).join("")}\n </div>\n `}\n </div>\n `,t.querySelectorAll(".group-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.dn;this.onGroupSelected(t)})});const r=t.querySelector("#create-group-btn");r&&r.addEventListener("click",()=>this.handleCreateGroup())}catch(e){this.handleError(e),t.innerHTML='\n <div class="empty-state">\n <span class="material-icons">error</span>\n <p>Failed to load groups</p>\n </div>\n '}}}async onGroupSelected(e){const t=document.getElementById("group-editor-container");if(t){this.currentGroupDn=e;try{this.groupEditor=new o(t,this.api,e),await this.groupEditor.init(),this.options.onGroupSaved&&this.groupEditor.onSave(()=>{this.options.onGroupSaved?.(e)})}catch(e){this.handleError(e),t.innerHTML='\n <div class="empty-state">\n <span class="material-icons">error</span>\n <p>Failed to load group properties</p>\n </div>\n '}}}async handleCreateGroup(){if(!this.currentOrgDn||!this.config)return;const e=new i(this.api,this.config,this.currentOrgDn,async()=>{await this.onOrgSelected(this.currentOrgDn),this.options.onGroupSaved&&this.options.onGroupSaved("")});await e.show()}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}handleError(e){console.error("LdapGroupEditor error:",e),this.options.onError&&this.options.onError(e)}getApi(){return this.api}getConfig(){return this.config}getCurrentOrgDn(){return this.currentOrgDn}getCurrentUserDn(){return this.currentGroupDn}async createUser(e){return this.api.createEntry(e.dn,e)}async deleteUser(e){return this.api.deleteEntry(e)}}});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LdapGroupEditor={})}(this,function(e){"use strict";class t{constructor(e){this.baseUrl=e}async getConfig(){const e=await fetch(`${this.baseUrl}/api/v1/config`);if(!e.ok)throw new Error(`Failed to load config: ${e.statusText}`);return e.json()}async getOrganizations(){const e=await fetch(`${this.baseUrl}/api/v1/ldap/organizations/top`);if(!e.ok)throw new Error(`Failed to load organizations: ${e.statusText}`);return e.json()}async getGroups(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes?objectClass=groupOfNames`);if(!t.ok)throw new Error(`Failed to load groups: ${t.statusText}`);return(await t.json()).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:[e.objectClass];return t.includes("groupOfNames")||t.includes("group")})}async getGroup(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Failed to load group: ${t.statusText}`);return t.json()}async updateGroup(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({replace:t})});if(!n.ok){const e=await n.text();throw new Error(`Failed to update group: ${e}`)}}async createEntry(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const e=await n.text();throw new Error(`Failed to create entry: ${e}`)}}async deleteEntry(e){const t=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}`,{method:"DELETE"});if(!t.ok){const e=await t.text();throw new Error(`Failed to delete entry: ${e}`)}}async addMembers(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}/members`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({member:t})});if(!n.ok){const e=await n.text();throw new Error(`Failed to add members: ${e}`)}}async removeMember(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}/members/${encodeURIComponent(t)}`,{method:"DELETE"});if(!n.ok){const e=await n.text();throw new Error(`Failed to remove member: ${e}`)}}async moveGroup(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}/move`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetOrgDn:t})});if(!n.ok){const e=await n.text();throw new Error(`Failed to move group: ${e}`)}}async renameGroup(e,t){const n=await fetch(`${this.baseUrl}/api/v1/ldap/groups/${encodeURIComponent(e)}/rename`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newCn:t})});if(!n.ok){const e=await n.text();throw new Error(`Failed to rename group: ${e}`)}}}class n{constructor(e,t,n){this.expandedNodes=new Set,this.selectedDn=null,this.rootDn=null,this.container=e,this.apiBaseUrl=t,this.onOrgSelect=n}async init(){this.container.innerHTML='\n <div class="group-tree">\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">account_tree</span>\n Organizations\n </h3>\n <div id="tree-content">\n <div class="loading"><div class="spinner"></div></div>\n </div>\n </div>\n ';try{const e=await fetch(`${this.apiBaseUrl}/api/v1/ldap/organizations/top`);if(!e.ok)throw new Error("Failed to load organizations");const t=await e.json();this.rootDn=t.dn,await this.renderTree()}catch(e){console.error("Failed to init tree:",e);const t=this.container.querySelector("#tree-content");t&&(t.innerHTML='<p style="color: #f44336;">Failed to load organizations</p>')}}async renderTree(){const e=this.container.querySelector("#tree-content");if(e&&this.rootDn)try{const t=await this.renderNode(this.rootDn,0);e.innerHTML=t,this.attachEventListeners()}catch(t){console.error("Failed to render tree:",t),e.innerHTML='<p style="color: #f44336;">Error rendering tree</p>'}}async renderNode(e,t){const n=this.expandedNodes.has(e),r=this.selectedDn===e,o=20*t,i=await fetch(`${this.apiBaseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);if(!i.ok)throw new Error("Failed to load node");const a=await i.json();let s=e;a.ou?s=Array.isArray(a.ou)?a.ou[0]:a.ou:a.cn&&(s=Array.isArray(a.cn)?a.cn[0]:a.cn);let d=`\n <div class="tree-node ${r?"active":""}" style="padding-left: ${o}px; padding: 8px 8px 8px ${o}px; cursor: pointer; display: flex; align-items: center; gap: 4px;">\n <span class="material-icons tree-node-toggle" data-dn="${this.escapeHtml(e)}" style="font-size: 18px; cursor: pointer;">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons" style="font-size: 18px;">business</span>\n <span class="tree-node-label" data-dn="${this.escapeHtml(e)}">${this.escapeHtml(s)}</span>\n </div>\n `;if(n)try{const n=await fetch(`${this.apiBaseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes`);if(!n.ok)throw new Error("Failed to load subnodes");const r=(await n.json()).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:e.objectClass?[e.objectClass]:[];return t.includes("organizationalUnit")||t.includes("organization")});for(const e of r)d+=await this.renderNode(e.dn,t+1)}catch(t){console.error("Failed to load subnodes for",e,t)}return d}attachEventListeners(){this.container.querySelectorAll(".tree-node-toggle").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.renderTree())})}),this.container.querySelectorAll(".tree-node-label").forEach(e=>{e.addEventListener("click",t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.selectedDn=n,this.onOrgSelect(n),this.renderTree())})})}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}class r{constructor(e,t,n){this.modal=null,this.expandedNodes=new Set,this.selectedOrgDn=null,this.api=e,this.currentOrgDn=t,this.onMove=n}async show(){this.modal=document.createElement("div"),this.modal.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n ";const e=document.createElement("div");e.style.cssText="\n background: white;\n border-radius: 8px;\n padding: 24px;\n max-width: 600px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n ",e.innerHTML='\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">drive_file_move</span>\n Move Group to Organization\n </h3>\n <p style="margin: 0 0 16px 0; color: #666;">Select the target organization:</p>\n <div id="org-tree" style="margin-bottom: 24px; max-height: 400px; overflow-y: auto; border: 1px solid #ddd; border-radius: 4px; padding: 12px;">\n <div class="loading"><div class="spinner"></div></div>\n </div>\n <div style="display: flex; gap: 12px; justify-content: flex-end;">\n <button type="button" id="cancel-move-btn" style="padding: 10px 20px; border: 1px solid #ddd; background: white; border-radius: 4px; cursor: pointer;">Cancel</button>\n <button type="button" id="confirm-move-btn" disabled style="padding: 10px 20px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">drive_file_move</span>\n Move Here\n </button>\n </div>\n ',this.modal.appendChild(e),document.body.appendChild(this.modal);const t=this.modal.querySelector("#cancel-move-btn");t&&t.addEventListener("click",()=>this.close());const n=this.modal.querySelector("#confirm-move-btn");n&&n.addEventListener("click",()=>this.handleConfirm()),this.modal.addEventListener("click",e=>{e.target===this.modal&&this.close()}),await this.loadOrgTree()}async loadOrgTree(){const e=this.modal?.querySelector("#org-tree");if(e)try{const t=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/top`);if(!t.ok)throw new Error("Failed to load organizations");const n=(await t.json()).dn,r=await this.renderNode(n,0);e.innerHTML=r,this.attachTreeEventListeners()}catch(t){console.error("Failed to load organization tree:",t),e.innerHTML='<p style="color: #f44336;">Failed to load organizations</p>'}}async renderNode(e,t){const n=this.expandedNodes.has(e),r=this.selectedOrgDn===e,o=this.currentOrgDn===e,i=20*t,a=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);if(!a.ok)throw new Error("Failed to load node");const s=await a.json();let d=e;s.ou?d=Array.isArray(s.ou)?s.ou[0]:s.ou:s.cn&&(d=Array.isArray(s.cn)?s.cn[0]:s.cn);let l=`\n <div class="${`tree-node ${r?"selected":""} ${o?"current-org":""}`}" style="${`padding-left: ${i}px; padding: 8px 8px 8px ${i}px; cursor: ${o?"not-allowed":"pointer"}; display: flex; align-items: center; gap: 4px; ${o?"opacity: 0.5; background: #f5f5f5;":r?"background: #e3f2fd;":""}`}" data-dn="${this.escapeHtml(e)}" data-is-current="${o}">\n <span class="material-icons tree-node-toggle" data-dn="${this.escapeHtml(e)}" style="font-size: 18px; cursor: pointer;">\n ${n?"expand_more":"chevron_right"}\n </span>\n <span class="material-icons" style="font-size: 18px;">business</span>\n <span class="tree-node-label" data-dn="${this.escapeHtml(e)}">${this.escapeHtml(d)}</span>\n ${o?'<span style="font-size: 12px; color: #666; margin-left: 8px;">(current)</span>':""}\n </div>\n `;if(n)try{const n=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}/subnodes`);if(!n.ok)throw new Error("Failed to load subnodes");const r=(await n.json()).filter(e=>{const t=Array.isArray(e.objectClass)?e.objectClass:e.objectClass?[e.objectClass]:[];return t.includes("organizationalUnit")||t.includes("organization")});for(const e of r)l+=await this.renderNode(e.dn,t+1)}catch(t){console.error("Failed to load subnodes for",e,t)}return l}attachTreeEventListeners(){const e=this.modal?.querySelector("#org-tree");e&&(e.querySelectorAll(".tree-node-toggle").forEach(e=>{e.addEventListener("click",async t=>{t.stopPropagation();const n=e.getAttribute("data-dn");n&&(this.expandedNodes.has(n)?this.expandedNodes.delete(n):this.expandedNodes.add(n),await this.loadOrgTree())})}),e.querySelectorAll(".tree-node").forEach(t=>{t.addEventListener("click",()=>{if("true"===t.getAttribute("data-is-current"))return;const n=t.getAttribute("data-dn");if(!n)return;this.selectedOrgDn=n,e.querySelectorAll(".tree-node").forEach(e=>{e.classList.remove("selected"),e.style.background=""}),t.classList.add("selected"),t.style.background="#e3f2fd";const r=this.modal?.querySelector("#confirm-move-btn");r&&(r.disabled=!1,r.style.opacity="1",r.style.cursor="pointer")})}))}async handleConfirm(){if(this.selectedOrgDn)try{await this.onMove(this.selectedOrgDn),this.close()}catch(e){console.error("Failed to move group:",e)}}close(){this.modal&&(document.body.removeChild(this.modal),this.modal=null)}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}const o=e=>(Array.isArray(e)?e:[e]).filter(e=>!(e=>null==e||""===e)(e)),i=e=>o(e).map(String);class a{constructor(e,t,n){this.group=null,this.schema=null,this.saveCallback=null,this.container=e,this.api=t,this.groupDn=n}async init(){try{await this.loadGroup(),await this.loadSchema(),this.render(),this.attachEventListeners()}catch(e){throw console.error("Failed to init GroupPropertyEditor:",e),e}}async loadGroup(){console.warn("[GroupPropertyEditor] Loading group:",this.groupDn),this.group=await this.api.getGroup(this.groupDn),console.warn("[GroupPropertyEditor] Group loaded:",this.group)}async loadSchema(){console.warn("[GroupPropertyEditor] Loading schema...");const e=await this.api.getConfig();console.warn("[GroupPropertyEditor] Config loaded:",e);const t=e.features?.ldapGroups;if(console.warn("[GroupPropertyEditor] Groups config:",t),t?.schemaUrl){const e=await fetch(t.schemaUrl);this.schema=await e.json(),console.warn("[GroupPropertyEditor] Schema loaded from URL:",this.schema)}else if(t?.schema)this.schema=t.schema,console.warn("[GroupPropertyEditor] Schema loaded from config:",this.schema);else{const t=e.features?.ldapFlatGeneric?.flatResources?.find(e=>"groups"===e.pluralName||"groups"===e.name);if(console.warn("[GroupPropertyEditor] Groups resource (flatResources):",t),t?.schemaUrl){const e=await fetch(t.schemaUrl);this.schema=await e.json(),console.warn("[GroupPropertyEditor] Schema loaded from URL (flatResources):",this.schema)}else t?.schema?(this.schema=t.schema,console.warn("[GroupPropertyEditor] Schema loaded from config (flatResources):",this.schema)):(console.warn("[GroupPropertyEditor] No schema configured, creating default schema from group attributes"),this.schema=this.createDefaultSchema(),console.warn("[GroupPropertyEditor] Default schema created:",this.schema))}}createDefaultSchema(){if(!this.group)return{entity:{objectClass:[]},attributes:{}};const e={};for(const[t,n]of Object.entries(this.group)){if("dn"===t||"*"===t||"objectClass"===t)continue;const r=Array.isArray(n);e[t]={type:r?"array":"string",required:!1,fixed:"dn"===t}}return{entity:{objectClass:Array.isArray(this.group.objectClass)?this.group.objectClass:[this.group.objectClass]},attributes:e}}onSave(e){this.saveCallback=e}render(){this.group&&(this.container.innerHTML=`\n <div class="group-property-editor">\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">group</span>\n Edit Group\n </h3>\n <form id="group-edit-form">\n ${this.renderFields()}\n <div class="form-actions" style="margin-top: 24px; padding-top: 24px; border-top: 1px solid #e0e0e0; display: flex; gap: 12px; justify-content: space-between;">\n <button type="button" id="move-group-btn" class="btn btn-secondary" style="background: #757575; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">drive_file_move</span>\n Move\n </button>\n <div style="display: flex; gap: 12px;">\n <button type="button" id="delete-group-btn" class="btn btn-danger" style="background: #d32f2f; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">delete</span>\n Delete Group\n </button>\n <button type="submit" class="btn btn-primary" style="background: var(--primary-color, #6200ee); color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">save</span>\n Save Changes\n </button>\n </div>\n </div>\n </form>\n </div>\n `)}renderFields(){if(!this.group||!this.schema)return"<div>Loading...</div>";let e="";const t=[],n=[],r=[];for(const[e,o]of Object.entries(this.schema.attributes))o.fixed||"objectClass"===e||("member"===e||"owner"===e?n.push([e,o]):e.includes("mail")||e.includes("Mail")?r.push([e,o]):t.push([e,o]));if(t.length>0){e+='<div class="field-group" style="margin-bottom: 20px; padding: 16px; background: #f9f9f9; border-radius: 4px;">',e+='<div class="field-group-title" style="font-weight: 500; color: var(--primary-color, #6200ee); margin-bottom: 12px; font-size: 14px; text-transform: uppercase;">Basic Information</div>';for(const[n,r]of t)e+=this.renderField(n,r);e+="</div>"}if(r.length>0){e+='<div class="field-group" style="margin-bottom: 20px; padding: 16px; background: #f9f9f9; border-radius: 4px;">',e+='<div class="field-group-title" style="font-weight: 500; color: var(--primary-color, #6200ee); margin-bottom: 12px; font-size: 14px; text-transform: uppercase;">Email/Mailbox Settings</div>';for(const[t,n]of r)e+=this.renderField(t,n);e+="</div>"}if(n.length>0){e+='<div class="field-group" style="margin-bottom: 20px; padding: 16px; background: #f9f9f9; border-radius: 4px;">',e+='<div class="field-group-title" style="font-weight: 500; color: var(--primary-color, #6200ee); margin-bottom: 12px; font-size: 14px; text-transform: uppercase;">Members & Owners</div>';for(const[t,r]of n)e+=this.renderField(t,r);e+="</div>"}return e}renderField(e,t){const n=this.group?.[e],r=this.getFieldLabel(e),o=t.required?"required":"";if("array"===t.type){const t=i(n).join("\n");return"member"===e||"owner"===e?`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <div style="display: flex; gap: 8px; margin-bottom: 8px;">\n <input type="text" id="${e}-add-input" placeholder="Search DN or email..." style="flex: 1; padding: 8px; border: 1px solid #ddd; border-radius: 4px;" list="${e}-suggestions" />\n <datalist id="${e}-suggestions"></datalist>\n <button type="button" class="btn-add-${e}" style="padding: 8px 16px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 4px;">\n <span class="material-icons" style="font-size: 16px;">add</span>\n Add\n </button>\n </div>\n <textarea name="${this.escapeHtml(e)}" id="${e}-list" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; min-height: 120px; font-family: 'Roboto', sans-serif;" ${o}>${this.escapeHtml(t)}</textarea>\n <div style="font-size: 12px; color: #666; margin-top: 4px;">\n One DN per line. Type to search for users, or enter DN/email manually. Select a line and press Delete to remove.\n </div>\n </div>\n `:`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <textarea name="${this.escapeHtml(e)}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; min-height: 80px; font-family: 'Roboto', sans-serif;" ${o}>${this.escapeHtml(t)}</textarea>\n <div style="font-size: 12px; color: #666; margin-top: 4px;">Enter one value per line</div>\n </div>\n `}if("number"===t.type||"integer"===t.type)return`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <input type="number" name="${this.escapeHtml(e)}" value="${n||""}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px;" ${o} />\n </div>\n `;const a=e.toLowerCase().includes("mail")?"email":"text";return`\n <div class="form-group" style="margin-bottom: 16px;">\n <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(r)}</label>\n <input type="${a}" name="${this.escapeHtml(e)}" value="${this.escapeHtml(String(n||""))}" style="width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px;" ${o} />\n </div>\n `}getFieldLabel(e){return{cn:"Group Name",description:"Description",member:"Members",owner:"Owners",mail:"Email Address",twakeMailboxType:"Mailbox Type"}[e]||e.replace(/([A-Z])/g," $1").replace(/_/g," ").replace(/^./,e=>e.toUpperCase())}attachEventListeners(){const e=document.getElementById("group-edit-form");e&&e.addEventListener("submit",e=>this.handleSubmit(e));const t=document.getElementById("delete-group-btn");t&&t.addEventListener("click",()=>this.handleDelete());const n=document.getElementById("move-group-btn");n&&n.addEventListener("click",()=>this.handleMove());const r=this.container.querySelector(".btn-add-member");r&&r.addEventListener("click",()=>this.handleAddMember("member"));const o=this.container.querySelector(".btn-add-owner");o&&o.addEventListener("click",()=>this.handleAddMember("owner")),["member","owner"].forEach(e=>{const t=document.getElementById(`${e}-list`);t&&t.addEventListener("keydown",e=>{"Delete"===e.key&&this.handleDeleteMember(t,e)});const n=document.getElementById(`${e}-add-input`);if(n){let t;n.addEventListener("input",()=>{clearTimeout(t),t=window.setTimeout(()=>{this.searchUsers(n.value,e)},300)})}})}async searchUsers(e,t){if(e&&!(e.length<2))try{const n=await fetch(`${this.api.baseUrl}/api/v1/ldap/users?match=${encodeURIComponent(e)}&attribute=cn,uid,mail&attributes=cn,uid,mail&limit=10`);if(!n.ok)return;const r=Object.values(await n.json()),o=document.getElementById(`${t}-suggestions`);if(!o)return;o.innerHTML=r.slice(0,10).map(e=>{const t=i(e.cn)[0]||i(e.uid)[0]||i(e.mail)[0]||e.dn;return`<option value="${this.escapeHtml(e.dn)}">${this.escapeHtml(t)}</option>`}).join("")}catch(e){console.error("Failed to search users:",e)}}async handleAddMember(e){const t=document.getElementById(`${e}-add-input`),n=document.getElementById(`${e}-list`);if(!t||!n)return;const r=t.value.trim();if(!r)return void alert("Please enter a DN or email address");const o=n.value.split("\n").map(e=>e.trim()).filter(e=>e);o.includes(r)?alert(`This ${e} already exists`):(o.push(r),n.value=o.join("\n"),t.value="",t.focus())}handleDeleteMember(e,t){const n=e.selectionStart,r=e.selectionEnd,o=e.value.split("\n");let i=0,a=0,s=0;for(let e=0;e<o.length;e++){const t=o[e].length+1;if(i<=n&&n<i+t&&(a=e),i<=r&&r<=i+t){s=e;break}i+=t}t.preventDefault();const d=o.filter((e,t)=>t<a||t>s);e.value=d.join("\n")}async handleSubmit(e){e.preventDefault();const t=e.target,n=new FormData(t),r={};n.forEach((e,t)=>{"array"===this.schema?.attributes[t]?.type?r[t]=e.split("\n").map(e=>e.trim()).filter(e=>e):"number"===this.schema?.attributes[t]?.type||"integer"===this.schema?.attributes[t]?.type?r[t]=Number(e):r[t]=e});const a=function(e,t){const n={};for(const[r,i]of Object.entries(t)){if("dn"===r)continue;const t=o(i),a=t.map(String).sort(),s=o(e?.[r]).map(String).sort();a.length===s.length&&a.every((e,t)=>e===s[t])||(n[r]=Array.isArray(i)?t:t.length?i:[])}return n}(this.group,r),s="member"in a,d=function(e,t){const n=i(e),r=i(t);return{added:r.filter(e=>!n.includes(e)),removed:n.filter(e=>!r.includes(e))}}(this.group?.member,a.member);delete a.member;try{if(a.cn&&this.group?.cn){const e=Array.isArray(this.group.cn)?this.group.cn[0]:this.group.cn,t=a.cn;if(e!==t){delete a.cn,await this.api.renameGroup(this.groupDn,t);const n=this.groupDn.replace(new RegExp(`^cn=${e},`),`cn=${t},`);this.groupDn=n,Object.keys(a).length>0&&await this.api.updateGroup(this.groupDn,a)}else await this.api.updateGroup(this.groupDn,a)}else Object.keys(a).length>0&&await this.api.updateGroup(this.groupDn,a);if(s){d.added.length&&await this.api.addMembers(this.groupDn,d.added);for(const e of d.removed)await this.api.removeMember(this.groupDn,e)}alert("Group updated successfully!"),this.saveCallback&&this.saveCallback()}catch(e){console.error("Failed to update group:",e),alert(`Failed to update group: ${e.message}`)}}async handleMove(){if(!this.group)return;const e=this.group.twakeDepartmentLink;if(!e)return void alert("Cannot move group: no organization link attribute found. This group may not support move operation.");const t=this.groupDn.match(/^cn=([^,]+)/),n=t?t[1]:this.groupDn,o=new r(this.api,e,async e=>{try{await this.api.moveGroup(n,e),alert("Group moved successfully!"),await this.loadGroup(),this.render(),this.attachEventListeners(),this.saveCallback&&this.saveCallback()}catch(e){console.error("Failed to move group:",e),alert(`Failed to move group: ${e.message}`)}});await o.show()}async handleDelete(){if(confirm(`Are you sure you want to delete this group?\n\n${this.groupDn}\n\nThis action cannot be undone.`))try{await this.api.deleteEntry(this.groupDn),alert("Group deleted successfully!"),this.container.innerHTML='\n <div class="empty-state">\n <span class="material-icons">group</span>\n <p>Group deleted. Select another group to edit.</p>\n </div>\n '}catch(e){console.error("Failed to delete group:",e),alert(`Failed to delete group: ${e.message}`)}}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}class s{constructor(e,t,n,r){this.modal=null,this.api=e,this.config=t,this.orgDn=n,this.onCreated=r}async show(){this.modal=document.createElement("div"),this.modal.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n ";const e=await this.getOrgPath(this.orgDn),t=document.createElement("div");t.style.cssText="\n background: white;\n border-radius: 8px;\n padding: 24px;\n max-width: 500px;\n width: 90%;\n max-height: 80vh;\n overflow-y: auto;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n ",t.innerHTML=`\n <h3 style="margin: 0 0 16px 0; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">group_add</span>\n Create New Group\n </h3>\n <form id="create-group-form" style="display: flex; flex-direction: column; gap: 16px;">\n <div>\n <label for="group-cn" style="display: block; margin-bottom: 4px; font-weight: 500;">Group Name (cn) *</label>\n <input type="text" id="group-cn" required pattern="[a-zA-Z][a-zA-Z0-9\\-]{0,254}"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"\n placeholder="e.g., developers" />\n <small style="color: #666; font-size: 12px;">Must start with a letter, contain only letters, numbers, and hyphens</small>\n </div>\n\n <div>\n <label for="group-mail" style="display: block; margin-bottom: 4px; font-weight: 500;">Email Address</label>\n <input type="email" id="group-mail"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px;"\n placeholder="e.g., developers@example.com" />\n </div>\n\n <div>\n <label for="group-description" style="display: block; margin-bottom: 4px; font-weight: 500;">Description</label>\n <textarea id="group-description" rows="3"\n style="width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; resize: vertical;"\n placeholder="Group description..."></textarea>\n </div>\n\n <div style="padding: 12px; background: #f5f5f5; border-radius: 4px;">\n <p style="margin: 0 0 8px 0; font-size: 14px; color: #666;">Organization:</p>\n <p style="margin: 0; font-weight: 500;">${this.escapeHtml(e||this.orgDn)}</p>\n </div>\n\n <div id="error-message" style="display: none; padding: 12px; background: #ffebee; border-radius: 4px; color: #c62828;"></div>\n\n <div style="display: flex; gap: 12px; justify-content: flex-end;">\n <button type="button" id="cancel-create-btn" style="padding: 10px 20px; border: 1px solid #ddd; background: white; border-radius: 4px; cursor: pointer;">Cancel</button>\n <button type="submit" style="padding: 10px 20px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">group_add</span>\n Create Group\n </button>\n </div>\n </form>\n `,this.modal.appendChild(t),document.body.appendChild(this.modal);const n=this.modal.querySelector("#cancel-create-btn");n&&n.addEventListener("click",()=>this.close());const r=this.modal.querySelector("#create-group-form");r&&r.addEventListener("submit",e=>this.handleSubmit(e)),this.modal.addEventListener("click",e=>{e.target===this.modal&&this.close()})}async getOrgPath(e){try{const t=await fetch(`${this.api.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(e)}`);if(!t.ok)return null;const n=await t.json(),r=this.config.features?.ldapOrganizations?.pathAttribute;return r&&n[r]?Array.isArray(n[r])?n[r][0]:n[r]:e}catch(e){return console.error("Failed to load organization path:",e),null}}async handleSubmit(e){e.preventDefault();const t=this.modal?.querySelector("#group-cn"),n=this.modal?.querySelector("#group-mail"),r=this.modal?.querySelector("#group-description"),o=this.modal?.querySelector("#error-message");if(!t)return;const i=t.value.trim();if(i)try{const e={cn:i};n?.value.trim()&&(e.mail=n.value.trim()),r?.value.trim()&&(e.description=r.value.trim());const t=this.config.features?.ldapOrganizations?.linkAttribute;t&&(e[t]=this.orgDn);const o=await fetch(`${this.api.baseUrl}/api/v1/ldap/groups`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!o.ok){const e=await o.text();throw new Error(e||"Failed to create group")}await this.onCreated(),this.close()}catch(e){console.error("Failed to create group:",e),this.showError(o,e.message)}else this.showError(o,"Group name is required")}showError(e,t){e&&(e.textContent=`Error: ${t}`,e.style.display="block")}close(){this.modal&&(document.body.removeChild(this.modal),this.modal=null)}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}}e.LdapGroupEditor=class{constructor(e){this.container=null,this.groupTree=null,this.groupEditor=null,this.currentGroupDn=null,this.currentOrgDn=null,this.config=null,this.options={apiBaseUrl:"undefined"!=typeof window?window.location.origin:"",...e},this.api=new t(this.options.apiBaseUrl||"")}async init(){if(this.container=document.getElementById(this.options.containerId),!this.container)throw new Error(`Container #${this.options.containerId} not found`);this.config=await this.api.getConfig(),this.render(),await this.initComponents()}render(){this.container&&(this.container.innerHTML='\n <div class="ldap-group-editor">\n <div class="editor-layout">\n <div id="group-tree-container" class="demo-panel"></div>\n <div id="group-editor-container" class="demo-panel">\n <div class="empty-state">\n <span class="material-icons">group</span>\n <p>Select a group from the tree to edit its properties</p>\n </div>\n </div>\n </div>\n </div>\n ')}async initComponents(){const e=document.getElementById("group-tree-container");if(e){this.groupTree=new n(e,this.options.apiBaseUrl||window.location.origin,e=>this.onOrgSelected(e));try{await this.groupTree.init()}catch(e){this.handleError(e)}}}async onOrgSelected(e){const t=document.getElementById("group-editor-container");if(t){this.currentOrgDn=e;try{const n=await this.api.getGroups(e);t.innerHTML=`\n <div style="padding: 20px;">\n <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">\n <h3 style="margin: 0;">Groups</h3>\n <button type="button" id="create-group-btn" style="padding: 8px 16px; background: var(--primary-color, #6200ee); color: white; border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons" style="font-size: 18px;">group_add</span>\n Create\n </button>\n </div>\n ${0===n.length?'\n <div class="empty-state">\n <span class="material-icons">group</span>\n <p>No groups in this organization</p>\n </div>\n ':`\n <div style="display: flex; flex-direction: column; gap: 8px;">\n ${n.map(e=>`\n <div class="group-item" data-dn="${this.escapeHtml(e.dn)}" style="padding: 12px; border: 1px solid #ddd; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 8px;">\n <span class="material-icons">group</span>\n <span>${this.escapeHtml(e.cn||e.dn)}</span>\n </div>\n `).join("")}\n </div>\n `}\n </div>\n `,t.querySelectorAll(".group-item").forEach(e=>{e.addEventListener("click",()=>{const t=e.dataset.dn;this.onGroupSelected(t)})});const r=t.querySelector("#create-group-btn");r&&r.addEventListener("click",()=>this.handleCreateGroup())}catch(e){this.handleError(e),t.innerHTML='\n <div class="empty-state">\n <span class="material-icons">error</span>\n <p>Failed to load groups</p>\n </div>\n '}}}async onGroupSelected(e){const t=document.getElementById("group-editor-container");if(t){this.currentGroupDn=e;try{this.groupEditor=new a(t,this.api,e),await this.groupEditor.init(),this.options.onGroupSaved&&this.groupEditor.onSave(()=>{this.options.onGroupSaved?.(e)})}catch(e){this.handleError(e),t.innerHTML='\n <div class="empty-state">\n <span class="material-icons">error</span>\n <p>Failed to load group properties</p>\n </div>\n '}}}async handleCreateGroup(){if(!this.currentOrgDn||!this.config)return;const e=new s(this.api,this.config,this.currentOrgDn,async()=>{await this.onOrgSelected(this.currentOrgDn),this.options.onGroupSaved&&this.options.onGroupSaved("")});await e.show()}escapeHtml(e){if(null==e)return"";const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return String(e).replace(/[&<>"'/]/g,e=>t[e])}handleError(e){console.error("LdapGroupEditor error:",e),this.options.onError&&this.options.onError(e)}getApi(){return this.api}getConfig(){return this.config}getCurrentOrgDn(){return this.currentOrgDn}getCurrentUserDn(){return this.currentGroupDn}async createUser(e){return this.api.createEntry(e.dn,e)}async deleteUser(e){return this.api.deleteEntry(e)}}});
2
2
  //# sourceMappingURL=ldap-group-editor.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ldap-group-editor.min.js","sources":["../../../../src/browser/ldap-group-editor/api/GroupApiClient.ts","../../../../src/browser/ldap-group-editor/components/GroupTree.ts","../../../../src/browser/ldap-group-editor/components/MoveGroupModal.ts","../../../../src/browser/ldap-group-editor/components/GroupPropertyEditor.ts","../../../../src/browser/ldap-group-editor/components/CreateGroupModal.ts","../../../../src/browser/ldap-group-editor/LdapGroupEditor.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["GroupApiClient","constructor","baseUrl","this","getConfig","response","fetch","ok","Error","statusText","json","getOrganizations","getGroups","orgDn","encodeURIComponent","filter","node","classes","Array","isArray","objectClass","includes","getGroup","dn","updateGroup","data","method","headers","body","JSON","stringify","error","text","createEntry","deleteEntry","moveGroup","cn","targetOrgDn","renameGroup","newCn","getPointerOptions","branch","map","entry","label","ou","GroupTree","container","apiBaseUrl","onOrgSelect","expandedNodes","Set","selectedDn","rootDn","init","innerHTML","topOrg","renderTree","console","treeEl","querySelector","html","renderNode","attachEventListeners","level","isExpanded","has","isSelected","indent","displayName","escapeHtml","subnodesResponse","orgs","n","subnode","querySelectorAll","forEach","el","addEventListener","async","e","stopPropagation","getAttribute","delete","add","String","replace","m","MoveGroupModal","api","currentOrgDn","onMove","modal","selectedOrgDn","show","document","createElement","style","cssText","modalContent","appendChild","cancelBtn","close","confirmBtn","handleConfirm","target","loadOrgTree","treeContainer","attachTreeEventListeners","isCurrent","classList","remove","background","disabled","opacity","cursor","removeChild","GroupPropertyEditor","groupDn","group","schema","saveCallback","loadGroup","loadSchema","render","warn","config","groupsConfig","features","ldapGroups","schemaUrl","groupsResource","ldapFlatGeneric","flatResources","find","r","pluralName","name","createDefaultSchema","entity","attributes","key","value","Object","entries","type","required","fixed","onSave","callback","renderFields","basicFields","memberFields","mailFields","fieldName","attribute","push","length","renderField","getFieldLabel","arrayValue","join","toLowerCase","description","member","owner","mail","twakeMailboxType","str","toUpperCase","form","getElementById","handleSubmit","deleteBtn","handleDelete","moveBtn","handleMove","addMemberBtn","handleAddMember","addOwnerBtn","textarea","handleDeleteMember","input","searchTimeout","clearTimeout","window","setTimeout","searchUsers","query","results","datalist","slice","user","uid","valueToAdd","trim","alert","currentValues","split","v","focus","start","selectionStart","end","selectionEnd","lines","currentPos","startLine","endLine","i","lineLength","preventDefault","newLines","_","formData","FormData","updates","Number","oldCn","newDn","RegExp","keys","message","twakeDepartmentLink","cnMatch","match","confirm","CreateGroupModal","onCreated","orgPath","getOrgPath","org","pathAttr","organizations","pathAttribute","cnInput","mailInput","descInput","errorDiv","groupData","linkAttr","linkAttribute","showError","textContent","display","options","groupTree","groupEditor","currentGroupDn","location","origin","containerId","initComponents","onOrgSelected","handleError","editorContainer","groups","item","dataset","onGroupSelected","createBtn","handleCreateGroup","onGroupSaved","onError","getApi","getCurrentOrgDn","getCurrentUserDn","createUser","deleteUser"],"mappings":"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"}
1
+ {"version":3,"file":"ldap-group-editor.min.js","sources":["../../../../src/browser/ldap-group-editor/api/GroupApiClient.ts","../../../../src/browser/ldap-group-editor/components/GroupTree.ts","../../../../src/browser/ldap-group-editor/components/MoveGroupModal.ts","../../../../src/browser/shared/utils/form.ts","../../../../src/browser/ldap-group-editor/components/GroupPropertyEditor.ts","../../../../src/browser/ldap-group-editor/components/CreateGroupModal.ts","../../../../src/browser/ldap-group-editor/LdapGroupEditor.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["GroupApiClient","constructor","baseUrl","this","getConfig","response","fetch","ok","Error","statusText","json","getOrganizations","getGroups","orgDn","encodeURIComponent","filter","node","classes","Array","isArray","objectClass","includes","getGroup","dn","updateGroup","replace","method","headers","body","JSON","stringify","error","text","createEntry","data","deleteEntry","addMembers","member","removeMember","moveGroup","cn","targetOrgDn","renameGroup","newCn","GroupTree","container","apiBaseUrl","onOrgSelect","expandedNodes","Set","selectedDn","rootDn","init","innerHTML","topOrg","renderTree","console","treeEl","querySelector","html","renderNode","attachEventListeners","level","isExpanded","has","isSelected","indent","displayName","ou","escapeHtml","subnodesResponse","orgs","n","subnode","querySelectorAll","forEach","el","addEventListener","async","e","stopPropagation","getAttribute","delete","add","map","String","m","MoveGroupModal","api","currentOrgDn","onMove","modal","selectedOrgDn","show","document","createElement","style","cssText","modalContent","appendChild","cancelBtn","close","confirmBtn","handleConfirm","target","loadOrgTree","treeContainer","attachTreeEventListeners","isCurrent","classList","remove","background","disabled","opacity","cursor","removeChild","valueList","value","v","isEmpty","listValues","GroupPropertyEditor","groupDn","group","schema","saveCallback","loadGroup","loadSchema","render","warn","config","groupsConfig","features","ldapGroups","schemaUrl","groupsResource","ldapFlatGeneric","flatResources","find","r","pluralName","name","createDefaultSchema","entity","attributes","key","Object","entries","type","required","fixed","onSave","callback","renderFields","basicFields","memberFields","mailFields","fieldName","attribute","push","length","renderField","label","getFieldLabel","arrayValue","join","toLowerCase","description","owner","mail","twakeMailboxType","str","toUpperCase","form","getElementById","handleSubmit","deleteBtn","handleDelete","moveBtn","handleMove","addMemberBtn","handleAddMember","addOwnerBtn","textarea","handleDeleteMember","input","searchTimeout","clearTimeout","window","setTimeout","searchUsers","query","results","values","datalist","slice","user","uid","valueToAdd","trim","alert","currentValues","split","focus","start","selectionStart","end","selectionEnd","lines","currentPos","startLine","endLine","i","lineLength","preventDefault","newLines","_","formData","FormData","edited","Number","updates","original","after","a","sort","b","every","changedAttributes","membersChanged","members","before","was","is","added","removed","listChanges","oldCn","newDn","RegExp","keys","message","twakeDepartmentLink","cnMatch","match","confirm","CreateGroupModal","onCreated","orgPath","getOrgPath","org","pathAttr","ldapOrganizations","pathAttribute","cnInput","mailInput","descInput","errorDiv","groupData","linkAttr","linkAttribute","showError","textContent","display","options","groupTree","groupEditor","currentGroupDn","location","origin","containerId","initComponents","onOrgSelected","handleError","editorContainer","groups","item","dataset","onGroupSelected","createBtn","handleCreateGroup","onGroupSaved","onError","getApi","getCurrentOrgDn","getCurrentUserDn","createUser","deleteUser"],"mappings":"4PAMaA,EAGX,WAAAC,CAAYC,GACVC,KAAKD,QAAUA,CACjB,CAEA,eAAME,GACJ,MAAMC,QAAiBC,MAAM,GAAGH,KAAKD,yBACrC,IAAKG,EAASE,GACZ,MAAM,IAAIC,MAAM,0BAA0BH,EAASI,cAErD,OAAOJ,EAASK,MAClB,CAEA,sBAAMC,GACJ,MAAMN,QAAiBC,MACrB,GAAGH,KAAKD,yCAEV,IAAKG,EAASE,GACZ,MAAM,IAAIC,MAAM,iCAAiCH,EAASI,cAE5D,OAAOJ,EAASK,MAClB,CAEA,eAAME,CAAUC,GACd,MAAMR,QAAiBC,MACrB,GAAGH,KAAKD,qCAAqCY,mBAAmBD,wCAElE,IAAKR,EAASE,GACZ,MAAM,IAAIC,MAAM,0BAA0BH,EAASI,cAIrD,aAFuBJ,EAASK,QAEhBK,OAAQC,IACtB,MAAMC,EAAUC,MAAMC,QAAQH,EAAKI,aAC/BJ,EAAKI,YACL,CAACJ,EAAKI,aACV,OAAOH,EAAQI,SAAS,iBAAmBJ,EAAQI,SAAS,UAEhE,CAEA,cAAMC,CAASC,GACb,MAAMlB,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmBS,MAE3D,IAAKlB,EAASE,GACZ,MAAM,IAAIC,MAAM,yBAAyBH,EAASI,cAEpD,OAAOJ,EAASK,MAClB,CAQA,iBAAMc,CACJD,EACAE,GAEA,MAAMpB,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmBS,KACzD,CACEG,OAAQ,MACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMC,KAAKC,UAAU,CAAEL,cAG3B,IAAKpB,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,2BAA2BuB,IAC7C,CACF,CAEA,iBAAME,CAAYV,EAAYW,GAE5B,MAAM7B,QAAiBC,MAAM,GAAGH,KAAKD,6BAA8B,CACjEwB,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMC,KAAKC,UAAUI,KAEvB,IAAK7B,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,2BAA2BuB,IAC7C,CACF,CAEA,iBAAMI,CAAYZ,GAEhB,MAAMlB,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmBS,KACzD,CACEG,OAAQ,WAGZ,IAAKrB,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,2BAA2BuB,IAC7C,CACF,CAGA,gBAAMK,CAAWb,EAAYc,GAC3B,MAAMhC,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmBS,aACzD,CACEG,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMC,KAAKC,UAAU,CAAEO,aAG3B,IAAKhC,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,0BAA0BuB,IAC5C,CACF,CAEA,kBAAMO,CAAaf,EAAYc,GAC7B,MAAMhC,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmBS,cAAeT,mBAAmBuB,KAC3F,CAAEX,OAAQ,WAEZ,IAAKrB,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,4BAA4BuB,IAC9C,CACF,CAEA,eAAMQ,CAAUC,EAAYC,GAC1B,MAAMpC,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmB0B,UACzD,CACEd,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMC,KAAKC,UAAU,CAAEW,kBAG3B,IAAKpC,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,yBAAyBuB,IAC3C,CACF,CAEA,iBAAMW,CAAYF,EAAYG,GAC5B,MAAMtC,QAAiBC,MACrB,GAAGH,KAAKD,8BAA8BY,mBAAmB0B,YACzD,CACEd,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMC,KAAKC,UAAU,CAAEa,YAG3B,IAAKtC,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAM,2BAA2BuB,IAC7C,CACF,QChKWa,EAQX,WAAA3C,CACE4C,EACAC,EACAC,GAPM5C,KAAA6C,cAAgB,IAAIC,IACpB9C,KAAA+C,WAA4B,KAC5B/C,KAAAgD,OAAwB,KAO9BhD,KAAK0C,UAAYA,EACjB1C,KAAK2C,WAAaA,EAClB3C,KAAK4C,YAAcA,CACrB,CAEA,UAAMK,GACJjD,KAAK0C,UAAUQ,UAAY,sWAY3B,IACE,MAAMhD,QAAiBC,MACrB,GAAGH,KAAK2C,4CAEV,IAAKzC,EAASE,GAAI,MAAM,IAAIC,MAAM,gCAElC,MAAM8C,QAAejD,EAASK,OAC9BP,KAAKgD,OAASG,EAAO/B,SACfpB,KAAKoD,YACb,CAAE,MAAOxB,GACPyB,QAAQzB,MAAM,uBAAwBA,GACtC,MAAM0B,EAAStD,KAAK0C,UAAUa,cAAc,iBACxCD,IACFA,EAAOJ,UACL,8DAEN,CACF,CAEQ,gBAAME,GACZ,MAAME,EAAStD,KAAK0C,UAAUa,cAAc,iBAC5C,GAAKD,GAAWtD,KAAKgD,OAErB,IACE,MAAMQ,QAAaxD,KAAKyD,WAAWzD,KAAKgD,OAAQ,GAChDM,EAAOJ,UAAYM,EACnBxD,KAAK0D,sBACP,CAAE,MAAO9B,GACPyB,QAAQzB,MAAM,yBAA0BA,GACxC0B,EAAOJ,UAAY,qDACrB,CACF,CAEQ,gBAAMO,CAAWrC,EAAYuC,GACnC,MAAMC,EAAa5D,KAAK6C,cAAcgB,IAAIzC,GACpC0C,EAAa9D,KAAK+C,aAAe3B,EACjC2C,EAAiB,GAARJ,EAGTzD,QAAiBC,MACrB,GAAGH,KAAK2C,wCAAwChC,mBAAmBS,MAErE,IAAKlB,EAASE,GAAI,MAAM,IAAIC,MAAM,uBAClC,MAAMQ,QAAaX,EAASK,OAG5B,IAAIyD,EAAc5C,EACdP,EAAKoD,GACPD,EAAcjD,MAAMC,QAAQH,EAAKoD,IAAMpD,EAAKoD,GAAG,GAAKpD,EAAKoD,GAChDpD,EAAKwB,KACd2B,EAAcjD,MAAMC,QAAQH,EAAKwB,IAAMxB,EAAKwB,GAAG,GAAKxB,EAAKwB,IAG3D,IAAImB,EAAO,iCACeM,EAAa,SAAW,4BAA4BC,6BAAkCA,yIACnD/D,KAAKkE,WAAW9C,6DACrEwC,EAAa,cAAgB,mKAGQ5D,KAAKkE,WAAW9C,OAAQpB,KAAKkE,WAAWF,gCAIrF,GAAIJ,EACF,IACE,MAAMO,QAAyBhE,MAC7B,GAAGH,KAAK2C,wCAAwChC,mBAAmBS,eAErE,IAAK+C,EAAiB/D,GAAI,MAAM,IAAIC,MAAM,2BAE1C,MACM+D,SADiBD,EAAiB5D,QAClBK,OAAQyD,IAC5B,MAAMvD,EAAUC,MAAMC,QAAQqD,EAAEpD,aAC5BoD,EAAEpD,YACFoD,EAAEpD,YACA,CAACoD,EAAEpD,aACH,GACN,OACEH,EAAQI,SAAS,uBACjBJ,EAAQI,SAAS,kBAIrB,IAAK,MAAMoD,KAAWF,EACpBZ,SAAcxD,KAAKyD,WAAWa,EAAQlD,GAAIuC,EAAQ,EAEtD,CAAE,MAAO/B,GACPyB,QAAQzB,MAAM,8BAA+BR,EAAIQ,EACnD,CAGF,OAAO4B,CACT,CAEQ,oBAAAE,GAEN1D,KAAK0C,UAAU6B,iBAAiB,qBAAqBC,QAAQC,IAC3DA,EAAGC,iBAAiB,QAASC,MAAMC,IACjCA,EAAEC,kBACF,MAAMzD,EAAKqD,EAAGK,aAAa,WACtB1D,IAEDpB,KAAK6C,cAAcgB,IAAIzC,GACzBpB,KAAK6C,cAAckC,OAAO3D,GAE1BpB,KAAK6C,cAAcmC,IAAI5D,SAEnBpB,KAAKoD,kBAKfpD,KAAK0C,UAAU6B,iBAAiB,oBAAoBC,QAAQC,IAC1DA,EAAGC,iBAAiB,QAASE,IAC3BA,EAAEC,kBACF,MAAMzD,EAAKqD,EAAGK,aAAa,WACtB1D,IAELpB,KAAK+C,WAAa3B,EAClBpB,KAAK4C,YAAYxB,GACjBpB,KAAKoD,iBAGX,CAEQ,UAAAc,CAAWrC,GACjB,GAAY,MAARA,EAAc,MAAO,GACzB,MAAMoD,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UAEP,OAAOC,OAAOrD,GAAMP,QAAQ,YAAa6D,GAAKF,EAAIE,GACpD,QCpKWC,EAQX,WAAAtF,CACEuF,EACAC,EACAC,GAPMvF,KAAAwF,MAA4B,KAC5BxF,KAAA6C,cAAgB,IAAIC,IACpB9C,KAAAyF,cAA+B,KAOrCzF,KAAKqF,IAAMA,EACXrF,KAAKsF,aAAeA,EACpBtF,KAAKuF,OAASA,CAChB,CAEA,UAAMG,GAEJ1F,KAAKwF,MAAQG,SAASC,cAAc,OACpC5F,KAAKwF,MAAMK,MAAMC,QAAU,kPAc3B,MAAMC,EAAeJ,SAASC,cAAc,OAC5CG,EAAaF,MAAMC,QAAU,mOAW7BC,EAAa7C,UAAY,uoCAkBzBlD,KAAKwF,MAAMQ,YAAYD,GACvBJ,SAASlE,KAAKuE,YAAYhG,KAAKwF,OAG/B,MAAMS,EAAYjG,KAAKwF,MAAMjC,cAAc,oBACvC0C,GACFA,EAAUvB,iBAAiB,QAAS,IAAM1E,KAAKkG,SAGjD,MAAMC,EAAanG,KAAKwF,MAAMjC,cAAc,qBACxC4C,GACFA,EAAWzB,iBAAiB,QAAS,IAAM1E,KAAKoG,iBAIlDpG,KAAKwF,MAAMd,iBAAiB,QAASE,IAC/BA,EAAEyB,SAAWrG,KAAKwF,OACpBxF,KAAKkG,gBAKHlG,KAAKsG,aACb,CAEQ,iBAAMA,GACZ,MAAMC,EAAgBvG,KAAKwF,OAAOjC,cAAc,aAChD,GAAKgD,EAEL,IAEE,MAAMrG,QAAiBC,MACrB,GAAGH,KAAKqF,IAAa,yCAEvB,IAAKnF,EAASE,GAAI,MAAM,IAAIC,MAAM,gCAElC,MACM2C,SADe9C,EAASK,QACRa,GAGhBoC,QAAaxD,KAAKyD,WAAWT,EAAQ,GAC3CuD,EAAcrD,UAAYM,EAC1BxD,KAAKwG,0BACP,CAAE,MAAO5E,GACPyB,QAAQzB,MAAM,oCAAqCA,GACnD2E,EAAcrD,UAAY,6DAC5B,CACF,CAEQ,gBAAMO,CAAWrC,EAAYuC,GACnC,MAAMC,EAAa5D,KAAK6C,cAAcgB,IAAIzC,GACpC0C,EAAa9D,KAAKyF,gBAAkBrE,EACpCqF,EAAYzG,KAAKsF,eAAiBlE,EAClC2C,EAAiB,GAARJ,EAGTzD,QAAiBC,MACrB,GAAGH,KAAKqF,IAAa,qCAA+B1E,mBAAmBS,MAEzE,IAAKlB,EAASE,GAAI,MAAM,IAAIC,MAAM,uBAClC,MAAMQ,QAAaX,EAASK,OAG5B,IAAIyD,EAAc5C,EACdP,EAAKoD,GACPD,EAAcjD,MAAMC,QAAQH,EAAKoD,IAAMpD,EAAKoD,GAAG,GAAKpD,EAAKoD,GAChDpD,EAAKwB,KACd2B,EAAcjD,MAAMC,QAAQH,EAAKwB,IAAMxB,EAAKwB,GAAG,GAAKxB,EAAKwB,IAM3D,IAAImB,EAAO,uBAHO,aAAaM,EAAa,WAAa,MAAM2C,EAAY,cAAgB,gBACzE,iBAAiB1C,6BAAkCA,gBAAqB0C,EAAY,cAAgB,4DAA4DA,EAAY,qCAAuC3C,EAAa,uBAAyB,kBAG/M9D,KAAKkE,WAAW9C,wBAAyBqF,uEACxCzG,KAAKkE,WAAW9C,6DACrEwC,EAAa,cAAgB,mKAGQ5D,KAAKkE,WAAW9C,OAAQpB,KAAKkE,WAAWF,sBAC/EyC,EAAY,iFAAmF,yBAKrG,GAAI7C,EACF,IACE,MAAMO,QAAyBhE,MAC7B,GAAGH,KAAKqF,IAAa,qCAA+B1E,mBAAmBS,eAEzE,IAAK+C,EAAiB/D,GAAI,MAAM,IAAIC,MAAM,2BAE1C,MACM+D,SADiBD,EAAiB5D,QAClBK,OAAQyD,IAC5B,MAAMvD,EAAUC,MAAMC,QAAQqD,EAAEpD,aAC5BoD,EAAEpD,YACFoD,EAAEpD,YACA,CAACoD,EAAEpD,aACH,GACN,OACEH,EAAQI,SAAS,uBACjBJ,EAAQI,SAAS,kBAIrB,IAAK,MAAMoD,KAAWF,EACpBZ,SAAcxD,KAAKyD,WAAWa,EAAQlD,GAAIuC,EAAQ,EAEtD,CAAE,MAAO/B,GACPyB,QAAQzB,MAAM,8BAA+BR,EAAIQ,EACnD,CAGF,OAAO4B,CACT,CAEQ,wBAAAgD,GACN,MAAMD,EAAgBvG,KAAKwF,OAAOjC,cAAc,aAC3CgD,IAGLA,EAAchC,iBAAiB,qBAAqBC,QAAQC,IAC1DA,EAAGC,iBAAiB,QAASC,MAAMC,IACjCA,EAAEC,kBACF,MAAMzD,EAAKqD,EAAGK,aAAa,WACtB1D,IAEDpB,KAAK6C,cAAcgB,IAAIzC,GACzBpB,KAAK6C,cAAckC,OAAO3D,GAE1BpB,KAAK6C,cAAcmC,IAAI5D,SAEnBpB,KAAKsG,mBAKfC,EAAchC,iBAAiB,cAAcC,QAAQC,IACnDA,EAAGC,iBAAiB,QAAS,KAE3B,GADyD,SAAvCD,EAAGK,aAAa,mBACnB,OAEf,MAAM1D,EAAKqD,EAAGK,aAAa,WAC3B,IAAK1D,EAAI,OAETpB,KAAKyF,cAAgBrE,EAGrBmF,EAAchC,iBAAiB,cAAcC,QAAQ3D,IACnDA,EAAK6F,UAAUC,OAAO,YACrB9F,EAAqBgF,MAAMe,WAAa,KAE3CnC,EAAGiC,UAAU1B,IAAI,YAChBP,EAAmBoB,MAAMe,WAAa,UAGvC,MAAMT,EAAanG,KAAKwF,OAAOjC,cAC7B,qBAEE4C,IACFA,EAAWU,UAAW,EACtBV,EAAWN,MAAMiB,QAAU,IAC3BX,EAAWN,MAAMkB,OAAS,eAIlC,CAEQ,mBAAMX,GACZ,GAAKpG,KAAKyF,cAEV,UACQzF,KAAKuF,OAAOvF,KAAKyF,eACvBzF,KAAKkG,OACP,CAAE,MAAOtE,GACPyB,QAAQzB,MAAM,wBAAyBA,EAEzC,CACF,CAEQ,KAAAsE,GACFlG,KAAKwF,QACPG,SAASlE,KAAKuF,YAAYhH,KAAKwF,OAC/BxF,KAAKwF,MAAQ,KAEjB,CAEQ,UAAAtB,CAAWrC,GACjB,GAAY,MAARA,EAAc,MAAO,GACzB,MAAMoD,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UAEP,OAAOC,OAAOrD,GAAMP,QAAQ,YAAa6D,GAAKF,EAAIE,GACpD,ECIF,MAIM8B,EAAaC,IAChBnG,MAAMC,QAAQkG,GAASA,EAAQ,CAACA,IAAQtG,OAAOuG,IALlC,CAACD,GACfA,SAAmD,KAAVA,EAIaE,CAAQD,IASnDE,EAAcH,GACzBD,EAAUC,GAAOjC,IAAIC,cC/QVoC,EAQX,WAAAxH,CAAY4C,EAAwB2C,EAAqBkC,GAJjDvH,KAAAwH,MAA0B,KAC1BxH,KAAAyH,OAAkC,KAClCzH,KAAA0H,aAAoC,KAG1C1H,KAAK0C,UAAYA,EACjB1C,KAAKqF,IAAMA,EACXrF,KAAKuH,QAAUA,CACjB,CAEA,UAAMtE,GACJ,UACQjD,KAAK2H,kBACL3H,KAAK4H,aACX5H,KAAK6H,SACL7H,KAAK0D,sBACP,CAAE,MAAO9B,GAEP,MADAyB,QAAQzB,MAAM,sCAAuCA,GAC/CA,CACR,CACF,CAEQ,eAAM+F,GACZtE,QAAQyE,KAAK,uCAAwC9H,KAAKuH,SAC1DvH,KAAKwH,YAAcxH,KAAKqF,IAAIlE,SAASnB,KAAKuH,SAC1ClE,QAAQyE,KAAK,sCAAuC9H,KAAKwH,MAC3D,CAEQ,gBAAMI,GACZvE,QAAQyE,KAAK,2CACb,MAAMC,QAAe/H,KAAKqF,IAAIpF,YAC9BoD,QAAQyE,KAAK,uCAAwCC,GAGrD,MAAMC,EAAeD,EAAOE,UAAUC,WAGtC,GAFA7E,QAAQyE,KAAK,uCAAwCE,GAEjDA,GAAcG,UAAW,CAC3B,MAAMjI,QAAiBC,MAAM6H,EAAaG,WAC1CnI,KAAKyH,aAAevH,EAASK,OAC7B8C,QAAQyE,KACN,gDACA9H,KAAKyH,OAET,MAAO,GAAIO,GAAcP,OACvBzH,KAAKyH,OAASO,EAAaP,OAC3BpE,QAAQyE,KACN,mDACA9H,KAAKyH,YAEF,CAEL,MAAMW,EACJL,EAAOE,UAAUI,iBAAiBC,eAAeC,KAC/CC,GAAsB,WAAjBA,EAAEC,YAAsC,WAAXD,EAAEE,MAOxC,GALArF,QAAQyE,KACN,yDACAM,GAGEA,GAAgBD,UAAW,CAC7B,MAAMjI,QAAiBC,MAAMiI,EAAeD,WAC5CnI,KAAKyH,aAAevH,EAASK,OAC7B8C,QAAQyE,KACN,gEACA9H,KAAKyH,OAET,MAAWW,GAAgBX,QACzBzH,KAAKyH,OAASW,EAAeX,OAC7BpE,QAAQyE,KACN,mEACA9H,KAAKyH,UAIPpE,QAAQyE,KACN,6FAEF9H,KAAKyH,OAASzH,KAAK2I,sBACnBtF,QAAQyE,KACN,gDACA9H,KAAKyH,QAGX,CACF,CAEQ,mBAAAkB,GACN,IAAK3I,KAAKwH,MACR,MAAO,CAAEoB,OAAQ,CAAE3H,YAAa,IAAM4H,WAAY,IAGpD,MAAMA,EAA8C,CAAA,EAGpD,IAAK,MAAOC,EAAK5B,KAAU6B,OAAOC,QAAQhJ,KAAKwH,OAAQ,CACrD,GAAY,OAARsB,GAAwB,MAARA,GAAuB,gBAARA,EAAuB,SAE1D,MAAM9H,EAAUD,MAAMC,QAAQkG,GAC9B2B,EAAWC,GAAO,CAChBG,KAAMjI,EAAU,QAAU,SAC1BkI,UAAU,EACVC,MAAe,OAARL,EAEX,CAEA,MAAO,CACLF,OAAQ,CACN3H,YAAaF,MAAMC,QAAQhB,KAAKwH,MAAMvG,aAClCjB,KAAKwH,MAAMvG,YACX,CAACjB,KAAKwH,MAAMvG,cAElB4H,aAEJ,CAEA,MAAAO,CAAOC,GACLrJ,KAAK0H,aAAe2B,CACtB,CAEQ,MAAAxB,GACD7H,KAAKwH,QAEVxH,KAAK0C,UAAUQ,UAAY,iRAOnBlD,KAAKsJ,m7CAoBf,CAEQ,YAAAA,GACN,IAAKtJ,KAAKwH,QAAUxH,KAAKyH,OACvB,MAAO,wBAGT,IAAIjE,EAAO,GAGX,MAAM+F,EAA2C,GAC3CC,EAA4C,GAC5CC,EAA0C,GAEhD,IAAK,MAAOC,EAAWC,KAAcZ,OAAOC,QAC1ChJ,KAAKyH,OAAOoB,YAERc,EAAUR,OAAuB,gBAAdO,IAEL,WAAdA,GAAwC,UAAdA,EAC5BF,EAAaI,KAAK,CAACF,EAAWC,IACrBD,EAAUxI,SAAS,SAAWwI,EAAUxI,SAAS,QAC1DuI,EAAWG,KAAK,CAACF,EAAWC,IAE5BJ,EAAYK,KAAK,CAACF,EAAWC,KAKjC,GAAIJ,EAAYM,OAAS,EAAG,CAC1BrG,GACE,iHACFA,GACE,0LACF,IAAK,MAAOkG,EAAWC,KAAcJ,EACnC/F,GAAQxD,KAAK8J,YAAYJ,EAAWC,GAEtCnG,GAAQ,QACV,CAGA,GAAIiG,EAAWI,OAAS,EAAG,CACzBrG,GACE,iHACFA,GACE,+LACF,IAAK,MAAOkG,EAAWC,KAAcF,EACnCjG,GAAQxD,KAAK8J,YAAYJ,EAAWC,GAEtCnG,GAAQ,QACV,CAGA,GAAIgG,EAAaK,OAAS,EAAG,CAC3BrG,GACE,iHACFA,GACE,yLACF,IAAK,MAAOkG,EAAWC,KAAcH,EACnChG,GAAQxD,KAAK8J,YAAYJ,EAAWC,GAEtCnG,GAAQ,QACV,CAEA,OAAOA,CACT,CAEQ,WAAAsG,CAAYJ,EAAmBC,GACrC,MAAMzC,EAAQlH,KAAKwH,QAAQkC,GACrBK,EAAQ/J,KAAKgK,cAAcN,GAC3BR,EAAWS,EAAUT,SAAW,WAAa,GAEnD,GAAuB,UAAnBS,EAAUV,KAAkB,CAC9B,MAAMgB,EAAa5C,EAAWH,GAAOgD,KAAK,MAG1C,MAAkB,WAAdR,GAAwC,UAAdA,EACrB,uJAEoE1J,KAAKkE,WAAW6F,4HAE5DL,qIAA6IA,kDACtJA,kFACuBA,6WAKvB1J,KAAKkE,WAAWwF,WAAmBA,iJAAyJR,KAAYlJ,KAAKkE,WAAW+F,0QAQzO,mJAEoEjK,KAAKkE,WAAW6F,yCACrE/J,KAAKkE,WAAWwF,4IAAoJR,KAAYlJ,KAAKkE,WAAW+F,6IAIxN,CAEA,GAAuB,WAAnBN,EAAUV,MAAwC,YAAnBU,EAAUV,KAC3C,MAAO,mJAEoEjJ,KAAKkE,WAAW6F,oDAC1D/J,KAAKkE,WAAWwF,cAAsBxC,GAAS,uFAAuFgC,+BAMzK,MAAMD,EAAOS,EAAUS,cAAcjJ,SAAS,QAAU,QAAU,OAClE,MAAO,+IAEoElB,KAAKkE,WAAW6F,oCACxEd,YAAejJ,KAAKkE,WAAWwF,cAAsB1J,KAAKkE,WAAWgB,OAAOgC,GAAS,yFAAyFgC,0BAGnM,CAEQ,aAAAc,CAAcN,GASpB,MARyC,CACvCrH,GAAI,aACJ+H,YAAa,cACblI,OAAQ,UACRmI,MAAO,SACPC,KAAM,gBACNC,iBAAkB,gBAGTb,IACTA,EACGpI,QAAQ,WAAY,OACpBA,QAAQ,KAAM,KACdA,QAAQ,KAAMkJ,GAAOA,EAAIC,cAEhC,CAEQ,oBAAA/G,GACN,MAAMgH,EAAO/E,SAASgF,eAAe,mBACjCD,GACFA,EAAKhG,iBAAiB,SAAUE,GAAK5E,KAAK4K,aAAahG,IAGzD,MAAMiG,EAAYlF,SAASgF,eAAe,oBACtCE,GACFA,EAAUnG,iBAAiB,QAAS,IAAM1E,KAAK8K,gBAGjD,MAAMC,EAAUpF,SAASgF,eAAe,kBACpCI,GACFA,EAAQrG,iBAAiB,QAAS,IAAM1E,KAAKgL,cAI/C,MAAMC,EAAejL,KAAK0C,UAAUa,cAAc,mBAC9C0H,GACFA,EAAavG,iBAAiB,QAAS,IACrC1E,KAAKkL,gBAAgB,WAIzB,MAAMC,EAAcnL,KAAK0C,UAAUa,cAAc,kBAC7C4H,GACFA,EAAYzG,iBAAiB,QAAS,IACpC1E,KAAKkL,gBAAgB,UAKzB,CAAC,SAAU,SAAS1G,QAAQkF,IAC1B,MAAM0B,EAAWzF,SAASgF,eACxB,GAAGjB,UAED0B,GACFA,EAAS1G,iBAAiB,UAAWE,IACrB,WAAVA,EAAEkE,KACJ9I,KAAKqL,mBAAmBD,EAAUxG,KAMxC,MAAM0G,EAAQ3F,SAASgF,eACrB,GAAGjB,eAEL,GAAI4B,EAAO,CACT,IAAIC,EACJD,EAAM5G,iBAAiB,QAAS,KAC9B8G,aAAaD,GACbA,EAAgBE,OAAOC,WAAW,KAChC1L,KAAK2L,YAAYL,EAAMpE,MAAOwC,IAC7B,MAEP,GAEJ,CAEQ,iBAAMiC,CAAYC,EAAelC,GACvC,GAAKkC,KAASA,EAAM/B,OAAS,GAE7B,IAEE,MAAM3J,QAAiBC,MACrB,GAAGH,KAAKqF,IAAa,mCAA6B1E,mBAAmBiL,4DAGvE,IAAK1L,EAASE,GAAI,OAGlB,MAAMyL,EAAU9C,OAAO+C,aACd5L,EAASK,QAEZwL,EAAWpG,SAASgF,eACxB,GAAGjB,iBAGL,IAAKqC,EAAU,OAEfA,EAAS7I,UAAY2I,EAClBG,MAAM,EAAG,IACT/G,IAAKgH,IACJ,MAAMlC,EACJ1C,EAAW4E,EAAK5J,IAAI,IACpBgF,EAAW4E,EAAKC,KAAK,IACrB7E,EAAW4E,EAAK3B,MAAM,IACtB2B,EAAK7K,GACP,MAAO,kBAAkBpB,KAAKkE,WAAW+H,EAAK7K,QAAQpB,KAAKkE,WAAW6F,gBAEvEG,KAAK,GACV,CAAE,MAAOtI,GACPyB,QAAQzB,MAAM,0BAA2BA,EAC3C,CACF,CAEQ,qBAAMsJ,CAAgBxB,GAC5B,MAAM4B,EAAQ3F,SAASgF,eACrB,GAAGjB,eAEC0B,EAAWzF,SAASgF,eACxB,GAAGjB,UAGL,IAAK4B,IAAUF,EAAU,OAEzB,MAAMe,EAAab,EAAMpE,MAAMkF,OAC/B,IAAKD,EAEH,YADAE,MAAM,sCAKR,MAAMC,EAAgBlB,EAASlE,MAC5BqF,MAAM,MACNtH,IAAIkC,GAAKA,EAAEiF,QACXxL,OAAOuG,GAAKA,GAGXmF,EAAcpL,SAASiL,GACzBE,MAAM,QAAQ3C,qBAKhB4C,EAAc1C,KAAKuC,GACnBf,EAASlE,MAAQoF,EAAcpC,KAAK,MAGpCoB,EAAMpE,MAAQ,GACdoE,EAAMkB,QACR,CAEQ,kBAAAnB,CACND,EACAxG,GAEA,MAAM6H,EAAQrB,EAASsB,eACjBC,EAAMvB,EAASwB,aAIfC,EAHQzB,EAASlE,MAGHqF,MAAM,MAC1B,IAAIO,EAAa,EACbC,EAAY,EACZC,EAAU,EAEd,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAMhD,OAAQoD,IAAK,CACrC,MAAMC,EAAaL,EAAMI,GAAGpD,OAAS,EAIrC,GAHIiD,GAAcL,GAASA,EAAQK,EAAaI,IAC9CH,EAAYE,GAEVH,GAAcH,GAAOA,GAAOG,EAAaI,EAAY,CACvDF,EAAUC,EACV,KACF,CACAH,GAAcI,CAChB,CAGAtI,EAAEuI,iBACF,MAAMC,EAAWP,EAAMjM,OAAO,CAACyM,EAAGJ,IAAMA,EAAIF,GAAaE,EAAID,GAC7D5B,EAASlE,MAAQkG,EAASlD,KAAK,KACjC,CAEQ,kBAAMU,CAAahG,GACzBA,EAAEuI,iBAEF,MAAMzC,EAAO9F,EAAEyB,OACTiH,EAAW,IAAIC,SAAS7C,GACxB8C,EAAkC,CAAA,EAExCF,EAAS9I,QAAQ,CAAC0C,EAAO4B,KACoB,UAAvC9I,KAAKyH,QAAQoB,WAAWC,IAAMG,KAChCuE,EAAO1E,GAAQ5B,EACZqF,MAAM,MACNtH,IAAIkC,GAAKA,EAAEiF,QACXxL,OAAOuG,GAAKA,GAEwB,WAAvCnH,KAAKyH,QAAQoB,WAAWC,IAAMG,MACS,YAAvCjJ,KAAKyH,QAAQoB,WAAWC,IAAMG,KAE9BuE,EAAO1E,GAAO2E,OAAOvG,GAErBsG,EAAO1E,GAAO5B,IAGlB,MAAMwG,EDvLJ,SACJC,EACAH,GAEA,MAAMlM,EAAmC,CAAA,EACzC,IAAK,MAAOoH,EAAMxB,KAAU6B,OAAOC,QAAQwE,GAAS,CAClD,GAAa,OAAT9E,EAAe,SACnB,MAAMkF,EAAQ3G,EAAUC,GAClB2G,EAAID,EAAM3I,IAAIC,QAAQ4I,OACtBC,EAAI9G,EAAU0G,IAAWjF,IAAOzD,IAAIC,QAAQ4I,OAC9CD,EAAEhE,SAAWkE,EAAElE,QAAUgE,EAAEG,MAAM,CAAC7G,EAAG8F,IAAM9F,IAAM4G,EAAEd,MACvD3L,EAAQoH,GAAQ3H,MAAMC,QAAQkG,GAAS0G,EAAQA,EAAM/D,OAAS3C,EAAQ,GACxE,CACA,OAAO5F,CACT,CCyKoB2M,CACdjO,KAAKwH,MACLgG,GAGIU,EAAiB,WAAYR,EAC7BS,EDnNJ,SACJC,EACAR,GAEA,MAAMS,EAAMhH,EAAW+G,GACjBE,EAAKjH,EAAWuG,GACtB,MAAO,CACLW,MAAOD,EAAG1N,OAAOuG,IAAMkH,EAAInN,SAASiG,IACpCqH,QAASH,EAAIzN,OAAOuG,IAAMmH,EAAGpN,SAASiG,IAE1C,CCyMoBsH,CAAYzO,KAAKwH,OAAOtF,OAAQwL,EAAQxL,eACjDwL,EAAQxL,OAEf,IAEE,GAAIwL,EAAQrL,IAAMrC,KAAKwH,OAAOnF,GAAI,CAChC,MAAMqM,EAAQ3N,MAAMC,QAAQhB,KAAKwH,MAAMnF,IACnCrC,KAAKwH,MAAMnF,GAAG,GACdrC,KAAKwH,MAAMnF,GACTG,EAAQkL,EAAQrL,GAEtB,GAAIqM,IAAUlM,EAAO,QAEZkL,EAAQrL,SAGTrC,KAAKqF,IAAI9C,YAAYvC,KAAKuH,QAAS/E,GAGzC,MAAMmM,EAAQ3O,KAAKuH,QAAQjG,QACzB,IAAIsN,OAAO,OAAOF,MAClB,MAAMlM,MAERxC,KAAKuH,QAAUoH,EAGX5F,OAAO8F,KAAKnB,GAAS7D,OAAS,SAC1B7J,KAAKqF,IAAIhE,YAAYrB,KAAKuH,QAASmG,EAE7C,YAEQ1N,KAAKqF,IAAIhE,YAAYrB,KAAKuH,QAASmG,EAE7C,MAAW3E,OAAO8F,KAAKnB,GAAS7D,OAAS,SACjC7J,KAAKqF,IAAIhE,YAAYrB,KAAKuH,QAASmG,GAG3C,GAAIQ,EAAgB,CAEdC,EAAQI,MAAM1E,cACV7J,KAAKqF,IAAIpD,WAAWjC,KAAKuH,QAAS4G,EAAQI,OAClD,IAAK,MAAMrM,KAAUiM,EAAQK,cACrBxO,KAAKqF,IAAIlD,aAAanC,KAAKuH,QAASrF,EAC9C,CAEAmK,MAAM,+BACFrM,KAAK0H,cACP1H,KAAK0H,cAET,CAAE,MAAO9F,GACPyB,QAAQzB,MAAM,0BAA2BA,GACzCyK,MAAM,2BAA4BzK,EAAgBkN,UACpD,CACF,CAEQ,gBAAM9D,GACZ,IAAKhL,KAAKwH,MAAO,OAGjB,MAAMlC,EAAetF,KAAKwH,MAAMuH,oBAEhC,IAAKzJ,EAIH,YAHA+G,MACE,uGAMJ,MAAM2C,EAAUhP,KAAKuH,QAAQ0H,MAAM,eAC7B5M,EAAK2M,EAAUA,EAAQ,GAAKhP,KAAKuH,QAEjC/B,EAAQ,IAAIJ,EAChBpF,KAAKqF,IACLC,EACAX,MAAMrC,IACJ,UACQtC,KAAKqF,IAAIjD,UAAUC,EAAIC,GAC7B+J,MAAM,mCAGArM,KAAK2H,YACX3H,KAAK6H,SACL7H,KAAK0D,uBAED1D,KAAK0H,cACP1H,KAAK0H,cAET,CAAE,MAAO9F,GACPyB,QAAQzB,MAAM,wBAAyBA,GACvCyK,MAAM,yBAA0BzK,EAAgBkN,UAClD,UAIEtJ,EAAME,MACd,CAEQ,kBAAMoF,GACZ,GACGoE,QACC,kDAAkDlP,KAAKuH,4CAM3D,UACQvH,KAAKqF,IAAIrD,YAAYhC,KAAKuH,SAChC8E,MAAM,+BACNrM,KAAK0C,UAAUQ,UAAY,iLAM7B,CAAE,MAAOtB,GACPyB,QAAQzB,MAAM,0BAA2BA,GACzCyK,MAAM,2BAA4BzK,EAAgBkN,UACpD,CACF,CAEQ,UAAA5K,CAAWrC,GACjB,GAAY,MAARA,EAAc,MAAO,GACzB,MAAMoD,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UAEP,OAAOC,OAAOrD,GAAMP,QAAQ,YAAa6D,GAAKF,EAAIE,GACpD,QC3nBWgK,EAOX,WAAArP,CACEuF,EACA0C,EACArH,EACA0O,GANMpP,KAAAwF,MAA4B,KAQlCxF,KAAKqF,IAAMA,EACXrF,KAAK+H,OAASA,EACd/H,KAAKU,MAAQA,EACbV,KAAKoP,UAAYA,CACnB,CAEA,UAAM1J,GAEJ1F,KAAKwF,MAAQG,SAASC,cAAc,OACpC5F,KAAKwF,MAAMK,MAAMC,QAAU,kPAc3B,MAAMuJ,QAAgBrP,KAAKsP,WAAWtP,KAAKU,OAGrCqF,EAAeJ,SAASC,cAAc,OAC5CG,EAAaF,MAAMC,QAAU,mOAW7BC,EAAa7C,UAAY,mtDA8BuBlD,KAAKkE,WAAWmL,GAAWrP,KAAKU,wyBAehFV,KAAKwF,MAAMQ,YAAYD,GACvBJ,SAASlE,KAAKuE,YAAYhG,KAAKwF,OAG/B,MAAMS,EAAYjG,KAAKwF,MAAMjC,cAAc,sBACvC0C,GACFA,EAAUvB,iBAAiB,QAAS,IAAM1E,KAAKkG,SAGjD,MAAMwE,EAAO1K,KAAKwF,MAAMjC,cAAc,sBAClCmH,GACFA,EAAKhG,iBAAiB,SAAUE,GAAK5E,KAAK4K,aAAahG,IAIzD5E,KAAKwF,MAAMd,iBAAiB,QAASE,IAC/BA,EAAEyB,SAAWrG,KAAKwF,OACpBxF,KAAKkG,SAGX,CAEQ,gBAAMoJ,CAAW5O,GACvB,IACE,MAAMR,QAAiBC,MACrB,GAAGH,KAAKqF,IAAa,qCAA+B1E,mBAAmBD,MAEzE,IAAKR,EAASE,GAAI,OAAO,KAEzB,MAAMmP,QAAYrP,EAASK,OACrBiP,EAAWxP,KAAK+H,OAAOE,UAAUwH,mBAAmBC,cAC1D,OAAIF,GAAYD,EAAIC,GACXzO,MAAMC,QAAQuO,EAAIC,IAAaD,EAAIC,GAAU,GAAKD,EAAIC,GAGxD9O,CACT,CAAE,MAAOkB,GAEP,OADAyB,QAAQzB,MAAM,oCAAqCA,GAC5C,IACT,CACF,CAEQ,kBAAMgJ,CAAahG,GACzBA,EAAEuI,iBAEF,MAAMwC,EAAU3P,KAAKwF,OAAOjC,cAAc,aACpCqM,EAAY5P,KAAKwF,OAAOjC,cAC5B,eAEIsM,EAAY7P,KAAKwF,OAAOjC,cAC5B,sBAEIuM,EAAW9P,KAAKwF,OAAOjC,cAC3B,kBAGF,IAAKoM,EAAS,OAEd,MAAMtN,EAAKsN,EAAQzI,MAAMkF,OACzB,GAAK/J,EAKL,IAME,MAAM0N,EAAqC,CACzC1N,GAAIA,GAIFuN,GAAW1I,MAAMkF,SACnB2D,EAAUzF,KAAOsF,EAAU1I,MAAMkF,QAG/ByD,GAAW3I,MAAMkF,SACnB2D,EAAU3F,YAAcyF,EAAU3I,MAAMkF,QAI1C,MAAM4D,EAAWhQ,KAAK+H,OAAOE,UAAUwH,mBAAmBQ,cACtDD,IAAUD,EAAUC,GAAYhQ,KAAKU,OAGzC,MAAMR,QAAiBC,MACrB,GAAGH,KAAKqF,IAAa,6BACrB,CACE9D,OAAQ,OACRC,QAAS,CAAE,eAAgB,oBAC3BC,KAAMC,KAAKC,UAAUoO,KAIzB,IAAK7P,EAASE,GAAI,CAChB,MAAMwB,QAAc1B,EAAS2B,OAC7B,MAAM,IAAIxB,MAAMuB,GAAS,yBAC3B,OAGM5B,KAAKoP,YACXpP,KAAKkG,OACP,CAAE,MAAOtE,GACPyB,QAAQzB,MAAM,0BAA2BA,GACzC5B,KAAKkQ,UAAUJ,EAAWlO,EAAgBkN,QAC5C,MAhDE9O,KAAKkQ,UAAUJ,EAAU,yBAiD7B,CAEQ,SAAAI,CAAUJ,EAAiChB,GAC7CgB,IACFA,EAASK,YAAc,UAAUrB,IACjCgB,EAASjK,MAAMuK,QAAU,QAE7B,CAEQ,KAAAlK,GACFlG,KAAKwF,QACPG,SAASlE,KAAKuF,YAAYhH,KAAKwF,OAC/BxF,KAAKwF,MAAQ,KAEjB,CAEQ,UAAAtB,CAAWrC,GACjB,GAAY,MAARA,EAAc,MAAO,GACzB,MAAMoD,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UAEP,OAAOC,OAAOrD,GAAMP,QAAQ,YAAa6D,GAAKF,EAAIE,GACpD,0BC1NA,WAAArF,CAAYuQ,GAPJrQ,KAAA0C,UAAgC,KAChC1C,KAAAsQ,UAA8B,KAC9BtQ,KAAAuQ,YAA0C,KAC1CvQ,KAAAwQ,eAAgC,KAChCxQ,KAAAsF,aAA8B,KAC9BtF,KAAA+H,OAAwB,KAG9B/H,KAAKqQ,QAAU,CACb1N,WAA8B,oBAAX8I,OAAyBA,OAAOgF,SAASC,OAAS,MAClEL,GAGLrQ,KAAKqF,IAAM,IAAIxF,EAAeG,KAAKqQ,QAAQ1N,YAAc,GAC3D,CAEA,UAAMM,GAEJ,GADAjD,KAAK0C,UAAYiD,SAASgF,eAAe3K,KAAKqQ,QAAQM,cACjD3Q,KAAK0C,UACR,MAAM,IAAIrC,MAAM,cAAcL,KAAKqQ,QAAQM,yBAI7C3Q,KAAK+H,aAAe/H,KAAKqF,IAAIpF,YAE7BD,KAAK6H,eACC7H,KAAK4Q,gBACb,CAEQ,MAAA/I,GACD7H,KAAK0C,YAEV1C,KAAK0C,UAAUQ,UAAY,ucAa7B,CAEQ,oBAAM0N,GACZ,MAAMrK,EAAgBZ,SAASgF,eAAe,wBAC9C,GAAKpE,EAAL,CAEAvG,KAAKsQ,UAAY,IAAI7N,EACnB8D,EACAvG,KAAKqQ,QAAQ1N,YAAc8I,OAAOgF,SAASC,OAC3ChQ,GAASV,KAAK6Q,cAAcnQ,IAG9B,UACQV,KAAKsQ,UAAUrN,MACvB,CAAE,MAAOrB,GACP5B,KAAK8Q,YAAYlP,EACnB,CAZoB,CAatB,CAEQ,mBAAMiP,CAAcnQ,GAC1B,MAAMqQ,EAAkBpL,SAASgF,eAAe,0BAChD,GAAKoG,EAAL,CAEA/Q,KAAKsF,aAAe5E,EAEpB,IAEE,MAAMsQ,QAAehR,KAAKqF,IAAI5E,UAAUC,GAGxCqQ,EAAgB7N,UAAY,2lBAUJ,IAAlB8N,EAAOnH,OACH,wLAMA,+FAEAmH,EACC/L,IACCuC,GAAS,sDACwBxH,KAAKkE,WAAWsD,EAAMpG,iOAE/CpB,KAAKkE,WAAWsD,EAAMnF,IAAMmF,EAAMpG,sDAI3C8I,KAAK,gEAQhB6G,EAAgBxM,iBAAiB,eAAeC,QAAQyM,IACtDA,EAAKvM,iBAAiB,QAAS,KAC7B,MAAM6C,EAAW0J,EAAqBC,QAAQ9P,GAC9CpB,KAAKmR,gBAAgB5J,OAKzB,MAAM6J,EAAYL,EAAgBxN,cAAc,qBAC5C6N,GACFA,EAAU1M,iBAAiB,QAAS,IAAM1E,KAAKqR,oBAEnD,CAAE,MAAOzP,GACP5B,KAAK8Q,YAAYlP,GACjBmP,EAAgB7N,UAAY,0JAM9B,CAjEsB,CAkExB,CAEQ,qBAAMiO,CAAgB5J,GAC5B,MAAMwJ,EAAkBpL,SAASgF,eAAe,0BAChD,GAAKoG,EAAL,CAEA/Q,KAAKwQ,eAAiBjJ,EAEtB,IAEEvH,KAAKuQ,YAAc,IAAIjJ,EACrByJ,EACA/Q,KAAKqF,IACLkC,SAEIvH,KAAKuQ,YAAYtN,OAGnBjD,KAAKqQ,QAAQiB,cACftR,KAAKuQ,YAAYnH,OAAO,KACtBpJ,KAAKqQ,QAAQiB,eAAe/J,IAGlC,CAAE,MAAO3F,GACP5B,KAAK8Q,YAAYlP,GACjBmP,EAAgB7N,UAAY,oKAM9B,CA3BsB,CA4BxB,CAEQ,uBAAMmO,GACZ,IAAKrR,KAAKsF,eAAiBtF,KAAK+H,OAAQ,OAExC,MAAMvC,EAAQ,IAAI2J,EAChBnP,KAAKqF,IACLrF,KAAK+H,OACL/H,KAAKsF,aACLX,gBAEQ3E,KAAK6Q,cAAc7Q,KAAKsF,cAC1BtF,KAAKqQ,QAAQiB,cACftR,KAAKqQ,QAAQiB,aAAa,YAK1B9L,EAAME,MACd,CAEQ,UAAAxB,CAAWrC,GACjB,GAAY,MAARA,EAAc,MAAO,GACzB,MAAMoD,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,UAEP,OAAOC,OAAOrD,GAAMP,QAAQ,YAAa6D,GAAKF,EAAIE,GACpD,CAEQ,WAAA2L,CAAYlP,GAClByB,QAAQzB,MAAM,yBAA0BA,GACpC5B,KAAKqQ,QAAQkB,SACfvR,KAAKqQ,QAAQkB,QAAQ3P,EAEzB,CAGA,MAAA4P,GACE,OAAOxR,KAAKqF,GACd,CAEA,SAAApF,GACE,OAAOD,KAAK+H,MACd,CAEA,eAAA0J,GACE,OAAOzR,KAAKsF,YACd,CAEA,gBAAAoM,GAEE,OAAO1R,KAAKwQ,cACd,CAEA,gBAAMmB,CAAW5P,GAEf,OAAO/B,KAAKqF,IAAIvD,YAAYC,EAAKX,GAAcW,EACjD,CAEA,gBAAM6P,CAAWxQ,GAEf,OAAOpB,KAAKqF,IAAIrD,YAAYZ,EAC9B"}
@@ -73,11 +73,17 @@ class ResourceApiClient {
73
73
  const url = `${this.getResourceEndpoint()}/${encodeURIComponent(dn)}`;
74
74
  return this.cachedFetch(url);
75
75
  }
76
- async updateResource(dn, data) {
76
+ /**
77
+ * Replace attributes of an entry.
78
+ *
79
+ * @param dn entry to change
80
+ * @param replace attributes to replace; see `changedAttributes`
81
+ */
82
+ async updateResource(dn, replace) {
77
83
  const res = await fetch(`${this.getResourceEndpoint()}/${encodeURIComponent(dn)}`, {
78
84
  method: 'PUT',
79
85
  headers: { 'Content-Type': 'application/json' },
80
- body: JSON.stringify(data),
86
+ body: JSON.stringify({ replace }),
81
87
  });
82
88
  if (!res.ok) {
83
89
  const error = await res.text();
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceApiClient.js","sources":["../../../../../src/browser/ldap-resource-editor/api/ResourceApiClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResourceApiClient.js","sources":["../../../../../src/browser/ldap-resource-editor/api/ResourceApiClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -26,11 +26,17 @@ class UnitApiClient {
26
26
  }
27
27
  return response.json();
28
28
  }
29
- async updateUnit(dn, data) {
29
+ /**
30
+ * Replace attributes of an entry.
31
+ *
32
+ * @param dn entry to change
33
+ * @param replace attributes to replace; see `changedAttributes`
34
+ */
35
+ async updateUnit(dn, replace) {
30
36
  const response = await fetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(dn)}`, {
31
37
  method: 'PUT',
32
38
  headers: { 'Content-Type': 'application/json' },
33
- body: JSON.stringify(data),
39
+ body: JSON.stringify({ replace }),
34
40
  });
35
41
  if (!response.ok) {
36
42
  const error = await response.text();
@@ -66,17 +72,6 @@ class UnitApiClient {
66
72
  throw new Error(`Failed to delete entry: ${error}`);
67
73
  }
68
74
  }
69
- async getPointerOptions(branch) {
70
- const response = await fetch(`${this.baseUrl}/api/v1/ldap/search?base=${encodeURIComponent(branch)}&scope=one`);
71
- if (!response.ok) {
72
- throw new Error(`Failed to load pointer options: ${response.statusText}`);
73
- }
74
- const entries = await response.json();
75
- return entries.map((entry) => ({
76
- dn: entry.dn,
77
- label: entry.cn?.[0] || entry.ou?.[0] || entry.dn,
78
- }));
79
- }
80
75
  async moveUnit(dn, targetOrgDn) {
81
76
  const response = await fetch(`${this.baseUrl}/api/v1/ldap/organizations/${encodeURIComponent(dn)}/move`, {
82
77
  method: 'POST',
@@ -1 +1 @@
1
- {"version":3,"file":"UnitApiClient.js","sources":["../../../../../src/browser/ldap-unit-editor/api/UnitApiClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UnitApiClient.js","sources":["../../../../../src/browser/ldap-unit-editor/api/UnitApiClient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { MoveUnitModal } from './MoveUnitModal.js';
2
+ import { listValues, changedAttributes } from '../../shared/utils/form.js';
2
3
 
3
4
  /**
4
5
  * Unit Property Editor Component - Edits properties of a selected organizational unit
@@ -169,7 +170,7 @@ class UnitPropertyEditor {
169
170
  const label = this.getFieldLabel(fieldName);
170
171
  const required = attribute.required ? 'required' : '';
171
172
  if (attribute.type === 'array') {
172
- const arrayValue = Array.isArray(value) ? value.join('\n') : '';
173
+ const arrayValue = listValues(value).join('\n');
173
174
  return `
174
175
  <div class="form-group" style="margin-bottom: 16px;">
175
176
  <label style="display: block; margin-bottom: 8px; font-weight: 500;">${this.escapeHtml(label)}</label>
@@ -240,7 +241,9 @@ class UnitPropertyEditor {
240
241
  }
241
242
  }
242
243
  try {
243
- await this.api.updateUnit(this.unitDn, updates);
244
+ const replace = changedAttributes(this.unit, updates);
245
+ if (Object.keys(replace).length)
246
+ await this.api.updateUnit(this.unitDn, replace);
244
247
  alert('Organizational unit updated successfully!');
245
248
  if (this.saveCallback) {
246
249
  this.saveCallback();
@@ -1 +1 @@
1
- {"version":3,"file":"UnitPropertyEditor.js","sources":["../../../../../src/browser/ldap-unit-editor/components/UnitPropertyEditor.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UnitPropertyEditor.js","sources":["../../../../../src/browser/ldap-unit-editor/components/UnitPropertyEditor.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}