@atlaskit/teams-public 2.7.0 → 2.9.0

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 (269) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/confluence-icon/package.json +9 -0
  3. package/dist/cjs/common/hooks/useSpaceInviteScheduler.js +2 -2
  4. package/dist/cjs/common/ui/container-icon/index.js +9 -9
  5. package/dist/cjs/common/ui/loom-avatar/getAvatarText.js +9 -0
  6. package/dist/cjs/common/ui/loom-avatar/hash.js +13 -0
  7. package/dist/cjs/common/ui/loom-avatar/main.js +9 -7
  8. package/dist/cjs/common/ui/loom-avatar/pickContainerColor.js +19 -0
  9. package/dist/cjs/common/ui/loom-avatar/pickTextColor.js +19 -0
  10. package/dist/cjs/common/ui/team-link-card-actions/index.js +12 -12
  11. package/dist/cjs/common/utils/analytics.js +2 -2
  12. package/dist/cjs/common/utils/container-to-new-web-link.js +13 -0
  13. package/dist/cjs/common/utils/get-container-properties.js +6 -6
  14. package/dist/cjs/common/utils/{get-link-domain.js → get-domain-from-link-uri.js} +4 -14
  15. package/dist/cjs/common/utils/get-is-experiment-enabled.js +3 -3
  16. package/dist/cjs/common/utils/is-new-team-web-link.js +9 -0
  17. package/dist/cjs/common/utils/team-web-link-converters.js +1 -34
  18. package/dist/cjs/common/utils/unsafe-get-domain-from-url.js +16 -0
  19. package/dist/cjs/common/utils/web-link-to-container.js +15 -0
  20. package/dist/cjs/common/utils/web-links-to-containers.js +16 -0
  21. package/dist/cjs/controllers/hooks/use-refresh-containers-on-container-created/index.js +1 -1
  22. package/dist/cjs/controllers/hooks/use-team-containers/actions-2.js +488 -0
  23. package/dist/cjs/controllers/hooks/use-team-containers/actions.js +383 -0
  24. package/dist/cjs/controllers/hooks/use-team-containers/connected-teams.js +5 -0
  25. package/dist/cjs/controllers/hooks/use-team-containers/containers-deep-equal.js +23 -0
  26. package/dist/cjs/controllers/hooks/use-team-containers/containers-equal.js +29 -0
  27. package/dist/cjs/controllers/hooks/use-team-containers/fire-analytics-props.js +1 -0
  28. package/dist/cjs/controllers/hooks/use-team-containers/get-error-details.js +14 -0
  29. package/dist/cjs/controllers/hooks/use-team-containers/get-initial-team-state.js +18 -0
  30. package/dist/cjs/controllers/hooks/use-team-containers/index.js +17 -465
  31. package/dist/cjs/controllers/hooks/use-team-containers/initial-connected-teams-state.js +14 -0
  32. package/dist/cjs/controllers/hooks/use-team-containers/multi-team.js +4 -634
  33. package/dist/cjs/controllers/hooks/use-team-containers/normalize-error.js +12 -0
  34. package/dist/cjs/controllers/hooks/use-team-containers/state.js +5 -0
  35. package/dist/cjs/controllers/hooks/use-team-containers/store.js +23 -0
  36. package/dist/cjs/controllers/hooks/use-team-containers/team-containers-state.js +5 -0
  37. package/dist/cjs/controllers/hooks/use-team-containers/team-state.js +5 -0
  38. package/dist/cjs/controllers/hooks/use-team-containers/use-connected-teams-2.js +56 -0
  39. package/dist/cjs/controllers/hooks/use-team-containers/use-connected-teams.js +36 -0
  40. package/dist/cjs/controllers/hooks/use-team-containers/use-team-containers-2.js +86 -0
  41. package/dist/cjs/controllers/hooks/use-team-containers/use-team-containers-hook.js +9 -0
  42. package/dist/cjs/controllers/hooks/use-team-containers/use-team-containers.js +55 -0
  43. package/dist/cjs/controllers/hooks/use-team-links-and-containers/index.js +9 -7
  44. package/dist/cjs/controllers/hooks/use-team-web-links/actions.js +328 -0
  45. package/dist/cjs/controllers/hooks/use-team-web-links/index.js +17 -359
  46. package/dist/cjs/controllers/hooks/use-team-web-links/initial-state.js +19 -0
  47. package/dist/cjs/controllers/hooks/use-team-web-links/store.js +14 -0
  48. package/dist/cjs/controllers/hooks/use-team-web-links/use-team-web-links-actions.js +21 -0
  49. package/dist/cjs/controllers/hooks/use-team-web-links/use-team-web-links.js +19 -0
  50. package/dist/cjs/controllers/index.js +6 -5
  51. package/dist/cjs/controllers/product-permission/getProductPermissionRequestBody.js +28 -0
  52. package/dist/cjs/controllers/product-permission/hasProductPermission.js +23 -0
  53. package/dist/cjs/controllers/product-permission/main.js +4 -3
  54. package/dist/cjs/controllers/product-permission/transformPermissions.js +22 -0
  55. package/dist/cjs/controllers/product-permission/utils.js +19 -51
  56. package/dist/cjs/index.js +8 -6
  57. package/dist/cjs/next/ui/team-containers/team-link-card/index.js +4 -4
  58. package/dist/cjs/ui/team-containers/add-container-card/{index.js → AddContainerCard.js} +8 -52
  59. package/dist/cjs/ui/team-containers/add-container-card/getAddContainerCards.js +54 -0
  60. package/dist/cjs/ui/team-containers/disconnect-dialog/index.js +5 -5
  61. package/dist/cjs/ui/team-containers/main.compiled.css +1 -0
  62. package/dist/cjs/ui/team-containers/main.js +34 -29
  63. package/dist/cjs/ui/team-containers/no-product-access-empty-state/index.js +1 -1
  64. package/dist/cjs/ui/team-containers/team-link-card/index.js +19 -17
  65. package/dist/es2019/common/assets/index.js +10 -0
  66. package/dist/es2019/common/hooks/useSpaceInviteScheduler.js +1 -1
  67. package/dist/es2019/common/ui/container-icon/index.js +5 -5
  68. package/dist/es2019/common/ui/loom-avatar/getAvatarText.js +3 -0
  69. package/dist/es2019/common/ui/loom-avatar/hash.js +6 -0
  70. package/dist/es2019/common/ui/loom-avatar/index.js +4 -0
  71. package/dist/es2019/common/ui/loom-avatar/main.js +5 -3
  72. package/dist/es2019/common/ui/loom-avatar/pickContainerColor.js +13 -0
  73. package/dist/es2019/common/ui/loom-avatar/pickTextColor.js +13 -0
  74. package/dist/es2019/common/ui/team-link-card-actions/index.js +6 -4
  75. package/dist/es2019/common/utils/analytics.js +1 -1
  76. package/dist/es2019/common/utils/container-to-new-web-link.js +7 -0
  77. package/dist/es2019/common/utils/get-container-properties.js +2 -2
  78. package/dist/es2019/common/utils/{get-link-domain.js → get-domain-from-link-uri.js} +2 -11
  79. package/dist/es2019/common/utils/get-is-experiment-enabled.js +1 -1
  80. package/dist/es2019/common/utils/is-new-team-web-link.js +3 -0
  81. package/dist/es2019/common/utils/team-web-link-converters.js +0 -25
  82. package/dist/es2019/common/utils/unsafe-get-domain-from-url.js +10 -0
  83. package/dist/es2019/common/utils/web-link-to-container.js +9 -0
  84. package/dist/es2019/common/utils/web-links-to-containers.js +7 -0
  85. package/dist/es2019/controllers/hooks/use-refresh-containers-on-container-created/index.js +1 -1
  86. package/dist/es2019/controllers/hooks/use-team-containers/actions-2.js +413 -0
  87. package/dist/es2019/controllers/hooks/use-team-containers/actions.js +260 -0
  88. package/dist/es2019/controllers/hooks/use-team-containers/connected-teams.js +1 -0
  89. package/dist/es2019/controllers/hooks/use-team-containers/containers-deep-equal.js +13 -0
  90. package/dist/es2019/controllers/hooks/use-team-containers/containers-equal.js +17 -0
  91. package/dist/es2019/controllers/hooks/use-team-containers/fire-analytics-props.js +0 -0
  92. package/dist/es2019/controllers/hooks/use-team-containers/get-error-details.js +8 -0
  93. package/dist/es2019/controllers/hooks/use-team-containers/get-initial-team-state.js +10 -0
  94. package/dist/es2019/controllers/hooks/use-team-containers/index.js +13 -329
  95. package/dist/es2019/controllers/hooks/use-team-containers/initial-connected-teams-state.js +8 -0
  96. package/dist/es2019/controllers/hooks/use-team-containers/multi-team.js +2 -541
  97. package/dist/es2019/controllers/hooks/use-team-containers/normalize-error.js +6 -0
  98. package/dist/es2019/controllers/hooks/use-team-containers/state.js +1 -0
  99. package/dist/es2019/controllers/hooks/use-team-containers/store.js +17 -0
  100. package/dist/es2019/controllers/hooks/use-team-containers/team-containers-state.js +1 -0
  101. package/dist/es2019/controllers/hooks/use-team-containers/team-state.js +1 -0
  102. package/dist/es2019/controllers/hooks/use-team-containers/use-connected-teams-2.js +44 -0
  103. package/dist/es2019/controllers/hooks/use-team-containers/use-connected-teams.js +20 -0
  104. package/dist/es2019/controllers/hooks/use-team-containers/use-team-containers-2.js +59 -0
  105. package/dist/es2019/controllers/hooks/use-team-containers/use-team-containers-hook.js +3 -0
  106. package/dist/es2019/controllers/hooks/use-team-containers/use-team-containers.js +28 -0
  107. package/dist/es2019/controllers/hooks/use-team-links-and-containers/index.js +5 -3
  108. package/dist/es2019/controllers/hooks/use-team-web-links/actions.js +177 -0
  109. package/dist/es2019/controllers/hooks/use-team-web-links/index.js +13 -217
  110. package/dist/es2019/controllers/hooks/use-team-web-links/initial-state.js +13 -0
  111. package/dist/es2019/controllers/hooks/use-team-web-links/store.js +8 -0
  112. package/dist/es2019/controllers/hooks/use-team-web-links/use-team-web-links-actions.js +15 -0
  113. package/dist/es2019/controllers/hooks/use-team-web-links/use-team-web-links.js +13 -0
  114. package/dist/es2019/controllers/index.js +17 -3
  115. package/dist/es2019/controllers/product-permission/getProductPermissionRequestBody.js +19 -0
  116. package/dist/es2019/controllers/product-permission/hasProductPermission.js +15 -0
  117. package/dist/es2019/controllers/product-permission/main.js +2 -1
  118. package/dist/es2019/controllers/product-permission/transformPermissions.js +15 -0
  119. package/dist/es2019/controllers/product-permission/utils.js +11 -48
  120. package/dist/es2019/i18n/index.js +88 -0
  121. package/dist/es2019/index.js +5 -3
  122. package/dist/es2019/next/index.js +10 -0
  123. package/dist/es2019/next/ui/team-containers/team-link-card/index.js +2 -2
  124. package/dist/es2019/ui/team-containers/add-container-card/{index.js → AddContainerCard.js} +4 -41
  125. package/dist/es2019/ui/team-containers/add-container-card/getAddContainerCards.js +40 -0
  126. package/dist/es2019/ui/team-containers/disconnect-dialog/index.js +2 -2
  127. package/dist/es2019/ui/team-containers/index.js +12 -1
  128. package/dist/es2019/ui/team-containers/main.compiled.css +1 -0
  129. package/dist/es2019/ui/team-containers/main.js +17 -11
  130. package/dist/es2019/ui/team-containers/no-product-access-empty-state/index.js +1 -1
  131. package/dist/es2019/ui/team-containers/team-link-card/index.js +9 -7
  132. package/dist/esm/common/assets/index.js +10 -0
  133. package/dist/esm/common/hooks/useSpaceInviteScheduler.js +1 -1
  134. package/dist/esm/common/ui/container-icon/index.js +5 -5
  135. package/dist/esm/common/ui/loom-avatar/getAvatarText.js +3 -0
  136. package/dist/esm/common/ui/loom-avatar/hash.js +6 -0
  137. package/dist/esm/common/ui/loom-avatar/index.js +4 -0
  138. package/dist/esm/common/ui/loom-avatar/main.js +5 -3
  139. package/dist/esm/common/ui/loom-avatar/pickContainerColor.js +13 -0
  140. package/dist/esm/common/ui/loom-avatar/pickTextColor.js +13 -0
  141. package/dist/esm/common/ui/team-link-card-actions/index.js +6 -4
  142. package/dist/esm/common/utils/analytics.js +1 -1
  143. package/dist/esm/common/utils/container-to-new-web-link.js +7 -0
  144. package/dist/esm/common/utils/get-container-properties.js +2 -2
  145. package/dist/esm/common/utils/{get-link-domain.js → get-domain-from-link-uri.js} +2 -11
  146. package/dist/esm/common/utils/get-is-experiment-enabled.js +1 -1
  147. package/dist/esm/common/utils/is-new-team-web-link.js +3 -0
  148. package/dist/esm/common/utils/team-web-link-converters.js +0 -28
  149. package/dist/esm/common/utils/unsafe-get-domain-from-url.js +10 -0
  150. package/dist/esm/common/utils/web-link-to-container.js +9 -0
  151. package/dist/esm/common/utils/web-links-to-containers.js +10 -0
  152. package/dist/esm/controllers/hooks/use-refresh-containers-on-container-created/index.js +1 -1
  153. package/dist/esm/controllers/hooks/use-team-containers/actions-2.js +481 -0
  154. package/dist/esm/controllers/hooks/use-team-containers/actions.js +376 -0
  155. package/dist/esm/controllers/hooks/use-team-containers/connected-teams.js +1 -0
  156. package/dist/esm/controllers/hooks/use-team-containers/containers-deep-equal.js +16 -0
  157. package/dist/esm/controllers/hooks/use-team-containers/containers-equal.js +22 -0
  158. package/dist/esm/controllers/hooks/use-team-containers/fire-analytics-props.js +0 -0
  159. package/dist/esm/controllers/hooks/use-team-containers/get-error-details.js +8 -0
  160. package/dist/esm/controllers/hooks/use-team-containers/get-initial-team-state.js +12 -0
  161. package/dist/esm/controllers/hooks/use-team-containers/index.js +13 -467
  162. package/dist/esm/controllers/hooks/use-team-containers/initial-connected-teams-state.js +8 -0
  163. package/dist/esm/controllers/hooks/use-team-containers/multi-team.js +2 -631
  164. package/dist/esm/controllers/hooks/use-team-containers/normalize-error.js +6 -0
  165. package/dist/esm/controllers/hooks/use-team-containers/state.js +1 -0
  166. package/dist/esm/controllers/hooks/use-team-containers/store.js +17 -0
  167. package/dist/esm/controllers/hooks/use-team-containers/team-containers-state.js +1 -0
  168. package/dist/esm/controllers/hooks/use-team-containers/team-state.js +1 -0
  169. package/dist/esm/controllers/hooks/use-team-containers/use-connected-teams-2.js +49 -0
  170. package/dist/esm/controllers/hooks/use-team-containers/use-connected-teams.js +29 -0
  171. package/dist/esm/controllers/hooks/use-team-containers/use-team-containers-2.js +79 -0
  172. package/dist/esm/controllers/hooks/use-team-containers/use-team-containers-hook.js +3 -0
  173. package/dist/esm/controllers/hooks/use-team-containers/use-team-containers.js +48 -0
  174. package/dist/esm/controllers/hooks/use-team-links-and-containers/index.js +5 -3
  175. package/dist/esm/controllers/hooks/use-team-web-links/actions.js +321 -0
  176. package/dist/esm/controllers/hooks/use-team-web-links/index.js +13 -361
  177. package/dist/esm/controllers/hooks/use-team-web-links/initial-state.js +13 -0
  178. package/dist/esm/controllers/hooks/use-team-web-links/store.js +8 -0
  179. package/dist/esm/controllers/hooks/use-team-web-links/use-team-web-links-actions.js +15 -0
  180. package/dist/esm/controllers/hooks/use-team-web-links/use-team-web-links.js +13 -0
  181. package/dist/esm/controllers/index.js +17 -3
  182. package/dist/esm/controllers/product-permission/getProductPermissionRequestBody.js +21 -0
  183. package/dist/esm/controllers/product-permission/hasProductPermission.js +17 -0
  184. package/dist/esm/controllers/product-permission/main.js +2 -1
  185. package/dist/esm/controllers/product-permission/transformPermissions.js +15 -0
  186. package/dist/esm/controllers/product-permission/utils.js +11 -49
  187. package/dist/esm/i18n/index.js +88 -0
  188. package/dist/esm/index.js +5 -3
  189. package/dist/esm/next/index.js +10 -0
  190. package/dist/esm/next/ui/team-containers/team-link-card/index.js +2 -2
  191. package/dist/esm/ui/team-containers/add-container-card/{index.js → AddContainerCard.js} +4 -48
  192. package/dist/esm/ui/team-containers/add-container-card/getAddContainerCards.js +47 -0
  193. package/dist/esm/ui/team-containers/disconnect-dialog/index.js +2 -2
  194. package/dist/esm/ui/team-containers/index.js +12 -1
  195. package/dist/esm/ui/team-containers/main.compiled.css +1 -0
  196. package/dist/esm/ui/team-containers/main.js +17 -11
  197. package/dist/esm/ui/team-containers/no-product-access-empty-state/index.js +1 -1
  198. package/dist/esm/ui/team-containers/team-link-card/index.js +9 -7
  199. package/dist/types/common/assets/index.d.ts +9 -0
  200. package/dist/types/common/ui/loom-avatar/getAvatarText.d.ts +1 -0
  201. package/dist/types/common/ui/loom-avatar/hash.d.ts +1 -0
  202. package/dist/types/common/ui/loom-avatar/index.d.ts +3 -0
  203. package/dist/types/common/ui/loom-avatar/pickContainerColor.d.ts +8 -0
  204. package/dist/types/common/ui/loom-avatar/pickTextColor.d.ts +8 -0
  205. package/dist/types/common/utils/container-to-new-web-link.d.ts +2 -0
  206. package/dist/types/common/utils/{get-link-domain.d.ts → get-domain-from-link-uri.d.ts} +0 -7
  207. package/dist/types/common/utils/is-new-team-web-link.d.ts +2 -0
  208. package/dist/types/common/utils/team-web-link-converters.d.ts +0 -5
  209. package/dist/types/common/utils/unsafe-get-domain-from-url.d.ts +7 -0
  210. package/dist/types/common/utils/web-link-to-container.d.ts +3 -0
  211. package/dist/types/common/utils/web-links-to-containers.d.ts +3 -0
  212. package/dist/types/controllers/hooks/use-team-containers/actions-2.d.ts +13 -0
  213. package/dist/types/controllers/hooks/use-team-containers/actions.d.ts +12 -0
  214. package/dist/types/controllers/hooks/use-team-containers/connected-teams.d.ts +9 -0
  215. package/dist/types/controllers/hooks/use-team-containers/containers-deep-equal.d.ts +12 -0
  216. package/dist/types/controllers/hooks/use-team-containers/containers-equal.d.ts +11 -0
  217. package/dist/types/controllers/hooks/use-team-containers/fire-analytics-props.d.ts +7 -0
  218. package/dist/types/controllers/hooks/use-team-containers/get-error-details.d.ts +4 -0
  219. package/dist/types/controllers/hooks/use-team-containers/get-initial-team-state.d.ts +2 -0
  220. package/dist/types/controllers/hooks/use-team-containers/index.d.ts +12 -59
  221. package/dist/types/controllers/hooks/use-team-containers/initial-connected-teams-state.d.ts +2 -0
  222. package/dist/types/controllers/hooks/use-team-containers/multi-team.d.ts +3 -53
  223. package/dist/types/controllers/hooks/use-team-containers/normalize-error.d.ts +1 -0
  224. package/dist/types/controllers/hooks/use-team-containers/state.d.ts +6 -0
  225. package/dist/types/controllers/hooks/use-team-containers/store.d.ts +4 -0
  226. package/dist/types/controllers/hooks/use-team-containers/team-containers-state.d.ts +16 -0
  227. package/dist/types/controllers/hooks/use-team-containers/team-state.d.ts +11 -0
  228. package/dist/types/controllers/hooks/use-team-containers/use-connected-teams-2.d.ts +11 -0
  229. package/dist/types/controllers/hooks/use-team-containers/use-connected-teams.d.ts +11 -0
  230. package/dist/types/controllers/hooks/use-team-containers/use-team-containers-2.d.ts +15 -0
  231. package/dist/types/controllers/hooks/use-team-containers/use-team-containers-hook.d.ts +12 -0
  232. package/dist/types/controllers/hooks/use-team-containers/use-team-containers.d.ts +21 -0
  233. package/dist/types/controllers/hooks/use-team-web-links/actions.d.ts +12 -0
  234. package/dist/types/controllers/hooks/use-team-web-links/index.d.ts +12 -165
  235. package/dist/types/controllers/hooks/use-team-web-links/initial-state.d.ts +2 -0
  236. package/dist/types/controllers/hooks/use-team-web-links/store.d.ts +4 -0
  237. package/dist/types/controllers/hooks/use-team-web-links/use-team-web-links-actions.d.ts +147 -0
  238. package/dist/types/controllers/hooks/use-team-web-links/use-team-web-links.d.ts +13 -0
  239. package/dist/types/controllers/index.d.ts +16 -3
  240. package/dist/types/controllers/product-permission/getProductPermissionRequestBody.d.ts +2 -0
  241. package/dist/types/controllers/product-permission/hasProductPermission.d.ts +5 -0
  242. package/dist/types/controllers/product-permission/transformPermissions.d.ts +2 -0
  243. package/dist/types/controllers/product-permission/utils.d.ts +10 -5
  244. package/dist/types/i18n/index.d.ts +87 -0
  245. package/dist/types/index.d.ts +5 -3
  246. package/dist/types/next/index.d.ts +9 -0
  247. package/dist/types/ui/team-containers/add-container-card/AddContainerCard.d.ts +12 -0
  248. package/dist/types/ui/team-containers/add-container-card/{index.d.ts → getAddContainerCards.d.ts} +1 -11
  249. package/dist/types/ui/team-containers/index.d.ts +9 -0
  250. package/dist/types/ui/team-containers/types.d.ts +1 -1
  251. package/jira-icon/package.json +9 -0
  252. package/loom-icon/package.json +9 -0
  253. package/package.json +19 -19
  254. package/product-permission/get-product-permission-request-body/package.json +10 -0
  255. package/product-permission/has-product-permission/package.json +10 -0
  256. package/product-permission/transform-permissions/package.json +10 -0
  257. package/use-connected-teams/package.json +10 -0
  258. package/use-team-containers/use-team-containers/package.json +10 -0
  259. package/use-team-containers/use-team-containers-hook/package.json +10 -0
  260. package/use-team-web-links/actions/package.json +10 -0
  261. package/use-team-web-links/use-team-web-links/package.json +10 -0
  262. package/use-team-web-links-actions/package.json +10 -0
  263. package/dist/cjs/common/ui/loom-avatar/utils.js +0 -39
  264. package/dist/es2019/common/ui/loom-avatar/utils.js +0 -33
  265. package/dist/esm/common/ui/loom-avatar/utils.js +0 -33
  266. package/dist/types/common/ui/loom-avatar/utils.d.ts +0 -16
  267. /package/dist/cjs/ui/team-containers/add-container-card/{index.compiled.css → AddContainerCard.compiled.css} +0 -0
  268. /package/dist/es2019/ui/team-containers/add-container-card/{index.compiled.css → AddContainerCard.compiled.css} +0 -0
  269. /package/dist/esm/ui/team-containers/add-container-card/{index.compiled.css → AddContainerCard.compiled.css} +0 -0
