@cratis/showrunner.usher.react 0.0.0-bootstrap.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 (507) hide show
  1. package/Buttons/MyIssuesButton.tsx +78 -0
  2. package/Buttons/ReportButton.tsx +51 -0
  3. package/Buttons/buttonModels.ts +55 -0
  4. package/Buttons/index.ts +6 -0
  5. package/Correlation/CorrelationTracker.ts +51 -0
  6. package/Correlation/index.ts +5 -0
  7. package/Correlation/withCorrelationIdHeader.ts +44 -0
  8. package/Icons.tsx +29 -0
  9. package/Issues/IssueView/AccessPanel.tsx +85 -0
  10. package/Issues/IssueView/GrantAccessDialog.tsx +56 -0
  11. package/Issues/IssueView/IdentityPanel.tsx +38 -0
  12. package/Issues/IssueView/IssueActions.tsx +52 -0
  13. package/Issues/IssueView/IssueConversationPanel.tsx +89 -0
  14. package/Issues/IssueView/IssueHeader.tsx +69 -0
  15. package/Issues/IssueView/IssueView.tsx +74 -0
  16. package/Issues/IssueView/QuestionBanner.tsx +27 -0
  17. package/Issues/IssueView/ReopenIssueDialog.tsx +37 -0
  18. package/Issues/IssueView/ShareIdentityDialog.tsx +37 -0
  19. package/Issues/IssueView/StatusStrip.tsx +42 -0
  20. package/Issues/IssueView/SupportSessions.tsx +59 -0
  21. package/Issues/IssueView/index.ts +15 -0
  22. package/Issues/MyIssues/IssueList.tsx +78 -0
  23. package/Issues/MyIssues/MyIssuesDialog.tsx +64 -0
  24. package/Issues/MyIssues/MyIssuesNavigation.ts +61 -0
  25. package/Issues/MyIssues/index.ts +6 -0
  26. package/Issues/MyIssuesList.ts +33 -0
  27. package/Issues/accessStatus.ts +68 -0
  28. package/Issues/conversationMessages.ts +136 -0
  29. package/Issues/index.ts +12 -0
  30. package/Issues/issueStates.ts +69 -0
  31. package/Issues/sessionActivity.ts +43 -0
  32. package/Issues/useAccessStatus.ts +24 -0
  33. package/Issues/webAddress.ts +22 -0
  34. package/Labels/UsherLabels.ts +365 -0
  35. package/Labels/defaultUsherLabels.ts +178 -0
  36. package/Labels/format.ts +13 -0
  37. package/Labels/index.ts +7 -0
  38. package/Labels/resolveLabels.ts +36 -0
  39. package/Provider/UsherBoundary.tsx +30 -0
  40. package/Provider/UsherContext.ts +109 -0
  41. package/Provider/UsherProvider.tsx +134 -0
  42. package/Provider/index.ts +7 -0
  43. package/Provider/useUsher.ts +72 -0
  44. package/README.md +72 -0
  45. package/Reporting/AccessChoice.ts +107 -0
  46. package/Reporting/AccessFields.tsx +74 -0
  47. package/Reporting/AccessNotice.tsx +33 -0
  48. package/Reporting/ReportErrorDialog.tsx +94 -0
  49. package/Reporting/ReportIssueDialog.tsx +80 -0
  50. package/Reporting/ReportLimits.ts +24 -0
  51. package/Reporting/ReportSent.ts +12 -0
  52. package/Reporting/SentWithReport.tsx +37 -0
  53. package/Reporting/TechnicalDetails.tsx +60 -0
  54. package/Reporting/durationOptions.ts +31 -0
  55. package/Reporting/formatLocation.ts +27 -0
  56. package/Reporting/index.ts +16 -0
  57. package/Reporting/reportValues.ts +150 -0
  58. package/Reporting/useAccessChoice.ts +53 -0
  59. package/dist/cjs/Buttons/MyIssuesButton.d.ts +14 -0
  60. package/dist/cjs/Buttons/MyIssuesButton.d.ts.map +1 -0
  61. package/dist/cjs/Buttons/MyIssuesButton.js +76 -0
  62. package/dist/cjs/Buttons/MyIssuesButton.js.map +1 -0
  63. package/dist/cjs/Buttons/ReportButton.d.ts +8 -0
  64. package/dist/cjs/Buttons/ReportButton.d.ts.map +1 -0
  65. package/dist/cjs/Buttons/ReportButton.js +34 -0
  66. package/dist/cjs/Buttons/ReportButton.js.map +1 -0
  67. package/dist/cjs/Buttons/buttonModels.d.ts +10 -0
  68. package/dist/cjs/Buttons/buttonModels.d.ts.map +1 -0
  69. package/dist/cjs/Buttons/buttonModels.js +44 -0
  70. package/dist/cjs/Buttons/buttonModels.js.map +1 -0
  71. package/dist/cjs/Buttons/index.d.ts +4 -0
  72. package/dist/cjs/Buttons/index.d.ts.map +1 -0
  73. package/dist/cjs/Correlation/CorrelationTracker.d.ts +10 -0
  74. package/dist/cjs/Correlation/CorrelationTracker.d.ts.map +1 -0
  75. package/dist/cjs/Correlation/CorrelationTracker.js +50 -0
  76. package/dist/cjs/Correlation/CorrelationTracker.js.map +1 -0
  77. package/dist/cjs/Correlation/index.d.ts +3 -0
  78. package/dist/cjs/Correlation/index.d.ts.map +1 -0
  79. package/dist/cjs/Correlation/withCorrelationIdHeader.d.ts +6 -0
  80. package/dist/cjs/Correlation/withCorrelationIdHeader.d.ts.map +1 -0
  81. package/dist/cjs/Correlation/withCorrelationIdHeader.js +39 -0
  82. package/dist/cjs/Correlation/withCorrelationIdHeader.js.map +1 -0
  83. package/dist/cjs/Icons.d.ts +4 -0
  84. package/dist/cjs/Icons.d.ts.map +1 -0
  85. package/dist/cjs/Icons.js +53 -0
  86. package/dist/cjs/Icons.js.map +1 -0
  87. package/dist/cjs/Issues/IssueView/AccessPanel.d.ts +6 -0
  88. package/dist/cjs/Issues/IssueView/AccessPanel.d.ts.map +1 -0
  89. package/dist/cjs/Issues/IssueView/AccessPanel.js +124 -0
  90. package/dist/cjs/Issues/IssueView/AccessPanel.js.map +1 -0
  91. package/dist/cjs/Issues/IssueView/GrantAccessDialog.d.ts +6 -0
  92. package/dist/cjs/Issues/IssueView/GrantAccessDialog.d.ts.map +1 -0
  93. package/dist/cjs/Issues/IssueView/GrantAccessDialog.js +56 -0
  94. package/dist/cjs/Issues/IssueView/GrantAccessDialog.js.map +1 -0
  95. package/dist/cjs/Issues/IssueView/IdentityPanel.d.ts +6 -0
  96. package/dist/cjs/Issues/IssueView/IdentityPanel.d.ts.map +1 -0
  97. package/dist/cjs/Issues/IssueView/IdentityPanel.js +45 -0
  98. package/dist/cjs/Issues/IssueView/IdentityPanel.js.map +1 -0
  99. package/dist/cjs/Issues/IssueView/IssueActions.d.ts +6 -0
  100. package/dist/cjs/Issues/IssueView/IssueActions.d.ts.map +1 -0
  101. package/dist/cjs/Issues/IssueView/IssueActions.js +58 -0
  102. package/dist/cjs/Issues/IssueView/IssueActions.js.map +1 -0
  103. package/dist/cjs/Issues/IssueView/IssueConversationPanel.d.ts +6 -0
  104. package/dist/cjs/Issues/IssueView/IssueConversationPanel.d.ts.map +1 -0
  105. package/dist/cjs/Issues/IssueView/IssueConversationPanel.js +97 -0
  106. package/dist/cjs/Issues/IssueView/IssueConversationPanel.js.map +1 -0
  107. package/dist/cjs/Issues/IssueView/IssueHeader.d.ts +7 -0
  108. package/dist/cjs/Issues/IssueView/IssueHeader.d.ts.map +1 -0
  109. package/dist/cjs/Issues/IssueView/IssueHeader.js +94 -0
  110. package/dist/cjs/Issues/IssueView/IssueHeader.js.map +1 -0
  111. package/dist/cjs/Issues/IssueView/IssueView.d.ts +7 -0
  112. package/dist/cjs/Issues/IssueView/IssueView.d.ts.map +1 -0
  113. package/dist/cjs/Issues/IssueView/IssueView.js +85 -0
  114. package/dist/cjs/Issues/IssueView/IssueView.js.map +1 -0
  115. package/dist/cjs/Issues/IssueView/QuestionBanner.d.ts +5 -0
  116. package/dist/cjs/Issues/IssueView/QuestionBanner.d.ts.map +1 -0
  117. package/dist/cjs/Issues/IssueView/QuestionBanner.js +24 -0
  118. package/dist/cjs/Issues/IssueView/QuestionBanner.js.map +1 -0
  119. package/dist/cjs/Issues/IssueView/ReopenIssueDialog.d.ts +6 -0
  120. package/dist/cjs/Issues/IssueView/ReopenIssueDialog.d.ts.map +1 -0
  121. package/dist/cjs/Issues/IssueView/ReopenIssueDialog.js +34 -0
  122. package/dist/cjs/Issues/IssueView/ReopenIssueDialog.js.map +1 -0
  123. package/dist/cjs/Issues/IssueView/ShareIdentityDialog.d.ts +6 -0
  124. package/dist/cjs/Issues/IssueView/ShareIdentityDialog.d.ts.map +1 -0
  125. package/dist/cjs/Issues/IssueView/ShareIdentityDialog.js +32 -0
  126. package/dist/cjs/Issues/IssueView/ShareIdentityDialog.js.map +1 -0
  127. package/dist/cjs/Issues/IssueView/StatusStrip.d.ts +6 -0
  128. package/dist/cjs/Issues/IssueView/StatusStrip.d.ts.map +1 -0
  129. package/dist/cjs/Issues/IssueView/StatusStrip.js +31 -0
  130. package/dist/cjs/Issues/IssueView/StatusStrip.js.map +1 -0
  131. package/dist/cjs/Issues/IssueView/SupportSessions.d.ts +7 -0
  132. package/dist/cjs/Issues/IssueView/SupportSessions.d.ts.map +1 -0
  133. package/dist/cjs/Issues/IssueView/SupportSessions.js +62 -0
  134. package/dist/cjs/Issues/IssueView/SupportSessions.js.map +1 -0
  135. package/dist/cjs/Issues/IssueView/index.d.ts +13 -0
  136. package/dist/cjs/Issues/IssueView/index.d.ts.map +1 -0
  137. package/dist/cjs/Issues/MyIssues/IssueList.d.ts +7 -0
  138. package/dist/cjs/Issues/MyIssues/IssueList.d.ts.map +1 -0
  139. package/dist/cjs/Issues/MyIssues/IssueList.js +92 -0
  140. package/dist/cjs/Issues/MyIssues/IssueList.js.map +1 -0
  141. package/dist/cjs/Issues/MyIssues/MyIssuesDialog.d.ts +7 -0
  142. package/dist/cjs/Issues/MyIssues/MyIssuesDialog.d.ts.map +1 -0
  143. package/dist/cjs/Issues/MyIssues/MyIssuesDialog.js +79 -0
  144. package/dist/cjs/Issues/MyIssues/MyIssuesDialog.js.map +1 -0
  145. package/dist/cjs/Issues/MyIssues/MyIssuesNavigation.d.ts +21 -0
  146. package/dist/cjs/Issues/MyIssues/MyIssuesNavigation.d.ts.map +1 -0
  147. package/dist/cjs/Issues/MyIssues/MyIssuesNavigation.js +52 -0
  148. package/dist/cjs/Issues/MyIssues/MyIssuesNavigation.js.map +1 -0
  149. package/dist/cjs/Issues/MyIssues/index.d.ts +4 -0
  150. package/dist/cjs/Issues/MyIssues/index.d.ts.map +1 -0
  151. package/dist/cjs/Issues/MyIssuesList.d.ts +7 -0
  152. package/dist/cjs/Issues/MyIssuesList.d.ts.map +1 -0
  153. package/dist/cjs/Issues/MyIssuesList.js +33 -0
  154. package/dist/cjs/Issues/MyIssuesList.js.map +1 -0
  155. package/dist/cjs/Issues/accessStatus.d.ts +13 -0
  156. package/dist/cjs/Issues/accessStatus.d.ts.map +1 -0
  157. package/dist/cjs/Issues/accessStatus.js +60 -0
  158. package/dist/cjs/Issues/accessStatus.js.map +1 -0
  159. package/dist/cjs/Issues/conversationMessages.d.ts +14 -0
  160. package/dist/cjs/Issues/conversationMessages.d.ts.map +1 -0
  161. package/dist/cjs/Issues/conversationMessages.js +131 -0
  162. package/dist/cjs/Issues/conversationMessages.js.map +1 -0
  163. package/dist/cjs/Issues/index.d.ts +10 -0
  164. package/dist/cjs/Issues/index.d.ts.map +1 -0
  165. package/dist/cjs/Issues/issueStates.d.ts +12 -0
  166. package/dist/cjs/Issues/issueStates.d.ts.map +1 -0
  167. package/dist/cjs/Issues/issueStates.js +86 -0
  168. package/dist/cjs/Issues/issueStates.js.map +1 -0
  169. package/dist/cjs/Issues/sessionActivity.d.ts +8 -0
  170. package/dist/cjs/Issues/sessionActivity.d.ts.map +1 -0
  171. package/dist/cjs/Issues/sessionActivity.js +39 -0
  172. package/dist/cjs/Issues/sessionActivity.js.map +1 -0
  173. package/dist/cjs/Issues/useAccessStatus.d.ts +4 -0
  174. package/dist/cjs/Issues/useAccessStatus.d.ts.map +1 -0
  175. package/dist/cjs/Issues/useAccessStatus.js +30 -0
  176. package/dist/cjs/Issues/useAccessStatus.js.map +1 -0
  177. package/dist/cjs/Issues/webAddress.d.ts +2 -0
  178. package/dist/cjs/Issues/webAddress.d.ts.map +1 -0
  179. package/dist/cjs/Issues/webAddress.js +24 -0
  180. package/dist/cjs/Issues/webAddress.js.map +1 -0
  181. package/dist/cjs/Labels/UsherLabels.d.ts +177 -0
  182. package/dist/cjs/Labels/UsherLabels.d.ts.map +1 -0
  183. package/dist/cjs/Labels/defaultUsherLabels.d.ts +3 -0
  184. package/dist/cjs/Labels/defaultUsherLabels.d.ts.map +1 -0
  185. package/dist/cjs/Labels/defaultUsherLabels.js +179 -0
  186. package/dist/cjs/Labels/defaultUsherLabels.js.map +1 -0
  187. package/dist/cjs/Labels/format.d.ts +2 -0
  188. package/dist/cjs/Labels/format.d.ts.map +1 -0
  189. package/dist/cjs/Labels/format.js +15 -0
  190. package/dist/cjs/Labels/format.js.map +1 -0
  191. package/dist/cjs/Labels/index.d.ts +5 -0
  192. package/dist/cjs/Labels/index.d.ts.map +1 -0
  193. package/dist/cjs/Labels/resolveLabels.d.ts +3 -0
  194. package/dist/cjs/Labels/resolveLabels.d.ts.map +1 -0
  195. package/dist/cjs/Labels/resolveLabels.js +35 -0
  196. package/dist/cjs/Labels/resolveLabels.js.map +1 -0
  197. package/dist/cjs/Provider/UsherBoundary.d.ts +6 -0
  198. package/dist/cjs/Provider/UsherBoundary.d.ts.map +1 -0
  199. package/dist/cjs/Provider/UsherBoundary.js +24 -0
  200. package/dist/cjs/Provider/UsherBoundary.js.map +1 -0
  201. package/dist/cjs/Provider/UsherContext.d.ts +24 -0
  202. package/dist/cjs/Provider/UsherContext.d.ts.map +1 -0
  203. package/dist/cjs/Provider/UsherContext.js +41 -0
  204. package/dist/cjs/Provider/UsherContext.js.map +1 -0
  205. package/dist/cjs/Provider/UsherProvider.d.ts +14 -0
  206. package/dist/cjs/Provider/UsherProvider.d.ts.map +1 -0
  207. package/dist/cjs/Provider/UsherProvider.js +122 -0
  208. package/dist/cjs/Provider/UsherProvider.js.map +1 -0
  209. package/dist/cjs/Provider/index.d.ts +5 -0
  210. package/dist/cjs/Provider/index.d.ts.map +1 -0
  211. package/dist/cjs/Provider/useUsher.d.ts +13 -0
  212. package/dist/cjs/Provider/useUsher.d.ts.map +1 -0
  213. package/dist/cjs/Provider/useUsher.js +31 -0
  214. package/dist/cjs/Provider/useUsher.js.map +1 -0
  215. package/dist/cjs/Reporting/AccessChoice.d.ts +13 -0
  216. package/dist/cjs/Reporting/AccessChoice.d.ts.map +1 -0
  217. package/dist/cjs/Reporting/AccessChoice.js +113 -0
  218. package/dist/cjs/Reporting/AccessChoice.js.map +1 -0
  219. package/dist/cjs/Reporting/AccessFields.d.ts +12 -0
  220. package/dist/cjs/Reporting/AccessFields.d.ts.map +1 -0
  221. package/dist/cjs/Reporting/AccessFields.js +79 -0
  222. package/dist/cjs/Reporting/AccessFields.js.map +1 -0
  223. package/dist/cjs/Reporting/AccessNotice.d.ts +7 -0
  224. package/dist/cjs/Reporting/AccessNotice.d.ts.map +1 -0
  225. package/dist/cjs/Reporting/AccessNotice.js +28 -0
  226. package/dist/cjs/Reporting/AccessNotice.js.map +1 -0
  227. package/dist/cjs/Reporting/ReportErrorDialog.d.ts +9 -0
  228. package/dist/cjs/Reporting/ReportErrorDialog.d.ts.map +1 -0
  229. package/dist/cjs/Reporting/ReportErrorDialog.js +87 -0
  230. package/dist/cjs/Reporting/ReportErrorDialog.js.map +1 -0
  231. package/dist/cjs/Reporting/ReportIssueDialog.d.ts +8 -0
  232. package/dist/cjs/Reporting/ReportIssueDialog.d.ts.map +1 -0
  233. package/dist/cjs/Reporting/ReportIssueDialog.js +81 -0
  234. package/dist/cjs/Reporting/ReportIssueDialog.js.map +1 -0
  235. package/dist/cjs/Reporting/ReportLimits.d.ts +8 -0
  236. package/dist/cjs/Reporting/ReportLimits.d.ts.map +1 -0
  237. package/dist/cjs/Reporting/ReportLimits.js +19 -0
  238. package/dist/cjs/Reporting/ReportLimits.js.map +1 -0
  239. package/dist/cjs/Reporting/ReportSent.d.ts +5 -0
  240. package/dist/cjs/Reporting/ReportSent.d.ts.map +1 -0
  241. package/dist/cjs/Reporting/SentWithReport.d.ts +7 -0
  242. package/dist/cjs/Reporting/SentWithReport.d.ts.map +1 -0
  243. package/dist/cjs/Reporting/SentWithReport.js +40 -0
  244. package/dist/cjs/Reporting/SentWithReport.js.map +1 -0
  245. package/dist/cjs/Reporting/TechnicalDetails.d.ts +9 -0
  246. package/dist/cjs/Reporting/TechnicalDetails.d.ts.map +1 -0
  247. package/dist/cjs/Reporting/TechnicalDetails.js +75 -0
  248. package/dist/cjs/Reporting/TechnicalDetails.js.map +1 -0
  249. package/dist/cjs/Reporting/durationOptions.d.ts +9 -0
  250. package/dist/cjs/Reporting/durationOptions.d.ts.map +1 -0
  251. package/dist/cjs/Reporting/durationOptions.js +29 -0
  252. package/dist/cjs/Reporting/durationOptions.js.map +1 -0
  253. package/dist/cjs/Reporting/formatLocation.d.ts +7 -0
  254. package/dist/cjs/Reporting/formatLocation.d.ts.map +1 -0
  255. package/dist/cjs/Reporting/formatLocation.js +23 -0
  256. package/dist/cjs/Reporting/formatLocation.js.map +1 -0
  257. package/dist/cjs/Reporting/index.d.ts +14 -0
  258. package/dist/cjs/Reporting/index.d.ts.map +1 -0
  259. package/dist/cjs/Reporting/reportValues.d.ts +22 -0
  260. package/dist/cjs/Reporting/reportValues.d.ts.map +1 -0
  261. package/dist/cjs/Reporting/reportValues.js +124 -0
  262. package/dist/cjs/Reporting/reportValues.js.map +1 -0
  263. package/dist/cjs/Reporting/useAccessChoice.d.ts +13 -0
  264. package/dist/cjs/Reporting/useAccessChoice.d.ts.map +1 -0
  265. package/dist/cjs/Reporting/useAccessChoice.js +41 -0
  266. package/dist/cjs/Reporting/useAccessChoice.js.map +1 -0
  267. package/dist/cjs/index.d.ts +8 -0
  268. package/dist/cjs/index.d.ts.map +1 -0
  269. package/dist/cjs/index.js +133 -0
  270. package/dist/cjs/index.js.map +1 -0
  271. package/dist/cjs/package.json +3 -0
  272. package/dist/esm/Buttons/MyIssuesButton.d.ts +14 -0
  273. package/dist/esm/Buttons/MyIssuesButton.d.ts.map +1 -0
  274. package/dist/esm/Buttons/MyIssuesButton.js +73 -0
  275. package/dist/esm/Buttons/MyIssuesButton.js.map +1 -0
  276. package/dist/esm/Buttons/ReportButton.d.ts +8 -0
  277. package/dist/esm/Buttons/ReportButton.d.ts.map +1 -0
  278. package/dist/esm/Buttons/ReportButton.js +32 -0
  279. package/dist/esm/Buttons/ReportButton.js.map +1 -0
  280. package/dist/esm/Buttons/buttonModels.d.ts +10 -0
  281. package/dist/esm/Buttons/buttonModels.d.ts.map +1 -0
  282. package/dist/esm/Buttons/buttonModels.js +41 -0
  283. package/dist/esm/Buttons/buttonModels.js.map +1 -0
  284. package/dist/esm/Buttons/index.d.ts +4 -0
  285. package/dist/esm/Buttons/index.d.ts.map +1 -0
  286. package/dist/esm/Buttons/index.js +4 -0
  287. package/dist/esm/Buttons/index.js.map +1 -0
  288. package/dist/esm/Correlation/CorrelationTracker.d.ts +10 -0
  289. package/dist/esm/Correlation/CorrelationTracker.d.ts.map +1 -0
  290. package/dist/esm/Correlation/CorrelationTracker.js +48 -0
  291. package/dist/esm/Correlation/CorrelationTracker.js.map +1 -0
  292. package/dist/esm/Correlation/index.d.ts +3 -0
  293. package/dist/esm/Correlation/index.d.ts.map +1 -0
  294. package/dist/esm/Correlation/index.js +3 -0
  295. package/dist/esm/Correlation/index.js.map +1 -0
  296. package/dist/esm/Correlation/withCorrelationIdHeader.d.ts +6 -0
  297. package/dist/esm/Correlation/withCorrelationIdHeader.d.ts.map +1 -0
  298. package/dist/esm/Correlation/withCorrelationIdHeader.js +36 -0
  299. package/dist/esm/Correlation/withCorrelationIdHeader.js.map +1 -0
  300. package/dist/esm/Icons.d.ts +4 -0
  301. package/dist/esm/Icons.d.ts.map +1 -0
  302. package/dist/esm/Icons.js +49 -0
  303. package/dist/esm/Icons.js.map +1 -0
  304. package/dist/esm/Issues/IssueView/AccessPanel.d.ts +6 -0
  305. package/dist/esm/Issues/IssueView/AccessPanel.d.ts.map +1 -0
  306. package/dist/esm/Issues/IssueView/AccessPanel.js +122 -0
  307. package/dist/esm/Issues/IssueView/AccessPanel.js.map +1 -0
  308. package/dist/esm/Issues/IssueView/GrantAccessDialog.d.ts +6 -0
  309. package/dist/esm/Issues/IssueView/GrantAccessDialog.d.ts.map +1 -0
  310. package/dist/esm/Issues/IssueView/GrantAccessDialog.js +54 -0
  311. package/dist/esm/Issues/IssueView/GrantAccessDialog.js.map +1 -0
  312. package/dist/esm/Issues/IssueView/IdentityPanel.d.ts +6 -0
  313. package/dist/esm/Issues/IssueView/IdentityPanel.d.ts.map +1 -0
  314. package/dist/esm/Issues/IssueView/IdentityPanel.js +43 -0
  315. package/dist/esm/Issues/IssueView/IdentityPanel.js.map +1 -0
  316. package/dist/esm/Issues/IssueView/IssueActions.d.ts +6 -0
  317. package/dist/esm/Issues/IssueView/IssueActions.d.ts.map +1 -0
  318. package/dist/esm/Issues/IssueView/IssueActions.js +56 -0
  319. package/dist/esm/Issues/IssueView/IssueActions.js.map +1 -0
  320. package/dist/esm/Issues/IssueView/IssueConversationPanel.d.ts +6 -0
  321. package/dist/esm/Issues/IssueView/IssueConversationPanel.d.ts.map +1 -0
  322. package/dist/esm/Issues/IssueView/IssueConversationPanel.js +95 -0
  323. package/dist/esm/Issues/IssueView/IssueConversationPanel.js.map +1 -0
  324. package/dist/esm/Issues/IssueView/IssueHeader.d.ts +7 -0
  325. package/dist/esm/Issues/IssueView/IssueHeader.d.ts.map +1 -0
  326. package/dist/esm/Issues/IssueView/IssueHeader.js +92 -0
  327. package/dist/esm/Issues/IssueView/IssueHeader.js.map +1 -0
  328. package/dist/esm/Issues/IssueView/IssueView.d.ts +7 -0
  329. package/dist/esm/Issues/IssueView/IssueView.d.ts.map +1 -0
  330. package/dist/esm/Issues/IssueView/IssueView.js +83 -0
  331. package/dist/esm/Issues/IssueView/IssueView.js.map +1 -0
  332. package/dist/esm/Issues/IssueView/QuestionBanner.d.ts +5 -0
  333. package/dist/esm/Issues/IssueView/QuestionBanner.d.ts.map +1 -0
  334. package/dist/esm/Issues/IssueView/QuestionBanner.js +22 -0
  335. package/dist/esm/Issues/IssueView/QuestionBanner.js.map +1 -0
  336. package/dist/esm/Issues/IssueView/ReopenIssueDialog.d.ts +6 -0
  337. package/dist/esm/Issues/IssueView/ReopenIssueDialog.d.ts.map +1 -0
  338. package/dist/esm/Issues/IssueView/ReopenIssueDialog.js +32 -0
  339. package/dist/esm/Issues/IssueView/ReopenIssueDialog.js.map +1 -0
  340. package/dist/esm/Issues/IssueView/ShareIdentityDialog.d.ts +6 -0
  341. package/dist/esm/Issues/IssueView/ShareIdentityDialog.d.ts.map +1 -0
  342. package/dist/esm/Issues/IssueView/ShareIdentityDialog.js +30 -0
  343. package/dist/esm/Issues/IssueView/ShareIdentityDialog.js.map +1 -0
  344. package/dist/esm/Issues/IssueView/StatusStrip.d.ts +6 -0
  345. package/dist/esm/Issues/IssueView/StatusStrip.d.ts.map +1 -0
  346. package/dist/esm/Issues/IssueView/StatusStrip.js +29 -0
  347. package/dist/esm/Issues/IssueView/StatusStrip.js.map +1 -0
  348. package/dist/esm/Issues/IssueView/SupportSessions.d.ts +7 -0
  349. package/dist/esm/Issues/IssueView/SupportSessions.d.ts.map +1 -0
  350. package/dist/esm/Issues/IssueView/SupportSessions.js +60 -0
  351. package/dist/esm/Issues/IssueView/SupportSessions.js.map +1 -0
  352. package/dist/esm/Issues/IssueView/index.d.ts +13 -0
  353. package/dist/esm/Issues/IssueView/index.d.ts.map +1 -0
  354. package/dist/esm/Issues/IssueView/index.js +13 -0
  355. package/dist/esm/Issues/IssueView/index.js.map +1 -0
  356. package/dist/esm/Issues/MyIssues/IssueList.d.ts +7 -0
  357. package/dist/esm/Issues/MyIssues/IssueList.d.ts.map +1 -0
  358. package/dist/esm/Issues/MyIssues/IssueList.js +90 -0
  359. package/dist/esm/Issues/MyIssues/IssueList.js.map +1 -0
  360. package/dist/esm/Issues/MyIssues/MyIssuesDialog.d.ts +7 -0
  361. package/dist/esm/Issues/MyIssues/MyIssuesDialog.d.ts.map +1 -0
  362. package/dist/esm/Issues/MyIssues/MyIssuesDialog.js +77 -0
  363. package/dist/esm/Issues/MyIssues/MyIssuesDialog.js.map +1 -0
  364. package/dist/esm/Issues/MyIssues/MyIssuesNavigation.d.ts +21 -0
  365. package/dist/esm/Issues/MyIssues/MyIssuesNavigation.d.ts.map +1 -0
  366. package/dist/esm/Issues/MyIssues/MyIssuesNavigation.js +49 -0
  367. package/dist/esm/Issues/MyIssues/MyIssuesNavigation.js.map +1 -0
  368. package/dist/esm/Issues/MyIssues/index.d.ts +4 -0
  369. package/dist/esm/Issues/MyIssues/index.d.ts.map +1 -0
  370. package/dist/esm/Issues/MyIssues/index.js +4 -0
  371. package/dist/esm/Issues/MyIssues/index.js.map +1 -0
  372. package/dist/esm/Issues/MyIssuesList.d.ts +7 -0
  373. package/dist/esm/Issues/MyIssuesList.d.ts.map +1 -0
  374. package/dist/esm/Issues/MyIssuesList.js +29 -0
  375. package/dist/esm/Issues/MyIssuesList.js.map +1 -0
  376. package/dist/esm/Issues/accessStatus.d.ts +13 -0
  377. package/dist/esm/Issues/accessStatus.d.ts.map +1 -0
  378. package/dist/esm/Issues/accessStatus.js +54 -0
  379. package/dist/esm/Issues/accessStatus.js.map +1 -0
  380. package/dist/esm/Issues/conversationMessages.d.ts +14 -0
  381. package/dist/esm/Issues/conversationMessages.d.ts.map +1 -0
  382. package/dist/esm/Issues/conversationMessages.js +125 -0
  383. package/dist/esm/Issues/conversationMessages.js.map +1 -0
  384. package/dist/esm/Issues/index.d.ts +10 -0
  385. package/dist/esm/Issues/index.d.ts.map +1 -0
  386. package/dist/esm/Issues/index.js +10 -0
  387. package/dist/esm/Issues/index.js.map +1 -0
  388. package/dist/esm/Issues/issueStates.d.ts +12 -0
  389. package/dist/esm/Issues/issueStates.d.ts.map +1 -0
  390. package/dist/esm/Issues/issueStates.js +81 -0
  391. package/dist/esm/Issues/issueStates.js.map +1 -0
  392. package/dist/esm/Issues/sessionActivity.d.ts +8 -0
  393. package/dist/esm/Issues/sessionActivity.d.ts.map +1 -0
  394. package/dist/esm/Issues/sessionActivity.js +37 -0
  395. package/dist/esm/Issues/sessionActivity.js.map +1 -0
  396. package/dist/esm/Issues/useAccessStatus.d.ts +4 -0
  397. package/dist/esm/Issues/useAccessStatus.d.ts.map +1 -0
  398. package/dist/esm/Issues/useAccessStatus.js +28 -0
  399. package/dist/esm/Issues/useAccessStatus.js.map +1 -0
  400. package/dist/esm/Issues/webAddress.d.ts +2 -0
  401. package/dist/esm/Issues/webAddress.d.ts.map +1 -0
  402. package/dist/esm/Issues/webAddress.js +22 -0
  403. package/dist/esm/Issues/webAddress.js.map +1 -0
  404. package/dist/esm/Labels/UsherLabels.d.ts +177 -0
  405. package/dist/esm/Labels/UsherLabels.d.ts.map +1 -0
  406. package/dist/esm/Labels/UsherLabels.js +2 -0
  407. package/dist/esm/Labels/UsherLabels.js.map +1 -0
  408. package/dist/esm/Labels/defaultUsherLabels.d.ts +3 -0
  409. package/dist/esm/Labels/defaultUsherLabels.d.ts.map +1 -0
  410. package/dist/esm/Labels/defaultUsherLabels.js +177 -0
  411. package/dist/esm/Labels/defaultUsherLabels.js.map +1 -0
  412. package/dist/esm/Labels/format.d.ts +2 -0
  413. package/dist/esm/Labels/format.d.ts.map +1 -0
  414. package/dist/esm/Labels/format.js +13 -0
  415. package/dist/esm/Labels/format.js.map +1 -0
  416. package/dist/esm/Labels/index.d.ts +5 -0
  417. package/dist/esm/Labels/index.d.ts.map +1 -0
  418. package/dist/esm/Labels/index.js +5 -0
  419. package/dist/esm/Labels/index.js.map +1 -0
  420. package/dist/esm/Labels/resolveLabels.d.ts +3 -0
  421. package/dist/esm/Labels/resolveLabels.d.ts.map +1 -0
  422. package/dist/esm/Labels/resolveLabels.js +33 -0
  423. package/dist/esm/Labels/resolveLabels.js.map +1 -0
  424. package/dist/esm/Provider/UsherBoundary.d.ts +6 -0
  425. package/dist/esm/Provider/UsherBoundary.d.ts.map +1 -0
  426. package/dist/esm/Provider/UsherBoundary.js +22 -0
  427. package/dist/esm/Provider/UsherBoundary.js.map +1 -0
  428. package/dist/esm/Provider/UsherContext.d.ts +24 -0
  429. package/dist/esm/Provider/UsherContext.d.ts.map +1 -0
  430. package/dist/esm/Provider/UsherContext.js +36 -0
  431. package/dist/esm/Provider/UsherContext.js.map +1 -0
  432. package/dist/esm/Provider/UsherProvider.d.ts +14 -0
  433. package/dist/esm/Provider/UsherProvider.d.ts.map +1 -0
  434. package/dist/esm/Provider/UsherProvider.js +120 -0
  435. package/dist/esm/Provider/UsherProvider.js.map +1 -0
  436. package/dist/esm/Provider/index.d.ts +5 -0
  437. package/dist/esm/Provider/index.d.ts.map +1 -0
  438. package/dist/esm/Provider/index.js +5 -0
  439. package/dist/esm/Provider/index.js.map +1 -0
  440. package/dist/esm/Provider/useUsher.d.ts +13 -0
  441. package/dist/esm/Provider/useUsher.d.ts.map +1 -0
  442. package/dist/esm/Provider/useUsher.js +29 -0
  443. package/dist/esm/Provider/useUsher.js.map +1 -0
  444. package/dist/esm/Reporting/AccessChoice.d.ts +13 -0
  445. package/dist/esm/Reporting/AccessChoice.d.ts.map +1 -0
  446. package/dist/esm/Reporting/AccessChoice.js +106 -0
  447. package/dist/esm/Reporting/AccessChoice.js.map +1 -0
  448. package/dist/esm/Reporting/AccessFields.d.ts +12 -0
  449. package/dist/esm/Reporting/AccessFields.d.ts.map +1 -0
  450. package/dist/esm/Reporting/AccessFields.js +77 -0
  451. package/dist/esm/Reporting/AccessFields.js.map +1 -0
  452. package/dist/esm/Reporting/AccessNotice.d.ts +7 -0
  453. package/dist/esm/Reporting/AccessNotice.d.ts.map +1 -0
  454. package/dist/esm/Reporting/AccessNotice.js +26 -0
  455. package/dist/esm/Reporting/AccessNotice.js.map +1 -0
  456. package/dist/esm/Reporting/ReportErrorDialog.d.ts +9 -0
  457. package/dist/esm/Reporting/ReportErrorDialog.d.ts.map +1 -0
  458. package/dist/esm/Reporting/ReportErrorDialog.js +85 -0
  459. package/dist/esm/Reporting/ReportErrorDialog.js.map +1 -0
  460. package/dist/esm/Reporting/ReportIssueDialog.d.ts +8 -0
  461. package/dist/esm/Reporting/ReportIssueDialog.d.ts.map +1 -0
  462. package/dist/esm/Reporting/ReportIssueDialog.js +79 -0
  463. package/dist/esm/Reporting/ReportIssueDialog.js.map +1 -0
  464. package/dist/esm/Reporting/ReportLimits.d.ts +8 -0
  465. package/dist/esm/Reporting/ReportLimits.d.ts.map +1 -0
  466. package/dist/esm/Reporting/ReportLimits.js +17 -0
  467. package/dist/esm/Reporting/ReportLimits.js.map +1 -0
  468. package/dist/esm/Reporting/ReportSent.d.ts +5 -0
  469. package/dist/esm/Reporting/ReportSent.d.ts.map +1 -0
  470. package/dist/esm/Reporting/ReportSent.js +2 -0
  471. package/dist/esm/Reporting/ReportSent.js.map +1 -0
  472. package/dist/esm/Reporting/SentWithReport.d.ts +7 -0
  473. package/dist/esm/Reporting/SentWithReport.d.ts.map +1 -0
  474. package/dist/esm/Reporting/SentWithReport.js +38 -0
  475. package/dist/esm/Reporting/SentWithReport.js.map +1 -0
  476. package/dist/esm/Reporting/TechnicalDetails.d.ts +9 -0
  477. package/dist/esm/Reporting/TechnicalDetails.d.ts.map +1 -0
  478. package/dist/esm/Reporting/TechnicalDetails.js +73 -0
  479. package/dist/esm/Reporting/TechnicalDetails.js.map +1 -0
  480. package/dist/esm/Reporting/durationOptions.d.ts +9 -0
  481. package/dist/esm/Reporting/durationOptions.d.ts.map +1 -0
  482. package/dist/esm/Reporting/durationOptions.js +27 -0
  483. package/dist/esm/Reporting/durationOptions.js.map +1 -0
  484. package/dist/esm/Reporting/formatLocation.d.ts +7 -0
  485. package/dist/esm/Reporting/formatLocation.d.ts.map +1 -0
  486. package/dist/esm/Reporting/formatLocation.js +21 -0
  487. package/dist/esm/Reporting/formatLocation.js.map +1 -0
  488. package/dist/esm/Reporting/index.d.ts +14 -0
  489. package/dist/esm/Reporting/index.d.ts.map +1 -0
  490. package/dist/esm/Reporting/index.js +14 -0
  491. package/dist/esm/Reporting/index.js.map +1 -0
  492. package/dist/esm/Reporting/reportValues.d.ts +22 -0
  493. package/dist/esm/Reporting/reportValues.d.ts.map +1 -0
  494. package/dist/esm/Reporting/reportValues.js +116 -0
  495. package/dist/esm/Reporting/reportValues.js.map +1 -0
  496. package/dist/esm/Reporting/useAccessChoice.d.ts +13 -0
  497. package/dist/esm/Reporting/useAccessChoice.d.ts.map +1 -0
  498. package/dist/esm/Reporting/useAccessChoice.js +39 -0
  499. package/dist/esm/Reporting/useAccessChoice.js.map +1 -0
  500. package/dist/esm/index.d.ts +8 -0
  501. package/dist/esm/index.d.ts.map +1 -0
  502. package/dist/esm/index.js +48 -0
  503. package/dist/esm/index.js.map +1 -0
  504. package/dist/esm/package.json +3 -0
  505. package/index.ts +10 -0
  506. package/package.json +85 -0
  507. package/styles.css +320 -0
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var Common = require('@cratis/components/Common');
5
+ var Display = require('@cratis/components/Display');
6
+ var showrunner_usher = require('@cratis/showrunner.usher');
7
+ var Icons = require('../Icons.js');
8
+ var MyIssuesList = require('../Issues/MyIssuesList.js');
9
+ var UsherBoundary = require('../Provider/UsherBoundary.js');
10
+ var useUsher = require('../Provider/useUsher.js');
11
+ var buttonModels = require('./buttonModels.js');
12
+
13
+ /**
14
+ * Opens the my issues side sheet. A badge counts the issues support waits for the user on, and the accessible name
15
+ * says how many.
16
+ */ const MyIssuesButton = (props)=>{
17
+ const usher = useUsher.useUsher();
18
+ return /*#__PURE__*/ jsxRuntime.jsx(UsherBoundary.UsherBoundary, {
19
+ children: /*#__PURE__*/ jsxRuntime.jsx(MyIssuesButtonContent, {
20
+ ...props,
21
+ onOpen: usher.showMyIssues
22
+ })
23
+ });
24
+ };
25
+ const MyIssuesButtonContent = ({ size = 'large', className, onOpen })=>{
26
+ const usher = useUsher.useUsher();
27
+ const [result] = showrunner_usher.MyIssues.use();
28
+ return /*#__PURE__*/ jsxRuntime.jsx(MyIssuesButtonView, {
29
+ size: size,
30
+ className: className,
31
+ waiting: MyIssuesList.waitingCount(result.data ?? []),
32
+ labels: usher.labels,
33
+ onOpen: onOpen
34
+ });
35
+ };
36
+ /**
37
+ * Renders the my issues button for a given number of issues support waits for the user on.
38
+ */ const MyIssuesButtonView = ({ size = 'large', className, waiting, labels, onOpen })=>{
39
+ const model = buttonModels.myIssuesButtonModel(size, waiting, labels);
40
+ const badge = waiting > 0 && /*#__PURE__*/ jsxRuntime.jsx("span", {
41
+ className: "usher-my-issues-button__badge",
42
+ "aria-hidden": "true",
43
+ children: /*#__PURE__*/ jsxRuntime.jsx(Display.Badge, {
44
+ value: waiting,
45
+ severity: "warn",
46
+ size: "small"
47
+ })
48
+ });
49
+ return /*#__PURE__*/ jsxRuntime.jsxs("span", {
50
+ className: [
51
+ 'usher-my-issues-button',
52
+ className
53
+ ].filter(Boolean).join(' '),
54
+ "data-size": size,
55
+ children: [
56
+ size === 'small' ? /*#__PURE__*/ jsxRuntime.jsx(Common.IconButton, {
57
+ variant: "ghost",
58
+ icon: /*#__PURE__*/ jsxRuntime.jsx(Icons.InboxIcon, {}),
59
+ "aria-label": model.accessibleName,
60
+ tooltip: model.tooltip,
61
+ onClick: onOpen
62
+ }) : /*#__PURE__*/ jsxRuntime.jsx(Common.Button, {
63
+ variant: "outline",
64
+ icon: /*#__PURE__*/ jsxRuntime.jsx(Icons.InboxIcon, {}),
65
+ label: model.text,
66
+ "aria-label": model.accessibleName,
67
+ onClick: onOpen
68
+ }),
69
+ badge
70
+ ]
71
+ });
72
+ };
73
+
74
+ exports.MyIssuesButton = MyIssuesButton;
75
+ exports.MyIssuesButtonView = MyIssuesButtonView;
76
+ //# sourceMappingURL=MyIssuesButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyIssuesButton.js","sources":["../../../Buttons/MyIssuesButton.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Button, IconButton } from '@cratis/components/Common';\nimport { Badge } from '@cratis/components/Display';\nimport { MyIssues } from '@cratis/showrunner.usher';\nimport { InboxIcon } from '../Icons.js';\nimport { waitingCount } from '../Issues/MyIssuesList.js';\nimport { UsherBoundary } from '../Provider/UsherBoundary.js';\nimport { useUsher } from '../Provider/useUsher.js';\nimport { myIssuesButtonModel, UsherButtonSize } from './buttonModels.js';\n\n/**\n * Props for {@link MyIssuesButton}.\n */\nexport interface MyIssuesButtonProps {\n /** `large` shows the icon and the text; `small` shows the icon, with the text as tooltip and accessible name. Defaults to `large`. */\n size?: UsherButtonSize;\n\n /** Additional class name for the button. */\n className?: string;\n}\n\n/**\n * Opens the my issues side sheet. A badge counts the issues support waits for the user on, and the accessible name\n * says how many.\n */\nexport const MyIssuesButton = (props: MyIssuesButtonProps) => {\n const usher = useUsher();\n\n return (\n <UsherBoundary>\n <MyIssuesButtonContent {...props} onOpen={usher.showMyIssues} />\n </UsherBoundary>\n );\n};\n\nconst MyIssuesButtonContent = ({ size = 'large', className, onOpen }: MyIssuesButtonProps & { onOpen: () => void }) => {\n const usher = useUsher();\n const [result] = MyIssues.use();\n\n return <MyIssuesButtonView size={size} className={className} waiting={waitingCount(result.data ?? [])} labels={usher.labels} onOpen={onOpen} />;\n};\n\n/**\n * Props for {@link MyIssuesButtonView}.\n */\nexport interface MyIssuesButtonViewProps extends MyIssuesButtonProps {\n /** How many issues support waits for the user on. */\n waiting: number;\n\n /** The labels to show. */\n labels: ReturnType<typeof useUsher>['labels'];\n\n /** Opens the my issues side sheet. */\n onOpen: () => void;\n}\n\n/**\n * Renders the my issues button for a given number of issues support waits for the user on.\n */\nexport const MyIssuesButtonView = ({ size = 'large', className, waiting, labels, onOpen }: MyIssuesButtonViewProps) => {\n const model = myIssuesButtonModel(size, waiting, labels);\n const badge = waiting > 0 && (\n <span className='usher-my-issues-button__badge' aria-hidden='true'>\n <Badge value={waiting} severity='warn' size='small' />\n </span>\n );\n\n return (\n <span className={['usher-my-issues-button', className].filter(Boolean).join(' ')} data-size={size}>\n {size === 'small'\n ? <IconButton variant='ghost' icon={<InboxIcon />} aria-label={model.accessibleName} tooltip={model.tooltip} onClick={onOpen} />\n : <Button variant='outline' icon={<InboxIcon />} label={model.text} aria-label={model.accessibleName} onClick={onOpen} />}\n {badge}\n </span>\n );\n};\n"],"names":["MyIssuesButton","props","usher","useUsher","_jsx","UsherBoundary","MyIssuesButtonContent","onOpen","showMyIssues","size","className","result","MyIssues","use","MyIssuesButtonView","waiting","waitingCount","data","labels","model","myIssuesButtonModel","badge","span","aria-hidden","Badge","value","severity","_jsxs","filter","Boolean","join","data-size","IconButton","variant","icon","InboxIcon","aria-label","accessibleName","tooltip","onClick","Button","label","text"],"mappings":";;;;;;;;;;;;AAuBA;;;IAIO,MAAMA,cAAAA,GAAiB,CAACC,KAAAA,GAAAA;AAC3B,IAAA,MAAMC,KAAAA,GAAQC,iBAAAA,EAAAA;AAEd,IAAA,qBACIC,cAAA,CAACC,2BAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAD,cAAA,CAACE,qBAAAA,EAAAA;AAAuB,YAAA,GAAGL,KAAK;AAAEM,YAAAA,MAAAA,EAAQL,MAAMM;;;AAG5D;AAEA,MAAMF,qBAAAA,GAAwB,CAAC,EAAEG,IAAAA,GAAO,OAAO,EAAEC,SAAS,EAAEH,MAAM,EAAgD,GAAA;AAC9G,IAAA,MAAML,KAAAA,GAAQC,iBAAAA,EAAAA;AACd,IAAA,MAAM,CAACQ,MAAAA,CAAO,GAAGC,yBAAAA,CAASC,GAAG,EAAA;AAE7B,IAAA,qBAAOT,cAAA,CAACU,kBAAAA,EAAAA;QAAmBL,IAAAA,EAAMA,IAAAA;QAAMC,SAAAA,EAAWA,SAAAA;AAAWK,QAAAA,OAAAA,EAASC,yBAAAA,CAAaL,MAAAA,CAAOM,IAAI,IAAI,EAAE,CAAA;AAAGC,QAAAA,MAAAA,EAAQhB,MAAMgB,MAAM;QAAEX,MAAAA,EAAQA;;AACzI,CAAA;AAgBA;;AAEC,IACM,MAAMO,kBAAAA,GAAqB,CAAC,EAAEL,IAAAA,GAAO,OAAO,EAAEC,SAAS,EAAEK,OAAO,EAAEG,MAAM,EAAEX,MAAM,EAA2B,GAAA;IAC9G,MAAMY,KAAAA,GAAQC,gCAAAA,CAAoBX,IAAAA,EAAMM,OAAAA,EAASG,MAAAA,CAAAA;IACjD,MAAMG,KAAAA,GAAQN,OAAAA,GAAU,CAAA,kBACpBX,cAAA,CAACkB,MAAAA,EAAAA;QAAKZ,SAAAA,EAAU,+BAAA;QAAgCa,aAAAA,EAAY,MAAA;AACxD,QAAA,QAAA,gBAAAnB,cAAA,CAACoB,aAAAA,EAAAA;YAAMC,KAAAA,EAAOV,OAAAA;YAASW,QAAAA,EAAS,MAAA;YAAOjB,IAAAA,EAAK;;;AAIpD,IAAA,qBACIkB,eAAA,CAACL,MAAAA,EAAAA;QAAKZ,SAAAA,EAAW;AAAC,YAAA,wBAAA;AAA0BA,YAAAA;AAAU,SAAA,CAACkB,MAAM,CAACC,OAAAA,CAAAA,CAASC,IAAI,CAAC,GAAA,CAAA;QAAMC,WAAAA,EAAWtB,IAAAA;;AACxFA,YAAAA,IAAAA,KAAS,wBACJL,cAAA,CAAC4B,iBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,OAAA;AAAQC,gBAAAA,IAAAA,gBAAM9B,cAAA,CAAC+B,eAAAA,EAAAA,EAAAA,CAAAA;AAAcC,gBAAAA,YAAAA,EAAYjB,MAAMkB,cAAc;AAAEC,gBAAAA,OAAAA,EAASnB,MAAMmB,OAAO;gBAAEC,OAAAA,EAAShC;+BACpHH,cAAA,CAACoC,aAAAA,EAAAA;gBAAOP,OAAAA,EAAQ,SAAA;AAAUC,gBAAAA,IAAAA,gBAAM9B,cAAA,CAAC+B,eAAAA,EAAAA,EAAAA,CAAAA;AAAcM,gBAAAA,KAAAA,EAAOtB,MAAMuB,IAAI;AAAEN,gBAAAA,YAAAA,EAAYjB,MAAMkB,cAAc;gBAAEE,OAAAA,EAAShC;;AAClHc,YAAAA;;;AAGb;;;"}
@@ -0,0 +1,8 @@
1
+ import { UsherButtonSize } from './buttonModels.js';
2
+ export interface ReportButtonProps {
3
+ size?: UsherButtonSize;
4
+ error?: unknown;
5
+ className?: string;
6
+ }
7
+ export declare const ReportButton: ({ size, error, className }: ReportButtonProps) => import("react").JSX.Element;
8
+ //# sourceMappingURL=ReportButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportButton.d.ts","sourceRoot":"","sources":["../../../Buttons/ReportButton.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKvE,MAAM,WAAW,iBAAiB;IAE9B,IAAI,CAAC,EAAE,eAAe,CAAC;IAGvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAGhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,eAAO,MAAM,YAAY,GAAI,4BAAsC,iBAAiB,gCAwBnF,CAAC"}
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var Common = require('@cratis/components/Common');
5
+ var Icons = require('../Icons.js');
6
+ var useUsher = require('../Provider/useUsher.js');
7
+ var buttonModels = require('./buttonModels.js');
8
+
9
+ /**
10
+ * Opens the report a problem dialog, or the report this error dialog when given an error, with where in the
11
+ * application the button is.
12
+ */ const ReportButton = ({ size = 'large', error, className })=>{
13
+ const usher = useUsher.useUsher();
14
+ const reportsError = error !== undefined;
15
+ const model = buttonModels.reportButtonModel(size, reportsError, usher.labels);
16
+ const report = ()=>reportsError ? usher.reportError(error) : usher.reportIssue();
17
+ return size === 'small' ? /*#__PURE__*/ jsxRuntime.jsx(Common.IconButton, {
18
+ className: className,
19
+ variant: "ghost",
20
+ icon: /*#__PURE__*/ jsxRuntime.jsx(Icons.BugIcon, {}),
21
+ "aria-label": model.accessibleName,
22
+ tooltip: model.tooltip,
23
+ onClick: report
24
+ }) : /*#__PURE__*/ jsxRuntime.jsx(Common.Button, {
25
+ className: className,
26
+ variant: "outline",
27
+ icon: /*#__PURE__*/ jsxRuntime.jsx(Icons.BugIcon, {}),
28
+ label: model.text,
29
+ onClick: report
30
+ });
31
+ };
32
+
33
+ exports.ReportButton = ReportButton;
34
+ //# sourceMappingURL=ReportButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportButton.js","sources":["../../../Buttons/ReportButton.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Button, IconButton } from '@cratis/components/Common';\nimport { BugIcon } from '../Icons.js';\nimport { useUsher } from '../Provider/useUsher.js';\nimport { reportButtonModel, UsherButtonSize } from './buttonModels.js';\n\n/**\n * Props for {@link ReportButton}.\n */\nexport interface ReportButtonProps {\n /** `large` shows the icon and the text; `small` shows the icon, with the text as tooltip and accessible name. Defaults to `large`. */\n size?: UsherButtonSize;\n\n /** The error to report: `ErrorDetails` from `@cratis/showrunner.usher`, or anything thrown. The button reports a problem described by hand when not given. */\n error?: unknown;\n\n /** Additional class name for the button. */\n className?: string;\n}\n\n/**\n * Opens the report a problem dialog, or the report this error dialog when given an error, with where in the\n * application the button is.\n */\nexport const ReportButton = ({ size = 'large', error, className }: ReportButtonProps) => {\n const usher = useUsher();\n const reportsError = error !== undefined;\n const model = reportButtonModel(size, reportsError, usher.labels);\n const report = () => reportsError ? usher.reportError(error) : usher.reportIssue();\n\n return size === 'small'\n ? (\n <IconButton\n className={className}\n variant='ghost'\n icon={<BugIcon />}\n aria-label={model.accessibleName}\n tooltip={model.tooltip}\n onClick={report} />\n )\n : (\n <Button\n className={className}\n variant='outline'\n icon={<BugIcon />}\n label={model.text}\n onClick={report} />\n );\n};\n"],"names":["ReportButton","size","error","className","usher","useUsher","reportsError","undefined","model","reportButtonModel","labels","report","reportError","reportIssue","_jsx","IconButton","variant","icon","BugIcon","aria-label","accessibleName","tooltip","onClick","Button","label","text"],"mappings":";;;;;;;;AAsBA;;;IAIO,MAAMA,YAAAA,GAAe,CAAC,EAAEC,IAAAA,GAAO,OAAO,EAAEC,KAAK,EAAEC,SAAS,EAAqB,GAAA;AAChF,IAAA,MAAMC,KAAAA,GAAQC,iBAAAA,EAAAA;AACd,IAAA,MAAMC,eAAeJ,KAAAA,KAAUK,SAAAA;AAC/B,IAAA,MAAMC,KAAAA,GAAQC,8BAAAA,CAAkBR,IAAAA,EAAMK,YAAAA,EAAcF,MAAMM,MAAM,CAAA;IAChE,MAAMC,MAAAA,GAAS,IAAML,YAAAA,GAAeF,KAAAA,CAAMQ,WAAW,CAACV,KAAAA,CAAAA,GAASE,MAAMS,WAAW,EAAA;IAEhF,OAAOZ,IAAAA,KAAS,wBAERa,cAAA,CAACC,iBAAAA,EAAAA;QACGZ,SAAAA,EAAWA,SAAAA;QACXa,OAAAA,EAAQ,OAAA;AACRC,QAAAA,IAAAA,gBAAMH,cAAA,CAACI,aAAAA,EAAAA,EAAAA,CAAAA;AACPC,QAAAA,YAAAA,EAAYX,MAAMY,cAAc;AAChCC,QAAAA,OAAAA,EAASb,MAAMa,OAAO;QACtBC,OAAAA,EAASX;uBAGbG,cAAA,CAACS,aAAAA,EAAAA;QACGpB,SAAAA,EAAWA,SAAAA;QACXa,OAAAA,EAAQ,SAAA;AACRC,QAAAA,IAAAA,gBAAMH,cAAA,CAACI,aAAAA,EAAAA,EAAAA,CAAAA;AACPM,QAAAA,KAAAA,EAAOhB,MAAMiB,IAAI;QACjBH,OAAAA,EAASX;;AAEzB;;"}
@@ -0,0 +1,10 @@
1
+ import { UsherLabels } from '../Labels/index.js';
2
+ export type UsherButtonSize = 'large' | 'small';
3
+ export interface ButtonModel {
4
+ readonly text: string;
5
+ readonly accessibleName: string;
6
+ readonly tooltip: string;
7
+ }
8
+ export declare function reportButtonModel(size: UsherButtonSize, reportsError: boolean, labels: UsherLabels): ButtonModel;
9
+ export declare function myIssuesButtonModel(size: UsherButtonSize, waiting: number, labels: UsherLabels): ButtonModel;
10
+ //# sourceMappingURL=buttonModels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buttonModels.d.ts","sourceRoot":"","sources":["../../../Buttons/buttonModels.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC;AAKhD,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAGhC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AASD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAGhH;AASD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAI5G"}
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var format = require('../Labels/format.js');
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Gets what the report button shows and announces.
9
+ * @param size The {@link UsherButtonSize}.
10
+ * @param reportsError Whether the button reports an error rather than a problem described by hand.
11
+ * @param labels The labels to show.
12
+ * @returns The {@link ButtonModel}.
13
+ */ function reportButtonModel(size, reportsError, labels) {
14
+ const label = reportsError ? labels.reportButton.reportError : labels.reportButton.reportProblem;
15
+ return modelFor(size, label, label);
16
+ }
17
+ /**
18
+ * Gets what the my issues button shows and announces.
19
+ * @param size The {@link UsherButtonSize}.
20
+ * @param waiting How many issues support waits for the user on.
21
+ * @param labels The labels to show.
22
+ * @returns The {@link ButtonModel}.
23
+ */ function myIssuesButtonModel(size, waiting, labels) {
24
+ const label = labels.myIssuesButton.label;
25
+ const accessibleName = waiting > 0 ? `${label}, ${format.format(labels.myIssuesButton.waiting, {
26
+ count: waiting
27
+ })}` : label;
28
+ return modelFor(size, label, accessibleName);
29
+ }
30
+ function modelFor(size, label, accessibleName) {
31
+ return size === 'small' ? {
32
+ text: '',
33
+ accessibleName,
34
+ tooltip: accessibleName
35
+ } : {
36
+ text: label,
37
+ accessibleName,
38
+ tooltip: ''
39
+ };
40
+ }
41
+
42
+ exports.myIssuesButtonModel = myIssuesButtonModel;
43
+ exports.reportButtonModel = reportButtonModel;
44
+ //# sourceMappingURL=buttonModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buttonModels.js","sources":["../../../Buttons/buttonModels.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { format, UsherLabels } from '../Labels/index.js';\n\n/**\n * The sizes of the Usher buttons: `large` shows the icon and the text; `small` shows the icon, with the text as the\n * tooltip and the accessible name.\n */\nexport type UsherButtonSize = 'large' | 'small';\n\n/**\n * What an Usher button shows and announces.\n */\nexport interface ButtonModel {\n /** The visible text; empty for a small button. */\n readonly text: string;\n\n /** The accessible name. */\n readonly accessibleName: string;\n\n /** The tooltip; empty for a large button, whose text says it all. */\n readonly tooltip: string;\n}\n\n/**\n * Gets what the report button shows and announces.\n * @param size The {@link UsherButtonSize}.\n * @param reportsError Whether the button reports an error rather than a problem described by hand.\n * @param labels The labels to show.\n * @returns The {@link ButtonModel}.\n */\nexport function reportButtonModel(size: UsherButtonSize, reportsError: boolean, labels: UsherLabels): ButtonModel {\n const label = reportsError ? labels.reportButton.reportError : labels.reportButton.reportProblem;\n return modelFor(size, label, label);\n}\n\n/**\n * Gets what the my issues button shows and announces.\n * @param size The {@link UsherButtonSize}.\n * @param waiting How many issues support waits for the user on.\n * @param labels The labels to show.\n * @returns The {@link ButtonModel}.\n */\nexport function myIssuesButtonModel(size: UsherButtonSize, waiting: number, labels: UsherLabels): ButtonModel {\n const label = labels.myIssuesButton.label;\n const accessibleName = waiting > 0 ? `${label}, ${format(labels.myIssuesButton.waiting, { count: waiting })}` : label;\n return modelFor(size, label, accessibleName);\n}\n\nfunction modelFor(size: UsherButtonSize, label: string, accessibleName: string): ButtonModel {\n return size === 'small'\n ? { text: '', accessibleName, tooltip: accessibleName }\n : { text: label, accessibleName, tooltip: '' };\n}\n"],"names":["reportButtonModel","size","reportsError","labels","label","reportButton","reportError","reportProblem","modelFor","myIssuesButtonModel","waiting","myIssuesButton","accessibleName","format","count","text","tooltip"],"mappings":";;;;AAAA;AACA;AAwBA;;;;;;AAMC,IACM,SAASA,iBAAAA,CAAkBC,IAAqB,EAAEC,YAAqB,EAAEC,MAAmB,EAAA;IAC/F,MAAMC,KAAAA,GAAQF,YAAAA,GAAeC,MAAAA,CAAOE,YAAY,CAACC,WAAW,GAAGH,MAAAA,CAAOE,YAAY,CAACE,aAAa;IAChG,OAAOC,QAAAA,CAASP,MAAMG,KAAAA,EAAOA,KAAAA,CAAAA;AACjC;AAEA;;;;;;AAMC,IACM,SAASK,mBAAAA,CAAoBR,IAAqB,EAAES,OAAe,EAAEP,MAAmB,EAAA;AAC3F,IAAA,MAAMC,KAAAA,GAAQD,MAAAA,CAAOQ,cAAc,CAACP,KAAK;AACzC,IAAA,MAAMQ,cAAAA,GAAiBF,OAAAA,GAAU,CAAA,GAAI,CAAA,EAAGN,KAAAA,CAAM,EAAE,EAAES,aAAAA,CAAOV,MAAAA,CAAOQ,cAAc,CAACD,OAAO,EAAE;QAAEI,KAAAA,EAAOJ;AAAQ,KAAA,CAAA,CAAA,CAAI,GAAGN,KAAAA;IAChH,OAAOI,QAAAA,CAASP,MAAMG,KAAAA,EAAOQ,cAAAA,CAAAA;AACjC;AAEA,SAASJ,QAAAA,CAASP,IAAqB,EAAEG,KAAa,EAAEQ,cAAsB,EAAA;AAC1E,IAAA,OAAOX,SAAS,OAAA,GACV;QAAEc,IAAAA,EAAM,EAAA;AAAIH,QAAAA,cAAAA;QAAgBI,OAAAA,EAASJ;KAAe,GACpD;QAAEG,IAAAA,EAAMX,KAAAA;AAAOQ,QAAAA,cAAAA;QAAgBI,OAAAA,EAAS;AAAG,KAAA;AACrD;;;"}
@@ -0,0 +1,4 @@
1
+ export * from './buttonModels.js';
2
+ export * from './MyIssuesButton.js';
3
+ export * from './ReportButton.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Buttons/index.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Guid } from '@cratis/fundamentals';
2
+ export declare class CorrelationTracker {
3
+ readonly capacity: number;
4
+ private _correlationIds;
5
+ constructor(capacity?: number);
6
+ get correlationIds(): Guid[];
7
+ track(correlationId: Guid | string): void;
8
+ clear(): void;
9
+ }
10
+ //# sourceMappingURL=CorrelationTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CorrelationTracker.d.ts","sourceRoot":"","sources":["../../../Correlation/CorrelationTracker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAK5C,qBAAa,kBAAkB;IAOf,QAAQ,CAAC,QAAQ,EAAE,MAAM;IANrC,OAAO,CAAC,eAAe,CAAc;gBAMhB,QAAQ,GAAE,MAAU;IAMzC,IAAI,cAAc,IAAI,IAAI,EAAE,CAE3B;IAOD,KAAK,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAazC,KAAK,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ var fundamentals = require('@cratis/fundamentals');
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * Keeps the correlation ids of the last few Arc commands and queries, so a report can carry them.
9
+ */ class CorrelationTracker {
10
+ capacity;
11
+ _correlationIds = [];
12
+ /**
13
+ * Initializes a new instance of {@link CorrelationTracker}.
14
+ * @param capacity How many correlation ids to keep; the oldest is dropped when one more is tracked.
15
+ */ constructor(capacity = 5){
16
+ this.capacity = capacity;
17
+ }
18
+ /**
19
+ * Gets the correlation ids kept, oldest first.
20
+ */ get correlationIds() {
21
+ return [
22
+ ...this._correlationIds
23
+ ];
24
+ }
25
+ /**
26
+ * Tracks a correlation id. A correlation id already kept moves to the end instead of being kept twice; an
27
+ * empty one is ignored.
28
+ * @param correlationId The correlation id, as a {@link Guid} or its string form.
29
+ */ track(correlationId) {
30
+ const parsed = typeof correlationId === 'string' ? parseGuid(correlationId) : correlationId;
31
+ if (!parsed || parsed.equals(fundamentals.Guid.empty)) {
32
+ return;
33
+ }
34
+ this._correlationIds = [
35
+ ...this._correlationIds.filter((existing)=>!existing.equals(parsed)),
36
+ parsed
37
+ ].slice(-Math.max(this.capacity, 0));
38
+ }
39
+ /**
40
+ * Forgets every correlation id kept.
41
+ */ clear() {
42
+ this._correlationIds = [];
43
+ }
44
+ }
45
+ function parseGuid(value) {
46
+ return fundamentals.Guid.isGuid(value) ? fundamentals.Guid.parse(value) : undefined;
47
+ }
48
+
49
+ exports.CorrelationTracker = CorrelationTracker;
50
+ //# sourceMappingURL=CorrelationTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CorrelationTracker.js","sources":["../../../Correlation/CorrelationTracker.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Guid } from '@cratis/fundamentals';\n\n/**\n * Keeps the correlation ids of the last few Arc commands and queries, so a report can carry them.\n */\nexport class CorrelationTracker {\n private _correlationIds: Guid[] = [];\n\n /**\n * Initializes a new instance of {@link CorrelationTracker}.\n * @param capacity How many correlation ids to keep; the oldest is dropped when one more is tracked.\n */\n constructor(readonly capacity: number = 5) {\n }\n\n /**\n * Gets the correlation ids kept, oldest first.\n */\n get correlationIds(): Guid[] {\n return [...this._correlationIds];\n }\n\n /**\n * Tracks a correlation id. A correlation id already kept moves to the end instead of being kept twice; an\n * empty one is ignored.\n * @param correlationId The correlation id, as a {@link Guid} or its string form.\n */\n track(correlationId: Guid | string): void {\n const parsed = typeof correlationId === 'string' ? parseGuid(correlationId) : correlationId;\n if (!parsed || parsed.equals(Guid.empty)) {\n return;\n }\n\n this._correlationIds = [...this._correlationIds.filter(existing => !existing.equals(parsed)), parsed]\n .slice(-Math.max(this.capacity, 0));\n }\n\n /**\n * Forgets every correlation id kept.\n */\n clear(): void {\n this._correlationIds = [];\n }\n}\n\nfunction parseGuid(value: string): Guid | undefined {\n return Guid.isGuid(value) ? Guid.parse(value) : undefined;\n}\n"],"names":["CorrelationTracker","_correlationIds","capacity","correlationIds","track","correlationId","parsed","parseGuid","equals","Guid","empty","filter","existing","slice","Math","max","clear","value","isGuid","parse","undefined"],"mappings":";;;;AAAA;AACA;AAIA;;AAEC,IACM,MAAMA,kBAAAA,CAAAA;;AACDC,IAAAA,eAAAA,GAA0B,EAAE;AAEpC;;;AAGC,QACD,WAAA,CAAqBC,QAAAA,GAAmB,CAAC,CAAE;aAAtBA,QAAAA,GAAAA,QAAAA;AACrB,IAAA;AAEA;;AAEC,QACD,IAAIC,cAAAA,GAAyB;QACzB,OAAO;AAAI,YAAA,GAAA,IAAI,CAACF;AAAgB,SAAA;AACpC,IAAA;AAEA;;;;QAKAG,KAAAA,CAAMC,aAA4B,EAAQ;AACtC,QAAA,MAAMC,MAAAA,GAAS,OAAOD,aAAAA,KAAkB,QAAA,GAAWE,UAAUF,aAAAA,CAAAA,GAAiBA,aAAAA;AAC9E,QAAA,IAAI,CAACC,MAAAA,IAAUA,MAAAA,CAAOE,MAAM,CAACC,iBAAAA,CAAKC,KAAK,CAAA,EAAG;AACtC,YAAA;AACJ,QAAA;QAEA,IAAI,CAACT,eAAe,GAAG;eAAI,IAAI,CAACA,eAAe,CAACU,MAAM,CAACC,CAAAA,QAAAA,GAAY,CAACA,QAAAA,CAASJ,MAAM,CAACF,MAAAA,CAAAA,CAAAA;AAAUA,YAAAA;SAAO,CAChGO,KAAK,CAAC,CAACC,IAAAA,CAAKC,GAAG,CAAC,IAAI,CAACb,QAAQ,EAAE,CAAA,CAAA,CAAA;AACxC,IAAA;AAEA;;AAEC,QACDc,KAAAA,GAAc;QACV,IAAI,CAACf,eAAe,GAAG,EAAE;AAC7B,IAAA;AACJ;AAEA,SAASM,UAAUU,KAAa,EAAA;AAC5B,IAAA,OAAOR,kBAAKS,MAAM,CAACD,SAASR,iBAAAA,CAAKU,KAAK,CAACF,KAAAA,CAAAA,GAASG,SAAAA;AACpD;;"}
@@ -0,0 +1,3 @@
1
+ export * from './CorrelationTracker.js';
2
+ export * from './withCorrelationIdHeader.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Correlation/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { GetHttpHeaders } from '@cratis/arc';
2
+ import { Guid } from '@cratis/fundamentals';
3
+ import { CorrelationTracker } from './CorrelationTracker.js';
4
+ export declare const defaultCorrelationIdHeader = "X-Correlation-ID";
5
+ export declare function withCorrelationIdHeader(headersCallback: GetHttpHeaders | undefined, tracker: CorrelationTracker, header?: string, createCorrelationId?: () => Guid): GetHttpHeaders;
6
+ //# sourceMappingURL=withCorrelationIdHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withCorrelationIdHeader.d.ts","sourceRoot":"","sources":["../../../Correlation/withCorrelationIdHeader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAK7D,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAe7D,wBAAgB,uBAAuB,CACnC,eAAe,EAAE,cAAc,GAAG,SAAS,EAC3C,OAAO,EAAE,kBAAkB,EAC3B,MAAM,GAAE,MAAmC,EAC3C,mBAAmB,GAAE,MAAM,IAA0B,GAAG,cAAc,CAczE"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var fundamentals = require('@cratis/fundamentals');
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * The HTTP header Arc reads the correlation id of a command or query from, unless the backend configures another.
9
+ */ const defaultCorrelationIdHeader = 'X-Correlation-ID';
10
+ /**
11
+ * Wraps the HTTP headers callback Arc calls for every command and query request, so each request carries a
12
+ * correlation id the tracker knows.
13
+ * @remarks
14
+ * Arc uses the correlation id a request carries in its correlation id header, so the id tracked is the id the
15
+ * backend records for the command or query. A correlation id the headers already carry is kept and tracked;
16
+ * otherwise a new one is added.
17
+ * @param headersCallback The callback to wrap; nothing for none.
18
+ * @param tracker The {@link CorrelationTracker} to track the correlation ids in.
19
+ * @param header The name of the correlation id header.
20
+ * @param createCorrelationId Creates a new correlation id.
21
+ * @returns The wrapping callback.
22
+ */ function withCorrelationIdHeader(headersCallback, tracker, header = defaultCorrelationIdHeader, createCorrelationId = ()=>fundamentals.Guid.create()) {
23
+ return ()=>{
24
+ const headers = new Headers(headersCallback?.() ?? {});
25
+ const existing = headers.get(header);
26
+ const correlationId = existing && fundamentals.Guid.isGuid(existing) ? existing : createCorrelationId().toString();
27
+ headers.set(header, correlationId);
28
+ tracker.track(correlationId);
29
+ const record = {};
30
+ headers.forEach((value, name)=>{
31
+ record[name] = value;
32
+ });
33
+ return record;
34
+ };
35
+ }
36
+
37
+ exports.defaultCorrelationIdHeader = defaultCorrelationIdHeader;
38
+ exports.withCorrelationIdHeader = withCorrelationIdHeader;
39
+ //# sourceMappingURL=withCorrelationIdHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withCorrelationIdHeader.js","sources":["../../../Correlation/withCorrelationIdHeader.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { GetHttpHeaders } from '@cratis/arc';\nimport { Guid } from '@cratis/fundamentals';\nimport { CorrelationTracker } from './CorrelationTracker.js';\n\n/**\n * The HTTP header Arc reads the correlation id of a command or query from, unless the backend configures another.\n */\nexport const defaultCorrelationIdHeader = 'X-Correlation-ID';\n\n/**\n * Wraps the HTTP headers callback Arc calls for every command and query request, so each request carries a\n * correlation id the tracker knows.\n * @remarks\n * Arc uses the correlation id a request carries in its correlation id header, so the id tracked is the id the\n * backend records for the command or query. A correlation id the headers already carry is kept and tracked;\n * otherwise a new one is added.\n * @param headersCallback The callback to wrap; nothing for none.\n * @param tracker The {@link CorrelationTracker} to track the correlation ids in.\n * @param header The name of the correlation id header.\n * @param createCorrelationId Creates a new correlation id.\n * @returns The wrapping callback.\n */\nexport function withCorrelationIdHeader(\n headersCallback: GetHttpHeaders | undefined,\n tracker: CorrelationTracker,\n header: string = defaultCorrelationIdHeader,\n createCorrelationId: () => Guid = () => Guid.create()): GetHttpHeaders {\n return () => {\n const headers = new Headers(headersCallback?.() ?? {});\n const existing = headers.get(header);\n const correlationId = existing && Guid.isGuid(existing) ? existing : createCorrelationId().toString();\n headers.set(header, correlationId);\n tracker.track(correlationId);\n\n const record: Record<string, string> = {};\n headers.forEach((value, name) => {\n record[name] = value;\n });\n return record;\n };\n}\n"],"names":["defaultCorrelationIdHeader","withCorrelationIdHeader","headersCallback","tracker","header","createCorrelationId","Guid","create","headers","Headers","existing","get","correlationId","isGuid","toString","set","track","record","forEach","value","name"],"mappings":";;;;AAAA;AACA;AAMA;;IAGO,MAAMA,0BAAAA,GAA6B;AAE1C;;;;;;;;;;;;AAYC,IACM,SAASC,uBAAAA,CACZC,eAA2C,EAC3CC,OAA2B,EAC3BC,MAAAA,GAAiBJ,0BAA0B,EAC3CK,mBAAAA,GAAkC,IAAMC,iBAAAA,CAAKC,MAAM,EAAE,EAAA;IACrD,OAAO,IAAA;AACH,QAAA,MAAMC,OAAAA,GAAU,IAAIC,OAAAA,CAAQP,eAAAA,IAAAA,IAAuB,EAAC,CAAA;QACpD,MAAMQ,QAAAA,GAAWF,OAAAA,CAAQG,GAAG,CAACP,MAAAA,CAAAA;QAC7B,MAAMQ,aAAAA,GAAgBF,YAAYJ,iBAAAA,CAAKO,MAAM,CAACH,QAAAA,CAAAA,GAAYA,QAAAA,GAAWL,sBAAsBS,QAAQ,EAAA;QACnGN,OAAAA,CAAQO,GAAG,CAACX,MAAAA,EAAQQ,aAAAA,CAAAA;AACpBT,QAAAA,OAAAA,CAAQa,KAAK,CAACJ,aAAAA,CAAAA;AAEd,QAAA,MAAMK,SAAiC,EAAC;QACxCT,OAAAA,CAAQU,OAAO,CAAC,CAACC,KAAAA,EAAOC,IAAAA,GAAAA;YACpBH,MAAM,CAACG,KAAK,GAAGD,KAAAA;AACnB,QAAA,CAAA,CAAA;QACA,OAAOF,MAAAA;AACX,IAAA,CAAA;AACJ;;;"}
@@ -0,0 +1,4 @@
1
+ export declare const BugIcon: () => import("react").JSX.Element;
2
+ export declare const InboxIcon: () => import("react").JSX.Element;
3
+ export declare const BackIcon: () => import("react").JSX.Element;
4
+ //# sourceMappingURL=Icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../Icons.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,mCAInB,CAAC;AAKF,eAAO,MAAM,SAAS,mCAIrB,CAAC;AAKF,eAAO,MAAM,QAAQ,mCAIpB,CAAC"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * The bug icon of the report button. Decorative: the button carries the accessible name.
9
+ */ const BugIcon = ()=>/*#__PURE__*/ jsxRuntime.jsx("svg", {
10
+ className: "usher-icon",
11
+ viewBox: "0 0 24 24",
12
+ width: "1em",
13
+ height: "1em",
14
+ "aria-hidden": "true",
15
+ focusable: "false",
16
+ children: /*#__PURE__*/ jsxRuntime.jsx("path", {
17
+ fill: "currentColor",
18
+ d: "M20 8h-2.81a5.985 5.985 0 0 0-1.82-1.96L17 4.41 15.59 3l-2.17 2.17a6.002 6.002 0 0 0-2.83 0L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z"
19
+ })
20
+ });
21
+ /**
22
+ * The inbox icon of the my issues button. Decorative: the button carries the accessible name.
23
+ */ const InboxIcon = ()=>/*#__PURE__*/ jsxRuntime.jsx("svg", {
24
+ className: "usher-icon",
25
+ viewBox: "0 0 24 24",
26
+ width: "1em",
27
+ height: "1em",
28
+ "aria-hidden": "true",
29
+ focusable: "false",
30
+ children: /*#__PURE__*/ jsxRuntime.jsx("path", {
31
+ fill: "currentColor",
32
+ d: "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm0 12h-4a3 3 0 0 1-6 0H5V5h14v10z"
33
+ })
34
+ });
35
+ /**
36
+ * The back arrow of the issue view. Decorative: the button carries the accessible name.
37
+ */ const BackIcon = ()=>/*#__PURE__*/ jsxRuntime.jsx("svg", {
38
+ className: "usher-icon",
39
+ viewBox: "0 0 24 24",
40
+ width: "1em",
41
+ height: "1em",
42
+ "aria-hidden": "true",
43
+ focusable: "false",
44
+ children: /*#__PURE__*/ jsxRuntime.jsx("path", {
45
+ fill: "currentColor",
46
+ d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"
47
+ })
48
+ });
49
+
50
+ exports.BackIcon = BackIcon;
51
+ exports.BugIcon = BugIcon;
52
+ exports.InboxIcon = InboxIcon;
53
+ //# sourceMappingURL=Icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.js","sources":["../../Icons.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * The bug icon of the report button. Decorative: the button carries the accessible name.\n */\nexport const BugIcon = () => (\n <svg className='usher-icon' viewBox='0 0 24 24' width='1em' height='1em' aria-hidden='true' focusable='false'>\n <path fill='currentColor' d='M20 8h-2.81a5.985 5.985 0 0 0-1.82-1.96L17 4.41 15.59 3l-2.17 2.17a6.002 6.002 0 0 0-2.83 0L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z' />\n </svg>\n);\n\n/**\n * The inbox icon of the my issues button. Decorative: the button carries the accessible name.\n */\nexport const InboxIcon = () => (\n <svg className='usher-icon' viewBox='0 0 24 24' width='1em' height='1em' aria-hidden='true' focusable='false'>\n <path fill='currentColor' d='M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm0 12h-4a3 3 0 0 1-6 0H5V5h14v10z' />\n </svg>\n);\n\n/**\n * The back arrow of the issue view. Decorative: the button carries the accessible name.\n */\nexport const BackIcon = () => (\n <svg className='usher-icon' viewBox='0 0 24 24' width='1em' height='1em' aria-hidden='true' focusable='false'>\n <path fill='currentColor' d='M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z' />\n </svg>\n);\n"],"names":["BugIcon","_jsx","svg","className","viewBox","width","height","aria-hidden","focusable","path","fill","d","InboxIcon","BackIcon"],"mappings":";;;;AAAA;AACA;AAEA;;AAEC,IACM,MAAMA,OAAAA,GAAU,kBACnBC,cAAA,CAACC,KAAAA,EAAAA;QAAIC,SAAAA,EAAU,YAAA;QAAaC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,KAAA;QAAMC,MAAAA,EAAO,KAAA;QAAMC,aAAAA,EAAY,MAAA;QAAOC,SAAAA,EAAU,OAAA;AAClG,QAAA,QAAA,gBAAAP,cAAA,CAACQ,MAAAA,EAAAA;YAAKC,IAAAA,EAAK,cAAA;YAAeC,CAAAA,EAAE;;AAElC,KAAA;AAEF;;AAEC,IACM,MAAMC,SAAAA,GAAY,kBACrBX,cAAA,CAACC,KAAAA,EAAAA;QAAIC,SAAAA,EAAU,YAAA;QAAaC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,KAAA;QAAMC,MAAAA,EAAO,KAAA;QAAMC,aAAAA,EAAY,MAAA;QAAOC,SAAAA,EAAU,OAAA;AAClG,QAAA,QAAA,gBAAAP,cAAA,CAACQ,MAAAA,EAAAA;YAAKC,IAAAA,EAAK,cAAA;YAAeC,CAAAA,EAAE;;AAElC,KAAA;AAEF;;AAEC,IACM,MAAME,QAAAA,GAAW,kBACpBZ,cAAA,CAACC,KAAAA,EAAAA;QAAIC,SAAAA,EAAU,YAAA;QAAaC,OAAAA,EAAQ,WAAA;QAAYC,KAAAA,EAAM,KAAA;QAAMC,MAAAA,EAAO,KAAA;QAAMC,aAAAA,EAAY,MAAA;QAAOC,SAAAA,EAAU,OAAA;AAClG,QAAA,QAAA,gBAAAP,cAAA,CAACQ,MAAAA,EAAAA;YAAKC,IAAAA,EAAK,cAAA;YAAeC,CAAAA,EAAE;;AAElC,KAAA;;;;"}
@@ -0,0 +1,6 @@
1
+ import { IssueConversation } from '@cratis/showrunner.usher';
2
+ export interface AccessPanelProps {
3
+ issue: IssueConversation;
4
+ }
5
+ export declare const AccessPanel: ({ issue }: AccessPanelProps) => import("react").JSX.Element;
6
+ //# sourceMappingURL=AccessPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessPanel.d.ts","sourceRoot":"","sources":["../../../../Issues/IssueView/AccessPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,0BAA0B,CAAC;AAavF,MAAM,WAAW,gBAAgB;IAE7B,KAAK,EAAE,iBAAiB,CAAC;CAC5B;AAMD,eAAO,MAAM,WAAW,GAAI,WAAW,gBAAgB,gCAwDtD,CAAC"}
@@ -0,0 +1,124 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var dialogs = require('@cratis/arc.react/dialogs');
5
+ var Common = require('@cratis/components/Common');
6
+ var Notifications = require('@cratis/components/Notifications');
7
+ var showrunner_usher = require('@cratis/showrunner.usher');
8
+ var react = require('react');
9
+ var format = require('../../Labels/format.js');
10
+ var UsherContext = require('../../Provider/UsherContext.js');
11
+ var AccessChoice = require('../../Reporting/AccessChoice.js');
12
+ var accessStatus = require('../accessStatus.js');
13
+ var useAccessStatus = require('../useAccessStatus.js');
14
+ var GrantAccessDialog = require('./GrantAccessDialog.js');
15
+ var SupportSessions = require('./SupportSessions.js');
16
+
17
+ /**
18
+ * Shows whether support may sign in as the reporter, lets them grant or revoke it, highlights support's pending
19
+ * request, and lists the sessions in which support signed in.
20
+ */ const AccessPanel = ({ issue })=>{
21
+ const { labels, locale } = UsherContext.useUsherContext();
22
+ const headingId = react.useId();
23
+ const [GrantDialog, showGrantDialog] = dialogs.useDialog(GrantAccessDialog.GrantAccessDialog);
24
+ const [confirm] = dialogs.useConfirmationDialog();
25
+ const [revokeAccess] = showrunner_usher.RevokeAccess.use();
26
+ const [requestDismissed, setRequestDismissed] = react.useState(false);
27
+ const [status] = useAccessStatus.useAccessStatus(issue.access);
28
+ const isWithdrawn = issue.state === showrunner_usher.IssueState.withdrawn;
29
+ const showsRequest = status === accessStatus.AccessStatus.requested && !requestDismissed && !isWithdrawn;
30
+ const validUntil = issue.access?.validUntil instanceof Date ? issue.access.validUntil : new Date(issue.access?.validUntil);
31
+ const heading = status === accessStatus.AccessStatus.granted ? labels.accessPanel.grantedHeading : showsRequest ? labels.accessPanel.requestedHeading : labels.accessPanel.notGrantedHeading;
32
+ const revoke = async ()=>{
33
+ const answer = await confirm(labels.accessPanel.revokeTitle, labels.accessPanel.revokeMessage, dialogs.DialogButtons.YesNo);
34
+ if (answer !== dialogs.DialogResult.Yes) {
35
+ return;
36
+ }
37
+ revokeAccess.issueId = issue.id;
38
+ Notifications.toastCommandResult(await revokeAccess.execute(), {
39
+ showSuccess: false
40
+ });
41
+ };
42
+ const grant = ()=>void showGrantDialog({
43
+ issueId: issue.id
44
+ });
45
+ return /*#__PURE__*/ jsxRuntime.jsxs("section", {
46
+ className: "usher-panel",
47
+ "data-highlighted": showsRequest || undefined,
48
+ "aria-labelledby": headingId,
49
+ children: [
50
+ /*#__PURE__*/ jsxRuntime.jsx("h4", {
51
+ id: headingId,
52
+ className: "usher-panel__heading",
53
+ children: heading
54
+ }),
55
+ status === accessStatus.AccessStatus.granted && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
56
+ children: [
57
+ /*#__PURE__*/ jsxRuntime.jsx("p", {
58
+ className: "usher-panel__text",
59
+ children: format.format(labels.accessPanel.grantedUntil, {
60
+ time: AccessChoice.formatTime(validUntil, locale)
61
+ })
62
+ }),
63
+ /*#__PURE__*/ jsxRuntime.jsx(Common.Button, {
64
+ variant: "outline",
65
+ tone: "critical",
66
+ size: "small",
67
+ label: labels.accessPanel.revoke,
68
+ onClick: ()=>void revoke()
69
+ })
70
+ ]
71
+ }),
72
+ showsRequest && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
73
+ children: [
74
+ /*#__PURE__*/ jsxRuntime.jsx("p", {
75
+ className: "usher-panel__text",
76
+ children: format.format(labels.accessPanel.requestReason, {
77
+ reason: issue.access.request.reason
78
+ })
79
+ }),
80
+ /*#__PURE__*/ jsxRuntime.jsxs("div", {
81
+ className: "usher-panel__actions",
82
+ children: [
83
+ /*#__PURE__*/ jsxRuntime.jsx(Common.Button, {
84
+ variant: "solid",
85
+ tone: "accent",
86
+ size: "small",
87
+ label: labels.accessPanel.grant,
88
+ onClick: grant
89
+ }),
90
+ /*#__PURE__*/ jsxRuntime.jsx(Common.Button, {
91
+ variant: "ghost",
92
+ size: "small",
93
+ label: labels.accessPanel.notNow,
94
+ onClick: ()=>setRequestDismissed(true)
95
+ })
96
+ ]
97
+ })
98
+ ]
99
+ }),
100
+ status !== accessStatus.AccessStatus.granted && !showsRequest && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
101
+ children: [
102
+ /*#__PURE__*/ jsxRuntime.jsx("p", {
103
+ className: "usher-panel__text",
104
+ children: labels.accessPanel.notGranted
105
+ }),
106
+ !isWithdrawn && /*#__PURE__*/ jsxRuntime.jsx(Common.Button, {
107
+ variant: "outline",
108
+ size: "small",
109
+ label: labels.accessPanel.grant,
110
+ onClick: grant
111
+ })
112
+ ]
113
+ }),
114
+ /*#__PURE__*/ jsxRuntime.jsx(SupportSessions.SupportSessions, {
115
+ sessions: issue.access?.sessions ?? [],
116
+ entries: issue.entries ?? []
117
+ }),
118
+ /*#__PURE__*/ jsxRuntime.jsx(GrantDialog, {})
119
+ ]
120
+ });
121
+ };
122
+
123
+ exports.AccessPanel = AccessPanel;
124
+ //# sourceMappingURL=AccessPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessPanel.js","sources":["../../../../Issues/IssueView/AccessPanel.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { DialogButtons, DialogResult, useConfirmationDialog, useDialog } from '@cratis/arc.react/dialogs';\nimport { Button } from '@cratis/components/Common';\nimport { toastCommandResult } from '@cratis/components/Notifications';\nimport { IssueConversation, IssueState, RevokeAccess } from '@cratis/showrunner.usher';\nimport { useId, useState } from 'react';\nimport { format } from '../../Labels/index.js';\nimport { useUsherContext } from '../../Provider/UsherContext.js';\nimport { formatTime } from '../../Reporting/AccessChoice.js';\nimport { AccessStatus } from '../accessStatus.js';\nimport { useAccessStatus } from '../useAccessStatus.js';\nimport { GrantAccessDialog } from './GrantAccessDialog.js';\nimport { SupportSessions } from './SupportSessions.js';\n\n/**\n * Props for {@link AccessPanel}.\n */\nexport interface AccessPanelProps {\n /** The issue. */\n issue: IssueConversation;\n}\n\n/**\n * Shows whether support may sign in as the reporter, lets them grant or revoke it, highlights support's pending\n * request, and lists the sessions in which support signed in.\n */\nexport const AccessPanel = ({ issue }: AccessPanelProps) => {\n const { labels, locale } = useUsherContext();\n const headingId = useId();\n const [GrantDialog, showGrantDialog] = useDialog(GrantAccessDialog);\n const [confirm] = useConfirmationDialog();\n const [revokeAccess] = RevokeAccess.use();\n const [requestDismissed, setRequestDismissed] = useState(false);\n const [status] = useAccessStatus(issue.access);\n const isWithdrawn = issue.state === IssueState.withdrawn;\n const showsRequest = status === AccessStatus.requested && !requestDismissed && !isWithdrawn;\n const validUntil = issue.access?.validUntil instanceof Date ? issue.access.validUntil : new Date(issue.access?.validUntil);\n\n const heading = status === AccessStatus.granted\n ? labels.accessPanel.grantedHeading\n : showsRequest ? labels.accessPanel.requestedHeading : labels.accessPanel.notGrantedHeading;\n\n const revoke = async () => {\n const answer = await confirm(labels.accessPanel.revokeTitle, labels.accessPanel.revokeMessage, DialogButtons.YesNo);\n if (answer !== DialogResult.Yes) {\n return;\n }\n\n revokeAccess.issueId = issue.id;\n toastCommandResult(await revokeAccess.execute(), { showSuccess: false });\n };\n\n const grant = () => void showGrantDialog({ issueId: issue.id });\n\n return (\n <section className='usher-panel' data-highlighted={showsRequest || undefined} aria-labelledby={headingId}>\n <h4 id={headingId} className='usher-panel__heading'>{heading}</h4>\n {status === AccessStatus.granted && (\n <>\n <p className='usher-panel__text'>{format(labels.accessPanel.grantedUntil, { time: formatTime(validUntil, locale) })}</p>\n <Button variant='outline' tone='critical' size='small' label={labels.accessPanel.revoke} onClick={() => void revoke()} />\n </>\n )}\n {showsRequest && (\n <>\n <p className='usher-panel__text'>{format(labels.accessPanel.requestReason, { reason: issue.access.request.reason })}</p>\n <div className='usher-panel__actions'>\n <Button variant='solid' tone='accent' size='small' label={labels.accessPanel.grant} onClick={grant} />\n <Button variant='ghost' size='small' label={labels.accessPanel.notNow} onClick={() => setRequestDismissed(true)} />\n </div>\n </>\n )}\n {status !== AccessStatus.granted && !showsRequest && (\n <>\n <p className='usher-panel__text'>{labels.accessPanel.notGranted}</p>\n {!isWithdrawn && <Button variant='outline' size='small' label={labels.accessPanel.grant} onClick={grant} />}\n </>\n )}\n <SupportSessions sessions={issue.access?.sessions ?? []} entries={issue.entries ?? []} />\n <GrantDialog />\n </section>\n );\n};\n"],"names":["AccessPanel","issue","labels","locale","useUsherContext","headingId","useId","GrantDialog","showGrantDialog","useDialog","GrantAccessDialog","confirm","useConfirmationDialog","revokeAccess","RevokeAccess","use","requestDismissed","setRequestDismissed","useState","status","useAccessStatus","access","isWithdrawn","state","IssueState","withdrawn","showsRequest","AccessStatus","requested","validUntil","Date","heading","granted","accessPanel","grantedHeading","requestedHeading","notGrantedHeading","revoke","answer","revokeTitle","revokeMessage","DialogButtons","YesNo","DialogResult","Yes","issueId","id","toastCommandResult","execute","showSuccess","grant","_jsxs","section","className","data-highlighted","undefined","aria-labelledby","_jsx","h4","_Fragment","p","format","grantedUntil","time","formatTime","Button","variant","tone","size","label","onClick","requestReason","reason","request","div","notNow","notGranted","SupportSessions","sessions","entries"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Guid } from '@cratis/fundamentals';
2
+ export interface GrantAccessDialogProps {
3
+ issueId: Guid;
4
+ }
5
+ export declare const GrantAccessDialog: ({ issueId }: GrantAccessDialogProps) => import("react").JSX.Element;
6
+ //# sourceMappingURL=GrantAccessDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrantAccessDialog.d.ts","sourceRoot":"","sources":["../../../../Issues/IssueView/GrantAccessDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAU5C,MAAM,WAAW,sBAAsB;IAEnC,OAAO,EAAE,IAAI,CAAC;CACjB;AAKD,eAAO,MAAM,iBAAiB,GAAI,aAAa,sBAAsB,gCA+BpE,CAAC"}