@dropins/storefront-company-management 1.0.0-alpha3000 → 1.0.0-alpha3003

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 (68) hide show
  1. package/api/index.d.ts +0 -1
  2. package/api.js +2 -2
  3. package/api.js.map +1 -1
  4. package/chunks/createCompany.js +1 -1
  5. package/chunks/updateCompany.js +31 -8
  6. package/chunks/updateCompany.js.map +1 -1
  7. package/chunks/validateCompanyEmail.js +3 -3
  8. package/chunks/validateCompanyEmail.js.map +1 -1
  9. package/components/Tree/Tree.d.ts +0 -2
  10. package/components/index.d.ts +0 -3
  11. package/containers/CompanyProfile.js +1 -1
  12. package/containers/CompanyProfile.js.map +1 -1
  13. package/containers/CompanyRegistration.js +1 -1
  14. package/containers/CompanyRegistration.js.map +1 -1
  15. package/containers/index.d.ts +0 -1
  16. package/data/models/company.d.ts +17 -4
  17. package/data/models/index.d.ts +0 -1
  18. package/data/transforms/index.d.ts +0 -1
  19. package/hooks/index.d.ts +0 -3
  20. package/i18n/en_US.json.d.ts +2 -71
  21. package/lib/company-permissions.d.ts +0 -7
  22. package/package.json +1 -1
  23. package/render.js +4 -5
  24. package/render.js.map +1 -1
  25. package/api/companyRoles/createCompanyRole.d.ts +0 -7
  26. package/api/companyRoles/deleteCompanyRole.d.ts +0 -7
  27. package/api/companyRoles/getCompanyAclResources.d.ts +0 -7
  28. package/api/companyRoles/getCompanyRole.d.ts +0 -8
  29. package/api/companyRoles/getCompanyRoles.d.ts +0 -8
  30. package/api/companyRoles/graphql/fragments.d.ts +0 -18
  31. package/api/companyRoles/graphql/index.d.ts +0 -20
  32. package/api/companyRoles/graphql/mutations.d.ts +0 -20
  33. package/api/companyRoles/graphql/queries.d.ts +0 -21
  34. package/api/companyRoles/index.d.ts +0 -27
  35. package/api/companyRoles/isCompanyRoleNameAvailable.d.ts +0 -7
  36. package/api/companyRoles/updateCompanyRole.d.ts +0 -7
  37. package/api/companyRoles/utils.d.ts +0 -11
  38. package/chunks/company-permissions.js +0 -4
  39. package/chunks/company-permissions.js.map +0 -1
  40. package/chunks/fetchUserPermissions.js +0 -27
  41. package/chunks/fetchUserPermissions.js.map +0 -1
  42. package/chunks/isCompanyRoleNameAvailable.js +0 -121
  43. package/chunks/isCompanyRoleNameAvailable.js.map +0 -1
  44. package/chunks/useCompanyContextListener.js +0 -4
  45. package/chunks/useCompanyContextListener.js.map +0 -1
  46. package/chunks/useInLineAlert.js +0 -4
  47. package/chunks/useInLineAlert.js.map +0 -1
  48. package/components/DeleteRoleModal/DeleteRoleModal.d.ts +0 -9
  49. package/components/DeleteRoleModal/index.d.ts +0 -19
  50. package/components/EditRoleAndPermission/EditRoleAndPermission.d.ts +0 -24
  51. package/components/EditRoleAndPermission/index.d.ts +0 -19
  52. package/components/RoleAndPermissionTable/RoleAndPermissionTable.d.ts +0 -20
  53. package/components/RoleAndPermissionTable/index.d.ts +0 -19
  54. package/containers/CompanyUsers/hooks/index.d.ts +0 -19
  55. package/containers/CompanyUsers/hooks/useCompanyContextListener.d.ts +0 -62
  56. package/containers/CompanyUsers/hooks.d.ts +0 -1
  57. package/containers/CompanyUsers/hooks.js +0 -4
  58. package/containers/CompanyUsers/hooks.js.map +0 -1
  59. package/containers/RolesAndPermissions/RolesAndPermissions.d.ts +0 -8
  60. package/containers/RolesAndPermissions/index.d.ts +0 -19
  61. package/containers/RolesAndPermissions.d.ts +0 -3
  62. package/containers/RolesAndPermissions.js +0 -4
  63. package/containers/RolesAndPermissions.js.map +0 -1
  64. package/data/models/company-role.d.ts +0 -48
  65. package/data/transforms/transform-company-roles.d.ts +0 -15
  66. package/hooks/useCompanyRoles.d.ts +0 -27
  67. package/hooks/useUserPermissions.d.ts +0 -12
  68. package/types/api/companyRoles.types.d.ts +0 -137
package/api/index.d.ts CHANGED
@@ -28,5 +28,4 @@ export * from './allowCompanyRegistration';
28
28
  export * from './createCompany';
29
29
  export * from './isCompanyUser';
30
30
  export * from './isCompanyAdmin';
31
- export * from './companyRoles';
32
31
  //# sourceMappingURL=index.d.ts.map
