ldap-rest 0.0.1

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 (296) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +48 -0
  3. package/bin/cleanup-external-users.mjs +219 -0
  4. package/bin/index.mjs +54 -0
  5. package/bin/sync-james.mjs +190 -0
  6. package/dist/abstract/ldapFlat.js +1 -0
  7. package/dist/abstract/plugin.js +1 -0
  8. package/dist/abstract/twakePlugin.js +1 -0
  9. package/dist/bin/index.js +1 -0
  10. package/dist/config/args.js +1 -0
  11. package/dist/lib/auth/base.js +1 -0
  12. package/dist/lib/authz/base.js +1 -0
  13. package/dist/lib/expressFormatedResponses.js +1 -0
  14. package/dist/lib/ldapActions.js +1 -0
  15. package/dist/lib/parseConfig.js +1 -0
  16. package/dist/lib/utils.js +1 -0
  17. package/dist/logger/winston.js +1 -0
  18. package/dist/plugins/auth/authzLinid1.js +1 -0
  19. package/dist/plugins/auth/authzPerBranch.js +1 -0
  20. package/dist/plugins/auth/crowdsec.js +1 -0
  21. package/dist/plugins/auth/llng.js +1 -0
  22. package/dist/plugins/auth/openidconnect.js +1 -0
  23. package/dist/plugins/auth/rateLimit.js +1 -0
  24. package/dist/plugins/auth/token.js +1 -0
  25. package/dist/plugins/configApi.js +1 -0
  26. package/dist/plugins/demo/helloworld.js +1 -0
  27. package/dist/plugins/ldap/bulkImport.js +1 -0
  28. package/dist/plugins/ldap/departmentSync.js +1 -0
  29. package/dist/plugins/ldap/externalUsersInGroups.js +1 -0
  30. package/dist/plugins/ldap/flatGeneric.js +1 -0
  31. package/dist/plugins/ldap/groups.js +1 -0
  32. package/dist/plugins/ldap/onChange.js +1 -0
  33. package/dist/plugins/ldap/organization.js +1 -0
  34. package/dist/plugins/ldap/trash.js +1 -0
  35. package/dist/plugins/priority.json.js +1 -0
  36. package/dist/plugins/static.js +1 -0
  37. package/dist/plugins/twake/calendarResources.js +1 -0
  38. package/dist/plugins/twake/james.js +1 -0
  39. package/dist/plugins/weblogs.js +1 -0
  40. package/dist/src/abstract/ldapFlat.d.ts +94 -0
  41. package/dist/src/abstract/plugin.d.ts +43 -0
  42. package/dist/src/abstract/twakePlugin.d.ts +90 -0
  43. package/dist/src/bin/index.d.ts +43 -0
  44. package/dist/src/browser/ldap-group-editor/LdapGroupEditor.d.ts +31 -0
  45. package/dist/src/browser/ldap-group-editor/api/GroupApiClient.d.ts +23 -0
  46. package/dist/src/browser/ldap-group-editor/components/CreateGroupModal.d.ts +19 -0
  47. package/dist/src/browser/ldap-group-editor/components/GroupPropertyEditor.d.ts +30 -0
  48. package/dist/src/browser/ldap-group-editor/components/GroupTree.d.ts +17 -0
  49. package/dist/src/browser/ldap-group-editor/components/MoveGroupModal.d.ts +20 -0
  50. package/dist/src/browser/ldap-group-editor/index.d.ts +6 -0
  51. package/dist/src/browser/ldap-group-editor/types.d.ts +58 -0
  52. package/dist/src/browser/ldap-resource-editor/api/ResourceApiClient.d.ts +53 -0
  53. package/dist/src/browser/ldap-resource-editor/cache/CacheManager.d.ts +65 -0
  54. package/dist/src/browser/ldap-resource-editor/index.d.ts +6 -0
  55. package/dist/src/browser/ldap-resource-editor/types.d.ts +78 -0
  56. package/dist/src/browser/ldap-tree-viewer/LdapTreeViewer.d.ts +26 -0
  57. package/dist/src/browser/ldap-tree-viewer/api/LdapApiClient.d.ts +30 -0
  58. package/dist/src/browser/ldap-tree-viewer/components/TreeNode.d.ts +17 -0
  59. package/dist/src/browser/ldap-tree-viewer/components/TreeRoot.d.ts +14 -0
  60. package/dist/src/browser/ldap-tree-viewer/index.d.ts +7 -0
  61. package/dist/src/browser/ldap-tree-viewer/store/Store.d.ts +18 -0
  62. package/dist/src/browser/ldap-tree-viewer/store/actions.d.ts +28 -0
  63. package/dist/src/browser/ldap-tree-viewer/store/reducers.d.ts +7 -0
  64. package/dist/src/browser/ldap-tree-viewer/types.d.ts +34 -0
  65. package/dist/src/browser/ldap-unit-editor/LdapUnitEditor.d.ts +27 -0
  66. package/dist/src/browser/ldap-unit-editor/api/UnitApiClient.d.ts +24 -0
  67. package/dist/src/browser/ldap-unit-editor/components/MoveUnitModal.d.ts +28 -0
  68. package/dist/src/browser/ldap-unit-editor/components/UnitPropertyEditor.d.ts +28 -0
  69. package/dist/src/browser/ldap-unit-editor/components/UnitTree.d.ts +18 -0
  70. package/dist/src/browser/ldap-unit-editor/index.d.ts +6 -0
  71. package/dist/src/browser/ldap-unit-editor/types.d.ts +55 -0
  72. package/dist/src/browser/ldap-user-editor/LdapUserEditor.d.ts +32 -0
  73. package/dist/src/browser/ldap-user-editor/api/UserApiClient.d.ts +55 -0
  74. package/dist/src/browser/ldap-user-editor/cache/CacheManager.d.ts +65 -0
  75. package/dist/src/browser/ldap-user-editor/components/MoveUserModal.d.ts +28 -0
  76. package/dist/src/browser/ldap-user-editor/components/PointerField.d.ts +22 -0
  77. package/dist/src/browser/ldap-user-editor/components/UserEditor.d.ts +46 -0
  78. package/dist/src/browser/ldap-user-editor/components/UserList.d.ts +24 -0
  79. package/dist/src/browser/ldap-user-editor/components/UserTree.d.ts +24 -0
  80. package/dist/src/browser/ldap-user-editor/index.d.ts +7 -0
  81. package/dist/src/browser/ldap-user-editor/types.d.ts +67 -0
  82. package/dist/src/browser/shared/components/Modal.d.ts +38 -0
  83. package/dist/src/browser/shared/components/StatusMessage.d.ts +48 -0
  84. package/dist/src/browser/shared/index.d.ts +10 -0
  85. package/dist/src/browser/shared/types/index.d.ts +65 -0
  86. package/dist/src/browser/shared/utils/dom.d.ts +33 -0
  87. package/dist/src/browser/shared/utils/form.d.ts +28 -0
  88. package/dist/src/browser/shared/utils/schema.d.ts +29 -0
  89. package/dist/src/config/args.d.ts +128 -0
  90. package/dist/src/config/schema.d.ts +18 -0
  91. package/dist/src/hooks.d.ts +76 -0
  92. package/dist/src/lib/auth/base.d.ts +9 -0
  93. package/dist/src/lib/authz/base.d.ts +63 -0
  94. package/dist/src/lib/expressFormatedResponses.d.ts +26 -0
  95. package/dist/src/lib/ldapActions.d.ts +91 -0
  96. package/dist/src/lib/parseConfig.d.ts +23 -0
  97. package/dist/src/lib/utils.d.ts +73 -0
  98. package/dist/src/logger/winston.d.ts +3 -0
  99. package/dist/src/plugins/auth/authzLinid1.d.ts +46 -0
  100. package/dist/src/plugins/auth/authzPerBranch.d.ts +59 -0
  101. package/dist/src/plugins/auth/crowdsec.d.ts +29 -0
  102. package/dist/src/plugins/auth/llng.d.ts +8 -0
  103. package/dist/src/plugins/auth/openidconnect.d.ts +11 -0
  104. package/dist/src/plugins/auth/rateLimit.d.ts +24 -0
  105. package/dist/src/plugins/auth/token.d.ts +17 -0
  106. package/dist/src/plugins/configApi.d.ts +24 -0
  107. package/dist/src/plugins/demo/helloworld.d.ts +12 -0
  108. package/dist/src/plugins/ldap/bulkImport.d.ts +48 -0
  109. package/dist/src/plugins/ldap/departmentSync.d.ts +35 -0
  110. package/dist/src/plugins/ldap/externalUsersInGroups.d.ts +21 -0
  111. package/dist/src/plugins/ldap/flatGeneric.d.ts +31 -0
  112. package/dist/src/plugins/ldap/groups.d.ts +95 -0
  113. package/dist/src/plugins/ldap/onChange.d.ts +32 -0
  114. package/dist/src/plugins/ldap/organization.d.ts +65 -0
  115. package/dist/src/plugins/ldap/trash.d.ts +52 -0
  116. package/dist/src/plugins/static.d.ts +7 -0
  117. package/dist/src/plugins/twake/calendarResources.d.ts +31 -0
  118. package/dist/src/plugins/twake/james.d.ts +83 -0
  119. package/dist/src/plugins/weblogs.d.ts +8 -0
  120. package/docs/DEVELOPER_GUIDE.md +298 -0
  121. package/docs/OPENAPI.md +440 -0
  122. package/docs/PLUGIN_DEPENDENCIES.md +612 -0
  123. package/docs/README.md +466 -0
  124. package/docs/api/REFERENCE.md +983 -0
  125. package/docs/api/REST_API.md +1237 -0
  126. package/docs/authentication.md +469 -0
  127. package/docs/authzLinid1.md +521 -0
  128. package/docs/authzPerBranch.md +596 -0
  129. package/docs/browser/LIBRARIES.md +1196 -0
  130. package/docs/examples/EXAMPLES.md +1659 -0
  131. package/docs/examples/twake-mailbox-type-nomenclature.ldif +37 -0
  132. package/docs/examples/twake-mailbox-type-schema-amendment.ldif +30 -0
  133. package/docs/jamesTeamMailboxes.md +343 -0
  134. package/docs/ldapBulkImport.md +722 -0
  135. package/docs/ldapExternalUsersInGroups.md +325 -0
  136. package/docs/ldapFlatGeneric.md +444 -0
  137. package/docs/ldapGroups.md +589 -0
  138. package/docs/ldapOrganizations.md +659 -0
  139. package/docs/ldapTrash.md +260 -0
  140. package/docs/linagora.png +0 -0
  141. package/docs/onChange.md +318 -0
  142. package/docs/plugins/DEVELOPMENT.md +1219 -0
  143. package/docs/presenterm-fr.md +721 -0
  144. package/docs/presenterm.md +721 -0
  145. package/docs/schemas/SCHEMAS.md +1212 -0
  146. package/docs/static.md +410 -0
  147. package/docs/twakeCalendarResources.md +148 -0
  148. package/docs/twakeJames.md +661 -0
  149. package/docs/weblogs.md +399 -0
  150. package/examples/web/ldap-group-editor.html +113 -0
  151. package/examples/web/ldap-tree-viewer.html +368 -0
  152. package/examples/web/ldap-unit-editor.html +108 -0
  153. package/examples/web/ldap-user-editor.html +412 -0
  154. package/package.json +458 -0
  155. package/static/browser/common-demo.css +450 -0
  156. package/static/browser/ldap-group-editor/LdapGroupEditor.js +207 -0
  157. package/static/browser/ldap-group-editor/LdapGroupEditor.js.map +1 -0
  158. package/static/browser/ldap-group-editor/api/GroupApiClient.js +112 -0
  159. package/static/browser/ldap-group-editor/api/GroupApiClient.js.map +1 -0
  160. package/static/browser/ldap-group-editor/components/CreateGroupModal.js +212 -0
  161. package/static/browser/ldap-group-editor/components/CreateGroupModal.js.map +1 -0
  162. package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js +497 -0
  163. package/static/browser/ldap-group-editor/components/GroupPropertyEditor.js.map +1 -0
  164. package/static/browser/ldap-group-editor/components/GroupTree.js +153 -0
  165. package/static/browser/ldap-group-editor/components/GroupTree.js.map +1 -0
  166. package/static/browser/ldap-group-editor/components/MoveGroupModal.js +235 -0
  167. package/static/browser/ldap-group-editor/components/MoveGroupModal.js.map +1 -0
  168. package/static/browser/ldap-group-editor/index.js +2 -0
  169. package/static/browser/ldap-group-editor/index.js.map +1 -0
  170. package/static/browser/ldap-group-editor/types.js +2 -0
  171. package/static/browser/ldap-group-editor/types.js.map +1 -0
  172. package/static/browser/ldap-group-editor.esm.js +1399 -0
  173. package/static/browser/ldap-group-editor.esm.js.map +1 -0
  174. package/static/browser/ldap-group-editor.js +1407 -0
  175. package/static/browser/ldap-group-editor.js.map +1 -0
  176. package/static/browser/ldap-group-editor.min.js +2 -0
  177. package/static/browser/ldap-group-editor.min.js.map +1 -0
  178. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js +226 -0
  179. package/static/browser/ldap-resource-editor/api/ResourceApiClient.js.map +1 -0
  180. package/static/browser/ldap-resource-editor/cache/CacheManager.js +123 -0
  181. package/static/browser/ldap-resource-editor/cache/CacheManager.js.map +1 -0
  182. package/static/browser/ldap-resource-editor/index.js +2 -0
  183. package/static/browser/ldap-resource-editor/index.js.map +1 -0
  184. package/static/browser/ldap-resource-editor/types.js +2 -0
  185. package/static/browser/ldap-resource-editor/types.js.map +1 -0
  186. package/static/browser/ldap-tree-viewer/LdapTreeViewer.js +187 -0
  187. package/static/browser/ldap-tree-viewer/LdapTreeViewer.js.map +1 -0
  188. package/static/browser/ldap-tree-viewer/api/LdapApiClient.js +50 -0
  189. package/static/browser/ldap-tree-viewer/api/LdapApiClient.js.map +1 -0
  190. package/static/browser/ldap-tree-viewer/components/TreeNode.js +140 -0
  191. package/static/browser/ldap-tree-viewer/components/TreeNode.js.map +1 -0
  192. package/static/browser/ldap-tree-viewer/components/TreeRoot.js +98 -0
  193. package/static/browser/ldap-tree-viewer/components/TreeRoot.js.map +1 -0
  194. package/static/browser/ldap-tree-viewer/index.js +2 -0
  195. package/static/browser/ldap-tree-viewer/index.js.map +1 -0
  196. package/static/browser/ldap-tree-viewer/store/Store.js +29 -0
  197. package/static/browser/ldap-tree-viewer/store/Store.js.map +1 -0
  198. package/static/browser/ldap-tree-viewer/store/actions.js +53 -0
  199. package/static/browser/ldap-tree-viewer/store/actions.js.map +1 -0
  200. package/static/browser/ldap-tree-viewer/store/reducers.js +79 -0
  201. package/static/browser/ldap-tree-viewer/store/reducers.js.map +1 -0
  202. package/static/browser/ldap-tree-viewer/types.js +2 -0
  203. package/static/browser/ldap-tree-viewer/types.js.map +1 -0
  204. package/static/browser/ldap-tree-viewer.css +2 -0
  205. package/static/browser/ldap-tree-viewer.css.map +1 -0
  206. package/static/browser/ldap-tree-viewer.esm.js +606 -0
  207. package/static/browser/ldap-tree-viewer.esm.js.map +1 -0
  208. package/static/browser/ldap-tree-viewer.js +614 -0
  209. package/static/browser/ldap-tree-viewer.js.map +1 -0
  210. package/static/browser/ldap-tree-viewer.min.js +2 -0
  211. package/static/browser/ldap-tree-viewer.min.js.map +1 -0
  212. package/static/browser/ldap-unit-editor/LdapUnitEditor.js +119 -0
  213. package/static/browser/ldap-unit-editor/LdapUnitEditor.js.map +1 -0
  214. package/static/browser/ldap-unit-editor/api/UnitApiClient.js +95 -0
  215. package/static/browser/ldap-unit-editor/api/UnitApiClient.js.map +1 -0
  216. package/static/browser/ldap-unit-editor/components/MoveUnitModal.js +295 -0
  217. package/static/browser/ldap-unit-editor/components/MoveUnitModal.js.map +1 -0
  218. package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js +321 -0
  219. package/static/browser/ldap-unit-editor/components/UnitPropertyEditor.js.map +1 -0
  220. package/static/browser/ldap-unit-editor/components/UnitTree.js +197 -0
  221. package/static/browser/ldap-unit-editor/components/UnitTree.js.map +1 -0
  222. package/static/browser/ldap-unit-editor/index.js +2 -0
  223. package/static/browser/ldap-unit-editor/index.js.map +1 -0
  224. package/static/browser/ldap-unit-editor/types.js +2 -0
  225. package/static/browser/ldap-unit-editor/types.js.map +1 -0
  226. package/static/browser/ldap-unit-editor.esm.js +1013 -0
  227. package/static/browser/ldap-unit-editor.esm.js.map +1 -0
  228. package/static/browser/ldap-unit-editor.js +1021 -0
  229. package/static/browser/ldap-unit-editor.js.map +1 -0
  230. package/static/browser/ldap-unit-editor.min.js +2 -0
  231. package/static/browser/ldap-unit-editor.min.js.map +1 -0
  232. package/static/browser/ldap-user-editor/LdapUserEditor.js +184 -0
  233. package/static/browser/ldap-user-editor/LdapUserEditor.js.map +1 -0
  234. package/static/browser/ldap-user-editor/api/UserApiClient.js +209 -0
  235. package/static/browser/ldap-user-editor/api/UserApiClient.js.map +1 -0
  236. package/static/browser/ldap-user-editor/cache/CacheManager.js +123 -0
  237. package/static/browser/ldap-user-editor/cache/CacheManager.js.map +1 -0
  238. package/static/browser/ldap-user-editor/components/MoveUserModal.js +302 -0
  239. package/static/browser/ldap-user-editor/components/MoveUserModal.js.map +1 -0
  240. package/static/browser/ldap-user-editor/components/PointerField.js +152 -0
  241. package/static/browser/ldap-user-editor/components/PointerField.js.map +1 -0
  242. package/static/browser/ldap-user-editor/components/UserEditor.js +608 -0
  243. package/static/browser/ldap-user-editor/components/UserEditor.js.map +1 -0
  244. package/static/browser/ldap-user-editor/components/UserList.js +181 -0
  245. package/static/browser/ldap-user-editor/components/UserList.js.map +1 -0
  246. package/static/browser/ldap-user-editor/components/UserTree.js +164 -0
  247. package/static/browser/ldap-user-editor/components/UserTree.js.map +1 -0
  248. package/static/browser/ldap-user-editor/index.js +2 -0
  249. package/static/browser/ldap-user-editor/index.js.map +1 -0
  250. package/static/browser/ldap-user-editor/types.js +2 -0
  251. package/static/browser/ldap-user-editor/types.js.map +1 -0
  252. package/static/browser/ldap-user-editor.css +2 -0
  253. package/static/browser/ldap-user-editor.css.map +1 -0
  254. package/static/browser/ldap-user-editor.esm.js +1897 -0
  255. package/static/browser/ldap-user-editor.esm.js.map +1 -0
  256. package/static/browser/ldap-user-editor.js +1905 -0
  257. package/static/browser/ldap-user-editor.js.map +1 -0
  258. package/static/browser/ldap-user-editor.min.js +2 -0
  259. package/static/browser/ldap-user-editor.min.js.map +1 -0
  260. package/static/browser/shared/components/Modal.js +121 -0
  261. package/static/browser/shared/components/Modal.js.map +1 -0
  262. package/static/browser/shared/components/StatusMessage.js +119 -0
  263. package/static/browser/shared/components/StatusMessage.js.map +1 -0
  264. package/static/browser/shared/index.js +7 -0
  265. package/static/browser/shared/index.js.map +1 -0
  266. package/static/browser/shared/types/index.js +37 -0
  267. package/static/browser/shared/types/index.js.map +1 -0
  268. package/static/browser/shared/utils/dom.js +78 -0
  269. package/static/browser/shared/utils/dom.js.map +1 -0
  270. package/static/browser/shared/utils/form.js +234 -0
  271. package/static/browser/shared/utils/form.js.map +1 -0
  272. package/static/browser/shared/utils/schema.js +121 -0
  273. package/static/browser/shared/utils/schema.js.map +1 -0
  274. package/static/browser/shared.esm.js +694 -0
  275. package/static/browser/shared.esm.js.map +1 -0
  276. package/static/browser/shared.js +723 -0
  277. package/static/browser/shared.js.map +1 -0
  278. package/static/browser/shared.min.js +2 -0
  279. package/static/browser/shared.min.js.map +1 -0
  280. package/static/schemas/ad/computers.json +92 -0
  281. package/static/schemas/ad/groups.json +55 -0
  282. package/static/schemas/ad/organizations.json +66 -0
  283. package/static/schemas/ad/users.json +116 -0
  284. package/static/schemas/standard/devices.json +72 -0
  285. package/static/schemas/standard/groups.json +54 -0
  286. package/static/schemas/standard/organizations.json +49 -0
  287. package/static/schemas/standard/users.json +86 -0
  288. package/static/schemas/twake/groups.json +75 -0
  289. package/static/schemas/twake/nomenclature/twakeAccountStatus.json +31 -0
  290. package/static/schemas/twake/nomenclature/twakeDeliveryMode.json +31 -0
  291. package/static/schemas/twake/nomenclature/twakeListType.json +31 -0
  292. package/static/schemas/twake/nomenclature/twakeMailboxType.json +31 -0
  293. package/static/schemas/twake/nomenclature/twakeTitle.json +31 -0
  294. package/static/schemas/twake/organizations.json +52 -0
  295. package/static/schemas/twake/positions.json +32 -0
  296. package/static/schemas/twake/users.json +112 -0