@@ -0,0 +1,6 @@
1
+ import stringHash from 'string-hash';
2
+ export const hash = str => {
3
+ let hash = stringHash(str);
4
+ hash = ~hash;
5
+ return Math.abs(Number(hash));
6
+ };
@@ -1 +1,5 @@
1
+ /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
2
+ /**
3
+ * @deprecated Use `import { LoomSpaceAvatar } from '@atlaskit/teams-public/loom-avatar/main'` instead.
4
+ */
1
5
  export { LoomSpaceAvatar } from './main';
@@ -3,10 +3,12 @@ import "./main.compiled.css";
3
3
  import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import { cx } from '@atlaskit/css';
6
- import { fg } from '@atlaskit/platform-feature-flags';
6
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
7
7
  import { Box } from '@atlaskit/primitives/compiled';
8
- import Tile from '@atlaskit/tile';
9
- import { getAvatarText, pickContainerColor, pickTextColor } from './utils';
8
+ import Tile from '@atlaskit/tile/tile';
9
+ import { getAvatarText } from './getAvatarText';
10
+ import { pickContainerColor } from './pickContainerColor';
11
+ import { pickTextColor } from './pickTextColor';
10
12
  const typographyByAvatarSize = {
11
13
  small: "_11c81qyo",
12
14
  medium: "_11c81af2"
@@ -0,0 +1,13 @@
1
+ import { hash } from './hash';
2
+ var SpaceColors = /*#__PURE__*/function (SpaceColors) {
3
+ SpaceColors["ORANGE_LIGHT"] = "#FFD5D2";
4
+ SpaceColors["BLUE_LIGHT"] = "#CFE1FD";
5
+ SpaceColors["YELLOW_LIGHT"] = "#FCE4A6";
6
+ SpaceColors["TEAL"] = "#BAF3DB";
7
+ return SpaceColors;
8
+ }(SpaceColors || {});
9
+ const AVATAR_CONTAINER_COLORS = [SpaceColors.ORANGE_LIGHT, SpaceColors.BLUE_LIGHT, SpaceColors.YELLOW_LIGHT, SpaceColors.TEAL];
10
+ export const pickContainerColor = spaceName => {
11
+ const avatarHash = hash(spaceName);
12
+ return AVATAR_CONTAINER_COLORS[avatarHash % AVATAR_CONTAINER_COLORS.length];
13
+ };
@@ -0,0 +1,13 @@
1
+ import { hash } from './hash';
2
+ var AvatarTextColors = /*#__PURE__*/function (AvatarTextColors) {
3
+ AvatarTextColors["ORANGE_DARK"] = "#AE2E24";
4
+ AvatarTextColors["BLUE_DARK"] = "#123263";
5
+ AvatarTextColors["YELLOW_DARK"] = "#9E4C00";
6
+ AvatarTextColors["TEAL_DARK"] = "#164B35";
7
+ return AvatarTextColors;
8
+ }(AvatarTextColors || {});
9
+ const AVATAR_TEXT_COLORS = [AvatarTextColors.ORANGE_DARK, AvatarTextColors.BLUE_DARK, AvatarTextColors.YELLOW_DARK, AvatarTextColors.TEAL_DARK];
10
+ export const pickTextColor = spaceName => {
11
+ const avatarHash = hash(spaceName);
12
+ return AVATAR_TEXT_COLORS[avatarHash % AVATAR_TEXT_COLORS.length];
13
+ };
@@ -4,14 +4,16 @@ import "./index.compiled.css";
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import React from 'react';
6
6
  import { defineMessages, useIntl } from 'react-intl';
7
- import { IconButton } from '@atlaskit/button/new';
7
+ import IconButton from '@atlaskit/button/icon/button';
8
8
  import { cx } from '@atlaskit/css';
9
- import DropdownMenu, { DropdownItem, DropdownItemGroup } from '@atlaskit/dropdown-menu';
9
+ import DropdownMenu from '@atlaskit/dropdown-menu/dropdown-menu';
10
+ import DropdownItem from '@atlaskit/dropdown-menu/dropdown-menu-item';
11
+ import DropdownItemGroup from '@atlaskit/dropdown-menu/dropdown-menu-item-group';
10
12
  import CrossIcon from '@atlaskit/icon/core/cross';
11
13
  import ShowMoreHorizontalIcon from '@atlaskit/icon/core/show-more-horizontal';
12
14
  import { Box } from '@atlaskit/primitives/compiled';
13
- import { useAnalyticsEvents } from '@atlaskit/teams-app-internal-analytics';
14
- import Tooltip from '@atlaskit/tooltip';
15
+ import { useAnalyticsEvents } from '@atlaskit/teams-app-internal-analytics/use-analytics-events';
16
+ import Tooltip from '@atlaskit/tooltip/Tooltip';
15
17
  const styles = {
16
18
  crossIconWrapper: "_1e0c1txw _4cvr1h6o _1bahesu3 _18u01wug",
17
19
  showMoreIconWrapper: "_1e0c1txw _4cvr1h6o _1bahesu3 _18u01wug",
@@ -1,4 +1,4 @@
1
- import { usePeopleTeamsAnalyticsSubcontext } from '@atlaskit/people-teams-ui-public/analytics';
1
+ import { usePeopleTeamsAnalyticsSubcontext } from '@atlaskit/people-teams-ui-public/analytics-subcontext/store';
2
2
  const ANALYTICS_CHANNEL = 'peopleTeams';
3
3
  const runItLater = cb => {
4
4
  if (window.requestIdleCallback === 'function') {
@@ -0,0 +1,7 @@
1
+ export const containerToNewWebLink = container => {
2
+ return {
3
+ contentTitle: container.name,
4
+ description: '',
5
+ linkUri: container.link || ''
6
+ };
7
+ };
@@ -7,9 +7,9 @@ import { cx } from '@atlaskit/css';
7
7
  import LinkIcon from '@atlaskit/icon/core/link';
8
8
  import LinkExternalIcon from '@atlaskit/icon/core/link-external';
9
9
  import Image from '@atlaskit/image';
10
- import { fg } from '@atlaskit/platform-feature-flags';
10
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
11
11
  import { Box, Flex, Text } from '@atlaskit/primitives/compiled';
12
- import Tile from '@atlaskit/tile';
12
+ import Tile from '@atlaskit/tile/tile';
13
13
  import ConfluenceIcon from '../assets/ConfluenceIcon.svg';
14
14
  import JiraIcon from '../assets/JiraIcon.svg';
15
15
  import JiraProjectDiscovery from '../assets/JiraProjectDiscovery.svg';
@@ -1,3 +1,5 @@
1
+ import { unsafeGetDomainFromUrl } from './unsafe-get-domain-from-url';
2
+
1
3
  /**
2
4
  * Extract the domain from the URL. Strips "www" subdomains
3
5
  * e.g. http://dogs.animals.com/yellow/golden-retriever becomes "dogs.animals.com"
@@ -23,15 +25,4 @@ export const getDomainFromLinkUri = url => {
23
25
  return '';
24
26
  }
25
27
  return hostname.replace(/^www\./, '');
26
- };
27
-
28
- /**
29
- * Extract the domain from the URL.
30
- * Throws if url param is not a valid URL.
31
- * Marked as unsafe because the URL constructor throws Type Errors when it
32
- * receives invalid URLs. Feel free to use this method with adequate care.
33
- */
34
- export const unsafeGetDomainFromUrl = url => {
35
- const urlObj = new URL(url);
36
- return urlObj.hostname;
37
28
  };
@@ -1,4 +1,4 @@
1
- import FeatureGates from '@atlaskit/feature-gate-js-client';
1
+ import FeatureGates from '@atlaskit/feature-gate-js-client/feature-gates';
2
2
  export const COHORT_PARAMETER = 'cohort';
3
3
  export const NOT_ENROLLED = 'not-enrolled';
4
4
  export const CONTROL = 'control';
@@ -0,0 +1,3 @@
1
+ export const isNewTeamWebLink = input => {
2
+ return 'contentTitle' in input && 'linkUri' in input && !('type' in input) && !('id' in input);
3
+ };
@@ -1,25 +0,0 @@
1
- export const containerToNewWebLink = container => {
2
- return {
3
- contentTitle: container.name,
4
- description: '',
5
- linkUri: container.link || ''
6
- };
7
- };
8
- export const webLinkToContainer = (link, iconData) => {
9
- return {
10
- id: link.linkId,
11
- type: 'WebLink',
12
- name: link.contentTitle,
13
- icon: (iconData === null || iconData === void 0 ? void 0 : iconData.iconUrl) || null,
14
- link: link.linkUri
15
- };
16
- };
17
- export const webLinksToContainers = (links, linkIcons = []) => {
18
- return links.map(link => {
19
- const iconData = linkIcons.find(icon => icon.linkUrl === link.linkUri);
20
- return webLinkToContainer(link, iconData);
21
- });
22
- };
23
- export const isNewTeamWebLink = input => {
24
- return 'contentTitle' in input && 'linkUri' in input && !('type' in input) && !('id' in input);
25
- };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Extract the domain from the URL.
3
+ * Throws if url param is not a valid URL.
4
+ * Marked as unsafe because the URL constructor throws Type Errors when it
5
+ * receives invalid URLs. Feel free to use this method with adequate care.
6
+ */
7
+ export const unsafeGetDomainFromUrl = url => {
8
+ const urlObj = new URL(url);
9
+ return urlObj.hostname;
10
+ };
@@ -0,0 +1,9 @@
1
+ export const webLinkToContainer = (link, iconData) => {
2
+ return {
3
+ id: link.linkId,
4
+ type: 'WebLink',
5
+ name: link.contentTitle,
6
+ icon: (iconData === null || iconData === void 0 ? void 0 : iconData.iconUrl) || null,
7
+ link: link.linkUri
8
+ };
9
+ };
@@ -0,0 +1,7 @@
1
+ import { webLinkToContainer } from './web-link-to-container';
2
+ export const webLinksToContainers = (links, linkIcons = []) => {
3
+ return links.map(link => {
4
+ const iconData = linkIcons.find(icon => icon.linkUrl === link.linkUri);
5
+ return webLinkToContainer(link, iconData);
6
+ });
7
+ };
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useRef, useState } from 'react';
2
2
  import { useCreateContainers } from '../use-create-containers';
3
- import { useTeamContainers } from '../use-team-containers';
3
+ import { useTeamContainers } from '../use-team-containers/use-team-containers';
4
4
  const PRODUCT_TO_CONTAINER_TYPE = {
5
5
  Jira: 'JiraProject',
6
6
  Confluence: 'ConfluenceSpace',
@@ -0,0 +1,413 @@
1
+ import { teamsClient } from '@atlaskit/teams-client';
2
+ import { containersEqual } from './containers-equal';
3
+ import { getErrorDetails } from './get-error-details';
4
+ import { getInitialTeamState } from './get-initial-team-state';
5
+ import { initialConnectedTeamsState } from './initial-connected-teams-state';
6
+ import { normalizeError } from './normalize-error';
7
+ export const actions = {
8
+ fetchTeamContainers: (teamId, fireAnalytics, fireAnalyticsNext) => async ({
9
+ setState,
10
+ getState
11
+ }) => {
12
+ const {
13
+ teams
14
+ } = getState();
15
+ const currentTeamState = teams[teamId];
16
+ // Only skip if already loaded and not currently loading (prevents duplicate fetches)
17
+ if (currentTeamState !== null && currentTeamState !== void 0 && currentTeamState.hasLoaded && !currentTeamState.loading) {
18
+ return;
19
+ }
20
+ // Skip if currently loading to prevent concurrent fetches
21
+ if (currentTeamState !== null && currentTeamState !== void 0 && currentTeamState.loading) {
22
+ return;
23
+ }
24
+ setState({
25
+ teams: {
26
+ ...teams,
27
+ [teamId]: {
28
+ ...getInitialTeamState(),
29
+ teamContainers: [],
30
+ // Ensure empty containers for new fetch
31
+ loading: true,
32
+ hasLoaded: false
33
+ }
34
+ }
35
+ });
36
+ try {
37
+ const containers = await teamsClient.getTeamContainers(teamId);
38
+ fireAnalyticsNext('operational.fetchTeamContainers.succeeded', {
39
+ teamId
40
+ });
41
+
42
+ // Get fresh state after async operation
43
+ const currentState = getState();
44
+ const currentTeamState = currentState.teams[teamId];
45
+ if (!currentTeamState || currentTeamState.loading === false) {
46
+ // Team state was cleared or fetch was cancelled, don't update
47
+ return;
48
+ }
49
+ // Only update if we're still loading (prevents race conditions when teamId changes)
50
+ if (currentTeamState.loading) {
51
+ setState({
52
+ teams: {
53
+ ...currentState.teams,
54
+ [teamId]: {
55
+ ...currentTeamState,
56
+ teamContainers: containers,
57
+ loading: false,
58
+ error: null,
59
+ hasLoaded: true,
60
+ teamId
61
+ }
62
+ }
63
+ });
64
+ }
65
+ } catch (err) {
66
+ fireAnalyticsNext('operational.fetchTeamContainers.failed', {
67
+ teamId,
68
+ error: getErrorDetails(err)
69
+ });
70
+
71
+ // Get fresh state after async operation
72
+ const currentState = getState();
73
+ if (!currentState.teams[teamId]) {
74
+ return;
75
+ }
76
+ setState({
77
+ teams: {
78
+ ...currentState.teams,
79
+ [teamId]: {
80
+ ...currentState.teams[teamId],
81
+ teamContainers: [],
82
+ error: normalizeError(err),
83
+ loading: false,
84
+ hasLoaded: true,
85
+ teamId
86
+ }
87
+ }
88
+ });
89
+ }
90
+ },
91
+ refetchTeamContainers: (teamId, fireAnalytics, fireAnalyticsNext) => async ({
92
+ setState,
93
+ getState
94
+ }) => {
95
+ const {
96
+ teams
97
+ } = getState();
98
+ const currentTeamState = teams[teamId];
99
+ if (!currentTeamState) {
100
+ return;
101
+ }
102
+ try {
103
+ const containers = await teamsClient.getTeamContainers(teamId);
104
+ fireAnalyticsNext('operational.refetchTeamContainers.succeeded', {
105
+ teamId
106
+ });
107
+ if (!containersEqual(containers, currentTeamState.teamContainers)) {
108
+ setState({
109
+ teams: {
110
+ ...teams,
111
+ [teamId]: {
112
+ ...currentTeamState,
113
+ teamContainers: containers,
114
+ loading: false,
115
+ error: null,
116
+ hasLoaded: true,
117
+ teamId
118
+ }
119
+ }
120
+ });
121
+ }
122
+ } catch (err) {
123
+ fireAnalyticsNext('operational.refetchTeamContainers.failed', {
124
+ teamId,
125
+ error: getErrorDetails(err)
126
+ });
127
+ setState({
128
+ teams: {
129
+ ...teams,
130
+ [teamId]: {
131
+ ...currentTeamState,
132
+ error: normalizeError(err),
133
+ loading: false,
134
+ hasLoaded: true,
135
+ teamId
136
+ }
137
+ }
138
+ });
139
+ }
140
+ },
141
+ fetchNumberOfConnectedTeams: (teamId, containerId, fireAnalytics, fireAnalyticsNext) => async ({
142
+ setState,
143
+ getState
144
+ }) => {
145
+ const {
146
+ teams
147
+ } = getState();
148
+ const currentTeamState = teams[teamId];
149
+ if (!currentTeamState) {
150
+ return;
151
+ }
152
+ const {
153
+ connectedTeams: {
154
+ containerId: currentContainerId
155
+ }
156
+ } = currentTeamState;
157
+ if (currentContainerId === containerId) {
158
+ return;
159
+ }
160
+ setState({
161
+ teams: {
162
+ ...teams,
163
+ [teamId]: {
164
+ ...currentTeamState,
165
+ connectedTeams: {
166
+ ...initialConnectedTeamsState,
167
+ containerId,
168
+ numberOfTeams: undefined
169
+ }
170
+ }
171
+ }
172
+ });
173
+ try {
174
+ const numberOfTeams = await teamsClient.getNumberOfConnectedTeams(containerId);
175
+ fireAnalyticsNext('operational.fetchNumberOfConnectedTeams.succeeded', {
176
+ numberOfTeams,
177
+ containerId
178
+ });
179
+ const currentState = getState();
180
+ const updatedTeamState = currentState.teams[teamId];
181
+ if (updatedTeamState) {
182
+ setState({
183
+ teams: {
184
+ ...currentState.teams,
185
+ [teamId]: {
186
+ ...updatedTeamState,
187
+ connectedTeams: {
188
+ ...initialConnectedTeamsState,
189
+ containerId,
190
+ numberOfTeams,
191
+ hasLoaded: true
192
+ }
193
+ }
194
+ }
195
+ });
196
+ }
197
+ } catch (e) {
198
+ fireAnalyticsNext('operational.fetchNumberOfConnectedTeams.failed', {
199
+ numberOfTeams: initialConnectedTeamsState.numberOfTeams || null,
200
+ containerId,
201
+ error: getErrorDetails(e)
202
+ });
203
+ const currentState = getState();
204
+ const updatedTeamState = currentState.teams[teamId];
205
+ if (updatedTeamState) {
206
+ setState({
207
+ teams: {
208
+ ...currentState.teams,
209
+ [teamId]: {
210
+ ...updatedTeamState,
211
+ connectedTeams: {
212
+ ...initialConnectedTeamsState,
213
+ containerId,
214
+ error: normalizeError(e)
215
+ }
216
+ }
217
+ }
218
+ });
219
+ }
220
+ }
221
+ },
222
+ fetchConnectedTeams: (teamId, containerId, fireAnalytics, fireAnalyticsNext) => async ({
223
+ setState,
224
+ getState
225
+ }) => {
226
+ const {
227
+ teams
228
+ } = getState();
229
+ const currentTeamState = teams[teamId];
230
+ if (!currentTeamState) {
231
+ return;
232
+ }
233
+ const {
234
+ connectedTeams: {
235
+ containerId: currentContainerId,
236
+ numberOfTeams,
237
+ hasLoaded
238
+ }
239
+ } = currentTeamState;
240
+ if (currentContainerId === containerId && hasLoaded) {
241
+ return;
242
+ }
243
+ setState({
244
+ teams: {
245
+ ...teams,
246
+ [teamId]: {
247
+ ...currentTeamState,
248
+ connectedTeams: {
249
+ containerId,
250
+ isLoading: true,
251
+ hasLoaded: false,
252
+ teams: undefined,
253
+ error: null,
254
+ numberOfTeams
255
+ }
256
+ }
257
+ }
258
+ });
259
+ try {
260
+ const teamsResult = await teamsClient.getConnectedTeams(containerId);
261
+ fireAnalyticsNext('operational.fetchConnectedTeams.succeeded', {
262
+ numberOfTeams: numberOfTeams || null,
263
+ containerId
264
+ });
265
+ const currentState = getState();
266
+ const updatedTeamState = currentState.teams[teamId];
267
+ if (updatedTeamState) {
268
+ setState({
269
+ teams: {
270
+ ...currentState.teams,
271
+ [teamId]: {
272
+ ...updatedTeamState,
273
+ connectedTeams: {
274
+ containerId,
275
+ isLoading: false,
276
+ hasLoaded: true,
277
+ teams: teamsResult,
278
+ error: null,
279
+ numberOfTeams
280
+ }
281
+ }
282
+ }
283
+ });
284
+ }
285
+ } catch (e) {
286
+ fireAnalyticsNext('operational.fetchConnectedTeams.failed', {
287
+ numberOfTeams: numberOfTeams || null,
288
+ containerId,
289
+ error: getErrorDetails(e)
290
+ });
291
+ const currentState = getState();
292
+ const updatedTeamState = currentState.teams[teamId];
293
+ if (updatedTeamState) {
294
+ setState({
295
+ teams: {
296
+ ...currentState.teams,
297
+ [teamId]: {
298
+ ...updatedTeamState,
299
+ connectedTeams: {
300
+ containerId,
301
+ isLoading: false,
302
+ hasLoaded: false,
303
+ teams: [],
304
+ error: normalizeError(e),
305
+ numberOfTeams
306
+ }
307
+ }
308
+ }
309
+ });
310
+ }
311
+ }
312
+ },
313
+ unlinkTeamContainers: (teamId, containerId) => async ({
314
+ setState,
315
+ getState
316
+ }) => {
317
+ const {
318
+ teams
319
+ } = getState();
320
+ const currentTeamState = teams[teamId];
321
+ if (currentTeamState) {
322
+ setState({
323
+ teams: {
324
+ ...teams,
325
+ [teamId]: {
326
+ ...currentTeamState,
327
+ unlinkError: null
328
+ }
329
+ }
330
+ });
331
+ }
332
+ try {
333
+ const mutationResult = await teamsClient.unlinkTeamContainer(teamId, containerId);
334
+ const currentState = getState();
335
+ const updatedTeamState = currentState.teams[teamId];
336
+ if (!updatedTeamState) {
337
+ return;
338
+ }
339
+ if (mutationResult.deleteTeamConnectedToContainer.errors.length) {
340
+ // Just handle 1 error at a time should be sufficient as we disconnect only 1 container at a time
341
+ setState({
342
+ teams: {
343
+ ...currentState.teams,
344
+ [teamId]: {
345
+ ...updatedTeamState,
346
+ unlinkError: mutationResult.deleteTeamConnectedToContainer.errors[0]
347
+ }
348
+ }
349
+ });
350
+ } else {
351
+ const newContainers = updatedTeamState.teamContainers.filter(container => container.id !== containerId);
352
+ const shouldResetConnectedTeams = updatedTeamState.connectedTeams.containerId === containerId;
353
+ setState({
354
+ teams: {
355
+ ...currentState.teams,
356
+ [teamId]: {
357
+ ...updatedTeamState,
358
+ teamContainers: newContainers,
359
+ ...(shouldResetConnectedTeams && {
360
+ connectedTeams: initialConnectedTeamsState
361
+ }),
362
+ unlinkError: null
363
+ }
364
+ }
365
+ });
366
+ }
367
+ } catch (err) {
368
+ const currentState = getState();
369
+ const updatedTeamState = currentState.teams[teamId];
370
+ if (updatedTeamState) {
371
+ setState({
372
+ teams: {
373
+ ...currentState.teams,
374
+ [teamId]: {
375
+ ...updatedTeamState,
376
+ unlinkError: normalizeError(err)
377
+ }
378
+ }
379
+ });
380
+ }
381
+ }
382
+ },
383
+ addTeamContainer: (teamId, teamContainer) => async ({
384
+ setState,
385
+ getState
386
+ }) => {
387
+ const {
388
+ teams
389
+ } = getState();
390
+ const currentTeamState = teams[teamId];
391
+ if (!currentTeamState) {
392
+ return;
393
+ }
394
+ const containerExists = currentTeamState.teamContainers.some(container => container.id === teamContainer.id);
395
+ if (containerExists) {
396
+ return;
397
+ }
398
+ const shouldResetConnectedTeams = currentTeamState.connectedTeams.containerId === teamContainer.id;
399
+ setState({
400
+ teams: {
401
+ ...teams,
402
+ [teamId]: {
403
+ ...currentTeamState,
404
+ teamContainers: [...currentTeamState.teamContainers, teamContainer],
405
+ ...(shouldResetConnectedTeams && {
406
+ connectedTeams: initialConnectedTeamsState
407
+ }),
408
+ teamId
409
+ }
410
+ }
411
+ });
412
+ }
413
+ };