package/api.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{f as m}from"./chunks/fetch-graphql.js";import{g as x,r as I,s as N,a as P,b as U}from"./chunks/fetch-graphql.js";import{f as b}from"./chunks/fetchUserPermissions.js";import{g as H,u as L}from"./chunks/updateCompany.js";import{g as v,v as Q}from"./chunks/validateCompanyEmail.js";import{D as k,S as W,c as Y,g as q}from"./chunks/createCompany.js";import{c as j,g as B}from"./chunks/getCustomerCompany.js";import{a as K,i as V}from"./chunks/isCompanyUser.js";import{G as c,t as l}from"./chunks/isCompanyRoleNameAvailable.js";import{c as Z,d as $,a as ee,g as re,i as ae,u as te}from"./chunks/isCompanyRoleNameAvailable.js";import{a as p}from"./chunks/fetch-error.js";import{a as f}from"./chunks/company-permissions.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/event-bus.js";const R=async e=>{try{const a=await m(c,{variables:e,method:"GET",cache:"no-cache"});return l(a)}catch(a){return p(a)}},T=e=>f(e),S=(e,a)=>{const n=new Set(a),o=r=>{var t;const s=((t=r.children)==null?void 0:t.map(o).filter(i=>i!==null))||[];return n.has(r.id)||s.length>0?{...r,children:s}:null};return e.map(o).filter(r=>r!==null)},_=async(e={})=>({success:!0,config:e}),u=`
3
+ import{f as i}from"./chunks/fetch-graphql.js";import{g,r as E,s as h,a as S,b as T}from"./chunks/fetch-graphql.js";import{f as O,g as A,u as R}from"./chunks/updateCompany.js";import{g as G,v as U}from"./chunks/validateCompanyEmail.js";import{D as H,S as I,c as L,g as M}from"./chunks/createCompany.js";import{c as P,g as Q}from"./chunks/getCustomerCompany.js";import{a as v,i as D}from"./chunks/isCompanyUser.js";import"@dropins/tools/fetch-graphql.js";import"./chunks/fetch-error.js";import"@dropins/tools/event-bus.js";const u=async(r={})=>({success:!0,config:r}),m=`
4
4
  query GET_CUSTOMER_COMPANIES_WITH_ROLES {
5
5
  customer {
6
6
  companies(input: {}) {
@@ -15,5 +15,5 @@ import{f as m}from"./chunks/fetch-graphql.js";import{g as x,r as I,s as N,a as P
15
15
  }
16
16
  }
17
17
  }
18
- `,A=async()=>{var e,a,n;try{const o=await m(u,{method:"POST"});if((e=o.errors)!=null&&e.length)return!1;const r=(a=o.data)==null?void 0:a.customer;if(!r)return!1;const s=((n=r.companies)==null?void 0:n.items)??[];if(!Array.isArray(s)||s.length===0)return!1;const t=r.role;return t?t.id==="0"||typeof t.id=="number"&&t.id===0||t.name==="Company Administrator":!1}catch(o){return console.error("Error checking if customer is company admin:",o),!1}};export{k as DEFAULT_COUNTRY,W as STORE_CONFIG_DEFAULTS,K as allowCompanyRegistration,S as buildPermissionTree,j as companyEnabled,Y as createCompany,Z as createCompanyRole,$ as deleteCompanyRole,m as fetchGraphQl,b as fetchUserPermissions,T as flattenPermissionIds,H as getCompany,ee as getCompanyAclResources,R as getCompanyRole,re as getCompanyRoles,x as getConfig,v as getCountries,B as getCustomerCompany,q as getStoreConfig,_ as initialize,A as isCompanyAdmin,ae as isCompanyRoleNameAvailable,V as isCompanyUser,I as removeFetchGraphQlHeader,N as setEndpoint,P as setFetchGraphQlHeader,U as setFetchGraphQlHeaders,L as updateCompany,te as updateCompanyRole,Q as validateCompanyEmail};
18
+ `,C=async()=>{var r,o,t;try{const a=await i(m,{method:"POST"});if((r=a.errors)!=null&&r.length)return!1;const s=(o=a.data)==null?void 0:o.customer;if(!s)return!1;const n=((t=s.companies)==null?void 0:t.items)??[];if(!Array.isArray(n)||n.length===0)return!1;const e=s.role;return e?e.id==="0"||typeof e.id=="number"&&e.id===0||e.name==="Company Administrator":!1}catch(a){return console.error("Error checking if customer is company admin:",a),!1}};export{H as DEFAULT_COUNTRY,I as STORE_CONFIG_DEFAULTS,v as allowCompanyRegistration,P as companyEnabled,L as createCompany,i as fetchGraphQl,O as fetchUserPermissions,A as getCompany,g as getConfig,G as getCountries,Q as getCustomerCompany,M as getStoreConfig,u as initialize,C as isCompanyAdmin,D as isCompanyUser,E as removeFetchGraphQlHeader,h as setEndpoint,S as setFetchGraphQlHeader,T as setFetchGraphQlHeaders,R as updateCompany,U as validateCompanyEmail};
19
19
  //# sourceMappingURL=api.js.map
package/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["/@dropins/storefront-company-management/src/api/companyRoles/getCompanyRole.ts","/@dropins/storefront-company-management/src/api/companyRoles/utils.ts","/@dropins/storefront-company-management/src/api/initialize/initialize.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/graphql/isCompanyAdmin.graphql.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/isCompanyAdmin.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { GET_COMPANY_ROLE } from './graphql/queries';\nimport { GetCompanyRoleVariables, GetCompanyRoleResponse } from '../../types/api/companyRoles.types';\nimport { CompanyRoleModel } from '../../data/models/company-role';\nimport { transformGetCompanyRoleResponse } from '../../data/transforms/transform-company-roles';\n\n/**\n * Fetch a single company role by ID\n */\nexport const getCompanyRole = async (\n variables: GetCompanyRoleVariables\n): Promise<CompanyRoleModel> => {\n try {\n const response: GetCompanyRoleResponse = await fetchGraphQl(GET_COMPANY_ROLE, {\n variables,\n method: 'GET',\n cache: 'no-cache',\n });\n\n return transformGetCompanyRoleResponse(response);\n } catch (error) {\n return handleNetworkError(error as Error);\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { flattenIdsToArray } from '../../lib/company-permissions';\nimport { CompanyAclResourceModel } from '../../data/models/company-role';\n\n/**\n * Helper function to flatten ACL resources into a list of permission IDs\n */\nexport const flattenPermissionIds = (resources: CompanyAclResourceModel[]): string[] => {\n return flattenIdsToArray(resources);\n};\n\n/**\n * Helper function to build a permission tree from flat permission IDs\n */\nexport const buildPermissionTree = (\n allResources: CompanyAclResourceModel[],\n selectedIds: string[]\n): CompanyAclResourceModel[] => {\n const selectedSet = new Set(selectedIds);\n \n const filterTree = (resource: CompanyAclResourceModel): CompanyAclResourceModel | null => {\n const filteredChildren = resource.children\n ?.map(filterTree)\n .filter((child): child is CompanyAclResourceModel => child !== null) || [];\n \n if (selectedSet.has(resource.id) || filteredChildren.length > 0) {\n return {\n ...resource,\n children: filteredChildren,\n };\n }\n \n return null;\n };\n \n return allResources\n .map(filterTree)\n .filter((resource): resource is CompanyAclResourceModel => resource !== null);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n// import { events } from '@adobe-commerce/event-bus';\n\n\nexport interface CompanyDropinConfig {\n langDefinitions?: Record<string, Record<string, string>>;\n models?: Record<string, any>;\n}\n\nexport const initialize = async (config: CompanyDropinConfig = {}) => {\n return {\n success: true,\n config,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_CUSTOMER_COMPANIES_WITH_ROLES = /* GraphQL */ `\n query GET_CUSTOMER_COMPANIES_WITH_ROLES {\n customer {\n companies(input: {}) {\n items {\n id\n name\n }\n }\n role {\n id\n name\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_CUSTOMER_COMPANIES_WITH_ROLES } from './graphql/isCompanyAdmin.graphql';\n\ninterface CompanyRole {\n id: string;\n name: string;\n}\n\ninterface CompanyBasicInfo {\n id: string;\n name: string;\n}\n\ninterface CustomerCompaniesWithRolesResponse {\n customer: {\n companies: {\n items: CompanyBasicInfo[];\n };\n role: CompanyRole | null;\n } | null;\n}\n\n/**\n * Check if the current authenticated customer is a company administrator in any company\n * @returns Promise<boolean> - true if customer is a company admin in at least one company, false otherwise\n */\nexport const isCompanyAdmin = async (): Promise<boolean> => {\n try {\n const response = await fetchGraphQl<CustomerCompaniesWithRolesResponse>(GET_CUSTOMER_COMPANIES_WITH_ROLES, {\n method: 'POST',\n });\n\n if (response.errors?.length) {\n return false;\n }\n\n const customer = response.data?.customer;\n if (!customer) {\n return false;\n }\n\n // Check if user is part of at least one company\n const companies = customer.companies?.items ?? [];\n if (!Array.isArray(companies) || companies.length === 0) {\n return false;\n }\n\n // Check if user has admin role\n const customerRole = customer.role;\n if (!customerRole) {\n return false;\n }\n\n // Check if user is company administrator by role ID or name\n return customerRole.id === '0' || \n (typeof customerRole.id === 'number' && customerRole.id === 0) ||\n customerRole.name === 'Company Administrator';\n } catch (error) {\n console.error('Error checking if customer is company admin:', error);\n return false;\n }\n};\n"],"names":["getCompanyRole","variables","response","fetchGraphQl","GET_COMPANY_ROLE","transformGetCompanyRoleResponse","error","handleNetworkError","flattenPermissionIds","resources","flattenIdsToArray","buildPermissionTree","allResources","selectedIds","selectedSet","filterTree","resource","filteredChildren","_a","child","initialize","config","GET_CUSTOMER_COMPANIES_WITH_ROLES","isCompanyAdmin","customer","_b","companies","_c","customerRole"],"mappings":"gyBA2Ba,MAAAA,EAAiB,MAC5BC,GAC8B,CAC1B,GAAA,CACI,MAAAC,EAAmC,MAAMC,EAAaC,EAAkB,CAC5E,UAAAH,EACA,OAAQ,MACR,MAAO,UAAA,CACR,EAED,OAAOI,EAAgCH,CAAQ,QACxCI,EAAO,CACd,OAAOC,EAAmBD,CAAc,CAAA,CAE5C,EClBaE,EAAwBC,GAC5BC,EAAkBD,CAAS,EAMvBE,EAAsB,CACjCC,EACAC,IAC8B,CACxB,MAAAC,EAAc,IAAI,IAAID,CAAW,EAEjCE,EAAcC,GAAsE,OACxF,MAAMC,IAAmBC,EAAAF,EAAS,WAAT,YAAAE,EACrB,IAAIH,GACL,OAAQI,GAA4CA,IAAU,QAAS,CAAC,EAE3E,OAAIL,EAAY,IAAIE,EAAS,EAAE,GAAKC,EAAiB,OAAS,EACrD,CACL,GAAGD,EACH,SAAUC,CACZ,EAGK,IACT,EAEO,OAAAL,EACJ,IAAIG,CAAU,EACd,OAAQC,GAAkDA,IAAa,IAAI,CAChF,EC7BaI,EAAa,MAAOC,EAA8B,MACtD,CACL,QAAS,GACT,OAAAA,CACF,GCZWC,EAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EC0BlDC,EAAiB,SAA8B,WACtD,GAAA,CACI,MAAArB,EAAW,MAAMC,EAAiDmB,EAAmC,CACzG,OAAQ,MAAA,CACT,EAEG,IAAAJ,EAAAhB,EAAS,SAAT,MAAAgB,EAAiB,OACZ,MAAA,GAGH,MAAAM,GAAWC,EAAAvB,EAAS,OAAT,YAAAuB,EAAe,SAChC,GAAI,CAACD,EACI,MAAA,GAIT,MAAME,IAAYC,EAAAH,EAAS,YAAT,YAAAG,EAAoB,QAAS,CAAC,EAChD,GAAI,CAAC,MAAM,QAAQD,CAAS,GAAKA,EAAU,SAAW,EAC7C,MAAA,GAIT,MAAME,EAAeJ,EAAS,KAC9B,OAAKI,EAKEA,EAAa,KAAO,KACnB,OAAOA,EAAa,IAAO,UAAYA,EAAa,KAAO,GAC5DA,EAAa,OAAS,wBANpB,SAOFtB,EAAO,CACN,eAAA,MAAM,+CAAgDA,CAAK,EAC5D,EAAA,CAEX"}
1
+ {"version":3,"file":"api.js","sources":["/@dropins/storefront-company-management/src/api/initialize/initialize.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/graphql/isCompanyAdmin.graphql.ts","/@dropins/storefront-company-management/src/api/isCompanyAdmin/isCompanyAdmin.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n// import { events } from '@adobe-commerce/event-bus';\n\n\nexport interface CompanyDropinConfig {\n langDefinitions?: Record<string, Record<string, string>>;\n models?: Record<string, any>;\n}\n\nexport const initialize = async (config: CompanyDropinConfig = {}) => {\n return {\n success: true,\n config,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_CUSTOMER_COMPANIES_WITH_ROLES = /* GraphQL */ `\n query GET_CUSTOMER_COMPANIES_WITH_ROLES {\n customer {\n companies(input: {}) {\n items {\n id\n name\n }\n }\n role {\n id\n name\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n \nimport { fetchGraphQl } from '../fetch-graphql';\nimport { GET_CUSTOMER_COMPANIES_WITH_ROLES } from './graphql/isCompanyAdmin.graphql';\n\ninterface CompanyRole {\n id: string;\n name: string;\n}\n\ninterface CompanyBasicInfo {\n id: string;\n name: string;\n}\n\ninterface CustomerCompaniesWithRolesResponse {\n customer: {\n companies: {\n items: CompanyBasicInfo[];\n };\n role: CompanyRole | null;\n } | null;\n}\n\n/**\n * Check if the current authenticated customer is a company administrator in any company\n * @returns Promise<boolean> - true if customer is a company admin in at least one company, false otherwise\n */\nexport const isCompanyAdmin = async (): Promise<boolean> => {\n try {\n const response = await fetchGraphQl<CustomerCompaniesWithRolesResponse>(GET_CUSTOMER_COMPANIES_WITH_ROLES, {\n method: 'POST',\n });\n\n if (response.errors?.length) {\n return false;\n }\n\n const customer = response.data?.customer;\n if (!customer) {\n return false;\n }\n\n // Check if user is part of at least one company\n const companies = customer.companies?.items ?? [];\n if (!Array.isArray(companies) || companies.length === 0) {\n return false;\n }\n\n // Check if user has admin role\n const customerRole = customer.role;\n if (!customerRole) {\n return false;\n }\n\n // Check if user is company administrator by role ID or name\n return customerRole.id === '0' || \n (typeof customerRole.id === 'number' && customerRole.id === 0) ||\n customerRole.name === 'Company Administrator';\n } catch (error) {\n console.error('Error checking if customer is company admin:', error);\n return false;\n }\n};\n"],"names":["initialize","config","GET_CUSTOMER_COMPANIES_WITH_ROLES","isCompanyAdmin","response","fetchGraphQl","_a","customer","_b","companies","_c","customerRole","error"],"mappings":"ygBAyBO,MAAMA,EAAa,MAAOC,EAA8B,MACtD,CACL,QAAS,GACT,OAAAA,CACF,GCZWC,EAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EC0BlDC,EAAiB,SAA8B,WACtD,GAAA,CACI,MAAAC,EAAW,MAAMC,EAAiDH,EAAmC,CACzG,OAAQ,MAAA,CACT,EAEG,IAAAI,EAAAF,EAAS,SAAT,MAAAE,EAAiB,OACZ,MAAA,GAGH,MAAAC,GAAWC,EAAAJ,EAAS,OAAT,YAAAI,EAAe,SAChC,GAAI,CAACD,EACI,MAAA,GAIT,MAAME,IAAYC,EAAAH,EAAS,YAAT,YAAAG,EAAoB,QAAS,CAAC,EAChD,GAAI,CAAC,MAAM,QAAQD,CAAS,GAAKA,EAAU,SAAW,EAC7C,MAAA,GAIT,MAAME,EAAeJ,EAAS,KAC9B,OAAKI,EAKEA,EAAa,KAAO,KACnB,OAAOA,EAAa,IAAO,UAAYA,EAAa,KAAO,GAC5DA,EAAa,OAAS,wBANpB,SAOFC,EAAO,CACN,eAAA,MAAM,+CAAgDA,CAAK,EAC5D,EAAA,CAEX"}
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{h as c,a}from"./fetch-error.js";import{f as s}from"./fetch-graphql.js";import{a as l}from"./validateCompanyEmail.js";const g=`
3
+ import{h as c,a}from"./fetch-error.js";import{f as s}from"./fetch-graphql.js";import{t as l}from"./validateCompanyEmail.js";const g=`
4
4
  query getStoreConfig {
5
5
  storeConfig {
6
6
  default_country
@@ -1,6 +1,29 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{h as _,a as m}from"./fetch-error.js";import{f as A}from"./fetchUserPermissions.js";import{t as c}from"./validateCompanyEmail.js";import{f as y}from"./fetch-graphql.js";const f=`
3
+ import{h as c,a as l}from"./fetch-error.js";import{f as h,i as M,a as A}from"./validateCompanyEmail.js";import{f as g}from"./fetch-graphql.js";const f=`
4
+ query GET_CUSTOMER_ROLE_PERMISSIONS {
5
+ customer {
6
+ role {
7
+ id
8
+ name
9
+ permissions {
10
+ id
11
+ children {
12
+ id
13
+ children {
14
+ id
15
+ children {
16
+ id
17
+ children { id }
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+ status
24
+ }
25
+ }
26
+ `,y=async()=>await g(f,{method:"GET",cache:"no-cache"}).then(e=>{var t,d,n;if((t=e.errors)!=null&&t.length)return c(e.errors);const a=(n=(d=e==null?void 0:e.data)==null?void 0:d.customer)==null?void 0:n.role,r=h((a==null?void 0:a.permissions)||[]);return M(a)&&["Magento_Company::view_account","Magento_Company::edit_account","Magento_Company::view_address","Magento_Company::edit_address","Magento_Company::contacts","Magento_Company::payment_information","Magento_Company::shipping_information"].forEach(s=>r.add(s)),{allowedIds:r,roleResponse:e}}).catch(l),E=`
4
27
  fragment COMPANY_LEGAL_ADDRESS_FRAGMENT on CompanyLegalAddress {
5
28
  street
6
29
  city
@@ -22,20 +45,20 @@ import{h as _,a as m}from"./fetch-error.js";import{f as A}from"./fetchUserPermis
22
45
  vat_tax_id
23
46
  reseller_id
24
47
  }
25
- `,h=`
48
+ `,p=`
26
49
  fragment COMPANY_SALES_REPRESENTATIVE_FRAGMENT on CompanySalesRepresentative {
27
50
  firstname
28
51
  lastname
29
52
  email
30
53
  }
31
- `,M=`
54
+ `,u=`
32
55
  fragment COMPANY_ADMIN_FRAGMENT on Customer {
33
56
  firstname
34
57
  lastname
35
58
  email
36
59
  job_title
37
60
  }
38
- `,C=e=>{const a=e.has("Magento_Company::view_account"),s=e.has("Magento_Company::view_address"),r=e.has("Magento_Company::contacts"),t=e.has("Magento_Company::payment_information"),l=e.has("Magento_Company::shipping_information"),o=[],d=[];return a&&(o.push("...COMPANY_BASIC_INFO_FRAGMENT"),d.push(N)),s&&(o.push("legal_address { ...COMPANY_LEGAL_ADDRESS_FRAGMENT }"),d.push(f)),r&&(o.push("company_admin { ...COMPANY_ADMIN_FRAGMENT }"),o.push("sales_representative { ...COMPANY_SALES_REPRESENTATIVE_FRAGMENT }"),d.push(M),d.push(h)),t&&o.push("available_payment_methods { code title }"),l&&o.push("available_shipping_methods { code title }"),{fields:o,usedFragments:d}},p=e=>{const{fields:a,usedFragments:s}=C(e);return a.length===0?`
61
+ `,C=e=>{const a=e.has("Magento_Company::view_account"),r=e.has("Magento_Company::view_address"),o=e.has("Magento_Company::contacts"),t=e.has("Magento_Company::payment_information"),d=e.has("Magento_Company::shipping_information"),n=[],s=[];return a&&(n.push("...COMPANY_BASIC_INFO_FRAGMENT"),s.push(N)),r&&(n.push("legal_address { ...COMPANY_LEGAL_ADDRESS_FRAGMENT }"),s.push(E)),o&&(n.push("company_admin { ...COMPANY_ADMIN_FRAGMENT }"),n.push("sales_representative { ...COMPANY_SALES_REPRESENTATIVE_FRAGMENT }"),s.push(u),s.push(p)),t&&n.push("available_payment_methods { code title }"),d&&n.push("available_shipping_methods { code title }"),{fields:n,usedFragments:s}},T=e=>{const{fields:a,usedFragments:r}=C(e);return a.length===0?`
39
62
  query GET_COMPANY_DYNAMIC {
40
63
  company { __typename }
41
64
  }
@@ -47,8 +70,8 @@ import{h as _,a as m}from"./fetch-error.js";import{f as A}from"./fetchUserPermis
47
70
  }
48
71
  }
49
72
  `}
50
- ${s.join(`
51
- `)}`},E=e=>{const{fields:a,usedFragments:s}=C(e);return a.length===0?`
73
+ ${r.join(`
74
+ `)}`},I=e=>{const{fields:a,usedFragments:r}=C(e);return a.length===0?`
52
75
  mutation UPDATE_COMPANY_DYNAMIC($input: CompanyUpdateInput!) {
53
76
  updateCompany(input: $input) {
54
77
  company { __typename }
@@ -64,6 +87,6 @@ ${s.join(`
64
87
  }
65
88
  }
66
89
  `}
67
- ${s.join(`
68
- `)}`},O=async()=>await A().then(async({allowedIds:e,roleResponse:a})=>{var o,d,i;const s=p(e),r=await y(s,{method:"GET",cache:"no-cache"});if((o=r.errors)!=null&&o.length)return _(r.errors);const t=(d=r==null?void 0:r.data)==null?void 0:d.company;return t&&Object.keys(t).some(g=>g!=="__typename")?(r.data.customer=(i=a==null?void 0:a.data)==null?void 0:i.customer,c(r)):null}).catch(m),Y=async e=>await A().then(async({allowedIds:a,roleResponse:s})=>{var o,d;const r=E(a),t={};if(e.name!==void 0&&(t.company_name=e.name),e.email!==void 0&&(t.company_email=e.email),e.legalName!==void 0&&(t.legal_name=e.legalName),e.vatTaxId!==void 0&&(t.vat_tax_id=e.vatTaxId),e.resellerId!==void 0&&(t.reseller_id=e.resellerId),e.legalAddress!==void 0&&a.has("Magento_Company::edit_address")){let i;Array.isArray(e.legalAddress.street)?(i=[...e.legalAddress.street],e.legalAddress.street2&&i.push(e.legalAddress.street2)):i=[e.legalAddress.street,e.legalAddress.street2].filter(n=>typeof n=="string"&&n.trim().length>0),i=i.filter(n=>n&&typeof n=="string"&&n.trim().length>0);let g;if(e.legalAddress.region&&typeof e.legalAddress.region=="object"){const n=e.legalAddress.region;n.region===n.regionCode?g={region:n.region,region_code:n.regionCode,region_id:0}:g={region:n.region,region_code:n.regionCode}}else e.legalAddress.regionCode&&e.legalAddress.region!==e.legalAddress.regionCode?g={region:e.legalAddress.region||e.legalAddress.regionCode,region_code:e.legalAddress.regionCode}:e.legalAddress.region&&(g={region:e.legalAddress.region,region_code:e.legalAddress.region,region_id:0});t.legal_address={street:i,city:e.legalAddress.city,region:g,country_id:e.legalAddress.countryCode,postcode:e.legalAddress.postcode,telephone:e.legalAddress.telephone}}const l=await y(r,{method:"POST",variables:{input:t}});return(o=l.errors)!=null&&o.length?_(l.errors):(l.data.customer=(d=s==null?void 0:s.data)==null?void 0:d.customer,c(l))}).catch(m);export{O as g,Y as u};
90
+ ${r.join(`
91
+ `)}`},Y=async()=>await y().then(async({allowedIds:e,roleResponse:a})=>{var n,s,_;const r=T(e),o=await g(r,{method:"GET",cache:"no-cache"});if((n=o.errors)!=null&&n.length)return c(o.errors);const t=(s=o==null?void 0:o.data)==null?void 0:s.company;return t&&Object.keys(t).some(m=>m!=="__typename")?(o.data.customer=(_=a==null?void 0:a.data)==null?void 0:_.customer,A(o)):null}).catch(l),G=async e=>await y().then(async({allowedIds:a,roleResponse:r})=>{var n,s;const o=I(a),t={};if(e.name!==void 0&&(t.company_name=e.name),e.email!==void 0&&(t.company_email=e.email),e.legalName!==void 0&&(t.legal_name=e.legalName),e.vatTaxId!==void 0&&(t.vat_tax_id=e.vatTaxId),e.resellerId!==void 0&&(t.reseller_id=e.resellerId),e.legalAddress!==void 0&&a.has("Magento_Company::edit_address")){let _;Array.isArray(e.legalAddress.street)?(_=[...e.legalAddress.street],e.legalAddress.street2&&_.push(e.legalAddress.street2)):_=[e.legalAddress.street,e.legalAddress.street2].filter(i=>typeof i=="string"&&i.trim().length>0),_=_.filter(i=>i&&typeof i=="string"&&i.trim().length>0);let m;if(e.legalAddress.region&&typeof e.legalAddress.region=="object"){const i=e.legalAddress.region;i.region===i.regionCode?m={region:i.region,region_code:i.regionCode,region_id:0}:m={region:i.region,region_code:i.regionCode}}else e.legalAddress.regionCode&&e.legalAddress.region!==e.legalAddress.regionCode?m={region:e.legalAddress.region||e.legalAddress.regionCode,region_code:e.legalAddress.regionCode}:e.legalAddress.region&&(m={region:e.legalAddress.region,region_code:e.legalAddress.region,region_id:0});t.legal_address={street:_,city:e.legalAddress.city,region:m,country_id:e.legalAddress.countryCode,postcode:e.legalAddress.postcode,telephone:e.legalAddress.telephone}}const d=await g(o,{method:"POST",variables:{input:t}});return(n=d.errors)!=null&&n.length?c(d.errors):(d.data.customer=(s=r==null?void 0:r.data)==null?void 0:s.customer,A(d))}).catch(l);export{y as f,Y as g,G as u};
69
92
  //# sourceMappingURL=updateCompany.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateCompany.js","sources":["/@dropins/storefront-company-management/src/api/graphql/CompanyFragment.graphql.ts","/@dropins/storefront-company-management/src/api/graphql/buildCompanyQueries.ts","/@dropins/storefront-company-management/src/api/getCompany/getCompany.ts","/@dropins/storefront-company-management/src/api/updateCompany/updateCompany.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const COMPANY_LEGAL_ADDRESS_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_LEGAL_ADDRESS_FRAGMENT on CompanyLegalAddress {\n street\n city\n region {\n region\n region_code\n region_id\n }\n country_code\n postcode\n telephone\n }\n`;\n\nexport const COMPANY_BASIC_INFO_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_BASIC_INFO_FRAGMENT on Company {\n id\n name\n email\n legal_name\n vat_tax_id\n reseller_id\n }\n`;\n\nexport const COMPANY_SALES_REPRESENTATIVE_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_SALES_REPRESENTATIVE_FRAGMENT on CompanySalesRepresentative {\n firstname\n lastname\n email\n }\n`;\n\nexport const COMPANY_ADMIN_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_ADMIN_FRAGMENT on Customer {\n firstname\n lastname\n email\n job_title\n }\n`;\n\nexport const COMPANY_FULL_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_FULL_FRAGMENT on Company {\n ...COMPANY_BASIC_INFO_FRAGMENT\n legal_address {\n ...COMPANY_LEGAL_ADDRESS_FRAGMENT\n }\n company_admin {\n ...COMPANY_ADMIN_FRAGMENT\n }\n sales_representative {\n ...COMPANY_SALES_REPRESENTATIVE_FRAGMENT\n }\n available_payment_methods {\n code\n title\n }\n available_shipping_methods {\n code\n title\n }\n }\n ${COMPANY_BASIC_INFO_FRAGMENT}\n ${COMPANY_LEGAL_ADDRESS_FRAGMENT}\n ${COMPANY_ADMIN_FRAGMENT}\n ${COMPANY_SALES_REPRESENTATIVE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport {\n COMPANY_BASIC_INFO_FRAGMENT,\n COMPANY_LEGAL_ADDRESS_FRAGMENT,\n COMPANY_ADMIN_FRAGMENT,\n COMPANY_SALES_REPRESENTATIVE_FRAGMENT,\n} from './CompanyFragment.graphql';\n\n/**\n * Builds company fields based on user permissions\n */\nconst buildCompanyFields = (allowed: Set<string>): { fields: string[]; usedFragments: string[] } => {\n const wantProfile = allowed.has('Magento_Company::view_account');\n const wantAddress = allowed.has('Magento_Company::view_address');\n const wantContacts = allowed.has('Magento_Company::contacts');\n const wantPayment = allowed.has('Magento_Company::payment_information');\n const wantShipping = allowed.has('Magento_Company::shipping_information');\n\n const fields: string[] = [];\n const usedFragments: string[] = [];\n\n if (wantProfile) {\n fields.push('...COMPANY_BASIC_INFO_FRAGMENT');\n usedFragments.push(COMPANY_BASIC_INFO_FRAGMENT);\n }\n if (wantAddress) {\n fields.push(`legal_address { ...COMPANY_LEGAL_ADDRESS_FRAGMENT }`);\n usedFragments.push(COMPANY_LEGAL_ADDRESS_FRAGMENT);\n }\n if (wantContacts) {\n fields.push(`company_admin { ...COMPANY_ADMIN_FRAGMENT }`);\n fields.push(`sales_representative { ...COMPANY_SALES_REPRESENTATIVE_FRAGMENT }`);\n usedFragments.push(COMPANY_ADMIN_FRAGMENT);\n usedFragments.push(COMPANY_SALES_REPRESENTATIVE_FRAGMENT);\n }\n if (wantPayment) {\n fields.push(`available_payment_methods { code title }`);\n }\n if (wantShipping) {\n fields.push(`available_shipping_methods { code title }`);\n }\n\n return { fields, usedFragments };\n};\n\n/**\n * Builds a dynamic company query based on user permissions\n */\nexport const buildCompanyQuery = (allowed: Set<string>): string => {\n const { fields, usedFragments } = buildCompanyFields(allowed);\n\n // If no allowed company fields, still query company with __typename to keep response shape\n if (fields.length === 0) {\n return `\n query GET_COMPANY_DYNAMIC {\n company { __typename }\n }\n `;\n }\n\n const query = `\n query GET_COMPANY_DYNAMIC {\n company {\n ${fields.join('\\n ')}\n }\n }\n `;\n\n return `${query}\\n${usedFragments.join('\\n')}`;\n};\n\n/**\n * Builds a dynamic company update mutation based on user permissions\n */\nexport const buildUpdateCompanyMutation = (allowed: Set<string>): string => {\n const { fields, usedFragments } = buildCompanyFields(allowed);\n\n // If no allowed company fields, still query company with __typename to keep response shape\n if (fields.length === 0) {\n return `\n mutation UPDATE_COMPANY_DYNAMIC($input: CompanyUpdateInput!) {\n updateCompany(input: $input) {\n company { __typename }\n }\n }\n `;\n }\n\n const mutation = `\n mutation UPDATE_COMPANY_DYNAMIC($input: CompanyUpdateInput!) {\n updateCompany(input: $input) {\n company {\n ${fields.join('\\n ')}\n }\n }\n }\n `;\n\n return `${mutation}\\n${usedFragments.join('\\n')}`;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { handleNetworkError } from '../../lib/network-error';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { transformCompany } from '../../data/transforms';\nimport { CompanyModel } from '../../data/models/company';\nimport { getCompanyResponse } from '../../types/api/getCompany.types';\nimport { fetchUserPermissions } from '../fetchUserPermissions';\nimport { buildCompanyQuery } from '../graphql/buildCompanyQueries';\nimport { handleFetchError } from '../../lib/fetch-error';\n\nexport const getCompany = async (): Promise<CompanyModel | null> => {\n return await fetchUserPermissions()\n .then(async ({ allowedIds, roleResponse }) => {\n // Build a company query that requests only allowed fields\n const GET_COMPANY_DYNAMIC = buildCompanyQuery(allowedIds);\n\n // Fetch company with dynamic selection\n const companyResponse: getCompanyResponse = await fetchGraphQl(GET_COMPANY_DYNAMIC, { method: 'GET', cache: 'no-cache' });\n if (companyResponse.errors?.length) return handleFetchError(companyResponse.errors);\n\n const companyNode: any = companyResponse?.data?.company;\n const hasAnyCompanyField = companyNode && Object.keys(companyNode).some((k) => k !== '__typename');\n if (!hasAnyCompanyField) {\n return null;\n }\n\n // Merge back minimal customer role info so transform can compute flags\n (companyResponse as any).data.customer = roleResponse?.data?.customer;\n\n return transformCompany(companyResponse);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { handleNetworkError } from '../../lib/network-error';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { transformCompany } from '../../data/transforms';\nimport { CompanyModel } from '../../data/models/company';\nimport { updateCompanyResponse, UpdateCompanyDto } from '../../types';\nimport { fetchUserPermissions } from '../fetchUserPermissions';\nimport { buildUpdateCompanyMutation } from '../graphql/buildCompanyQueries';\n\n\nexport const updateCompany = async (input: UpdateCompanyDto): Promise<CompanyModel> => {\n return await fetchUserPermissions()\n .then(async ({ allowedIds, roleResponse }) => {\n // Build a dynamic mutation that requests only allowed fields in response\n const UPDATE_COMPANY_DYNAMIC = buildUpdateCompanyMutation(allowedIds);\n\n // Transform input (keep original logic for what to send)\n const transformedInput: Record<string, unknown> = {};\n \n // Map frontend field names to GraphQL schema field names\n if (input.name !== undefined) {\n transformedInput.company_name = input.name;\n }\n if (input.email !== undefined) {\n transformedInput.company_email = input.email;\n }\n if (input.legalName !== undefined) {\n transformedInput.legal_name = input.legalName;\n }\n if (input.vatTaxId !== undefined) {\n transformedInput.vat_tax_id = input.vatTaxId;\n }\n if (input.resellerId !== undefined) {\n transformedInput.reseller_id = input.resellerId;\n }\n \n // Transform legal address (only if user has edit_address permission)\n if (input.legalAddress !== undefined && allowedIds.has('Magento_Company::edit_address')) {\n // Handle street field - ensure it's always a flat array of strings\n let streetArray: string[];\n if (Array.isArray(input.legalAddress.street)) {\n // If street is already an array, use it directly and add street_2 if present\n streetArray = [...input.legalAddress.street];\n if (input.legalAddress.street2) {\n streetArray.push(input.legalAddress.street2);\n }\n } else {\n // If street is a string, create array normally with type guard\n streetArray = [input.legalAddress.street, input.legalAddress.street2].filter(\n (s): s is string => typeof s === 'string' && s.trim().length > 0\n );\n }\n \n // Remove any empty strings and ensure all elements are strings\n streetArray = streetArray.filter(street => street && typeof street === 'string' && street.trim().length > 0);\n \n // Handle region - different approaches for dropdown vs custom regions\n let regionValue: { region: string; region_code: string; region_id?: number } | undefined;\n if (input.legalAddress.region && typeof input.legalAddress.region === 'object') {\n const regionObj = input.legalAddress.region;\n \n // Check if this is a custom region (region === regionCode) or predefined region\n if (regionObj.region === regionObj.regionCode) {\n // Custom region - send as object with region_id: 0\n regionValue = {\n region: regionObj.region,\n region_code: regionObj.regionCode,\n region_id: 0\n };\n } else {\n // Predefined region - send as object\n regionValue = {\n region: regionObj.region,\n region_code: regionObj.regionCode,\n };\n }\n } else if (input.legalAddress.regionCode && input.legalAddress.region !== input.legalAddress.regionCode) {\n // If we have different region and regionCode (dropdown case)\n regionValue = {\n region: input.legalAddress.region || input.legalAddress.regionCode,\n region_code: input.legalAddress.regionCode,\n };\n } else if (input.legalAddress.region) {\n // If we only have region string (fallback case)\n regionValue = {\n region: input.legalAddress.region,\n region_code: input.legalAddress.region,\n region_id: 0\n };\n }\n \n transformedInput.legal_address = {\n street: streetArray,\n city: input.legalAddress.city,\n region: regionValue,\n country_id: input.legalAddress.countryCode, // GraphQL expects country_id, not countryCode\n postcode: input.legalAddress.postcode,\n telephone: input.legalAddress.telephone,\n };\n }\n\n // Execute the dynamic mutation\n const response: updateCompanyResponse = await fetchGraphQl(UPDATE_COMPANY_DYNAMIC, {\n method: 'POST',\n variables: { input: transformedInput },\n });\n\n if (response.errors?.length) return handleFetchError(response.errors);\n\n // Merge back minimal customer role info so transform can compute flags\n (response as any).data.customer = roleResponse?.data?.customer;\n\n return transformCompany(response);\n })\n .catch(handleNetworkError);\n};\n"],"names":["COMPANY_LEGAL_ADDRESS_FRAGMENT","COMPANY_BASIC_INFO_FRAGMENT","COMPANY_SALES_REPRESENTATIVE_FRAGMENT","COMPANY_ADMIN_FRAGMENT","buildCompanyFields","allowed","wantProfile","wantAddress","wantContacts","wantPayment","wantShipping","fields","usedFragments","buildCompanyQuery","buildUpdateCompanyMutation","getCompany","fetchUserPermissions","allowedIds","roleResponse","GET_COMPANY_DYNAMIC","companyResponse","fetchGraphQl","_a","handleFetchError","companyNode","_b","k","_c","transformCompany","handleNetworkError","updateCompany","input","UPDATE_COMPANY_DYNAMIC","transformedInput","streetArray","s","street","regionValue","regionObj","response"],"mappings":"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"}
1
+ {"version":3,"file":"updateCompany.js","sources":["/@dropins/storefront-company-management/src/api/fetchUserPermissions/graphql/getCustomerRole.graphql.ts","/@dropins/storefront-company-management/src/api/fetchUserPermissions/fetchUserPermissions.ts","/@dropins/storefront-company-management/src/api/graphql/CompanyFragment.graphql.ts","/@dropins/storefront-company-management/src/api/graphql/buildCompanyQueries.ts","/@dropins/storefront-company-management/src/api/getCompany/getCompany.ts","/@dropins/storefront-company-management/src/api/updateCompany/updateCompany.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const GET_CUSTOMER_ROLE_PERMISSIONS = /* GraphQL */ `\n query GET_CUSTOMER_ROLE_PERMISSIONS {\n customer {\n role {\n id\n name\n permissions {\n id\n children {\n id\n children {\n id\n children {\n id\n children { id }\n }\n }\n }\n }\n }\n status\n }\n }\n`;\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { handleNetworkError } from '../../lib/network-error';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { GET_CUSTOMER_ROLE_PERMISSIONS } from './graphql/getCustomerRole.graphql';\nimport { flattenIds, isCompanyAdministrator } from '../../lib/company-permissions';\n\n/**\n * Fetches user permissions and returns both the allowed permission IDs and the role response\n * This is a general-purpose API function that can be used across the application\n */\nexport const fetchUserPermissions = async (): Promise<{ allowedIds: Set<string>; roleResponse: any }> => {\n return await fetchGraphQl(GET_CUSTOMER_ROLE_PERMISSIONS, { \n method: 'GET', \n cache: 'no-cache' \n })\n .then((roleResponse: any) => {\n if (roleResponse.errors?.length) {\n return handleFetchError(roleResponse.errors);\n }\n\n const role = roleResponse?.data?.customer?.role;\n const allowedIds = flattenIds(role?.permissions || []);\n \n // Treat Company Administrator as having all permissions even if the permissions tree is empty\n const isAdmin = isCompanyAdministrator(role);\n if (isAdmin) {\n [\n 'Magento_Company::view_account',\n 'Magento_Company::edit_account',\n 'Magento_Company::view_address',\n 'Magento_Company::edit_address',\n 'Magento_Company::contacts',\n 'Magento_Company::payment_information',\n 'Magento_Company::shipping_information',\n ].forEach((id) => allowedIds.add(id));\n }\n\n return { allowedIds, roleResponse };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const COMPANY_LEGAL_ADDRESS_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_LEGAL_ADDRESS_FRAGMENT on CompanyLegalAddress {\n street\n city\n region {\n region\n region_code\n region_id\n }\n country_code\n postcode\n telephone\n }\n`;\n\nexport const COMPANY_BASIC_INFO_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_BASIC_INFO_FRAGMENT on Company {\n id\n name\n email\n legal_name\n vat_tax_id\n reseller_id\n }\n`;\n\nexport const COMPANY_SALES_REPRESENTATIVE_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_SALES_REPRESENTATIVE_FRAGMENT on CompanySalesRepresentative {\n firstname\n lastname\n email\n }\n`;\n\nexport const COMPANY_ADMIN_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_ADMIN_FRAGMENT on Customer {\n firstname\n lastname\n email\n job_title\n }\n`;\n\nexport const COMPANY_FULL_FRAGMENT = /* GraphQL */ `\n fragment COMPANY_FULL_FRAGMENT on Company {\n ...COMPANY_BASIC_INFO_FRAGMENT\n legal_address {\n ...COMPANY_LEGAL_ADDRESS_FRAGMENT\n }\n company_admin {\n ...COMPANY_ADMIN_FRAGMENT\n }\n sales_representative {\n ...COMPANY_SALES_REPRESENTATIVE_FRAGMENT\n }\n available_payment_methods {\n code\n title\n }\n available_shipping_methods {\n code\n title\n }\n }\n ${COMPANY_BASIC_INFO_FRAGMENT}\n ${COMPANY_LEGAL_ADDRESS_FRAGMENT}\n ${COMPANY_ADMIN_FRAGMENT}\n ${COMPANY_SALES_REPRESENTATIVE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport {\n COMPANY_BASIC_INFO_FRAGMENT,\n COMPANY_LEGAL_ADDRESS_FRAGMENT,\n COMPANY_ADMIN_FRAGMENT,\n COMPANY_SALES_REPRESENTATIVE_FRAGMENT,\n} from './CompanyFragment.graphql';\n\n/**\n * Builds company fields based on user permissions\n */\nconst buildCompanyFields = (allowed: Set<string>): { fields: string[]; usedFragments: string[] } => {\n const wantProfile = allowed.has('Magento_Company::view_account');\n const wantAddress = allowed.has('Magento_Company::view_address');\n const wantContacts = allowed.has('Magento_Company::contacts');\n const wantPayment = allowed.has('Magento_Company::payment_information');\n const wantShipping = allowed.has('Magento_Company::shipping_information');\n\n const fields: string[] = [];\n const usedFragments: string[] = [];\n\n if (wantProfile) {\n fields.push('...COMPANY_BASIC_INFO_FRAGMENT');\n usedFragments.push(COMPANY_BASIC_INFO_FRAGMENT);\n }\n if (wantAddress) {\n fields.push(`legal_address { ...COMPANY_LEGAL_ADDRESS_FRAGMENT }`);\n usedFragments.push(COMPANY_LEGAL_ADDRESS_FRAGMENT);\n }\n if (wantContacts) {\n fields.push(`company_admin { ...COMPANY_ADMIN_FRAGMENT }`);\n fields.push(`sales_representative { ...COMPANY_SALES_REPRESENTATIVE_FRAGMENT }`);\n usedFragments.push(COMPANY_ADMIN_FRAGMENT);\n usedFragments.push(COMPANY_SALES_REPRESENTATIVE_FRAGMENT);\n }\n if (wantPayment) {\n fields.push(`available_payment_methods { code title }`);\n }\n if (wantShipping) {\n fields.push(`available_shipping_methods { code title }`);\n }\n\n return { fields, usedFragments };\n};\n\n/**\n * Builds a dynamic company query based on user permissions\n */\nexport const buildCompanyQuery = (allowed: Set<string>): string => {\n const { fields, usedFragments } = buildCompanyFields(allowed);\n\n // If no allowed company fields, still query company with __typename to keep response shape\n if (fields.length === 0) {\n return `\n query GET_COMPANY_DYNAMIC {\n company { __typename }\n }\n `;\n }\n\n const query = `\n query GET_COMPANY_DYNAMIC {\n company {\n ${fields.join('\\n ')}\n }\n }\n `;\n\n return `${query}\\n${usedFragments.join('\\n')}`;\n};\n\n/**\n * Builds a dynamic company update mutation based on user permissions\n */\nexport const buildUpdateCompanyMutation = (allowed: Set<string>): string => {\n const { fields, usedFragments } = buildCompanyFields(allowed);\n\n // If no allowed company fields, still query company with __typename to keep response shape\n if (fields.length === 0) {\n return `\n mutation UPDATE_COMPANY_DYNAMIC($input: CompanyUpdateInput!) {\n updateCompany(input: $input) {\n company { __typename }\n }\n }\n `;\n }\n\n const mutation = `\n mutation UPDATE_COMPANY_DYNAMIC($input: CompanyUpdateInput!) {\n updateCompany(input: $input) {\n company {\n ${fields.join('\\n ')}\n }\n }\n }\n `;\n\n return `${mutation}\\n${usedFragments.join('\\n')}`;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { handleNetworkError } from '../../lib/network-error';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { transformCompany } from '../../data/transforms';\nimport { CompanyModel } from '../../data/models/company';\nimport { getCompanyResponse } from '../../types/api/getCompany.types';\nimport { fetchUserPermissions } from '../fetchUserPermissions';\nimport { buildCompanyQuery } from '../graphql/buildCompanyQueries';\nimport { handleFetchError } from '../../lib/fetch-error';\n\nexport const getCompany = async (): Promise<CompanyModel | null> => {\n return await fetchUserPermissions()\n .then(async ({ allowedIds, roleResponse }) => {\n // Build a company query that requests only allowed fields\n const GET_COMPANY_DYNAMIC = buildCompanyQuery(allowedIds);\n\n // Fetch company with dynamic selection\n const companyResponse: getCompanyResponse = await fetchGraphQl(GET_COMPANY_DYNAMIC, { method: 'GET', cache: 'no-cache' });\n if (companyResponse.errors?.length) return handleFetchError(companyResponse.errors);\n\n const companyNode: any = companyResponse?.data?.company;\n const hasAnyCompanyField = companyNode && Object.keys(companyNode).some((k) => k !== '__typename');\n if (!hasAnyCompanyField) {\n return null;\n }\n\n // Merge back minimal customer role info so transform can compute flags\n (companyResponse as any).data.customer = roleResponse?.data?.customer;\n\n return transformCompany(companyResponse);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { handleNetworkError } from '../../lib/network-error';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { transformCompany } from '../../data/transforms';\nimport { CompanyModel } from '../../data/models/company';\nimport { updateCompanyResponse, UpdateCompanyDto } from '../../types';\nimport { fetchUserPermissions } from '../fetchUserPermissions';\nimport { buildUpdateCompanyMutation } from '../graphql/buildCompanyQueries';\n\n\nexport const updateCompany = async (input: UpdateCompanyDto): Promise<CompanyModel> => {\n return await fetchUserPermissions()\n .then(async ({ allowedIds, roleResponse }) => {\n // Build a dynamic mutation that requests only allowed fields in response\n const UPDATE_COMPANY_DYNAMIC = buildUpdateCompanyMutation(allowedIds);\n\n // Transform input (keep original logic for what to send)\n const transformedInput: Record<string, unknown> = {};\n \n // Map frontend field names to GraphQL schema field names\n if (input.name !== undefined) {\n transformedInput.company_name = input.name;\n }\n if (input.email !== undefined) {\n transformedInput.company_email = input.email;\n }\n if (input.legalName !== undefined) {\n transformedInput.legal_name = input.legalName;\n }\n if (input.vatTaxId !== undefined) {\n transformedInput.vat_tax_id = input.vatTaxId;\n }\n if (input.resellerId !== undefined) {\n transformedInput.reseller_id = input.resellerId;\n }\n \n // Transform legal address (only if user has edit_address permission)\n if (input.legalAddress !== undefined && allowedIds.has('Magento_Company::edit_address')) {\n // Handle street field - ensure it's always a flat array of strings\n let streetArray: string[];\n if (Array.isArray(input.legalAddress.street)) {\n // If street is already an array, use it directly and add street_2 if present\n streetArray = [...input.legalAddress.street];\n if (input.legalAddress.street2) {\n streetArray.push(input.legalAddress.street2);\n }\n } else {\n // If street is a string, create array normally with type guard\n streetArray = [input.legalAddress.street, input.legalAddress.street2].filter(\n (s): s is string => typeof s === 'string' && s.trim().length > 0\n );\n }\n \n // Remove any empty strings and ensure all elements are strings\n streetArray = streetArray.filter(street => street && typeof street === 'string' && street.trim().length > 0);\n \n // Handle region - different approaches for dropdown vs custom regions\n let regionValue: { region: string; region_code: string; region_id?: number } | undefined;\n if (input.legalAddress.region && typeof input.legalAddress.region === 'object') {\n const regionObj = input.legalAddress.region;\n \n // Check if this is a custom region (region === regionCode) or predefined region\n if (regionObj.region === regionObj.regionCode) {\n // Custom region - send as object with region_id: 0\n regionValue = {\n region: regionObj.region,\n region_code: regionObj.regionCode,\n region_id: 0\n };\n } else {\n // Predefined region - send as object\n regionValue = {\n region: regionObj.region,\n region_code: regionObj.regionCode,\n };\n }\n } else if (input.legalAddress.regionCode && input.legalAddress.region !== input.legalAddress.regionCode) {\n // If we have different region and regionCode (dropdown case)\n regionValue = {\n region: input.legalAddress.region || input.legalAddress.regionCode,\n region_code: input.legalAddress.regionCode,\n };\n } else if (input.legalAddress.region) {\n // If we only have region string (fallback case)\n regionValue = {\n region: input.legalAddress.region,\n region_code: input.legalAddress.region,\n region_id: 0\n };\n }\n \n transformedInput.legal_address = {\n street: streetArray,\n city: input.legalAddress.city,\n region: regionValue,\n country_id: input.legalAddress.countryCode, // GraphQL expects country_id, not countryCode\n postcode: input.legalAddress.postcode,\n telephone: input.legalAddress.telephone,\n };\n }\n\n // Execute the dynamic mutation\n const response: updateCompanyResponse = await fetchGraphQl(UPDATE_COMPANY_DYNAMIC, {\n method: 'POST',\n variables: { input: transformedInput },\n });\n\n if (response.errors?.length) return handleFetchError(response.errors);\n\n // Merge back minimal customer role info so transform can compute flags\n (response as any).data.customer = roleResponse?.data?.customer;\n\n return transformCompany(response);\n })\n .catch(handleNetworkError);\n};\n"],"names":["GET_CUSTOMER_ROLE_PERMISSIONS","fetchUserPermissions","fetchGraphQl","roleResponse","_a","handleFetchError","role","_c","_b","allowedIds","flattenIds","isCompanyAdministrator","id","handleNetworkError","COMPANY_LEGAL_ADDRESS_FRAGMENT","COMPANY_BASIC_INFO_FRAGMENT","COMPANY_SALES_REPRESENTATIVE_FRAGMENT","COMPANY_ADMIN_FRAGMENT","buildCompanyFields","allowed","wantProfile","wantAddress","wantContacts","wantPayment","wantShipping","fields","usedFragments","buildCompanyQuery","buildUpdateCompanyMutation","getCompany","GET_COMPANY_DYNAMIC","companyResponse","companyNode","k","transformCompany","updateCompany","input","UPDATE_COMPANY_DYNAMIC","transformedInput","streetArray","s","street","regionValue","regionObj","response"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{b as p}from"./company-permissions.js";import{h as y,a as u}from"./fetch-error.js";import{f as c}from"./fetch-graphql.js";const E=i=>{var s;if(!(i!=null&&i.data))throw new Error("Invalid response: missing data");const e="updateCompany"in i.data?(s=i.data.updateCompany)==null?void 0:s.company:i.data.company;if(!e)throw new Error("Invalid response: missing company data");const t="customer"in i.data?i.data.customer:void 0,n=e.legal_address?{street:Array.isArray(e.legal_address.street)?e.legal_address.street.filter(a=>a&&a.trim()!==""):[],city:(e.legal_address.city||"").trim(),region:e.legal_address.region?{region:(e.legal_address.region.region||"").trim(),regionCode:(e.legal_address.region.region_code||"").trim(),regionId:e.legal_address.region.region_id?Number(e.legal_address.region.region_id):0}:void 0,countryCode:(e.legal_address.country_code||"").toUpperCase().trim(),postcode:(e.legal_address.postcode||"").trim(),telephone:e.legal_address.telephone?e.legal_address.telephone.trim():void 0}:void 0,r=t==null?void 0:t.role,l=p(r),o={id:(e.id||"").toString(),name:(e.name||"").trim(),email:(e.email||"").trim().toLowerCase(),legalName:e.legal_name?e.legal_name.trim():void 0,vatTaxId:e.vat_tax_id?e.vat_tax_id.trim():void 0,resellerId:e.reseller_id?e.reseller_id.trim():void 0,legalAddress:n,companyAdmin:e.company_admin?{id:(e.company_admin.id||"").toString(),firstname:(e.company_admin.firstname||"").trim(),lastname:(e.company_admin.lastname||"").trim(),email:(e.company_admin.email||"").trim().toLowerCase(),jobTitle:e.company_admin.job_title?e.company_admin.job_title.trim():void 0}:void 0,salesRepresentative:e.sales_representative?{firstname:(e.sales_representative.firstname||"").trim(),lastname:(e.sales_representative.lastname||"").trim(),email:(e.sales_representative.email||"").trim().toLowerCase()}:void 0,availablePaymentMethods:Array.isArray(e.available_payment_methods)?e.available_payment_methods.filter(a=>a&&typeof a.code=="string"&&typeof a.title=="string").map(a=>({code:a.code.trim(),title:a.title.trim()})).filter(a=>a.code.length>0&&a.title.length>0):void 0,availableShippingMethods:Array.isArray(e.available_shipping_methods)?e.available_shipping_methods.filter(a=>a&&typeof a.code=="string"&&typeof a.title=="string").map(a=>({code:a.code.trim(),title:a.title.trim()})).filter(a=>a.code.length>0&&a.title.length>0):void 0,canEditAccount:l.canEditAccount,canEditAddress:l.canEditAddress,permissionsFlags:l,customerRole:r,customerStatus:t==null?void 0:t.status};if(l.canViewAccount){if(!o.id)throw new Error("Company ID is required");if(!o.name)throw new Error("Company name is required");if(!o.email)throw new Error("Company email is required")}return o},A=i=>{var n,r,l,o,s;if(!((r=(n=i==null?void 0:i.data)==null?void 0:n.createCompany)!=null&&r.company))throw new Error("Invalid createCompany response: missing company data");const e=i.data.createCompany.company;if(!e.legal_address)throw new Error("Legal address is required for company registration");if(!e.company_admin)throw new Error("Company admin is required for company registration");return{id:e.id,name:e.name,email:e.email,legalName:e.legal_name,vatTaxId:e.vat_tax_id,resellerId:e.reseller_id,legalAddress:{street:e.legal_address.street||[],city:e.legal_address.city||"",region:{regionCode:((l=e.legal_address.region)==null?void 0:l.region_code)||"",region:(o=e.legal_address.region)==null?void 0:o.region,regionId:(s=e.legal_address.region)==null?void 0:s.region_id},countryCode:e.legal_address.country_code||"",postcode:e.legal_address.postcode||"",telephone:e.legal_address.telephone},companyAdmin:{id:e.company_admin.id,firstname:e.company_admin.firstname,lastname:e.company_admin.lastname,email:e.company_admin.email,jobTitle:e.company_admin.job_title,telephone:e.company_admin.telephone}}},v=i=>{var o,s;if(!((s=(o=i==null?void 0:i.data)==null?void 0:o.countries)!=null&&s.length))return{availableCountries:[],countriesWithRequiredRegion:[],optionalZipCountries:[]};const{countries:e,storeConfig:t}=i.data,n=t==null?void 0:t.countries_with_required_region.split(","),r=t==null?void 0:t.optional_zip_countries.split(",");return{availableCountries:e.filter(({two_letter_abbreviation:a,full_name_locale:d})=>!!(a&&d)).map(a=>{const{two_letter_abbreviation:d,full_name_locale:_,available_regions:m}=a,g=Array.isArray(m)&&m.length>0;return{value:d,text:_,availableRegions:g?m:void 0}}).sort((a,d)=>a.text.localeCompare(d.text)),countriesWithRequiredRegion:n,optionalZipCountries:r}},h=`
3
+ import{h as p,a as y}from"./fetch-error.js";import{f as c}from"./fetch-graphql.js";const u=(e=[])=>{const a=new Set,i=[...e];for(;i.length;){const n=i.pop();if(n&&(typeof n.id=="string"&&a.add(n.id),Array.isArray(n.children)&&n.children.length))for(const r of n.children)i.push(r)}return a},h=e=>(e==null?void 0:e.id)==="0"||typeof(e==null?void 0:e.id)=="number"&&(e==null?void 0:e.id)===0||(e==null?void 0:e.name)==="Company Administrator",f=e=>{const a=u((e==null?void 0:e.permissions)||[]),i=h(e);return{canViewAccount:i||a.has("Magento_Company::view_account"),canEditAccount:i||a.has("Magento_Company::edit_account"),canViewAddress:i||a.has("Magento_Company::view_address"),canEditAddress:i||a.has("Magento_Company::edit_address"),canViewContacts:i||a.has("Magento_Company::contacts"),canViewPaymentInformation:i||a.has("Magento_Company::payment_information"),canViewShippingInformation:i||a.has("Magento_Company::shipping_information")}},E=e=>{var d;if(!(e!=null&&e.data))throw new Error("Invalid response: missing data");const a="updateCompany"in e.data?(d=e.data.updateCompany)==null?void 0:d.company:e.data.company;if(!a)throw new Error("Invalid response: missing company data");const i="customer"in e.data?e.data.customer:void 0,n=a.legal_address?{street:Array.isArray(a.legal_address.street)?a.legal_address.street.filter(t=>t&&t.trim()!==""):[],city:(a.legal_address.city||"").trim(),region:a.legal_address.region?{region:(a.legal_address.region.region||"").trim(),regionCode:(a.legal_address.region.region_code||"").trim(),regionId:a.legal_address.region.region_id?Number(a.legal_address.region.region_id):0}:void 0,countryCode:(a.legal_address.country_code||"").toUpperCase().trim(),postcode:(a.legal_address.postcode||"").trim(),telephone:a.legal_address.telephone?a.legal_address.telephone.trim():void 0}:void 0,r=i==null?void 0:i.role,s=f(r),o={id:(a.id||"").toString(),name:(a.name||"").trim(),email:(a.email||"").trim().toLowerCase(),legalName:a.legal_name?a.legal_name.trim():void 0,vatTaxId:a.vat_tax_id?a.vat_tax_id.trim():void 0,resellerId:a.reseller_id?a.reseller_id.trim():void 0,legalAddress:n,companyAdmin:a.company_admin?{id:(a.company_admin.id||"").toString(),firstname:(a.company_admin.firstname||"").trim(),lastname:(a.company_admin.lastname||"").trim(),email:(a.company_admin.email||"").trim().toLowerCase(),jobTitle:a.company_admin.job_title?a.company_admin.job_title.trim():void 0}:void 0,salesRepresentative:a.sales_representative?{firstname:(a.sales_representative.firstname||"").trim(),lastname:(a.sales_representative.lastname||"").trim(),email:(a.sales_representative.email||"").trim().toLowerCase()}:void 0,availablePaymentMethods:Array.isArray(a.available_payment_methods)?a.available_payment_methods.filter(t=>t&&typeof t.code=="string"&&typeof t.title=="string").map(t=>({code:t.code.trim(),title:t.title.trim()})).filter(t=>t.code.length>0&&t.title.length>0):void 0,availableShippingMethods:Array.isArray(a.available_shipping_methods)?a.available_shipping_methods.filter(t=>t&&typeof t.code=="string"&&typeof t.title=="string").map(t=>({code:t.code.trim(),title:t.title.trim()})).filter(t=>t.code.length>0&&t.title.length>0):void 0,canEditAccount:s.canEditAccount,canEditAddress:s.canEditAddress,permissionsFlags:s,customerRole:r,customerStatus:i==null?void 0:i.status};if(s.canViewAccount){if(!o.id)throw new Error("Company ID is required");if(!o.name)throw new Error("Company name is required");if(!o.email)throw new Error("Company email is required")}return o},I=e=>{var n,r,s,o,d;if(!((r=(n=e==null?void 0:e.data)==null?void 0:n.createCompany)!=null&&r.company))throw new Error("Invalid createCompany response: missing company data");const a=e.data.createCompany.company;if(!a.legal_address)throw new Error("Legal address is required for company registration");if(!a.company_admin)throw new Error("Company admin is required for company registration");return{id:a.id,name:a.name,email:a.email,legalName:a.legal_name,vatTaxId:a.vat_tax_id,resellerId:a.reseller_id,legalAddress:{street:a.legal_address.street||[],city:a.legal_address.city||"",region:{regionCode:((s=a.legal_address.region)==null?void 0:s.region_code)||"",region:(o=a.legal_address.region)==null?void 0:o.region,regionId:(d=a.legal_address.region)==null?void 0:d.region_id},countryCode:a.legal_address.country_code||"",postcode:a.legal_address.postcode||"",telephone:a.legal_address.telephone},companyAdmin:{id:a.company_admin.id,firstname:a.company_admin.firstname,lastname:a.company_admin.lastname,email:a.company_admin.email,jobTitle:a.company_admin.job_title,telephone:a.company_admin.telephone}}},v=e=>{var o,d;if(!((d=(o=e==null?void 0:e.data)==null?void 0:o.countries)!=null&&d.length))return{availableCountries:[],countriesWithRequiredRegion:[],optionalZipCountries:[]};const{countries:a,storeConfig:i}=e.data,n=i==null?void 0:i.countries_with_required_region.split(","),r=i==null?void 0:i.optional_zip_countries.split(",");return{availableCountries:a.filter(({two_letter_abbreviation:t,full_name_locale:l})=>!!(t&&l)).map(t=>{const{two_letter_abbreviation:l,full_name_locale:_,available_regions:m}=t,g=Array.isArray(m)&&m.length>0;return{value:l,text:_,availableRegions:g?m:void 0}}).sort((t,l)=>t.text.localeCompare(l.text)),countriesWithRequiredRegion:n,optionalZipCountries:r}},C=`
4
4
  query getCountries {
5
5
  countries {
6
6
  id
@@ -19,11 +19,11 @@ import{b as p}from"./company-permissions.js";import{h as y,a as u}from"./fetch-e
19
19
  optional_zip_countries
20
20
  }
21
21
  }
22
- `,I=async()=>{const i="_company_countries",e=sessionStorage.getItem(i);return e?JSON.parse(e):await c(h,{method:"GET"}).then(t=>{var r;if((r=t.errors)!=null&&r.length)return y(t.errors);const n=v(t);return sessionStorage.setItem(i,JSON.stringify(n)),n}).catch(u)},f=`
22
+ `,S=async()=>{const e="_company_countries",a=sessionStorage.getItem(e);return a?JSON.parse(a):await c(C,{method:"GET"}).then(i=>{var r;if((r=i.errors)!=null&&r.length)return p(i.errors);const n=v(i);return sessionStorage.setItem(e,JSON.stringify(n)),n}).catch(y)},w=`
23
23
  query validateCompanyEmail($email: String!) {
24
24
  isCompanyEmailAvailable(email: $email) {
25
25
  is_email_available
26
26
  }
27
27
  }
28
- `,R=async i=>{try{const e=await c(f,{variables:{email:i}});return e.errors?{isValid:!1,error:"Unable to validate email"}:{isValid:e.data.isCompanyEmailAvailable.is_email_available,error:e.data.isCompanyEmailAvailable.is_email_available?void 0:"This email is already used by another company"}}catch{return{isValid:!1,error:"Unable to validate email"}}};export{A as a,I as g,E as t,R as v};
28
+ `,R=async e=>{try{const a=await c(w,{variables:{email:e}});return a.errors?{isValid:!1,error:"Unable to validate email"}:{isValid:a.data.isCompanyEmailAvailable.is_email_available,error:a.data.isCompanyEmailAvailable.is_email_available?void 0:"This email is already used by another company"}}catch{return{isValid:!1,error:"Unable to validate email"}}};export{E as a,u as f,S as g,h as i,I as t,R as v};
29
29
  //# sourceMappingURL=validateCompanyEmail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validateCompanyEmail.js","sources":["/@dropins/storefront-company-management/src/data/transforms/transform-company.ts","/@dropins/storefront-company-management/src/data/transforms/transform-countries.ts","/@dropins/storefront-company-management/src/api/getCountries/graphql/getCountries.graphql.ts","/@dropins/storefront-company-management/src/api/getCountries/getCountries.ts","/@dropins/storefront-company-management/src/api/validateCompanyEmail/graphql/validateCompanyEmail.graphql.ts","/@dropins/storefront-company-management/src/api/validateCompanyEmail/validateCompanyEmail.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { getCompanyResponse } from '../../types/api/getCompany.types';\nimport { updateCompanyResponse } from '../../types/api/updateCompany.types';\nimport { CompanyModel, CompanyRegistrationModel } from '../models/company';\nimport { buildPermissionFlags } from '../../lib/company-permissions';\n\nexport const transformCompany = (\n response: getCompanyResponse | updateCompanyResponse\n): CompanyModel => {\n // Validate response structure\n if (!response?.data) {\n throw new Error('Invalid response: missing data');\n }\n\n // Handle both getCompany and updateCompany response structures\n const companyData: any = 'updateCompany' in response.data \n ? response.data.updateCompany?.company \n : response.data.company;\n \n if (!companyData) {\n throw new Error('Invalid response: missing company data');\n }\n \n const customerData = 'customer' in response.data ? response.data.customer : undefined;\n\n // Transform legal address with validation\n const legalAddress = companyData.legal_address ? {\n street: Array.isArray(companyData.legal_address.street) \n ? companyData.legal_address.street.filter((line: string) => line && line.trim() !== '') \n : [],\n city: (companyData.legal_address.city || '').trim(),\n region: companyData.legal_address.region ? {\n region: (companyData.legal_address.region.region || '').trim(),\n regionCode: (companyData.legal_address.region.region_code || '').trim(),\n regionId: companyData.legal_address.region.region_id ? Number(companyData.legal_address.region.region_id) : 0,\n } : undefined,\n countryCode: (companyData.legal_address.country_code || '').toUpperCase().trim(),\n postcode: (companyData.legal_address.postcode || '').trim(),\n telephone: companyData.legal_address.telephone ? \n companyData.legal_address.telephone.trim() : undefined,\n } : undefined;\n\n // Determine permissions using shared utility\n const customerRole = customerData?.role;\n const permissionsFlags = buildPermissionFlags(customerRole);\n\n // Build the model with proper validation\n const model: CompanyModel = {\n id: (companyData.id || '').toString(),\n name: (companyData.name || '').trim(),\n email: (companyData.email || '').trim().toLowerCase(),\n legalName: companyData.legal_name ? companyData.legal_name.trim() : undefined,\n vatTaxId: companyData.vat_tax_id ? companyData.vat_tax_id.trim() : undefined,\n resellerId: companyData.reseller_id ? companyData.reseller_id.trim() : undefined,\n legalAddress,\n companyAdmin: companyData.company_admin ? {\n id: (companyData.company_admin.id || '').toString(),\n firstname: (companyData.company_admin.firstname || '').trim(),\n lastname: (companyData.company_admin.lastname || '').trim(),\n email: (companyData.company_admin.email || '').trim().toLowerCase(),\n jobTitle: companyData.company_admin.job_title ? companyData.company_admin.job_title.trim() : undefined,\n } : undefined,\n\n // Transform sales representative\n salesRepresentative: companyData.sales_representative ? {\n firstname: (companyData.sales_representative.firstname || '').trim(),\n lastname: (companyData.sales_representative.lastname || '').trim(),\n email: (companyData.sales_representative.email || '').trim().toLowerCase(),\n } : undefined,\n\n // New comprehensive payment methods with code and title\n availablePaymentMethods: Array.isArray(companyData.available_payment_methods)\n ? companyData.available_payment_methods\n .filter((m: any) => m && typeof m.code === 'string' && typeof m.title === 'string')\n .map((m: any) => ({ code: m.code.trim(), title: m.title.trim() }))\n .filter((m: any) => m.code.length > 0 && m.title.length > 0)\n : undefined,\n\n // New available shipping methods\n availableShippingMethods: Array.isArray(companyData.available_shipping_methods)\n ? companyData.available_shipping_methods\n .filter((m: any) => m && typeof m.code === 'string' && typeof m.title === 'string')\n .map((m: any) => ({ code: m.code.trim(), title: m.title.trim() }))\n .filter((m: any) => m.code.length > 0 && m.title.length > 0)\n : undefined,\n \n // Computed permission flags (single source of truth)\n canEditAccount: permissionsFlags.canEditAccount,\n canEditAddress: permissionsFlags.canEditAddress,\n permissionsFlags,\n customerRole,\n customerStatus: customerData?.status,\n };\n\n // Validate only when profile fields are permitted\n if (permissionsFlags.canViewAccount) {\n if (!model.id) {\n throw new Error('Company ID is required');\n }\n if (!model.name) {\n throw new Error('Company name is required');\n }\n if (!model.email) {\n throw new Error('Company email is required');\n }\n }\n\n return model;\n};\n\n/**\n * Transform createCompany GraphQL response to Company model\n */\nexport const transformCreateCompanyResponse = (response: any): CompanyRegistrationModel => {\n // Validate response structure\n if (!response?.data?.createCompany?.company) {\n throw new Error('Invalid createCompany response: missing company data');\n }\n\n const rawCompany = response.data.createCompany.company;\n\n // Validate required fields\n if (!rawCompany.legal_address) {\n throw new Error('Legal address is required for company registration');\n }\n if (!rawCompany.company_admin) {\n throw new Error('Company admin is required for company registration');\n }\n\n // Transform the GraphQL response to match the CompanyRegistrationModel\n const transformedCompany: CompanyRegistrationModel = {\n id: rawCompany.id,\n name: rawCompany.name,\n email: rawCompany.email,\n legalName: rawCompany.legal_name,\n vatTaxId: rawCompany.vat_tax_id,\n resellerId: rawCompany.reseller_id,\n legalAddress: {\n street: rawCompany.legal_address.street || [],\n city: rawCompany.legal_address.city || '',\n region: {\n regionCode: rawCompany.legal_address.region?.region_code || '',\n region: rawCompany.legal_address.region?.region,\n regionId: rawCompany.legal_address.region?.region_id,\n },\n countryCode: rawCompany.legal_address.country_code || '',\n postcode: rawCompany.legal_address.postcode || '',\n telephone: rawCompany.legal_address.telephone,\n },\n companyAdmin: {\n id: rawCompany.company_admin.id,\n firstname: rawCompany.company_admin.firstname,\n lastname: rawCompany.company_admin.lastname,\n email: rawCompany.company_admin.email,\n jobTitle: rawCompany.company_admin.job_title,\n telephone: rawCompany.company_admin.telephone,\n },\n };\n\n return transformedCompany;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { CountriesFormResponse } from '../../types/api/getCountries.types';\nimport { Country } from '../models/country';\n\nexport const transformCountries = (\n response: CountriesFormResponse\n): {\n availableCountries: Country[] | [];\n countriesWithRequiredRegion: string[];\n optionalZipCountries: string[];\n} => {\n if (!response?.data?.countries?.length) {\n return {\n availableCountries: [],\n countriesWithRequiredRegion: [],\n optionalZipCountries: [],\n };\n }\n\n const { countries, storeConfig } = response.data;\n\n const countriesWithRequiredRegion =\n storeConfig?.countries_with_required_region.split(',');\n const optionalZipCountries = storeConfig?.optional_zip_countries.split(',');\n\n const availableCountries = countries\n .filter(({ two_letter_abbreviation, full_name_locale }) =>\n Boolean(two_letter_abbreviation && full_name_locale)\n )\n .map((country) => {\n const { two_letter_abbreviation, full_name_locale, available_regions } = country;\n\n const hasRegions = Array.isArray(available_regions) && available_regions.length > 0;\n return {\n value: two_letter_abbreviation,\n text: full_name_locale,\n availableRegions: hasRegions ? available_regions : undefined,\n };\n })\n .sort((a, b) => a.text.localeCompare(b.text));\n\n return {\n availableCountries,\n countriesWithRequiredRegion,\n optionalZipCountries,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const GET_COUNTRIES_QUERY = `\n query getCountries {\n countries {\n id\n two_letter_abbreviation\n three_letter_abbreviation\n full_name_locale\n full_name_english\n available_regions {\n id\n code\n name\n }\n }\n storeConfig {\n countries_with_required_region\n optional_zip_countries\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { GET_COUNTRIES_QUERY } from './graphql/getCountries.graphql';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { transformCountries } from '../../data/transforms/transform-countries';\nimport { CountriesFormResponse } from '../../types/api/getCountries.types';\nimport { Country } from '../../data/models/country';\n\nexport const getCountries = async (): Promise<{\n availableCountries: Country[] | [];\n countriesWithRequiredRegion: string[];\n optionalZipCountries: string[];\n}> => {\n const sessionStorageKey = '_company_countries';\n\n const sessionStorageCache = sessionStorage.getItem(sessionStorageKey);\n\n if (sessionStorageCache) {\n return JSON.parse(sessionStorageCache);\n }\n\n return await fetchGraphQl(GET_COUNTRIES_QUERY, {\n method: 'GET',\n })\n .then((response: CountriesFormResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n const transformedData = transformCountries(response);\n\n sessionStorage.setItem(\n sessionStorageKey,\n JSON.stringify(transformedData)\n );\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const VALIDATE_COMPANY_EMAIL_QUERY = /* GraphQL */ `\n query validateCompanyEmail($email: String!) {\n isCompanyEmailAvailable(email: $email) {\n is_email_available\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { VALIDATE_COMPANY_EMAIL_QUERY } from './graphql/validateCompanyEmail.graphql';\nimport { ValidateCompanyEmailQuery, ValidateCompanyEmailResponse } from '../../types/api/validateCompanyEmail.types';\n\nexport const validateCompanyEmail = async (email: string): Promise<ValidateCompanyEmailResponse> => {\n try {\n const response = await fetchGraphQl<ValidateCompanyEmailQuery>(VALIDATE_COMPANY_EMAIL_QUERY, {\n variables: { email },\n });\n\n if (response.errors) {\n return {\n isValid: false,\n error: 'Unable to validate email'\n };\n }\n\n return {\n isValid: response.data.isCompanyEmailAvailable.is_email_available,\n error: response.data.isCompanyEmailAvailable.is_email_available \n ? undefined \n : 'This email is already used by another company'\n };\n } catch (error) {\n return {\n isValid: false,\n error: 'Unable to validate email'\n };\n }\n};"],"names":["transformCompany","response","companyData","_a","customerData","legalAddress","line","customerRole","permissionsFlags","buildPermissionFlags","model","m","transformCreateCompanyResponse","_b","rawCompany","_c","_d","_e","transformCountries","countries","storeConfig","countriesWithRequiredRegion","optionalZipCountries","two_letter_abbreviation","full_name_locale","country","available_regions","hasRegions","b","GET_COUNTRIES_QUERY","getCountries","sessionStorageKey","sessionStorageCache","fetchGraphQl","handleFetchError","transformedData","handleNetworkError","VALIDATE_COMPANY_EMAIL_QUERY","validateCompanyEmail","email"],"mappings":"gIAqBa,MAAAA,EACXC,GACiB,OAEb,GAAA,EAACA,GAAA,MAAAA,EAAU,MACP,MAAA,IAAI,MAAM,gCAAgC,EAI5C,MAAAC,EAAmB,kBAAmBD,EAAS,MACjDE,EAAAF,EAAS,KAAK,gBAAd,YAAAE,EAA6B,QAC7BF,EAAS,KAAK,QAElB,GAAI,CAACC,EACG,MAAA,IAAI,MAAM,wCAAwC,EAG1D,MAAME,EAAe,aAAcH,EAAS,KAAOA,EAAS,KAAK,SAAW,OAGtEI,EAAeH,EAAY,cAAgB,CAC/C,OAAQ,MAAM,QAAQA,EAAY,cAAc,MAAM,EAClDA,EAAY,cAAc,OAAO,OAAQI,GAAiBA,GAAQA,EAAK,KAAW,IAAA,EAAE,EACpF,CAAC,EACL,MAAOJ,EAAY,cAAc,MAAQ,IAAI,KAAK,EAClD,OAAQA,EAAY,cAAc,OAAS,CACzC,QAASA,EAAY,cAAc,OAAO,QAAU,IAAI,KAAK,EAC7D,YAAaA,EAAY,cAAc,OAAO,aAAe,IAAI,KAAK,EACtE,SAAUA,EAAY,cAAc,OAAO,UAAY,OAAOA,EAAY,cAAc,OAAO,SAAS,EAAI,CAAA,EAC1G,OACJ,aAAcA,EAAY,cAAc,cAAgB,IAAI,cAAc,KAAK,EAC/E,UAAWA,EAAY,cAAc,UAAY,IAAI,KAAK,EAC1D,UAAWA,EAAY,cAAc,UACnCA,EAAY,cAAc,UAAU,OAAS,MAAA,EAC7C,OAGEK,EAAeH,GAAA,YAAAA,EAAc,KAC7BI,EAAmBC,EAAqBF,CAAY,EAGpDG,EAAsB,CAC1B,IAAKR,EAAY,IAAM,IAAI,SAAS,EACpC,MAAOA,EAAY,MAAQ,IAAI,KAAK,EACpC,OAAQA,EAAY,OAAS,IAAI,OAAO,YAAY,EACpD,UAAWA,EAAY,WAAaA,EAAY,WAAW,OAAS,OACpE,SAAUA,EAAY,WAAaA,EAAY,WAAW,OAAS,OACnE,WAAYA,EAAY,YAAcA,EAAY,YAAY,OAAS,OACvE,aAAAG,EACA,aAAcH,EAAY,cAAgB,CACxC,IAAKA,EAAY,cAAc,IAAM,IAAI,SAAS,EAClD,WAAYA,EAAY,cAAc,WAAa,IAAI,KAAK,EAC5D,UAAWA,EAAY,cAAc,UAAY,IAAI,KAAK,EAC1D,OAAQA,EAAY,cAAc,OAAS,IAAI,OAAO,YAAY,EAClE,SAAUA,EAAY,cAAc,UAAYA,EAAY,cAAc,UAAU,OAAS,MAAA,EAC3F,OAGJ,oBAAqBA,EAAY,qBAAuB,CACtD,WAAYA,EAAY,qBAAqB,WAAa,IAAI,KAAK,EACnE,UAAWA,EAAY,qBAAqB,UAAY,IAAI,KAAK,EACjE,OAAQA,EAAY,qBAAqB,OAAS,IAAI,KAAA,EAAO,YAAY,CAAA,EACvE,OAGJ,wBAAyB,MAAM,QAAQA,EAAY,yBAAyB,EACxEA,EAAY,0BACT,OAAQS,GAAWA,GAAK,OAAOA,EAAE,MAAS,UAAY,OAAOA,EAAE,OAAU,QAAQ,EACjF,IAAKA,IAAY,CAAE,KAAMA,EAAE,KAAK,KAAK,EAAG,MAAOA,EAAE,MAAM,MAAS,EAAA,EAChE,OAAQA,GAAWA,EAAE,KAAK,OAAS,GAAKA,EAAE,MAAM,OAAS,CAAC,EAC7D,OAGJ,yBAA0B,MAAM,QAAQT,EAAY,0BAA0B,EAC1EA,EAAY,2BACT,OAAQS,GAAWA,GAAK,OAAOA,EAAE,MAAS,UAAY,OAAOA,EAAE,OAAU,QAAQ,EACjF,IAAKA,IAAY,CAAE,KAAMA,EAAE,KAAK,KAAK,EAAG,MAAOA,EAAE,MAAM,MAAS,EAAA,EAChE,OAAQA,GAAWA,EAAE,KAAK,OAAS,GAAKA,EAAE,MAAM,OAAS,CAAC,EAC7D,OAGJ,eAAgBH,EAAiB,eACjC,eAAgBA,EAAiB,eACjC,iBAAAA,EACA,aAAAD,EACA,eAAgBH,GAAA,YAAAA,EAAc,MAChC,EAGA,GAAII,EAAiB,eAAgB,CAC/B,GAAA,CAACE,EAAM,GACH,MAAA,IAAI,MAAM,wBAAwB,EAEtC,GAAA,CAACA,EAAM,KACH,MAAA,IAAI,MAAM,0BAA0B,EAExC,GAAA,CAACA,EAAM,MACH,MAAA,IAAI,MAAM,2BAA2B,CAC7C,CAGK,OAAAA,CACT,EAKaE,EAAkCX,GAA4C,eAEzF,GAAI,GAACY,GAAAV,EAAAF,GAAA,YAAAA,EAAU,OAAV,YAAAE,EAAgB,gBAAhB,MAAAU,EAA+B,SAC5B,MAAA,IAAI,MAAM,sDAAsD,EAGlE,MAAAC,EAAab,EAAS,KAAK,cAAc,QAG3C,GAAA,CAACa,EAAW,cACR,MAAA,IAAI,MAAM,oDAAoD,EAElE,GAAA,CAACA,EAAW,cACR,MAAA,IAAI,MAAM,oDAAoD,EAiC/D,MA7B8C,CACnD,GAAIA,EAAW,GACf,KAAMA,EAAW,KACjB,MAAOA,EAAW,MAClB,UAAWA,EAAW,WACtB,SAAUA,EAAW,WACrB,WAAYA,EAAW,YACvB,aAAc,CACZ,OAAQA,EAAW,cAAc,QAAU,CAAC,EAC5C,KAAMA,EAAW,cAAc,MAAQ,GACvC,OAAQ,CACN,aAAYC,EAAAD,EAAW,cAAc,SAAzB,YAAAC,EAAiC,cAAe,GAC5D,QAAQC,EAAAF,EAAW,cAAc,SAAzB,YAAAE,EAAiC,OACzC,UAAUC,EAAAH,EAAW,cAAc,SAAzB,YAAAG,EAAiC,SAC7C,EACA,YAAaH,EAAW,cAAc,cAAgB,GACtD,SAAUA,EAAW,cAAc,UAAY,GAC/C,UAAWA,EAAW,cAAc,SACtC,EACA,aAAc,CACZ,GAAIA,EAAW,cAAc,GAC7B,UAAWA,EAAW,cAAc,UACpC,SAAUA,EAAW,cAAc,SACnC,MAAOA,EAAW,cAAc,MAChC,SAAUA,EAAW,cAAc,UACnC,UAAWA,EAAW,cAAc,SAAA,CAExC,CAGF,EC5JaI,EACXjB,GAKG,SACH,GAAI,GAACY,GAAAV,EAAAF,GAAA,YAAAA,EAAU,OAAV,YAAAE,EAAgB,YAAhB,MAAAU,EAA2B,QACvB,MAAA,CACL,mBAAoB,CAAC,EACrB,4BAA6B,CAAC,EAC9B,qBAAsB,CAAA,CACxB,EAGF,KAAM,CAAE,UAAAM,EAAW,YAAAC,CAAY,EAAInB,EAAS,KAEtCoB,EACJD,GAAA,YAAAA,EAAa,+BAA+B,MAAM,KAC9CE,EAAuBF,GAAA,YAAAA,EAAa,uBAAuB,MAAM,KAkBhE,MAAA,CACL,mBAjByBD,EACxB,OAAO,CAAC,CAAE,wBAAAI,EAAyB,iBAAAC,CAClC,IAAA,GAAQD,GAA2BC,EAAgB,EAEpD,IAAKC,GAAY,CAChB,KAAM,CAAE,wBAAAF,EAAyB,iBAAAC,EAAkB,kBAAAE,CAAsB,EAAAD,EAEnEE,EAAa,MAAM,QAAQD,CAAiB,GAAKA,EAAkB,OAAS,EAC3E,MAAA,CACL,MAAOH,EACP,KAAMC,EACN,iBAAkBG,EAAaD,EAAoB,MACrD,CAAA,CACD,EACA,KAAK,CAAC,EAAGE,IAAM,EAAE,KAAK,cAAcA,EAAE,IAAI,CAAC,EAI5C,4BAAAP,EACA,qBAAAC,CACF,CACF,EC7CaO,EAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECQtBC,EAAe,SAItB,CACJ,MAAMC,EAAoB,qBAEpBC,EAAsB,eAAe,QAAQD,CAAiB,EAEpE,OAAIC,EACK,KAAK,MAAMA,CAAmB,EAGhC,MAAMC,EAAaJ,EAAqB,CAC7C,OAAQ,KAAA,CACT,EACE,KAAM5B,GAAoC,OACzC,IAAIE,EAAAF,EAAS,SAAT,MAAAE,EAAiB,OAAe,OAAA+B,EAAiBjC,EAAS,MAAM,EAE9D,MAAAkC,EAAkBjB,EAAmBjB,CAAQ,EAEpC,sBAAA,QACb8B,EACA,KAAK,UAAUI,CAAe,CAChC,EAEOA,CAAA,CACR,EACA,MAAMC,CAAkB,CAC7B,ECrCaC,EAA6C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECI7CC,EAAuB,MAAOC,GAAyD,CAC9F,GAAA,CACI,MAAAtC,EAAW,MAAMgC,EAAwCI,EAA8B,CAC3F,UAAW,CAAE,MAAAE,CAAM,CAAA,CACpB,EAED,OAAItC,EAAS,OACJ,CACL,QAAS,GACT,MAAO,0BACT,EAGK,CACL,QAASA,EAAS,KAAK,wBAAwB,mBAC/C,MAAOA,EAAS,KAAK,wBAAwB,mBACzC,OACA,+CACN,OACc,CACP,MAAA,CACL,QAAS,GACT,MAAO,0BACT,CAAA,CAEJ"}
1
+ {"version":3,"file":"validateCompanyEmail.js","sources":["/@dropins/storefront-company-management/src/lib/company-permissions.ts","/@dropins/storefront-company-management/src/data/transforms/transform-company.ts","/@dropins/storefront-company-management/src/data/transforms/transform-countries.ts","/@dropins/storefront-company-management/src/api/getCountries/graphql/getCountries.graphql.ts","/@dropins/storefront-company-management/src/api/getCountries/getCountries.ts","/@dropins/storefront-company-management/src/api/validateCompanyEmail/graphql/validateCompanyEmail.graphql.ts","/@dropins/storefront-company-management/src/api/validateCompanyEmail/validateCompanyEmail.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Permission flags interface for company operations\n */\nexport interface CompanyPermissionFlags {\n canViewAccount: boolean;\n canEditAccount: boolean;\n canViewAddress: boolean;\n canEditAddress: boolean;\n canViewContacts: boolean;\n canViewPaymentInformation: boolean;\n canViewShippingInformation: boolean;\n}\n\n/**\n * Flattens a nested permissions tree into a Set of permission IDs\n * This is a pure utility function that can be used across the application\n */\nexport const flattenIds = (nodes: any[] = []): Set<string> => {\n const set = new Set<string>();\n const stack = [...nodes];\n while (stack.length) {\n const node = stack.pop();\n if (!node) continue;\n if (typeof node.id === 'string') set.add(node.id);\n if (Array.isArray(node.children) && node.children.length) {\n for (const child of node.children) stack.push(child);\n }\n }\n return set;\n};\n\n/**\n * Determines if a role is a Company Administrator\n */\nexport const isCompanyAdministrator = (role: any): boolean => {\n return role?.id === '0' || \n (typeof role?.id === 'number' && role?.id === 0) || \n role?.name === 'Company Administrator';\n};\n\n/**\n * Builds permission flags from role data\n */\nexport const buildPermissionFlags = (role: any): CompanyPermissionFlags => {\n const allowedIds = flattenIds(role?.permissions || []);\n const isAdmin = isCompanyAdministrator(role);\n\n return {\n canViewAccount: isAdmin || allowedIds.has('Magento_Company::view_account'),\n canEditAccount: isAdmin || allowedIds.has('Magento_Company::edit_account'),\n canViewAddress: isAdmin || allowedIds.has('Magento_Company::view_address'),\n canEditAddress: isAdmin || allowedIds.has('Magento_Company::edit_address'),\n canViewContacts: isAdmin || allowedIds.has('Magento_Company::contacts'),\n canViewPaymentInformation: isAdmin || allowedIds.has('Magento_Company::payment_information'),\n canViewShippingInformation: isAdmin || allowedIds.has('Magento_Company::shipping_information'),\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { getCompanyResponse } from '../../types/api/getCompany.types';\nimport { updateCompanyResponse } from '../../types/api/updateCompany.types';\nimport { CompanyModel, CompanyRegistrationModel } from '../models/company';\nimport { buildPermissionFlags } from '../../lib/company-permissions';\n\nexport const transformCompany = (\n response: getCompanyResponse | updateCompanyResponse\n): CompanyModel => {\n // Validate response structure\n if (!response?.data) {\n throw new Error('Invalid response: missing data');\n }\n\n // Handle both getCompany and updateCompany response structures\n const companyData: any = 'updateCompany' in response.data \n ? response.data.updateCompany?.company \n : response.data.company;\n \n if (!companyData) {\n throw new Error('Invalid response: missing company data');\n }\n \n const customerData = 'customer' in response.data ? response.data.customer : undefined;\n\n // Transform legal address with validation\n const legalAddress = companyData.legal_address ? {\n street: Array.isArray(companyData.legal_address.street) \n ? companyData.legal_address.street.filter((line: string) => line && line.trim() !== '') \n : [],\n city: (companyData.legal_address.city || '').trim(),\n region: companyData.legal_address.region ? {\n region: (companyData.legal_address.region.region || '').trim(),\n regionCode: (companyData.legal_address.region.region_code || '').trim(),\n regionId: companyData.legal_address.region.region_id ? Number(companyData.legal_address.region.region_id) : 0,\n } : undefined,\n countryCode: (companyData.legal_address.country_code || '').toUpperCase().trim(),\n postcode: (companyData.legal_address.postcode || '').trim(),\n telephone: companyData.legal_address.telephone ? \n companyData.legal_address.telephone.trim() : undefined,\n } : undefined;\n\n // Determine permissions using shared utility\n const customerRole = customerData?.role;\n const permissionsFlags = buildPermissionFlags(customerRole);\n\n // Build the model with proper validation\n const model: CompanyModel = {\n id: (companyData.id || '').toString(),\n name: (companyData.name || '').trim(),\n email: (companyData.email || '').trim().toLowerCase(),\n legalName: companyData.legal_name ? companyData.legal_name.trim() : undefined,\n vatTaxId: companyData.vat_tax_id ? companyData.vat_tax_id.trim() : undefined,\n resellerId: companyData.reseller_id ? companyData.reseller_id.trim() : undefined,\n legalAddress,\n companyAdmin: companyData.company_admin ? {\n id: (companyData.company_admin.id || '').toString(),\n firstname: (companyData.company_admin.firstname || '').trim(),\n lastname: (companyData.company_admin.lastname || '').trim(),\n email: (companyData.company_admin.email || '').trim().toLowerCase(),\n jobTitle: companyData.company_admin.job_title ? companyData.company_admin.job_title.trim() : undefined,\n } : undefined,\n\n // Transform sales representative\n salesRepresentative: companyData.sales_representative ? {\n firstname: (companyData.sales_representative.firstname || '').trim(),\n lastname: (companyData.sales_representative.lastname || '').trim(),\n email: (companyData.sales_representative.email || '').trim().toLowerCase(),\n } : undefined,\n\n // New comprehensive payment methods with code and title\n availablePaymentMethods: Array.isArray(companyData.available_payment_methods)\n ? companyData.available_payment_methods\n .filter((m: any) => m && typeof m.code === 'string' && typeof m.title === 'string')\n .map((m: any) => ({ code: m.code.trim(), title: m.title.trim() }))\n .filter((m: any) => m.code.length > 0 && m.title.length > 0)\n : undefined,\n\n // New available shipping methods\n availableShippingMethods: Array.isArray(companyData.available_shipping_methods)\n ? companyData.available_shipping_methods\n .filter((m: any) => m && typeof m.code === 'string' && typeof m.title === 'string')\n .map((m: any) => ({ code: m.code.trim(), title: m.title.trim() }))\n .filter((m: any) => m.code.length > 0 && m.title.length > 0)\n : undefined,\n \n // Computed permission flags (single source of truth)\n canEditAccount: permissionsFlags.canEditAccount,\n canEditAddress: permissionsFlags.canEditAddress,\n permissionsFlags,\n customerRole,\n customerStatus: customerData?.status,\n };\n\n // Validate only when profile fields are permitted\n if (permissionsFlags.canViewAccount) {\n if (!model.id) {\n throw new Error('Company ID is required');\n }\n if (!model.name) {\n throw new Error('Company name is required');\n }\n if (!model.email) {\n throw new Error('Company email is required');\n }\n }\n\n return model;\n};\n\n/**\n * Transform createCompany GraphQL response to Company model\n */\nexport const transformCreateCompanyResponse = (response: any): CompanyRegistrationModel => {\n // Validate response structure\n if (!response?.data?.createCompany?.company) {\n throw new Error('Invalid createCompany response: missing company data');\n }\n\n const rawCompany = response.data.createCompany.company;\n\n // Validate required fields\n if (!rawCompany.legal_address) {\n throw new Error('Legal address is required for company registration');\n }\n if (!rawCompany.company_admin) {\n throw new Error('Company admin is required for company registration');\n }\n\n // Transform the GraphQL response to match the CompanyRegistrationModel\n const transformedCompany: CompanyRegistrationModel = {\n id: rawCompany.id,\n name: rawCompany.name,\n email: rawCompany.email,\n legalName: rawCompany.legal_name,\n vatTaxId: rawCompany.vat_tax_id,\n resellerId: rawCompany.reseller_id,\n legalAddress: {\n street: rawCompany.legal_address.street || [],\n city: rawCompany.legal_address.city || '',\n region: {\n regionCode: rawCompany.legal_address.region?.region_code || '',\n region: rawCompany.legal_address.region?.region,\n regionId: rawCompany.legal_address.region?.region_id,\n },\n countryCode: rawCompany.legal_address.country_code || '',\n postcode: rawCompany.legal_address.postcode || '',\n telephone: rawCompany.legal_address.telephone,\n },\n companyAdmin: {\n id: rawCompany.company_admin.id,\n firstname: rawCompany.company_admin.firstname,\n lastname: rawCompany.company_admin.lastname,\n email: rawCompany.company_admin.email,\n jobTitle: rawCompany.company_admin.job_title,\n telephone: rawCompany.company_admin.telephone,\n },\n };\n\n return transformedCompany;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { CountriesFormResponse } from '../../types/api/getCountries.types';\nimport { Country } from '../models/country';\n\nexport const transformCountries = (\n response: CountriesFormResponse\n): {\n availableCountries: Country[] | [];\n countriesWithRequiredRegion: string[];\n optionalZipCountries: string[];\n} => {\n if (!response?.data?.countries?.length) {\n return {\n availableCountries: [],\n countriesWithRequiredRegion: [],\n optionalZipCountries: [],\n };\n }\n\n const { countries, storeConfig } = response.data;\n\n const countriesWithRequiredRegion =\n storeConfig?.countries_with_required_region.split(',');\n const optionalZipCountries = storeConfig?.optional_zip_countries.split(',');\n\n const availableCountries = countries\n .filter(({ two_letter_abbreviation, full_name_locale }) =>\n Boolean(two_letter_abbreviation && full_name_locale)\n )\n .map((country) => {\n const { two_letter_abbreviation, full_name_locale, available_regions } = country;\n\n const hasRegions = Array.isArray(available_regions) && available_regions.length > 0;\n return {\n value: two_letter_abbreviation,\n text: full_name_locale,\n availableRegions: hasRegions ? available_regions : undefined,\n };\n })\n .sort((a, b) => a.text.localeCompare(b.text));\n\n return {\n availableCountries,\n countriesWithRequiredRegion,\n optionalZipCountries,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const GET_COUNTRIES_QUERY = `\n query getCountries {\n countries {\n id\n two_letter_abbreviation\n three_letter_abbreviation\n full_name_locale\n full_name_english\n available_regions {\n id\n code\n name\n }\n }\n storeConfig {\n countries_with_required_region\n optional_zip_countries\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { GET_COUNTRIES_QUERY } from './graphql/getCountries.graphql';\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { handleNetworkError } from '../../lib/network-error';\nimport { handleFetchError } from '../../lib/fetch-error';\nimport { transformCountries } from '../../data/transforms/transform-countries';\nimport { CountriesFormResponse } from '../../types/api/getCountries.types';\nimport { Country } from '../../data/models/country';\n\nexport const getCountries = async (): Promise<{\n availableCountries: Country[] | [];\n countriesWithRequiredRegion: string[];\n optionalZipCountries: string[];\n}> => {\n const sessionStorageKey = '_company_countries';\n\n const sessionStorageCache = sessionStorage.getItem(sessionStorageKey);\n\n if (sessionStorageCache) {\n return JSON.parse(sessionStorageCache);\n }\n\n return await fetchGraphQl(GET_COUNTRIES_QUERY, {\n method: 'GET',\n })\n .then((response: CountriesFormResponse) => {\n if (response.errors?.length) return handleFetchError(response.errors);\n\n const transformedData = transformCountries(response);\n\n sessionStorage.setItem(\n sessionStorageKey,\n JSON.stringify(transformedData)\n );\n\n return transformedData;\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nexport const VALIDATE_COMPANY_EMAIL_QUERY = /* GraphQL */ `\n query validateCompanyEmail($email: String!) {\n isCompanyEmailAvailable(email: $email) {\n is_email_available\n }\n }\n`;","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '../fetch-graphql';\nimport { VALIDATE_COMPANY_EMAIL_QUERY } from './graphql/validateCompanyEmail.graphql';\nimport { ValidateCompanyEmailQuery, ValidateCompanyEmailResponse } from '../../types/api/validateCompanyEmail.types';\n\nexport const validateCompanyEmail = async (email: string): Promise<ValidateCompanyEmailResponse> => {\n try {\n const response = await fetchGraphQl<ValidateCompanyEmailQuery>(VALIDATE_COMPANY_EMAIL_QUERY, {\n variables: { email },\n });\n\n if (response.errors) {\n return {\n isValid: false,\n error: 'Unable to validate email'\n };\n }\n\n return {\n isValid: response.data.isCompanyEmailAvailable.is_email_available,\n error: response.data.isCompanyEmailAvailable.is_email_available \n ? undefined \n : 'This email is already used by another company'\n };\n } catch (error) {\n return {\n isValid: false,\n error: 'Unable to validate email'\n };\n }\n};"],"names":["flattenIds","nodes","set","stack","node","child","isCompanyAdministrator","role","buildPermissionFlags","allowedIds","isAdmin","transformCompany","response","companyData","_a","customerData","legalAddress","line","customerRole","permissionsFlags","model","m","transformCreateCompanyResponse","_b","rawCompany","_c","_d","_e","transformCountries","countries","storeConfig","countriesWithRequiredRegion","optionalZipCountries","two_letter_abbreviation","full_name_locale","country","available_regions","hasRegions","a","b","GET_COUNTRIES_QUERY","getCountries","sessionStorageKey","sessionStorageCache","fetchGraphQl","handleFetchError","transformedData","handleNetworkError","VALIDATE_COMPANY_EMAIL_QUERY","validateCompanyEmail","email"],"mappings":"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"}
@@ -29,7 +29,6 @@ export interface TreeProps {
29
29
  onSelectedIdsChange?: (ids: Set<string>) => void;
30
30
  renderNode: (args: RenderNodeArgs) => any;
31
31
  role?: 'tree' | 'list' | 'grid';
32
- preserveOrder?: boolean;
33
32
  draggable?: (item: TreeItem) => boolean;
34
33
  canDrop?: (dragId: string, targetId: string) => boolean;
35
34
  onMove?: (args: {
@@ -39,7 +38,6 @@ export interface TreeProps {
39
38
  isCheckable?: (item: TreeItem) => boolean;
40
39
  checkedIds?: Set<string>;
41
40
  onCheckedChange?: (next: Set<string>) => void;
42
- biDirectionalChecking?: boolean;
43
41
  renderExpander?: (args: {
44
42
  expanded: boolean;
45
43
  hasChildren: boolean;
@@ -16,12 +16,9 @@
16
16
  *******************************************************************/
17
17
  export * from './CompanyLoaders';
18
18
  export * from './CompanyProfileCard';
19
- export * from './DeleteRoleModal';
20
19
  export * from './EditCompanyProfile';
21
20
  export * from './CustomerCompanyInfoCard';
22
21
  export * from './CompanyStructureEmpty';
23
22
  export * from './CompanyRegistrationForm';
24
23
  export * from './CompanyRegistrationSuccess';
25
- export * from './EditRoleAndPermission';
26
- export * from './RoleAndPermissionTable';
27
24
  //# sourceMappingURL=index.d.ts.map