@@ -0,0 +1,79 @@
1
+ import { Actions } from './actions.js';
2
+
3
+ /**
4
+ * Reducers for tree state management
5
+ */
6
+ const initialState = {
7
+ nodes: new Map(),
8
+ rootDn: null,
9
+ expandedNodes: new Set(),
10
+ loadingNodes: new Set(),
11
+ selectedNode: null,
12
+ error: null,
13
+ searchQuery: '',
14
+ filter: 'all',
15
+ };
16
+ function treeReducer(state, action) {
17
+ switch (action.type) {
18
+ case Actions.SET_ROOT: {
19
+ const rootNode = action.payload;
20
+ return {
21
+ ...state,
22
+ rootDn: rootNode.dn,
23
+ nodes: new Map([[rootNode.dn, rootNode]]),
24
+ error: null,
25
+ };
26
+ }
27
+ case Actions.ADD_NODE: {
28
+ const newNode = action.payload;
29
+ const nodes = new Map(state.nodes);
30
+ nodes.set(newNode.dn, newNode);
31
+ return { ...state, nodes };
32
+ }
33
+ case Actions.UPDATE_NODE: {
34
+ const updatedNode = action.payload;
35
+ const nodes = new Map(state.nodes);
36
+ nodes.set(updatedNode.dn, updatedNode);
37
+ return { ...state, nodes };
38
+ }
39
+ case Actions.TOGGLE_EXPANDED: {
40
+ const dn = action.payload;
41
+ const expanded = new Set(state.expandedNodes);
42
+ if (expanded.has(dn)) {
43
+ expanded.delete(dn);
44
+ }
45
+ else {
46
+ expanded.add(dn);
47
+ }
48
+ return { ...state, expandedNodes: expanded };
49
+ }
50
+ case Actions.SET_LOADING: {
51
+ const { dn, loading } = action.payload;
52
+ const loadingNodes = new Set(state.loadingNodes);
53
+ if (loading) {
54
+ loadingNodes.add(dn);
55
+ }
56
+ else {
57
+ loadingNodes.delete(dn);
58
+ }
59
+ return { ...state, loadingNodes };
60
+ }
61
+ case Actions.SET_ERROR: {
62
+ return { ...state, error: action.payload };
63
+ }
64
+ case Actions.SELECT_NODE: {
65
+ return { ...state, selectedNode: action.payload };
66
+ }
67
+ case Actions.SET_SEARCH: {
68
+ return { ...state, searchQuery: action.payload };
69
+ }
70
+ case Actions.SET_FILTER: {
71
+ return { ...state, filter: action.payload };
72
+ }
73
+ default:
74
+ return state;
75
+ }
76
+ }
77
+
78
+ export { initialState, treeReducer };
79
+ //# sourceMappingURL=reducers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducers.js","sources":["../../../../../src/browser/ldap-tree-viewer/store/reducers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ :root{--mdc-theme-primary:#6200ee;--mdc-theme-primary-variant:#3700b3;--mdc-theme-on-primary:#fff;--mdc-theme-surface:#fff;--mdc-theme-on-surface:rgba(0,0,0,.87);--mdc-theme-background:#fafafa;--mdc-theme-error:#b00020;--tree-node-height:40px;--tree-indent:24px;--tree-icon-size:24px;--tree-toggle-size:40px;--tree-border-radius:4px;--tree-transition:200ms cubic-bezier(0.4,0,0.2,1)}.ldap-tree-viewer--dark{--mdc-theme-surface:#121212;--mdc-theme-on-surface:hsla(0,0%,100%,.87);--mdc-theme-background:#1e1e1e}.ldap-tree-viewer-container{color:var(--mdc-theme-on-surface);font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;line-height:1.5}.ldap-tree-viewer{background:var(--mdc-theme-surface);border-radius:var(--tree-border-radius);min-height:200px;padding:8px}.mdc-tree-node,.mdc-tree-root{list-style:none;margin:0;padding:0}.mdc-tree-node{user-select:none}.mdc-tree-node__content{align-items:center;border-radius:var(--tree-border-radius);cursor:pointer;display:flex;min-height:var(--tree-node-height);padding:0 8px;position:relative;transition:background-color var(--tree-transition)}.mdc-tree-node__content:hover{background-color:rgba(0,0,0,.04)}.ldap-tree-viewer--dark .mdc-tree-node__content:hover{background-color:hsla(0,0%,100%,.08)}.mdc-tree-node--selected>.mdc-tree-node__content{background-color:rgba(98,0,238,.12)}.ldap-tree-viewer--dark .mdc-tree-node--selected>.mdc-tree-node__content{background-color:rgba(187,134,252,.24)}.mdc-tree-node__toggle{align-items:center;background:transparent;border:none;border-radius:50%;cursor:pointer;display:flex;flex-shrink:0;height:var(--tree-toggle-size);justify-content:center;margin:0;padding:8px;transition:background-color var(--tree-transition);width:var(--tree-toggle-size)}.mdc-tree-node__toggle:hover{background-color:rgba(0,0,0,.04)}.ldap-tree-viewer--dark .mdc-tree-node__toggle:hover{background-color:hsla(0,0%,100%,.08)}.mdc-tree-node__toggle .material-icons{color:var(--mdc-theme-on-surface);font-size:var(--tree-icon-size);transition:transform var(--tree-transition)}.mdc-tree-node--expanded>.mdc-tree-node__content .mdc-tree-node__toggle .material-icons{transform:rotate(0deg)}.mdc-tree-node__spacer{flex-shrink:0;height:var(--tree-toggle-size);width:var(--tree-toggle-size)}.mdc-tree-node__icon{color:rgba(0,0,0,.54);flex-shrink:0;font-size:var(--tree-icon-size);height:var(--tree-icon-size);margin-right:12px;width:var(--tree-icon-size)}.ldap-tree-viewer--dark .mdc-tree-node__icon{color:hsla(0,0%,100%,.7)}.mdc-tree-node--organization>.mdc-tree-node__content .mdc-tree-node__icon{color:#ffa726}.mdc-tree-node--user>.mdc-tree-node__content .mdc-tree-node__icon{color:#42a5f5}.mdc-tree-node--group>.mdc-tree-node__content .mdc-tree-node__icon{color:#66bb6a}.mdc-tree-node__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mdc-tree-node__children{list-style:none;margin:0;overflow:hidden;padding-left:var(--tree-indent)}.mdc-circular-progress{display:inline-block;height:48px;margin-left:auto;width:48px}.mdc-circular-progress--small{height:20px;margin-left:8px;width:20px}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{display:none}.mdc-circular-progress__indeterminate-container{animation:mdc-circular-progress-container-rotate 1568ms linear infinite}@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(1turn)}}.mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(3turn)}}.mdc-circular-progress__circle-clipper{display:inline-flex;height:100%;overflow:hidden;position:relative;width:50%}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite;transform-origin:right center}@keyframes mdc-circular-progress-left-spin{0%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite;left:-100%;transform-origin:left center}@keyframes mdc-circular-progress-right-spin{0%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}.mdc-circular-progress__gap-patch{height:100%;left:47.5%;overflow:hidden;position:absolute;top:0;width:5%}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-450%;width:1000%}.mdc-circular-progress__indeterminate-circle-graphic circle{fill:transparent;stroke:var(--mdc-theme-primary);stroke-linecap:square}.mdc-tree-loading{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;padding:48px 24px}.mdc-tree-loading__text{color:var(--mdc-theme-on-surface);opacity:.6}.mdc-tree-error{align-items:center;background-color:rgba(176,0,32,.08);border-radius:var(--tree-border-radius);color:var(--mdc-theme-error);display:flex;gap:12px;padding:16px}.mdc-tree-error__icon{flex-shrink:0;font-size:24px}.mdc-tree-error__message{flex:1}.material-icons{word-wrap:normal;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;direction:ltr;display:inline-block;font-family:Material Icons;font-size:24px;font-style:normal;font-weight:400;letter-spacing:normal;line-height:1;text-transform:none;white-space:nowrap}
2
+ /*# sourceMappingURL=ldap-tree-viewer.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["styles.css"],"names":[],"mappings":"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","file":"ldap-tree-viewer.css","sourcesContent":["/**\n * LDAP Tree Viewer - Material Design Styles\n */\n\n/* CSS Variables - Material Design tokens */\n:root {\n --mdc-theme-primary: #6200ee;\n --mdc-theme-primary-variant: #3700b3;\n --mdc-theme-on-primary: #ffffff;\n --mdc-theme-surface: #ffffff;\n --mdc-theme-on-surface: rgba(0, 0, 0, 0.87);\n --mdc-theme-background: #fafafa;\n --mdc-theme-error: #b00020;\n\n /* Tree specific */\n --tree-node-height: 40px;\n --tree-indent: 24px;\n --tree-icon-size: 24px;\n --tree-toggle-size: 40px;\n --tree-border-radius: 4px;\n --tree-transition: 200ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* Dark theme */\n.ldap-tree-viewer--dark {\n --mdc-theme-surface: #121212;\n --mdc-theme-on-surface: rgba(255, 255, 255, 0.87);\n --mdc-theme-background: #1e1e1e;\n}\n\n/* Container */\n.ldap-tree-viewer-container {\n font-family:\n 'Roboto',\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: var(--mdc-theme-on-surface);\n}\n\n.ldap-tree-viewer {\n background: var(--mdc-theme-surface);\n border-radius: var(--tree-border-radius);\n padding: 8px;\n min-height: 200px;\n}\n\n/* Tree root */\n.mdc-tree-root {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/* Tree node */\n.mdc-tree-node {\n list-style: none;\n margin: 0;\n padding: 0;\n user-select: none;\n}\n\n.mdc-tree-node__content {\n display: flex;\n align-items: center;\n min-height: var(--tree-node-height);\n padding: 0 8px;\n cursor: pointer;\n border-radius: var(--tree-border-radius);\n transition: background-color var(--tree-transition);\n position: relative;\n}\n\n.mdc-tree-node__content:hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n\n.ldap-tree-viewer--dark .mdc-tree-node__content:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n\n.mdc-tree-node--selected > .mdc-tree-node__content {\n background-color: rgba(98, 0, 238, 0.12);\n}\n\n.ldap-tree-viewer--dark .mdc-tree-node--selected > .mdc-tree-node__content {\n background-color: rgba(187, 134, 252, 0.24);\n}\n\n/* Toggle button */\n.mdc-tree-node__toggle {\n width: var(--tree-toggle-size);\n height: var(--tree-toggle-size);\n padding: 8px;\n margin: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color var(--tree-transition);\n flex-shrink: 0;\n}\n\n.mdc-tree-node__toggle:hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n\n.ldap-tree-viewer--dark .mdc-tree-node__toggle:hover {\n background-color: rgba(255, 255, 255, 0.08);\n}\n\n.mdc-tree-node__toggle .material-icons {\n font-size: var(--tree-icon-size);\n color: var(--mdc-theme-on-surface);\n transition: transform var(--tree-transition);\n}\n\n.mdc-tree-node--expanded\n > .mdc-tree-node__content\n .mdc-tree-node__toggle\n .material-icons {\n transform: rotate(0deg);\n}\n\n/* Spacer for nodes without children */\n.mdc-tree-node__spacer {\n width: var(--tree-toggle-size);\n height: var(--tree-toggle-size);\n flex-shrink: 0;\n}\n\n/* Icon */\n.mdc-tree-node__icon {\n width: var(--tree-icon-size);\n height: var(--tree-icon-size);\n font-size: var(--tree-icon-size);\n margin-right: 12px;\n flex-shrink: 0;\n color: rgba(0, 0, 0, 0.54);\n}\n\n.ldap-tree-viewer--dark .mdc-tree-node__icon {\n color: rgba(255, 255, 255, 0.7);\n}\n\n.mdc-tree-node--organization > .mdc-tree-node__content .mdc-tree-node__icon {\n color: #ffa726;\n}\n\n.mdc-tree-node--user > .mdc-tree-node__content .mdc-tree-node__icon {\n color: #42a5f5;\n}\n\n.mdc-tree-node--group > .mdc-tree-node__content .mdc-tree-node__icon {\n color: #66bb6a;\n}\n\n/* Label */\n.mdc-tree-node__label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n/* Children */\n.mdc-tree-node__children {\n list-style: none;\n margin: 0;\n padding-left: var(--tree-indent);\n overflow: hidden;\n}\n\n/* Loading spinner */\n.mdc-circular-progress {\n display: inline-block;\n width: 48px;\n height: 48px;\n margin-left: auto;\n}\n\n.mdc-circular-progress--small {\n width: 20px;\n height: 20px;\n margin-left: 8px;\n}\n\n.mdc-circular-progress--indeterminate\n .mdc-circular-progress__determinate-container {\n display: none;\n}\n\n.mdc-circular-progress__indeterminate-container {\n animation: mdc-circular-progress-container-rotate 1568ms linear infinite;\n}\n\n@keyframes mdc-circular-progress-container-rotate {\n to {\n transform: rotate(360deg);\n }\n}\n\n.mdc-circular-progress__spinner-layer {\n animation: mdc-circular-progress-spinner-layer-rotate 5332ms\n cubic-bezier(0.4, 0, 0.2, 1) infinite;\n}\n\n@keyframes mdc-circular-progress-spinner-layer-rotate {\n 12.5% {\n transform: rotate(135deg);\n }\n 25% {\n transform: rotate(270deg);\n }\n 37.5% {\n transform: rotate(405deg);\n }\n 50% {\n transform: rotate(540deg);\n }\n 62.5% {\n transform: rotate(675deg);\n }\n 75% {\n transform: rotate(810deg);\n }\n 87.5% {\n transform: rotate(945deg);\n }\n 100% {\n transform: rotate(1080deg);\n }\n}\n\n.mdc-circular-progress__circle-clipper {\n display: inline-flex;\n position: relative;\n width: 50%;\n height: 100%;\n overflow: hidden;\n}\n\n.mdc-circular-progress__circle-clipper\n .mdc-circular-progress__indeterminate-circle-graphic {\n width: 200%;\n}\n\n.mdc-circular-progress__circle-left\n .mdc-circular-progress__indeterminate-circle-graphic {\n animation: mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1)\n infinite;\n transform-origin: right center;\n}\n\n@keyframes mdc-circular-progress-left-spin {\n from {\n transform: rotate(130deg);\n }\n 50% {\n transform: rotate(-5deg);\n }\n to {\n transform: rotate(130deg);\n }\n}\n\n.mdc-circular-progress__circle-right\n .mdc-circular-progress__indeterminate-circle-graphic {\n animation: mdc-circular-progress-right-spin 1333ms\n cubic-bezier(0.4, 0, 0.2, 1) infinite;\n left: -100%;\n transform-origin: left center;\n}\n\n@keyframes mdc-circular-progress-right-spin {\n from {\n transform: rotate(-130deg);\n }\n 50% {\n transform: rotate(5deg);\n }\n to {\n transform: rotate(-130deg);\n }\n}\n\n.mdc-circular-progress__gap-patch {\n position: absolute;\n top: 0;\n left: 47.5%;\n width: 5%;\n height: 100%;\n overflow: hidden;\n}\n\n.mdc-circular-progress__gap-patch\n .mdc-circular-progress__indeterminate-circle-graphic {\n width: 1000%;\n left: -450%;\n}\n\n.mdc-circular-progress__indeterminate-circle-graphic circle {\n fill: transparent;\n stroke: var(--mdc-theme-primary);\n stroke-linecap: square;\n}\n\n/* Loading state */\n.mdc-tree-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n gap: 16px;\n}\n\n.mdc-tree-loading__text {\n color: var(--mdc-theme-on-surface);\n opacity: 0.6;\n}\n\n/* Error state */\n.mdc-tree-error {\n display: flex;\n align-items: center;\n padding: 16px;\n background-color: rgba(176, 0, 32, 0.08);\n border-radius: var(--tree-border-radius);\n color: var(--mdc-theme-error);\n gap: 12px;\n}\n\n.mdc-tree-error__icon {\n font-size: 24px;\n flex-shrink: 0;\n}\n\n.mdc-tree-error__message {\n flex: 1;\n}\n\n/* Material icons fallback */\n.material-icons {\n font-family: 'Material Icons';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n -webkit-font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n}\n"]}