codicent-app-sdk 0.5.6 → 0.5.8

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 (250) hide show
  1. package/dist/cjs/components/AiInput.js +1 -1
  2. package/dist/cjs/components/AudioIcon.js +1 -1
  3. package/dist/cjs/components/ChatInput.js +1 -1
  4. package/dist/cjs/components/ChatMessage.js +1 -1
  5. package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
  6. package/dist/cjs/components/Footer.js +1 -1
  7. package/dist/cjs/components/Header.js +1 -1
  8. package/dist/cjs/components/HtmlView.js +1 -1
  9. package/dist/cjs/components/MessageInput.js +1 -1
  10. package/dist/cjs/components/MessageItem.js +1 -1
  11. package/dist/cjs/components/Profile.js +1 -1
  12. package/dist/cjs/components/Prompt.js +1 -1
  13. package/dist/cjs/components/SnapFooter.js +1 -1
  14. package/dist/cjs/components/TextHeader.js +1 -1
  15. package/dist/cjs/components/TypingIndicator.js +1 -1
  16. package/dist/cjs/components/UploadFile.js +1 -1
  17. package/dist/cjs/components/UrlProcessor.js +1 -1
  18. package/dist/cjs/components/VoiceIcon.js +1 -1
  19. package/dist/cjs/components/audit/AuditAnswerCell.d.ts +15 -0
  20. package/dist/cjs/components/audit/AuditAnswerCell.d.ts.map +1 -0
  21. package/dist/cjs/components/audit/AuditAnswerCell.js +1 -0
  22. package/dist/cjs/components/audit/AuditBulkExportDialog.d.ts +16 -0
  23. package/dist/cjs/components/audit/AuditBulkExportDialog.d.ts.map +1 -0
  24. package/dist/cjs/components/audit/AuditBulkExportDialog.js +1 -0
  25. package/dist/cjs/components/audit/AuditBulkUploadDialog.d.ts +15 -0
  26. package/dist/cjs/components/audit/AuditBulkUploadDialog.d.ts.map +1 -0
  27. package/dist/cjs/components/audit/AuditBulkUploadDialog.js +1 -0
  28. package/dist/cjs/components/audit/AuditCircularProgress.d.ts +15 -0
  29. package/dist/cjs/components/audit/AuditCircularProgress.d.ts.map +1 -0
  30. package/dist/cjs/components/audit/AuditCircularProgress.js +1 -0
  31. package/dist/cjs/components/audit/AuditFilterBar.d.ts +15 -0
  32. package/dist/cjs/components/audit/AuditFilterBar.d.ts.map +1 -0
  33. package/dist/cjs/components/audit/AuditFilterBar.js +1 -0
  34. package/dist/cjs/components/audit/AuditFilterChips.d.ts +17 -0
  35. package/dist/cjs/components/audit/AuditFilterChips.d.ts.map +1 -0
  36. package/dist/cjs/components/audit/AuditFilterChips.js +1 -0
  37. package/dist/cjs/components/audit/AuditGroupsProgress.d.ts +12 -0
  38. package/dist/cjs/components/audit/AuditGroupsProgress.d.ts.map +1 -0
  39. package/dist/cjs/components/audit/AuditGroupsProgress.js +1 -0
  40. package/dist/cjs/components/audit/AuditHorizontalProgress.d.ts +16 -0
  41. package/dist/cjs/components/audit/AuditHorizontalProgress.d.ts.map +1 -0
  42. package/dist/cjs/components/audit/AuditHorizontalProgress.js +1 -0
  43. package/dist/cjs/components/audit/AuditRequirementDialog.d.ts +16 -0
  44. package/dist/cjs/components/audit/AuditRequirementDialog.d.ts.map +1 -0
  45. package/dist/cjs/components/audit/AuditRequirementDialog.js +1 -0
  46. package/dist/cjs/components/audit/AuditRoleIndicator.d.ts +13 -0
  47. package/dist/cjs/components/audit/AuditRoleIndicator.d.ts.map +1 -0
  48. package/dist/cjs/components/audit/AuditRoleIndicator.js +1 -0
  49. package/dist/cjs/components/audit/AuditSearchBar.d.ts +13 -0
  50. package/dist/cjs/components/audit/AuditSearchBar.d.ts.map +1 -0
  51. package/dist/cjs/components/audit/AuditSearchBar.js +1 -0
  52. package/dist/cjs/components/audit/AuditSortPresets.d.ts +12 -0
  53. package/dist/cjs/components/audit/AuditSortPresets.d.ts.map +1 -0
  54. package/dist/cjs/components/audit/AuditSortPresets.js +1 -0
  55. package/dist/cjs/components/audit/AuditSummaryDashboard.d.ts +13 -0
  56. package/dist/cjs/components/audit/AuditSummaryDashboard.d.ts.map +1 -0
  57. package/dist/cjs/components/audit/AuditSummaryDashboard.js +1 -0
  58. package/dist/cjs/components/audit/AuditUnitExportDialog.d.ts +18 -0
  59. package/dist/cjs/components/audit/AuditUnitExportDialog.d.ts.map +1 -0
  60. package/dist/cjs/components/audit/AuditUnitExportDialog.js +1 -0
  61. package/dist/cjs/components/audit/AuditUnitImportDialog.d.ts +13 -0
  62. package/dist/cjs/components/audit/AuditUnitImportDialog.d.ts.map +1 -0
  63. package/dist/cjs/components/audit/AuditUnitImportDialog.js +1 -0
  64. package/dist/cjs/components/audit/AuditUnitSwitcher.d.ts +20 -0
  65. package/dist/cjs/components/audit/AuditUnitSwitcher.d.ts.map +1 -0
  66. package/dist/cjs/components/audit/AuditUnitSwitcher.js +1 -0
  67. package/dist/cjs/components/audit/index.d.ts +20 -0
  68. package/dist/cjs/components/audit/index.d.ts.map +1 -0
  69. package/dist/cjs/components/index.d.ts +1 -0
  70. package/dist/cjs/components/index.d.ts.map +1 -1
  71. package/dist/cjs/hooks/index.d.ts +12 -0
  72. package/dist/cjs/hooks/index.d.ts.map +1 -1
  73. package/dist/cjs/hooks/useAuditFilters.d.ts +17 -0
  74. package/dist/cjs/hooks/useAuditFilters.d.ts.map +1 -0
  75. package/dist/cjs/hooks/useAuditFilters.js +1 -0
  76. package/dist/cjs/hooks/useAuditManagerData.d.ts +25 -0
  77. package/dist/cjs/hooks/useAuditManagerData.d.ts.map +1 -0
  78. package/dist/cjs/hooks/useAuditManagerData.js +1 -0
  79. package/dist/cjs/hooks/useAuditManagerFilters.d.ts +16 -0
  80. package/dist/cjs/hooks/useAuditManagerFilters.d.ts.map +1 -0
  81. package/dist/cjs/hooks/useAuditManagerFilters.js +1 -0
  82. package/dist/cjs/hooks/useAuditRequirementsFilters.d.ts +17 -0
  83. package/dist/cjs/hooks/useAuditRequirementsFilters.d.ts.map +1 -0
  84. package/dist/cjs/hooks/useAuditRequirementsFilters.js +1 -0
  85. package/dist/cjs/hooks/useAuditRoleCheck.d.ts +26 -0
  86. package/dist/cjs/hooks/useAuditRoleCheck.d.ts.map +1 -0
  87. package/dist/cjs/hooks/useAuditRoleCheck.js +1 -0
  88. package/dist/cjs/hooks/useAuditState.d.ts +34 -0
  89. package/dist/cjs/hooks/useAuditState.d.ts.map +1 -0
  90. package/dist/cjs/hooks/useAuditState.js +1 -0
  91. package/dist/cjs/hooks/useAuthState.js +1 -1
  92. package/dist/cjs/hooks/useCodicentState.js +1 -1
  93. package/dist/cjs/hooks/useUserRoles.d.ts +1 -1
  94. package/dist/cjs/hooks/useUserRoles.d.ts.map +1 -1
  95. package/dist/cjs/hooks/useUserRoles.js +1 -1
  96. package/dist/cjs/index.js +1 -1
  97. package/dist/cjs/pages/AppFrame.js +1 -1
  98. package/dist/cjs/pages/Chat.js +1 -1
  99. package/dist/cjs/pages/Compose.js +1 -1
  100. package/dist/cjs/pages/CrmPage.js +1 -1
  101. package/dist/cjs/pages/CrmPagePersistent.js +1 -1
  102. package/dist/cjs/pages/FormAccept.js +1 -1
  103. package/dist/cjs/pages/FormInvite.js +1 -1
  104. package/dist/cjs/pages/Home.js +1 -1
  105. package/dist/cjs/pages/HtmlViewer.js +1 -1
  106. package/dist/cjs/pages/ListPage.js +1 -1
  107. package/dist/cjs/pages/Login.js +1 -1
  108. package/dist/cjs/pages/Menu.js +1 -1
  109. package/dist/cjs/pages/Purchase.js +1 -1
  110. package/dist/cjs/pages/Sales.js +1 -1
  111. package/dist/cjs/pages/Search.js +1 -1
  112. package/dist/cjs/pages/Snap.js +1 -1
  113. package/dist/cjs/types/audit.d.ts +358 -0
  114. package/dist/cjs/types/audit.d.ts.map +1 -0
  115. package/dist/cjs/types/index.d.ts +1 -0
  116. package/dist/cjs/types/index.d.ts.map +1 -1
  117. package/dist/cjs/utils/auditExport.d.ts +37 -0
  118. package/dist/cjs/utils/auditExport.d.ts.map +1 -0
  119. package/dist/cjs/utils/auditExport.js +1 -0
  120. package/dist/cjs/utils/auditUtils.d.ts +59 -0
  121. package/dist/cjs/utils/auditUtils.d.ts.map +1 -0
  122. package/dist/cjs/utils/auditUtils.js +1 -0
  123. package/dist/cjs/utils/index.d.ts +2 -0
  124. package/dist/cjs/utils/index.d.ts.map +1 -1
  125. package/dist/esm/components/AiInput.js +1 -1
  126. package/dist/esm/components/AudioIcon.js +1 -1
  127. package/dist/esm/components/ChatInput.js +1 -1
  128. package/dist/esm/components/ChatMessage.js +1 -1
  129. package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
  130. package/dist/esm/components/Footer.js +1 -1
  131. package/dist/esm/components/Header.js +1 -1
  132. package/dist/esm/components/HtmlView.js +1 -1
  133. package/dist/esm/components/MessageInput.js +1 -1
  134. package/dist/esm/components/MessageItem.js +1 -1
  135. package/dist/esm/components/Profile.js +1 -1
  136. package/dist/esm/components/Prompt.js +1 -1
  137. package/dist/esm/components/SnapFooter.js +1 -1
  138. package/dist/esm/components/TextHeader.js +1 -1
  139. package/dist/esm/components/TypingIndicator.js +1 -1
  140. package/dist/esm/components/UploadFile.js +1 -1
  141. package/dist/esm/components/UrlProcessor.js +1 -1
  142. package/dist/esm/components/VoiceIcon.js +1 -1
  143. package/dist/esm/components/audit/AuditAnswerCell.d.ts +15 -0
  144. package/dist/esm/components/audit/AuditAnswerCell.d.ts.map +1 -0
  145. package/dist/esm/components/audit/AuditAnswerCell.js +1 -0
  146. package/dist/esm/components/audit/AuditBulkExportDialog.d.ts +16 -0
  147. package/dist/esm/components/audit/AuditBulkExportDialog.d.ts.map +1 -0
  148. package/dist/esm/components/audit/AuditBulkExportDialog.js +1 -0
  149. package/dist/esm/components/audit/AuditBulkUploadDialog.d.ts +15 -0
  150. package/dist/esm/components/audit/AuditBulkUploadDialog.d.ts.map +1 -0
  151. package/dist/esm/components/audit/AuditBulkUploadDialog.js +1 -0
  152. package/dist/esm/components/audit/AuditCircularProgress.d.ts +15 -0
  153. package/dist/esm/components/audit/AuditCircularProgress.d.ts.map +1 -0
  154. package/dist/esm/components/audit/AuditCircularProgress.js +1 -0
  155. package/dist/esm/components/audit/AuditFilterBar.d.ts +15 -0
  156. package/dist/esm/components/audit/AuditFilterBar.d.ts.map +1 -0
  157. package/dist/esm/components/audit/AuditFilterBar.js +1 -0
  158. package/dist/esm/components/audit/AuditFilterChips.d.ts +17 -0
  159. package/dist/esm/components/audit/AuditFilterChips.d.ts.map +1 -0
  160. package/dist/esm/components/audit/AuditFilterChips.js +1 -0
  161. package/dist/esm/components/audit/AuditGroupsProgress.d.ts +12 -0
  162. package/dist/esm/components/audit/AuditGroupsProgress.d.ts.map +1 -0
  163. package/dist/esm/components/audit/AuditGroupsProgress.js +1 -0
  164. package/dist/esm/components/audit/AuditHorizontalProgress.d.ts +16 -0
  165. package/dist/esm/components/audit/AuditHorizontalProgress.d.ts.map +1 -0
  166. package/dist/esm/components/audit/AuditHorizontalProgress.js +1 -0
  167. package/dist/esm/components/audit/AuditRequirementDialog.d.ts +16 -0
  168. package/dist/esm/components/audit/AuditRequirementDialog.d.ts.map +1 -0
  169. package/dist/esm/components/audit/AuditRequirementDialog.js +1 -0
  170. package/dist/esm/components/audit/AuditRoleIndicator.d.ts +13 -0
  171. package/dist/esm/components/audit/AuditRoleIndicator.d.ts.map +1 -0
  172. package/dist/esm/components/audit/AuditRoleIndicator.js +1 -0
  173. package/dist/esm/components/audit/AuditSearchBar.d.ts +13 -0
  174. package/dist/esm/components/audit/AuditSearchBar.d.ts.map +1 -0
  175. package/dist/esm/components/audit/AuditSearchBar.js +1 -0
  176. package/dist/esm/components/audit/AuditSortPresets.d.ts +12 -0
  177. package/dist/esm/components/audit/AuditSortPresets.d.ts.map +1 -0
  178. package/dist/esm/components/audit/AuditSortPresets.js +1 -0
  179. package/dist/esm/components/audit/AuditSummaryDashboard.d.ts +13 -0
  180. package/dist/esm/components/audit/AuditSummaryDashboard.d.ts.map +1 -0
  181. package/dist/esm/components/audit/AuditSummaryDashboard.js +1 -0
  182. package/dist/esm/components/audit/AuditUnitExportDialog.d.ts +18 -0
  183. package/dist/esm/components/audit/AuditUnitExportDialog.d.ts.map +1 -0
  184. package/dist/esm/components/audit/AuditUnitExportDialog.js +1 -0
  185. package/dist/esm/components/audit/AuditUnitImportDialog.d.ts +13 -0
  186. package/dist/esm/components/audit/AuditUnitImportDialog.d.ts.map +1 -0
  187. package/dist/esm/components/audit/AuditUnitImportDialog.js +1 -0
  188. package/dist/esm/components/audit/AuditUnitSwitcher.d.ts +20 -0
  189. package/dist/esm/components/audit/AuditUnitSwitcher.d.ts.map +1 -0
  190. package/dist/esm/components/audit/AuditUnitSwitcher.js +1 -0
  191. package/dist/esm/components/audit/index.d.ts +20 -0
  192. package/dist/esm/components/audit/index.d.ts.map +1 -0
  193. package/dist/esm/components/index.d.ts +1 -0
  194. package/dist/esm/components/index.d.ts.map +1 -1
  195. package/dist/esm/hooks/index.d.ts +12 -0
  196. package/dist/esm/hooks/index.d.ts.map +1 -1
  197. package/dist/esm/hooks/useAuditFilters.d.ts +17 -0
  198. package/dist/esm/hooks/useAuditFilters.d.ts.map +1 -0
  199. package/dist/esm/hooks/useAuditFilters.js +1 -0
  200. package/dist/esm/hooks/useAuditManagerData.d.ts +25 -0
  201. package/dist/esm/hooks/useAuditManagerData.d.ts.map +1 -0
  202. package/dist/esm/hooks/useAuditManagerData.js +1 -0
  203. package/dist/esm/hooks/useAuditManagerFilters.d.ts +16 -0
  204. package/dist/esm/hooks/useAuditManagerFilters.d.ts.map +1 -0
  205. package/dist/esm/hooks/useAuditManagerFilters.js +1 -0
  206. package/dist/esm/hooks/useAuditRequirementsFilters.d.ts +17 -0
  207. package/dist/esm/hooks/useAuditRequirementsFilters.d.ts.map +1 -0
  208. package/dist/esm/hooks/useAuditRequirementsFilters.js +1 -0
  209. package/dist/esm/hooks/useAuditRoleCheck.d.ts +26 -0
  210. package/dist/esm/hooks/useAuditRoleCheck.d.ts.map +1 -0
  211. package/dist/esm/hooks/useAuditRoleCheck.js +1 -0
  212. package/dist/esm/hooks/useAuditState.d.ts +34 -0
  213. package/dist/esm/hooks/useAuditState.d.ts.map +1 -0
  214. package/dist/esm/hooks/useAuditState.js +1 -0
  215. package/dist/esm/hooks/useAuthState.js +1 -1
  216. package/dist/esm/hooks/useCodicentState.js +1 -1
  217. package/dist/esm/hooks/useUserRoles.d.ts +1 -1
  218. package/dist/esm/hooks/useUserRoles.d.ts.map +1 -1
  219. package/dist/esm/hooks/useUserRoles.js +1 -1
  220. package/dist/esm/index.js +1 -1
  221. package/dist/esm/pages/AppFrame.js +1 -1
  222. package/dist/esm/pages/Chat.js +1 -1
  223. package/dist/esm/pages/Compose.js +1 -1
  224. package/dist/esm/pages/CrmPage.js +1 -1
  225. package/dist/esm/pages/CrmPagePersistent.js +1 -1
  226. package/dist/esm/pages/FormAccept.js +1 -1
  227. package/dist/esm/pages/FormInvite.js +1 -1
  228. package/dist/esm/pages/Home.js +1 -1
  229. package/dist/esm/pages/HtmlViewer.js +1 -1
  230. package/dist/esm/pages/ListPage.js +1 -1
  231. package/dist/esm/pages/Login.js +1 -1
  232. package/dist/esm/pages/Menu.js +1 -1
  233. package/dist/esm/pages/Purchase.js +1 -1
  234. package/dist/esm/pages/Sales.js +1 -1
  235. package/dist/esm/pages/Search.js +1 -1
  236. package/dist/esm/pages/Snap.js +1 -1
  237. package/dist/esm/types/audit.d.ts +358 -0
  238. package/dist/esm/types/audit.d.ts.map +1 -0
  239. package/dist/esm/types/index.d.ts +1 -0
  240. package/dist/esm/types/index.d.ts.map +1 -1
  241. package/dist/esm/utils/auditExport.d.ts +37 -0
  242. package/dist/esm/utils/auditExport.d.ts.map +1 -0
  243. package/dist/esm/utils/auditExport.js +1 -0
  244. package/dist/esm/utils/auditUtils.d.ts +59 -0
  245. package/dist/esm/utils/auditUtils.d.ts.map +1 -0
  246. package/dist/esm/utils/auditUtils.js +1 -0
  247. package/dist/esm/utils/index.d.ts +2 -0
  248. package/dist/esm/utils/index.d.ts.map +1 -1
  249. package/dist/index.d.ts +800 -2
  250. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -20,4 +20,16 @@ export type { Schema, SchemaItem, DataSchemas } from "./useObserveDataSchemas";
20
20
  export { useOnlineStatus } from "./useOnlineStatus";
21
21
  export { useUserRoles } from "./useUserRoles";
22
22
  export type { UserRole } from "./useUserRoles";
23
+ export { useAuditState } from "./useAuditState";
24
+ export type { UseAuditStateParams, UseAuditStateResult } from "./useAuditState";
25
+ export { useAuditRoleCheck } from "./useAuditRoleCheck";
26
+ export type { UseAuditRoleCheckParams, UseAuditRoleCheckResult } from "./useAuditRoleCheck";
27
+ export { useAuditFilters } from "./useAuditFilters";
28
+ export type { UseAuditFiltersResult } from "./useAuditFilters";
29
+ export { useAuditRequirementsFilters } from "./useAuditRequirementsFilters";
30
+ export type { UseAuditRequirementsFiltersResult } from "./useAuditRequirementsFilters";
31
+ export { useAuditManagerFilters } from "./useAuditManagerFilters";
32
+ export type { UseAuditManagerFiltersResult } from "./useAuditManagerFilters";
33
+ export { useAuditManagerData } from "./useAuditManagerData";
34
+ export type { UseAuditManagerDataParams, UseAuditManagerDataResult } from "./useAuditManagerData";
23
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnG,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnG,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview Filter state hook for the main audit page (per-unit requirement list).
3
+ * @module codicent-app-sdk/hooks/useAuditFilters
4
+ * @public
5
+ */
6
+ import type { AuditAnswer, AuditFilterState, ResolvedAuditConfig } from "../types/audit";
7
+ export interface UseAuditFiltersResult {
8
+ filters: AuditFilterState;
9
+ filteredAnswers: AuditAnswer[];
10
+ availableGroups: string[];
11
+ availableCategories: string[];
12
+ availableComplianceStatuses: string[];
13
+ updateFilters: (patch: Partial<AuditFilterState>) => void;
14
+ clearFilters: () => void;
15
+ }
16
+ export declare function useAuditFilters(answers: AuditAnswer[], config: ResolvedAuditConfig): UseAuditFiltersResult;
17
+ //# sourceMappingURL=useAuditFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuditFilters.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuditFilters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGzF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAYD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,mBAAmB,GAC1B,qBAAqB,CAuFvB"}
@@ -0,0 +1 @@
1
+ import{useState as e,useMemo as t}from"react";import{isAnswerCompliant as i,calculateAuditTimeRemaining as r}from"../utils/auditUtils.js";const s={groups:[],categories:[],complianceStatuses:[],validityStatuses:[],withComments:!1,withPhotos:!1,search:""};function o(o,n){const[a,l]=e(s),u=t((()=>[...new Set(o.map((e=>e.group)).filter(Boolean))].sort()),[o]),c=t((()=>{const e=o.filter((e=>0===a.groups.length||a.groups.includes(e.group)));return[...new Set(e.map((e=>e.category)).filter(Boolean))].sort()}),[o,a.groups]),p=t((()=>"checkbox"===n.answerMode?["compliant","non-compliant"]:n.answerOptions.map((e=>e.value))),[n]),g=t((()=>{const e=a.search.toLowerCase();return o.filter((t=>{if(a.groups.length>0&&!a.groups.includes(t.group))return!1;if(a.categories.length>0&&!a.categories.includes(t.category))return!1;if(a.complianceStatuses.length>0){const e=i(t.answer,n);if(!(a.complianceStatuses.includes(t.answer)||a.complianceStatuses.includes("compliant")&&e||a.complianceStatuses.includes("non-compliant")&&!e))return!1}if(a.validityStatuses.length>0){const e=r(t.validUntil),i=null!=t.validUntil;if(!a.validityStatuses.some((t=>"expired"===t?e?.isExpired??!1:"urgent"===t?e?.isUrgent??!1:"expiring-soon"===t?(e?.isExpiringSoon&&!e?.isUrgent)??!1:"valid"===t&&(!i||!e?.isExpired&&!e?.isExpiringSoon))))return!1}if(a.withComments&&!t.comment)return!1;if(a.withPhotos&&!t.photos)return!1;if(e){if(!`${t.title} ${t.group} ${t.category} ${t.description}`.toLowerCase().includes(e))return!1}return!0}))}),[o,a,n]);return{filters:a,filteredAnswers:g,availableGroups:u,availableCategories:c,availableComplianceStatuses:p,updateFilters:e=>{l((t=>({...t,...e})))},clearFilters:()=>l(s)}}export{o as useAuditFilters};
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Multi-unit statistics aggregator hook for the manager overview dashboard.
3
+ * Fetches all units and their answers, calculates per-unit and market-level compliance stats.
4
+ * @module codicent-app-sdk/hooks/useAuditManagerData
5
+ * @public
6
+ */
7
+ import type { CodicentService } from "../services/codicent";
8
+ import type { AuditConfig, AuditManagerStats, AuditUnitStats, ResolvedAuditConfig } from "../types/audit";
9
+ export interface UseAuditManagerDataParams {
10
+ service: CodicentService;
11
+ config: AuditConfig;
12
+ /** When provided, only fetch units in this market area (Manager role scoping) */
13
+ marketArea?: string;
14
+ enabled?: boolean;
15
+ }
16
+ export interface UseAuditManagerDataResult {
17
+ managerStats: AuditManagerStats;
18
+ unitStats: AuditUnitStats[];
19
+ loading: boolean;
20
+ error: string | null;
21
+ reload: () => Promise<void>;
22
+ resolved: ResolvedAuditConfig;
23
+ }
24
+ export declare function useAuditManagerData({ service, config, marketArea, enabled, }: UseAuditManagerDataParams): UseAuditManagerDataResult;
25
+ //# sourceMappingURL=useAuditManagerData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuditManagerData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuditManagerData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,iBAAiB,CAAC;IAChC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAYD,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,MAAM,EACN,UAAU,EACV,OAAc,GACf,EAAE,yBAAyB,GAAG,yBAAyB,CAmJvD"}
@@ -0,0 +1 @@
1
+ import{useState as t,useCallback as e,useEffect as a}from"react";import{resolveAuditConfig as i,isAnswerCompliant as n,calculateAuditTimeRemaining as r}from"../utils/auditUtils.js";const l={totalUnits:0,totalRequirements:0,overallComplianceRate:0,unitsFullyCompliant:0,unitsNeedingAttention:0,totalExpiringSoon:0,totalExpired:0};function o({service:o,config:s,marketArea:d,enabled:c=!0}){const u=i(s),[g,m]=t([]),[p,f]=t(l),[F,S]=t(!1),[R,h]=t(null),q=e((async()=>{if(!c)return;const t=u;try{S(!0),h(null);const{nameField:e,idField:a,marketAreaField:i,tagsField:l}=t.unitFieldMapping,{groupField:s,categoryField:c,titleField:u,descriptionField:g,levelField:p,validityField:F,statusField:R}=t.requirementFieldMapping,q=await o.readDataMessages(t.tags.unit),A=d?q.filter((t=>String(t.data?.[i]??"")===d)):q,v=(await o.readDataMessages(t.tags.requirement)).filter((t=>"Active"===String(t.data?.[R]??"Active"))),x=await o.readDataMessages(t.tags.answer),y=A.map((o=>{const s=String(o.data?.[a]??o.id),d=String(o.data?.[e]??s),c=o.data?.[i],u=o.data?.[l],g=u?String(u).split(",").map((t=>t.trim())).filter(Boolean):[],m=v.filter((t=>{const e=Array.isArray(t.data?.tags)?t.data?.tags:[];return!e||0===e.length||e.some((t=>t.every((t=>g.includes(t)))))})),p=x.filter((t=>t.data?.unitId===s||t.data?.UnitId===s)),f=new Map;for(const t of p){const e=String(t.data?.requirementId??t.data?.RequirementId??"");e&&!f.has(e)&&f.set(e,t)}let F=0,S=0,R=0;for(const e of m){const a=f.get(String(e.id)),i=String(a?.data?.answer??a?.data?.Answer??"");if(n(i,t)){F++;const t=a?.data?.validUntil??a?.data?.ValidUntil;if(t){const e=r(String(t));e?.isExpired?S++:e?.isUrgent&&R++}}}const h=m.length;return{unitId:s,unitName:d,marketArea:c,totalRequirements:h,compliantRequirements:F,nonCompliantRequirements:h-F,complianceRate:h>0?Math.round(F/h*100):0,expiringSoon:R,expired:S}}));m(y);const M=y.reduce(((t,e)=>t+e.totalRequirements),0),w=y.reduce(((t,e)=>t+e.compliantRequirements),0),U=M>0?Math.round(w/M*100):0;f({totalUnits:y.length,totalRequirements:M,overallComplianceRate:U,unitsFullyCompliant:y.filter((t=>100===t.complianceRate)).length,unitsNeedingAttention:y.filter((t=>t.complianceRate<100)).length,totalExpiringSoon:y.reduce(((t,e)=>t+e.expiringSoon),0),totalExpired:y.reduce(((t,e)=>t+e.expired),0)})}catch(t){console.error("[useAuditManagerData] Failed to fetch manager data:",t),h(t instanceof Error?t.message:"Failed to fetch manager data")}finally{S(!1)}}),[o,u,d,c]);return a((()=>{c&&q()}),[c,q]),{managerStats:p,unitStats:g,loading:F,error:R,reload:q,resolved:u}}export{o as useAuditManagerData};
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview Filter state hook for the manager/oversight dashboard.
3
+ * State is persisted to sessionStorage so filters survive page navigation.
4
+ * @module codicent-app-sdk/hooks/useAuditManagerFilters
5
+ * @public
6
+ */
7
+ import type { AuditManagerFilterState, AuditUnitStats } from "../types/audit";
8
+ export interface UseAuditManagerFiltersResult {
9
+ filters: AuditManagerFilterState;
10
+ filteredUnits: AuditUnitStats[];
11
+ availableMarketAreas: string[];
12
+ updateFilters: (patch: Partial<AuditManagerFilterState>) => void;
13
+ clearFilters: () => void;
14
+ }
15
+ export declare function useAuditManagerFilters(units: AuditUnitStats[]): UseAuditManagerFiltersResult;
16
+ //# sourceMappingURL=useAuditManagerFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuditManagerFilters.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuditManagerFilters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAI9E,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,uBAAuB,CAAC;IACjC,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAC;IACjE,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAmBD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,cAAc,EAAE,GACtB,4BAA4B,CA+D9B"}
@@ -0,0 +1 @@
1
+ import{useState as e,useEffect as t,useMemo as r}from"react";const a="codicent_audit_manager_filters",s={complianceRates:[],statuses:[],marketAreas:[],search:""};function n(){try{const e=sessionStorage.getItem(a);if(e)return{...s,...JSON.parse(e)}}catch{}return s}function i(i){const[c,o]=e(n);t((()=>{try{sessionStorage.setItem(a,JSON.stringify(c))}catch{}}),[c]);const l=r((()=>[...new Set(i.map((e=>e.marketArea)).filter((e=>Boolean(e))))].sort()),[i]),u=r((()=>{const e=c.search.toLowerCase();return i.filter((t=>{if(c.complianceRates.length>0){const e=t.complianceRate;if(!c.complianceRates.some((t=>"100"===t?100===e:"75-99"===t?e>=75&&e<100:"50-74"===t?e>=50&&e<75:"0-49"===t&&e<50)))return!1}if(c.statuses.length>0){const e=100===t.complianceRate;if(!(c.statuses.includes("fully-compliant")&&e||c.statuses.includes("needing-attention")&&!e))return!1}return!(c.marketAreas.length>0&&(!t.marketArea||!c.marketAreas.includes(t.marketArea)))&&!(e&&!t.unitName.toLowerCase().includes(e))}))}),[i,c]);return{filters:c,filteredUnits:u,availableMarketAreas:l,updateFilters:e=>o((t=>({...t,...e}))),clearFilters:()=>o(s)}}export{i as useAuditManagerFilters};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview Filter state hook for the requirements editor (admin).
3
+ * @module codicent-app-sdk/hooks/useAuditRequirementsFilters
4
+ * @public
5
+ */
6
+ import type { AuditRequirement, AuditRequirementsFilterState } from "../types/audit";
7
+ export interface UseAuditRequirementsFiltersResult {
8
+ filters: AuditRequirementsFilterState;
9
+ filteredRequirements: AuditRequirement[];
10
+ availableGroups: string[];
11
+ availableCategories: string[];
12
+ availableTags: string[];
13
+ updateFilters: (patch: Partial<AuditRequirementsFilterState>) => void;
14
+ clearFilters: () => void;
15
+ }
16
+ export declare function useAuditRequirementsFilters(requirements: AuditRequirement[]): UseAuditRequirementsFiltersResult;
17
+ //# sourceMappingURL=useAuditRequirementsFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuditRequirementsFilters.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuditRequirementsFilters.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAEhB,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,4BAA4B,CAAC;IACtC,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;IACzC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,4BAA4B,CAAC,KAAK,IAAI,CAAC;IACtE,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAUD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,gBAAgB,EAAE,GAC/B,iCAAiC,CA2DnC"}
@@ -0,0 +1 @@
1
+ import{useState as e,useMemo as t}from"react";const r={groups:[],categories:[],tags:[],statuses:[],search:""};function s(s){const[a,o]=e(r),n=t((()=>[...new Set(s.map((e=>e.group)).filter(Boolean))].sort()),[s]),i=t((()=>{const e=a.groups.length>0?s.filter((e=>a.groups.includes(e.group))):s;return[...new Set(e.map((e=>e.category)).filter(Boolean))].sort()}),[s,a.groups]),u=t((()=>{const e=s.flatMap((e=>e.tags.flat()));return[...new Set(e)].sort()}),[s]),l=t((()=>{const e=a.search.toLowerCase();return s.filter((t=>{if(a.groups.length>0&&!a.groups.includes(t.group))return!1;if(a.categories.length>0&&!a.categories.includes(t.category))return!1;if(a.tags.length>0){const e=t.tags.flat();if(!a.tags.some((t=>e.includes(t))))return!1}if(a.statuses.length>0&&!a.statuses.includes(t.status))return!1;if(e){if(!`${t.title} ${t.group} ${t.category} ${t.description}`.toLowerCase().includes(e))return!1}return!0}))}),[s,a]);return{filters:a,filteredRequirements:l,availableGroups:n,availableCategories:i,availableTags:u,updateFilters:e=>o((t=>({...t,...e}))),clearFilters:()=>o(r)}}export{s as useAuditRequirementsFilters};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileoverview Role-check hook for the generic audit feature.
3
+ * Wraps useUserRoles and maps raw role strings to typed AuditRole tiers.
4
+ * @module codicent-app-sdk/hooks/useAuditRoleCheck
5
+ * @public
6
+ */
7
+ import type { CodicentService } from "../services/codicent";
8
+ import type { AuditConfig, AuditRole, AuditRoleCapabilities } from "../types/audit";
9
+ export interface UseAuditRoleCheckParams {
10
+ service: CodicentService;
11
+ /** The current user's nickname / display name */
12
+ nickname: string | null | undefined;
13
+ config: AuditConfig;
14
+ }
15
+ export interface UseAuditRoleCheckResult {
16
+ role: AuditRole;
17
+ capabilities: AuditRoleCapabilities;
18
+ /** Assigned manager area (relevant for Manager role) */
19
+ managerArea?: string;
20
+ /** Assigned unit ID (relevant for Auditor role) */
21
+ unitId?: string;
22
+ loading: boolean;
23
+ error: string | null;
24
+ }
25
+ export declare function useAuditRoleCheck({ service, nickname, config, }: UseAuditRoleCheckParams): UseAuditRoleCheckResult;
26
+ //# sourceMappingURL=useAuditRoleCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuditRoleCheck.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuditRoleCheck.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGpF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,eAAe,CAAC;IACzB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,qBAAqB,CAAC;IACpC,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAeD,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,MAAM,GACP,EAAE,uBAAuB,GAAG,uBAAuB,CAyEnD"}
@@ -0,0 +1 @@
1
+ import{useState as e,useCallback as t,useEffect as r}from"react";import{resolveAuditConfig as i,getAuditRoleCapabilities as n}from"../utils/auditUtils.js";function o({service:o,nickname:a,config:s}){const l=i(s).tags.role,[c,u]=e("Auditor"),[d,m]=e(),[g,f]=e(),[A,k]=e(!0),[p,w]=e(null),C=t((async()=>{if(a)try{k(!0),w(null);const e=await o.getMessagesFast([l],void 0,200),t=a.toLowerCase(),r=e.find((e=>{const r=e.data;if(!r)return!1;const i=String(r.username??r.email??r.user??"").toLowerCase(),n=String(r.nicknames??"").toLowerCase().split(",").map((e=>e.trim()));return i===t||n.includes(t)}));if(r){const e=r.data,t=function(e){const t=e.trim().toLowerCase();return"admin"===t?"Admin":"manager"===t||"marketingunit"===t||"marketing_unit"===t?"Manager":"Auditor"}(String(e.role??""));u(t),m(e.marketArea),f(e.unitId??e.dealerId)}else u("Auditor"),m(void 0),f(void 0)}catch(e){console.error("[useAuditRoleCheck] Failed to fetch roles:",e),w(e instanceof Error?e.message:"Failed to fetch roles"),u("Auditor")}finally{k(!1)}else k(!1)}),[o,a,l]);return r((()=>{C()}),[C]),{role:c,capabilities:n(c),managerArea:d,unitId:g,loading:A,error:p}}export{o as useAuditRoleCheck};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @fileoverview Central state hook for the generic audit feature.
3
+ * Generic equivalent of penta_audit's usePentaState.
4
+ * @module codicent-app-sdk/hooks/useAuditState
5
+ * @public
6
+ */
7
+ import type { CodicentService } from "../services/codicent";
8
+ import type { AuditAnswer, AuditRequirement, ResolvedAuditConfig } from "../types/audit";
9
+ import type { AuditConfig } from "../types/audit";
10
+ export interface UseAuditStateParams {
11
+ service: CodicentService;
12
+ /** The ID/handle of the unit the current user is auditing */
13
+ unitId: string | null | undefined;
14
+ /** Full audit config (will be resolved internally) */
15
+ config: AuditConfig;
16
+ /** Set false to skip fetching (e.g., while not yet authenticated) */
17
+ enabled?: boolean;
18
+ }
19
+ export interface UseAuditStateResult {
20
+ unitId: string | null;
21
+ /** Raw unit record data */
22
+ unit: Record<string, unknown> | null;
23
+ requirements: AuditRequirement[];
24
+ answers: AuditAnswer[];
25
+ loading: boolean;
26
+ error: string | null;
27
+ resolved: ResolvedAuditConfig;
28
+ /** Reload all data from the backend */
29
+ loadAuditData: () => Promise<void>;
30
+ /** Save an updated answer for one requirement */
31
+ updateAnswer: (requirementId: string, answerValue: string, comment?: string, photos?: string, complianceDate?: string) => Promise<void>;
32
+ }
33
+ export declare function useAuditState({ service, unitId, config, enabled, }: UseAuditStateParams): UseAuditStateResult;
34
+ //# sourceMappingURL=useAuditState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuditState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuditState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAEhB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,sDAAsD;IACtD,MAAM,EAAE,WAAW,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,uCAAuC;IACvC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iDAAiD;IACjD,YAAY,EAAE,CACZ,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAMD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAc,GACf,EAAE,mBAAmB,GAAG,mBAAmB,CA+N3C"}
@@ -0,0 +1 @@
1
+ import{useState as t,useRef as e,useCallback as i,useEffect as a}from"react";import{resolveAuditConfig as n,parseValidityPeriod as r,isAnswerCompliant as d,calcValidUntil as o,formatValidityPeriod as l}from"../utils/auditUtils.js";function s({service:s,unitId:u,config:c,enabled:g=!0}){const p=n(c),[m,v]=t(null),[F,M]=t([]),[y,f]=t([]),[w,S]=t(!1),[h,q]=t(null),I=e(p);I.current=p;const A=i((async()=>{if(!u||!g)return;const t=I.current;try{S(!0),q(null);const e=await s.readDataMessages(t.tags.unit),i=t.unitFieldMapping.nameField,a=t.unitFieldMapping.idField,n=(t.unitFieldMapping.marketAreaField,t.unitFieldMapping.tagsField),c=e.find((t=>String(t.data?.[a]??"")===u||String(t.data?.[i]??"")===u));v(c?.data??null);const g=await s.readDataMessages(t.tags.requirement),p=t.requirementFieldMapping.groupField,m=t.requirementFieldMapping.categoryField,F=t.requirementFieldMapping.titleField,y=t.requirementFieldMapping.descriptionField,w=t.requirementFieldMapping.levelField,h=t.requirementFieldMapping.validityField,I=t.requirementFieldMapping.statusField,A=g.filter((t=>"Active"===String(t.data?.[I]??"Active"))).map((e=>{const i=e.data?.[h];return{id:String(e.id),originalMessageId:String(e.id),title:String(e.data?.[F]??""),group:String(e.data?.[p]??""),category:String(e.data?.[m]??""),description:String(e.data?.[y]??""),level:Number(e.data?.[w]??1),validityPeriodMonths:r(null!=i?String(i):void 0,t.defaultValidityPeriodMonths),status:"Active",tags:Array.isArray(e.data?.tags)?e.data?.tags:[]}}));M(A);const D=c?.data?.[n]?String(c.data[n]).split(",").map((t=>t.trim())).filter(Boolean):[],P=(await s.readDataMessages(t.tags.answer)).filter((t=>t.data?.unitId===u||t.data?.UnitId===u)),U=new Map;for(const t of P){const e=String(t.data?.requirementId??t.data?.RequirementId??"");e&&(U.has(e)||U.set(e,t))}const $=A.filter((t=>!t.tags||0===t.tags.length||t.tags.some((t=>t.every((t=>D.includes(t))))))).map((e=>{const i=U.get(e.id),a=i?.data??{},n=String(a.answer??a.Answer??""),r=a.complianceDate??a.ComplianceDate;let s=a.validUntil??a.ValidUntil;return!s&&n&&d(n,t)&&r&&(s=o(r,e.validityPeriodMonths)??void 0),{id:String(i?.id??`new_${e.id}`),requirementId:e.id,title:e.title,group:e.group,category:e.category,description:e.description,level:e.level,validFor:l(e.validityPeriodMonths),answer:n,comment:a.comment,photos:a.photos,complianceDate:r,validUntil:s,validityPeriodMonths:e.validityPeriodMonths??void 0}}));f($)}catch(t){console.error("[useAuditState] Failed to load audit data:",t),q(t instanceof Error?t.message:"Failed to load audit data")}finally{S(!1)}}),[s,u,g]);a((()=>{u&&g&&A()}),[u,g,A]);const D=i((async(t,e,i,a,n)=>{const r=I.current;if(!u)return;const l=F.find((e=>e.id===t));if(!l)return;const c=d(e,r),g=n??(c?(new Date).toISOString():void 0),p=g?o(g,l.validityPeriodMonths)??void 0:void 0,m={requirementId:t,unitId:u,answer:e,comment:i,photos:a,complianceDate:g,validUntil:p,validityPeriodMonths:l.validityPeriodMonths};f((n=>n.map((n=>n.requirementId===t?{...n,answer:e,comment:i,photos:a,complianceDate:g,validUntil:p}:n))));try{const e=`#${r.tags.answer}\n${JSON.stringify(m)}`;await s.sendMessage(e,t)}catch(t){throw console.error("[useAuditState] Failed to save answer:",t),await A(),t}}),[s,u,F,A]);return{unitId:u??null,unit:m,requirements:F,answers:y,loading:w,error:h,resolved:p,loadAuditData:A,updateAnswer:D}}export{s as useAuditState};
@@ -1 +1 @@
1
- import{useState as o,useMemo as e,useEffect as t,useCallback as s}from"react";import{CodicentService as n}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"react/jsx-runtime";import"@fluentui/react-components";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"@fluentui/react-icons";import{getConfigValue as i}from"../config/index.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";const r=(r,p)=>{const{isAuthenticated:a,getAccessTokenSilently:m,user:c,isLoading:l,logout:g,getAccessTokenWithPopup:u,loginWithRedirect:j,loginWithPopup:P}=r,[E,d]=o(null),[_,T]=o(void 0),[S,C]=o(null),[A,I]=o(""),h=e((()=>new n({API_BASE_URL:i("API_BASE_URL"),PUBSUB_URL:i("PUBSUB_URL"),APP_LOG_CODICENT:i("APP_LOG_CODICENT"),APP_LOG_TOKEN:i("APP_LOG_TOKEN"),APP_NAME:i("APP_NAME"),APP_PREFIX:i("APP_PREFIX"),APP_TEMPLATE:i("APP_TEMPLATE"),BUTTON_TAG:i("BUTTON_TAG"),STRIPE_PUBLIC_KEY:i("STRIPE_PUBLIC_KEY"),STRIPE_SOURCE:i("STRIPE_SOURCE"),STRIPE_TRIAL_PERIOD_DAYS:i("STRIPE_TRIAL_PERIOD_DAYS"),SUBSCRIPTION_NEEDED:i("SUBSCRIPTION_NEEDED"),USER_PREFIX:i("USER_PREFIX"),ANONYMOUS_TOKEN:i("ANONYMOUS_TOKEN")})),[]);t((()=>{!l&&a&&(async()=>{try{const o=await m({});console.debug("CODICENT: ACCESS TOKEN",o),d(o)}catch(o){console.debug("CODICENT: Failed to get access token",o);const e=o;if(e&&"object"==typeof e&&"error"in e&&"login_required"===e.error)console.warn("CODICENT: Session expired (login_required)"),d(null);else if(e&&"object"==typeof e&&"error"in e&&"consent_required"===e.error)try{const o=await u();if(!o)return void C("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),d(o)}catch(o){console.warn("CODICENT: Failed to get access token with popup",o),C("Samtycke krävs för inloggning. Tillåt popup-fönster och försök igen."),d(null)}else C("Failed to get access token: "+(e.message?.toString()||e.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",e)}})().then((()=>{}))}),[a,u,m,j,l]),t((()=>{if(c&&c.sub&&E&&void 0===_){let o=!0;return(p?.loginFn?p.loginFn(h,c.sub,E):h.loginUser(c.sub,E)).then((e=>{o&&(null===e?T(!1):""===e?C("Kontrollera internetanslutningen och försök igen."):(h.setToken(e),h.getNickname().then(I),T(!0)))})).catch((()=>{o&&(C("Ett fel uppstod. Försök igen senare."),T(!1))})),()=>{o=!1}}}),[c,E,_,h]);const O=s((()=>{h.logout(),d(null),C(null),T(void 0),I(""),g({logoutParams:{returnTo:i("AUTH_REDIRECT_URL")}})}),[h,g]),R=s((async o=>{const e=p?.registerFn?await p.registerFn(h,o,c.email,c.sub,E):await h.registerUser(o,c.email,c.sub,E);return e&&(h.setToken(e),T(!0)),e}),[h,c,E]);t((()=>{h.onUnauthorized=O}),[h]);const N=s((async o=>{try{await P({authorizationParams:{connection:"email",login_hint:o}})}catch(o){console.error("Passwordless login failed:",o),C(`Passwordless login failed: ${o}`)}}),[P]);return e((()=>({isAuthenticated:a,isRegistered:_,accessToken:E,authError:S,isLoading:l,user:c,nickname:A,logout:O,registerUser:R,codicentService:h,loginWithRedirect:j,loginPasswordless:N})),[a,_,E,S,l,c,A,O,R,h,j,N])};export{r as default};
1
+ import{useState as o,useMemo as t,useEffect as e,useCallback as s}from"react";import{CodicentService as i}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"react/jsx-runtime";import"@fluentui/react-components";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"@fluentui/react-icons";import{getConfigValue as n}from"../config/index.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../components/audit/AuditCircularProgress.js";import"../components/audit/AuditHorizontalProgress.js";import"../components/audit/AuditRoleIndicator.js";import"../components/audit/AuditUnitSwitcher.js";import"../components/audit/AuditAnswerCell.js";import"../components/audit/AuditSearchBar.js";import"../components/audit/AuditFilterChips.js";import"../components/audit/AuditFilterBar.js";import"../components/audit/AuditGroupsProgress.js";import"../components/audit/AuditSummaryDashboard.js";import"../components/audit/AuditRequirementDialog.js";import"../components/audit/AuditUnitExportDialog.js";import"../components/audit/AuditUnitImportDialog.js";import"../components/audit/AuditBulkExportDialog.js";import"../components/audit/AuditBulkUploadDialog.js";import"../components/audit/AuditSortPresets.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";const r=(r,p)=>{const{isAuthenticated:a,getAccessTokenSilently:m,user:c,isLoading:l,logout:u,getAccessTokenWithPopup:g,loginWithRedirect:d,loginWithPopup:j}=r,[P,E]=o(null),[A,_]=o(void 0),[T,S]=o(null),[C,I]=o(""),h=t((()=>new i({API_BASE_URL:n("API_BASE_URL"),PUBSUB_URL:n("PUBSUB_URL"),APP_LOG_CODICENT:n("APP_LOG_CODICENT"),APP_LOG_TOKEN:n("APP_LOG_TOKEN"),APP_NAME:n("APP_NAME"),APP_PREFIX:n("APP_PREFIX"),APP_TEMPLATE:n("APP_TEMPLATE"),BUTTON_TAG:n("BUTTON_TAG"),STRIPE_PUBLIC_KEY:n("STRIPE_PUBLIC_KEY"),STRIPE_SOURCE:n("STRIPE_SOURCE"),STRIPE_TRIAL_PERIOD_DAYS:n("STRIPE_TRIAL_PERIOD_DAYS"),SUBSCRIPTION_NEEDED:n("SUBSCRIPTION_NEEDED"),USER_PREFIX:n("USER_PREFIX"),ANONYMOUS_TOKEN:n("ANONYMOUS_TOKEN")})),[]);e((()=>{!l&&a&&(async()=>{try{const o=await m({});console.debug("CODICENT: ACCESS TOKEN",o),E(o)}catch(o){console.debug("CODICENT: Failed to get access token",o);const t=o;if(t&&"object"==typeof t&&"error"in t&&"login_required"===t.error)console.warn("CODICENT: Session expired (login_required)"),E(null);else if(t&&"object"==typeof t&&"error"in t&&"consent_required"===t.error)try{const o=await g();if(!o)return void S("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),E(o)}catch(o){console.warn("CODICENT: Failed to get access token with popup",o),S("Samtycke krävs för inloggning. Tillåt popup-fönster och försök igen."),E(null)}else S("Failed to get access token: "+(t.message?.toString()||t.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",t)}})().then((()=>{}))}),[a,g,m,d,l]),e((()=>{if(c&&c.sub&&P&&void 0===A){let o=!0;return(p?.loginFn?p.loginFn(h,c.sub,P):h.loginUser(c.sub,P)).then((t=>{o&&(null===t?_(!1):""===t?S("Kontrollera internetanslutningen och försök igen."):(h.setToken(t),h.getNickname().then(I),_(!0)))})).catch((()=>{o&&(S("Ett fel uppstod. Försök igen senare."),_(!1))})),()=>{o=!1}}}),[c,P,A,h]);const R=s((()=>{h.logout(),E(null),S(null),_(void 0),I(""),u({logoutParams:{returnTo:n("AUTH_REDIRECT_URL")}})}),[h,u]),O=s((async o=>{const t=p?.registerFn?await p.registerFn(h,o,c.email,c.sub,P):await h.registerUser(o,c.email,c.sub,P);return t&&(h.setToken(t),_(!0)),t}),[h,c,P]);e((()=>{h.onUnauthorized=R}),[h]);const U=s((async o=>{try{await j({authorizationParams:{connection:"email",login_hint:o}})}catch(o){console.error("Passwordless login failed:",o),S(`Passwordless login failed: ${o}`)}}),[j]);return t((()=>({isAuthenticated:a,isRegistered:A,accessToken:P,authError:T,isLoading:l,user:c,nickname:C,logout:R,registerUser:O,codicentService:h,loginWithRedirect:d,loginPasswordless:U})),[a,A,P,T,l,c,C,R,O,h,d,U])};export{r as default};
@@ -1 +1 @@
1
- import{useState as o,useRef as t,useCallback as e,useEffect as s}from"react";import p from"./useStateWithLocalStorage.js";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"react/jsx-runtime";import"@fluentui/react-components";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"@fluentui/react-icons";import{getConfigValue as r}from"../config/index.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";const i=i=>{const[m,n]=p("APP_WELCOME_STATE_TEXT_"+i.context.selectedApp,""),[a,c]=p("CODICENT_STATE_LAST_TIMESTAMP_"+i.context.selectedApp,0),{service:j,current:l}=i,[g,u]=o(!1),d=t(!1),T=e((async()=>{if(!d.current){d.current=!0;try{const o=await j.getMessagesFast(r("LOGBOOK_TAGS").split(",").filter((o=>"chat"!==o))),t=o.length>0?o[0].createdAt.getTime():a;if(t>a){c(t),u(!0);const o=await j.chat(r("WELCOME_STATUS_PROMPT"));n(o.content)}}finally{u(!1),d.current=!1}}}),[j,a,c,n]),S=e((()=>{j&&r("CHAT_INSTRUCTIONS")}),[j]);return s((()=>{l===i.allStates.hasAccess&&r("WELCOME_STATUS_PROMPT")?(T(),S()):r("WELCOME_STATUS_PROMPT")||n("")}),[l,i,T,S,n]),{welcomeStatusText:m,updating:g}};export{i as default};
1
+ import{useState as t,useRef as o,useCallback as s,useEffect as e}from"react";import i from"./useStateWithLocalStorage.js";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"react/jsx-runtime";import"@fluentui/react-components";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"@fluentui/react-icons";import{getConfigValue as p}from"../config/index.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/Page.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../components/audit/AuditCircularProgress.js";import"../components/audit/AuditHorizontalProgress.js";import"../components/audit/AuditRoleIndicator.js";import"../components/audit/AuditUnitSwitcher.js";import"../components/audit/AuditAnswerCell.js";import"../components/audit/AuditSearchBar.js";import"../components/audit/AuditFilterChips.js";import"../components/audit/AuditFilterBar.js";import"../components/audit/AuditGroupsProgress.js";import"../components/audit/AuditSummaryDashboard.js";import"../components/audit/AuditRequirementDialog.js";import"../components/audit/AuditUnitExportDialog.js";import"../components/audit/AuditUnitImportDialog.js";import"../components/audit/AuditBulkExportDialog.js";import"../components/audit/AuditBulkUploadDialog.js";import"../components/audit/AuditSortPresets.js";import"../pages/AppFrame.js";import"../pages/Canvas.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Menu.js";import"../pages/Log.js";import"../pages/Login.js";import"../pages/Home.js";import"../pages/ListPage.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"react-router-dom";import"../pages/Purchase.js";import"../pages/QrScan.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";const r=r=>{const[n,m]=i("APP_WELCOME_STATE_TEXT_"+r.context.selectedApp,""),[a,c]=i("CODICENT_STATE_LAST_TIMESTAMP_"+r.context.selectedApp,0),{service:j,current:u}=r,[l,d]=t(!1),g=o(!1),A=s((async()=>{if(!g.current){g.current=!0;try{const t=await j.getMessagesFast(p("LOGBOOK_TAGS").split(",").filter((t=>"chat"!==t))),o=t.length>0?t[0].createdAt.getTime():a;if(o>a){c(o),d(!0);const t=await j.chat(p("WELCOME_STATUS_PROMPT"));m(t.content)}}finally{d(!1),g.current=!1}}}),[j,a,c,m]),S=s((()=>{j&&p("CHAT_INSTRUCTIONS")}),[j]);return e((()=>{u===r.allStates.hasAccess&&p("WELCOME_STATUS_PROMPT")?(A(),S()):p("WELCOME_STATUS_PROMPT")||m("")}),[u,r,A,S,m]),{welcomeStatusText:n,updating:l}};export{r as default};
@@ -7,7 +7,7 @@ export interface UserRole {
7
7
  role: string;
8
8
  claims?: string;
9
9
  }
10
- export declare const useUserRoles: (service: CodicentService, currentNickname?: string) => {
10
+ export declare const useUserRoles: (service: CodicentService, currentNickname?: string, currentCodicent?: string) => {
11
11
  userRoles: UserRole[];
12
12
  loading: boolean;
13
13
  error: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"useUserRoles.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUserRoles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,YAAa,eAAe,oBAAoB,MAAM;;;;oCAgChE,MAAM,KAAG,MAAM;gCAgBO,MAAM,KAAG,MAAM;8BAUjB,MAAM,QAAQ,QAAQ,KAAG,OAAO;+BAe/B,MAAM,KAAG,QAAQ,GAAG,SAAS;mCAKzB,MAAM,KAAG,MAAM,EAAE;8BASxB,QAAQ,GAAG,SAAS;8BAKR,MAAM;CAiBlD,CAAC"}
1
+ {"version":3,"file":"useUserRoles.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUserRoles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,YAAa,eAAe,oBAAoB,MAAM,oBAAoB,MAAM;;;;oCAiC1F,MAAM,KAAG,MAAM;gCAgBO,MAAM,KAAG,MAAM;8BAUjB,MAAM,QAAQ,QAAQ,KAAG,OAAO;+BAe/B,MAAM,KAAG,QAAQ,GAAG,SAAS;mCAKzB,MAAM,KAAG,MAAM,EAAE;8BASxB,QAAQ,GAAG,SAAS;8BAKR,MAAM;CAiBlD,CAAC"}
@@ -1 +1 @@
1
- import{useState as e,useEffect as r,useCallback as t}from"react";import n from"../utils/MessageContent.js";const s=(s,o)=>{const[a,i]=e([]),[m,l]=e(!0),[c,u]=e(null);r((()=>{if(!o)return;(async()=>{try{l(!0),u(null);const e=(await s.getMessagesFast(["user_role"],void 0,100)).map((e=>{const r=new n(e.content).data;return r&&"object"==typeof r?r:null})).filter((e=>null!==e));i(e)}catch(e){console.error("Failed to fetch user roles:",e),u(e instanceof Error?e.message:"Failed to fetch user roles")}finally{l(!1)}})()}),[s,o]);const f=t((e=>{if(!e)return"";const r=e.toLowerCase(),t=a.find((e=>{if(!e.nicknames)return!1;return e.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===r))}));return t?.name||e}),[a]),p=(e,r)=>{if(!e||!r)return!1;const t=e.toLowerCase();if(r.nicknames){if(r.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===t)))return!0}return r.name?.toLowerCase()===t||r.email?.toLowerCase()===t},C=e=>{if(e)return a.find((r=>p(e,r)))},g=t((()=>o?f(o):""),[o,f]);return{userRoles:a,loading:m,error:c,getNameFromNickname:f,getNicknameFromName:e=>{if(!e)return"";const r=a.find((r=>r.name?.toLowerCase()===e.toLowerCase()));if(r?.nicknames){return r.nicknames.split(",").map((e=>e.trim()))[0]||e}return e},isUserMatch:p,findUserRole:C,getClaimsForUser:e=>{const r=C(e);return r?.claims?r.claims.split(",").map((e=>e.trim())).filter(Boolean):[]},getCurrentUserRole:()=>{if(o)return C(o)},getCurrentUserName:g}};export{s as useUserRoles};
1
+ import{useState as e,useEffect as r,useCallback as t}from"react";import n from"../utils/MessageContent.js";const s=(s,o,a)=>{const[i,m]=e([]),[l,c]=e(!0),[u,f]=e(null);r((()=>{if(!o)return;if(!a)return;(async()=>{try{c(!0),f(null);const e=(await s.getMessagesFast(["user_role"],void 0,100)).map((e=>{const r=new n(e.content).data;return r&&"object"==typeof r?r:null})).filter((e=>null!==e));m(e)}catch(e){console.error("Failed to fetch user roles:",e),f(e instanceof Error?e.message:"Failed to fetch user roles")}finally{c(!1)}})()}),[s,o,a]);const p=t((e=>{if(!e)return"";const r=e.toLowerCase(),t=i.find((e=>{if(!e.nicknames)return!1;return e.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===r))}));return t?.name||e}),[i]),C=(e,r)=>{if(!e||!r)return!1;const t=e.toLowerCase();if(r.nicknames){if(r.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===t)))return!0}return r.name?.toLowerCase()===t||r.email?.toLowerCase()===t},g=e=>{if(e)return i.find((r=>C(e,r)))},w=t((()=>o?p(o):""),[o,p]);return{userRoles:i,loading:l,error:u,getNameFromNickname:p,getNicknameFromName:e=>{if(!e)return"";const r=i.find((r=>r.name?.toLowerCase()===e.toLowerCase()));if(r?.nicknames){return r.nicknames.split(",").map((e=>e.trim()))[0]||e}return e},isUserMatch:C,findUserRole:g,getClaimsForUser:e=>{const r=g(e);return r?.claims?r.claims.split(",").map((e=>e.trim())).filter(Boolean):[]},getCurrentUserRole:()=>{if(o)return g(o)},getCurrentUserName:w}};export{s as useUserRoles};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{CodicentService,setBaseUrl,setSignalRHost}from"./services/codicent.js";export{dataCache}from"./services/dataCache.js";export{default as Markdown}from"./components/Markdown.js";export{Textarea}from"./components/Textarea.js";export{Button}from"./components/Button.js";export{CompoundButton}from"./components/CompoundButton.js";export{Title}from"./components/Title.js";export{Text}from"./components/Text.js";export{Spinner}from"./components/Spinner.js";export{Label}from"./components/Label.js";export{Input}from"./components/Input.js";export{default as TextHeader}from"./components/TextHeader.js";export{default as TypingIndicator}from"./components/TypingIndicator.js";export{default as Prompt}from"./components/Prompt.js";export{default as ChatInput}from"./components/ChatInput.js";export{CombinedPlaceholderDialog}from"./components/CombinedPlaceholderDialog.js";export{default as ChatMessage}from"./components/ChatMessage.js";export{Header}from"./components/Header.js";export{default as VoiceIcon}from"./components/VoiceIcon.js";export{default as AudioIcon}from"./components/AudioIcon.js";export{FileThumbnail}from"./components/FileThumbnail.js";export{default as MessageInput}from"./components/MessageInput.js";export{default as UploadFile}from"./components/UploadFile.js";export{default as SnapFooter}from"./components/SnapFooter.js";export{default as Profile}from"./components/Profile.js";export{default as MessageItem}from"./components/MessageItem.js";export{default as Content}from"./components/Content.js";export{default as AiInput}from"./components/AiInput.js";export{default as SearchBox}from"./components/SearchBox.js";export{default as DataMessagePicker}from"./components/DataMessagePicker.js";export{default as HtmlView}from"./components/HtmlView.js";export{Footer}from"./components/Footer.js";export{Page}from"./components/Page.js";export{UrlProcessor}from"./components/UrlProcessor.js";export{DatePicker}from"./components/DatePicker.js";export{ColorPicker}from"./components/ColorPicker.js";export{TimePicker}from"./components/TimePicker.js";export{QrCodeDialog}from"./components/QrCodeDialog.js";export{default as QrScanner}from"./components/QrScanner.js";export{default as GenericJsonRenderer}from"./components/GenericJsonRenderer.js";export{default as ErrorBoundary}from"./components/ErrorBoundary.js";export{default as OfflineMessage}from"./components/OfflineMessage.js";export{LanguageSelector}from"./components/LanguageSelector.js";export{default as ListView}from"./components/ListView.js";export{RecordModal}from"./components/RecordModal.js";export{default as BulkUploadDialog}from"./components/BulkUploadDialog.js";export{CookieBanner}from"./components/CookieBanner.js";export{default as useStateWithLocalStorage}from"./hooks/useStateWithLocalStorage.js";export{default as useAuthState}from"./hooks/useAuthState.js";export{useChat}from"./hooks/useChat.js";export{default as useCodicentState}from"./hooks/useCodicentState.js";export{useAudioRecorder}from"./hooks/useAudioRecorder.js";export{default as useTools}from"./hooks/useTools.js";export{default as useRealtimeVoiceAI}from"./hooks/useRealtimeVoiceAI.js";export{default as useLocalization}from"./hooks/useLocalization.js";export{useTemplateVariables}from"./hooks/useTemplateVariables.js";export{useCodicentApp}from"./hooks/useCodicentApp.js";export{default as useAppStyles}from"./hooks/useAppStyles.js";export{default as useToaster}from"./hooks/useToaster.js";export{default as useDebugLogs}from"./hooks/useDebugLogs.js";export{useObserveDataSchemas}from"./hooks/useObserveDataSchemas.js";export{useOnlineStatus}from"./hooks/useOnlineStatus.js";export{useUserRoles}from"./hooks/useUserRoles.js";export{default as MessageContent}from"./utils/MessageContent.js";export{default as generateBrandVariants}from"./utils/theme.js";export{default as log}from"./utils/logging.js";export{default as withWakeLock}from"./utils/withWakeLock.js";export{AppStateMachine,createAppStateMachine}from"./utils/appState.js";import{d as e}from"./_virtual/index.js";import"./lib/wavtools/lib/wav_packer.js";import"./lib/wavtools/lib/analysis/audio_analysis.js";export{WavStreamPlayer}from"./lib/wavtools/lib/wav_stream_player.js";export{WavRecorder}from"./lib/wavtools/lib/wav_recorder.js";export{getGpsLocation,isMobileDevice}from"./utils/device.js";export{exportToExcel}from"./utils/excelExport.js";export{getTimeString}from"./utils/helpers.js";export{CacheManager,stateMachineCacheManager}from"./utils/cacheManager.js";export{AppConfig,getConfigValue,initCodicentApp}from"./config/index.js";export{default as AppFrame}from"./pages/AppFrame.js";export{default as Canvas}from"./pages/Canvas.js";export{default as Chat}from"./pages/Chat.js";export{Compose}from"./pages/Compose.js";export{default as Snap}from"./pages/Snap.js";export{default as Search}from"./pages/Search.js";export{Menu}from"./pages/Menu.js";export{Log}from"./pages/Log.js";export{default as Login}from"./pages/Login.js";export{Logout}from"./pages/Logout.js";export{Home}from"./pages/Home.js";export{ListPage}from"./pages/ListPage.js";export{CrmPage}from"./pages/CrmPage.js";export{CrmPagePersistent}from"./pages/CrmPagePersistent.js";export{default as ImageView}from"./pages/ImageView.js";export{default as FormInvite}from"./pages/FormInvite.js";export{default as FormAccept}from"./pages/FormAccept.js";export{Sales}from"./pages/Sales.js";export{default as HtmlViewer}from"./pages/HtmlViewer.js";export{Purchase}from"./pages/Purchase.js";export{default as Help}from"./pages/Help.js";export{default as Debug}from"./pages/Debug.js";export{default as SchemaEditor}from"./pages/SchemaEditor.js";export{default as QrScan}from"./pages/QrScan.js";export{default as FormPage}from"./pages/FormPage.js";export{createCodicentApp}from"./bootstrap.js";var o=e.StateMachine;export{o as StateMachine};
1
+ export{CodicentService,setBaseUrl,setSignalRHost}from"./services/codicent.js";export{dataCache}from"./services/dataCache.js";export{default as Markdown}from"./components/Markdown.js";export{Textarea}from"./components/Textarea.js";export{Button}from"./components/Button.js";export{CompoundButton}from"./components/CompoundButton.js";export{Title}from"./components/Title.js";export{Text}from"./components/Text.js";export{Spinner}from"./components/Spinner.js";export{Label}from"./components/Label.js";export{Input}from"./components/Input.js";export{default as TextHeader}from"./components/TextHeader.js";export{default as TypingIndicator}from"./components/TypingIndicator.js";export{default as Prompt}from"./components/Prompt.js";export{default as ChatInput}from"./components/ChatInput.js";export{CombinedPlaceholderDialog}from"./components/CombinedPlaceholderDialog.js";export{default as ChatMessage}from"./components/ChatMessage.js";export{Header}from"./components/Header.js";export{default as VoiceIcon}from"./components/VoiceIcon.js";export{default as AudioIcon}from"./components/AudioIcon.js";export{FileThumbnail}from"./components/FileThumbnail.js";export{default as MessageInput}from"./components/MessageInput.js";export{default as UploadFile}from"./components/UploadFile.js";export{default as SnapFooter}from"./components/SnapFooter.js";export{default as Profile}from"./components/Profile.js";export{default as MessageItem}from"./components/MessageItem.js";export{default as Content}from"./components/Content.js";export{default as AiInput}from"./components/AiInput.js";export{default as SearchBox}from"./components/SearchBox.js";export{default as DataMessagePicker}from"./components/DataMessagePicker.js";export{default as HtmlView}from"./components/HtmlView.js";export{Footer}from"./components/Footer.js";export{Page}from"./components/Page.js";export{UrlProcessor}from"./components/UrlProcessor.js";export{DatePicker}from"./components/DatePicker.js";export{ColorPicker}from"./components/ColorPicker.js";export{TimePicker}from"./components/TimePicker.js";export{QrCodeDialog}from"./components/QrCodeDialog.js";export{default as QrScanner}from"./components/QrScanner.js";export{default as GenericJsonRenderer}from"./components/GenericJsonRenderer.js";export{default as ErrorBoundary}from"./components/ErrorBoundary.js";export{default as OfflineMessage}from"./components/OfflineMessage.js";export{LanguageSelector}from"./components/LanguageSelector.js";export{default as ListView}from"./components/ListView.js";export{RecordModal}from"./components/RecordModal.js";export{default as BulkUploadDialog}from"./components/BulkUploadDialog.js";export{CookieBanner}from"./components/CookieBanner.js";export{AuditCircularProgress}from"./components/audit/AuditCircularProgress.js";export{AuditHorizontalProgress}from"./components/audit/AuditHorizontalProgress.js";export{AuditRoleIndicator}from"./components/audit/AuditRoleIndicator.js";export{AuditUnitSwitcher}from"./components/audit/AuditUnitSwitcher.js";export{AuditAnswerCell}from"./components/audit/AuditAnswerCell.js";export{AuditSearchBar}from"./components/audit/AuditSearchBar.js";export{AuditFilterChips}from"./components/audit/AuditFilterChips.js";export{AuditFilterBar}from"./components/audit/AuditFilterBar.js";export{AuditGroupsProgress}from"./components/audit/AuditGroupsProgress.js";export{AuditSummaryDashboard}from"./components/audit/AuditSummaryDashboard.js";export{AuditRequirementDialog}from"./components/audit/AuditRequirementDialog.js";export{AuditUnitExportDialog}from"./components/audit/AuditUnitExportDialog.js";export{AuditUnitImportDialog}from"./components/audit/AuditUnitImportDialog.js";export{AuditBulkExportDialog}from"./components/audit/AuditBulkExportDialog.js";export{AuditBulkUploadDialog}from"./components/audit/AuditBulkUploadDialog.js";export{AuditSortPresets}from"./components/audit/AuditSortPresets.js";export{default as useStateWithLocalStorage}from"./hooks/useStateWithLocalStorage.js";export{default as useAuthState}from"./hooks/useAuthState.js";export{useChat}from"./hooks/useChat.js";export{default as useCodicentState}from"./hooks/useCodicentState.js";export{useAudioRecorder}from"./hooks/useAudioRecorder.js";export{default as useTools}from"./hooks/useTools.js";export{default as useRealtimeVoiceAI}from"./hooks/useRealtimeVoiceAI.js";export{default as useLocalization}from"./hooks/useLocalization.js";export{useTemplateVariables}from"./hooks/useTemplateVariables.js";export{useCodicentApp}from"./hooks/useCodicentApp.js";export{default as useAppStyles}from"./hooks/useAppStyles.js";export{default as useToaster}from"./hooks/useToaster.js";export{default as useDebugLogs}from"./hooks/useDebugLogs.js";export{useObserveDataSchemas}from"./hooks/useObserveDataSchemas.js";export{useOnlineStatus}from"./hooks/useOnlineStatus.js";export{useUserRoles}from"./hooks/useUserRoles.js";export{useAuditState}from"./hooks/useAuditState.js";export{useAuditRoleCheck}from"./hooks/useAuditRoleCheck.js";export{useAuditFilters}from"./hooks/useAuditFilters.js";export{useAuditRequirementsFilters}from"./hooks/useAuditRequirementsFilters.js";export{useAuditManagerFilters}from"./hooks/useAuditManagerFilters.js";export{useAuditManagerData}from"./hooks/useAuditManagerData.js";export{default as MessageContent}from"./utils/MessageContent.js";export{default as generateBrandVariants}from"./utils/theme.js";export{default as log}from"./utils/logging.js";export{default as withWakeLock}from"./utils/withWakeLock.js";export{AppStateMachine,createAppStateMachine}from"./utils/appState.js";import{d as e}from"./_virtual/index.js";import"./lib/wavtools/lib/wav_packer.js";import"./lib/wavtools/lib/analysis/audio_analysis.js";export{WavStreamPlayer}from"./lib/wavtools/lib/wav_stream_player.js";export{WavRecorder}from"./lib/wavtools/lib/wav_recorder.js";export{getGpsLocation,isMobileDevice}from"./utils/device.js";export{exportToExcel}from"./utils/excelExport.js";export{getTimeString}from"./utils/helpers.js";export{CacheManager,stateMachineCacheManager}from"./utils/cacheManager.js";export{AUDIT_CHECKBOX_OPTIONS,DEFAULT_AUDIT_VALIDITY_PERIOD_MONTHS,calcValidUntil,calculateAuditTimeRemaining,formatValidityPeriod,getAuditComplianceRate,getAuditRoleCapabilities,getAuditUrgencyColor,getEffectiveAnswerOptions,isAnswerCompliant,parseValidityPeriod,resolveAuditConfig}from"./utils/auditUtils.js";export{buildAuditPackage,exportAuditPackageAsHtml,exportAuditPackageAsJson,importAuditPackageFromHtml,importAuditPackageFromJson}from"./utils/auditExport.js";export{AppConfig,getConfigValue,initCodicentApp}from"./config/index.js";export{default as AppFrame}from"./pages/AppFrame.js";export{default as Canvas}from"./pages/Canvas.js";export{default as Chat}from"./pages/Chat.js";export{Compose}from"./pages/Compose.js";export{default as Snap}from"./pages/Snap.js";export{default as Search}from"./pages/Search.js";export{Menu}from"./pages/Menu.js";export{Log}from"./pages/Log.js";export{default as Login}from"./pages/Login.js";export{Logout}from"./pages/Logout.js";export{Home}from"./pages/Home.js";export{ListPage}from"./pages/ListPage.js";export{CrmPage}from"./pages/CrmPage.js";export{CrmPagePersistent}from"./pages/CrmPagePersistent.js";export{default as ImageView}from"./pages/ImageView.js";export{default as FormInvite}from"./pages/FormInvite.js";export{default as FormAccept}from"./pages/FormAccept.js";export{Sales}from"./pages/Sales.js";export{default as HtmlViewer}from"./pages/HtmlViewer.js";export{Purchase}from"./pages/Purchase.js";export{default as Help}from"./pages/Help.js";export{default as Debug}from"./pages/Debug.js";export{default as SchemaEditor}from"./pages/SchemaEditor.js";export{default as QrScan}from"./pages/QrScan.js";export{default as FormPage}from"./pages/FormPage.js";export{createCodicentApp}from"./bootstrap.js";var o=e.StateMachine;export{o as StateMachine};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{makeStyles as t}from"@fluentui/react-components";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"react";import"@fluentui/react-icons";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./Canvas.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Menu.js";import"./Log.js";import"./Login.js";import"./Home.js";import"./ListPage.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"react-router-dom";import"./Purchase.js";import"../components/Content.js";import{Page as e}from"../components/Page.js";import"./QrScan.js";import"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";const s=t({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}}),r=({src:t,showFooter:r,title:i})=>{const m=s();return r?o(e,{hideFooter:!r,hideHeader:!0,children:o("iframe",{title:i,src:t,className:`${m.iframe} ${r?m.fixFrameHeight:""}`})}):o("iframe",{title:i,src:t,className:m.iframe})};export{r as default};
1
+ import{jsx as o}from"react/jsx-runtime";import{makeStyles as t}from"@fluentui/react-components";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"react";import"@fluentui/react-icons";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./Canvas.js";import"./Chat.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Menu.js";import"./Log.js";import"./Login.js";import"./Home.js";import"./ListPage.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"react-router-dom";import"./Purchase.js";import"../components/Content.js";import{Page as i}from"../components/Page.js";import"./QrScan.js";import"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../components/audit/AuditCircularProgress.js";import"../components/audit/AuditHorizontalProgress.js";import"../components/audit/AuditRoleIndicator.js";import"../components/audit/AuditUnitSwitcher.js";import"../components/audit/AuditAnswerCell.js";import"../components/audit/AuditSearchBar.js";import"../components/audit/AuditFilterChips.js";import"../components/audit/AuditFilterBar.js";import"../components/audit/AuditGroupsProgress.js";import"../components/audit/AuditSummaryDashboard.js";import"../components/audit/AuditRequirementDialog.js";import"../components/audit/AuditUnitExportDialog.js";import"../components/audit/AuditUnitImportDialog.js";import"../components/audit/AuditBulkExportDialog.js";import"../components/audit/AuditBulkUploadDialog.js";import"../components/audit/AuditSortPresets.js";const s=t({iframe:{width:"100%",height:"100%",border:"none"},scrollable:{overflow:"auto"},nonScrollable:{overflow:"hidden"},fixFrameHeight:{height:"calc(100% - 5px)"}}),e=({src:t,showFooter:e,title:r})=>{const m=s();return e?o(i,{hideFooter:!e,hideHeader:!0,children:o("iframe",{title:r,src:t,className:`${m.iframe} ${e?m.fixFrameHeight:""}`})}):o("iframe",{title:r,src:t,className:m.iframe})};export{e as default};
@@ -1 +1 @@
1
- import{jsxs as e,jsx as o}from"react/jsx-runtime";import{useRef as t,useState as n,useEffect as r}from"react";import{makeStyles as s}from"@fluentui/react-components";import{useNavigate as i,useSearchParams as a}from"react-router-dom";import{CalendarWeekStart24Regular as m}from"@fluentui/react-icons";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import c from"../components/TextHeader.js";import p from"../components/TypingIndicator.js";import l from"../components/Prompt.js";import d from"../components/ChatInput.js";import{CombinedPlaceholderDialog as g}from"../components/CombinedPlaceholderDialog.js";import h from"../components/ChatMessage.js";import"../components/Header.js";import u from"../hooks/useStateWithLocalStorage.js";import{CodicentService as j}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as f}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./AppFrame.js";import"./Canvas.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Menu.js";import"./Log.js";import"./Login.js";import"./Home.js";import"./ListPage.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import{Page as b}from"../components/Page.js";import"./QrScan.js";import C from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{useChat as x}from"../hooks/useChat.js";import{useTemplateVariables as w}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";const S=s({chatContainer:{width:"100%",flex:1,maxWidth:"1600px",height:"100%",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden","@media (max-width: 768px)":{maxWidth:"100%",borderRadius:"0"},"@media (max-width: 480px)":{},backgroundPosition:"calc(50%) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",touchAction:"pan-y"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"}}),v=({state:s,hideFooter:v,codicent:y,title:P,welcomeMessage:k})=>{const I=S(),{t:_,tAsync:F,getLanguageInfo:T}=C(),A=i(),M=t(null),[L,H]=a(),[V]=n((()=>{const e=L.get("codicent");return e?(sessionStorage.setItem("chat_codicent",e),e):y?(sessionStorage.removeItem("chat_codicent"),null):sessionStorage.getItem("chat_codicent")})),B=V||y,{messages:R,isBotTyping:N,handleSend:U,newChat:D,openChat:O}=x(s.stateMachine,B||void 0),[W,E]=n(null),[z,Q]=n(!1),[G,Y]=n(!1),{service:$,currentStateName:K}=s,[q,J]=n([]),[X,Z]=n([]),[ee,oe]=n(!1),[te,ne]=n(),[re,se]=u(s.context.selectedApp+"_prompts",[]),[ie,ae]=n(!1),{extractTemplateVariables:me,replaceTemplateVariables:ce,extractFilePlaceholders:pe,replaceFilePlaceholders:le,handleSelectFiles:de}=w($.uploadFile),ge=t(!1),he=t(null);r((()=>{const e=window.history.length>1,o=Boolean(document.referrer&&document.referrer!==window.location.href);Y(e||o)}),[]);r((()=>{f("SHOW_CHAT_PROMPTS")&&0===R.length&&s.service.getAppPrompts(B||void 0).then(se).catch((e=>{console.error("Failed to get prompts",e)}))}),[s.service,se,R.length,B]),r((()=>{setTimeout((()=>{M.current?.scrollIntoView({behavior:"smooth"})}),10)}),[R]),r((()=>{if(ge.current)return;ge.current=!0;const e=L.get("text"),o=L.get("id"),t=L.get("fid");if(V){console.log("Using temporary codicent from URL param:",V);const e=new URLSearchParams(L);e.delete("codicent"),H(e,{replace:!0})}if(e){(async()=>{const o=pe(e),t=me(e);D(),o.length>0||t.length>0?(Z(o),J(t),oe(!0),E(_(e))):E(_(e))})()}else o?O(o):t&&ne(t)}),[]),r((()=>{te&&"anonymous"===K&&he.current!==te&&(he.current=te,$.getFormById(te).then((async e=>{D();const o=T().language,t=e.prompt.replace("{{fid}}",te).replace("{{fname}}",e.name).replace("{{language}}",o);ae(!0);const n=await F(t);ae(!1),E(n),Y(!1)})))}),[te,D,$,E,K,F,T,ae]),r((()=>{if(W&&!ee){let e=W;X.length>0&&(e=le(e,X)),q.length>0&&(e=ce(e,q)),U(e),H({},{replace:!0}),E(null),J([]),Z([])}}),[W,ee,U,H,le,ce,X,q]);const ue=e=>{const o=L.get("append");o&&(e+="\n---\n"+o),U(e)};return e(b,{hideHeader:!0,hideFooter:!!te||v,children:[e("div",{id:"chat-container",className:I.chatContainer,style:{backgroundImage:`url(${f("CHAT_BACKGROUND_IMAGE_URL")})`},children:[G&&o("button",{onClick:()=>{G&&A(-1)},"aria-label":_("Tillbaka"),style:{position:"absolute",top:12,left:12,zIndex:100,background:"var(--colorNeutralBackground1)",border:"none",cursor:"pointer",padding:8,borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",display:"flex",alignItems:"center",justifyContent:"center"},children:o(m,{style:{transform:"rotate(180deg)"}})}),o("div",{style:{marginLeft:G?40:0},children:o(c,{title:P||_(f("APP_CHAT_TITLE")||"Chatt"),onNewChat:te?void 0:()=>Q(!0)})}),e("div",{className:I.chatMessages,children:[k&&o(h,{sender:"bot",content:k}),f("SHOW_CHAT_PROMPTS")&&re.length>0&&0===R.length&&o(h,{sender:"bot",content:_(f("CHAT_WELCOME")||_("Välkommen!")),children:re.map(((t,n)=>e("div",{children:["> ",o("a",{href:"./#/chat",onClick:()=>{ue(t.title+"\n---\n"+t.prompt)},children:_(t.title)}),o("br",{})]},`prompt-${n}`)))}),R.map(((t,n)=>e("div",{children:[(N&&n===R.length-1||!N&&n===R.length-2)&&o("div",{ref:M}),o(h,{sender:t.sender,content:t.content,isNew:t.isNew,showSuggestions:n===R.length-1,onSuggestionClicked:U},t.id)]},t.id))),ie&&o(h,{sender:"user",content:_("Översätter...")}),N&&o(p,{})]}),o(d,{codicent:B||s.context.selectedApp,disableSend:N,onSend:ue,onSelectFiles:de,getImageUrl:j.getImageUrl,getFileInfo:e=>$.getFileInfo(e)})]}),o(l,{open:z,title:_("Vill du rensa chatten?"),content:_("En ny startas, men chatten kommer först sparas."),onYes:()=>{Q(!1),D()},onNo:()=>Q(!1)}),o(g,{open:ee,templateVariables:q,filePlaceholders:X,onTemplateVariablesChange:J,onFilePlaceholdersChange:Z,onConfirm:()=>oe(!1),onCancel:()=>{oe(!1),E(null),J([]),Z([])},uploadFile:$.uploadFile})]})};export{v as default};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useRef as o,useState as n,useEffect as r}from"react";import{makeStyles as i}from"@fluentui/react-components";import{useNavigate as s,useSearchParams as a}from"react-router-dom";import{CalendarWeekStart24Regular as m}from"@fluentui/react-icons";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import p from"../components/TextHeader.js";import c from"../components/TypingIndicator.js";import l from"../components/Prompt.js";import d from"../components/ChatInput.js";import{CombinedPlaceholderDialog as u}from"../components/CombinedPlaceholderDialog.js";import g from"../components/ChatMessage.js";import"../components/Header.js";import h from"../hooks/useStateWithLocalStorage.js";import{CodicentService as j}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as f}from"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"exceljs";import"./AppFrame.js";import"./Canvas.js";import"./Compose.js";import"./Snap.js";import"./Search.js";import"./Menu.js";import"./Log.js";import"./Login.js";import"./Home.js";import"./ListPage.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import{Page as C}from"../components/Page.js";import"./QrScan.js";import b from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import{useChat as A}from"../hooks/useChat.js";import{useTemplateVariables as x}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../components/audit/AuditCircularProgress.js";import"../components/audit/AuditHorizontalProgress.js";import"../components/audit/AuditRoleIndicator.js";import"../components/audit/AuditUnitSwitcher.js";import"../components/audit/AuditAnswerCell.js";import"../components/audit/AuditSearchBar.js";import"../components/audit/AuditFilterChips.js";import"../components/audit/AuditFilterBar.js";import"../components/audit/AuditGroupsProgress.js";import"../components/audit/AuditSummaryDashboard.js";import"../components/audit/AuditRequirementDialog.js";import"../components/audit/AuditUnitExportDialog.js";import"../components/audit/AuditUnitImportDialog.js";import"../components/audit/AuditBulkExportDialog.js";import"../components/audit/AuditBulkUploadDialog.js";import"../components/audit/AuditSortPresets.js";const S=i({chatContainer:{width:"100%",flex:1,maxWidth:"1600px",height:"100%",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden","@media (max-width: 768px)":{maxWidth:"100%",borderRadius:"0"},"@media (max-width: 480px)":{},backgroundPosition:"calc(50%) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",touchAction:"pan-y"},chatMessages:{display:"flex",flexDirection:"column",flex:1,padding:"16px",overflowY:"auto",touchAction:"pan-y"}}),w=({state:i,hideFooter:w,codicent:v,title:y,welcomeMessage:P})=>{const k=S(),{t:I,tAsync:F,getLanguageInfo:_}=b(),T=s(),M=o(null),[B,L]=a(),[D]=n((()=>{const e=B.get("codicent");return e?(sessionStorage.setItem("chat_codicent",e),e):v?(sessionStorage.removeItem("chat_codicent"),null):sessionStorage.getItem("chat_codicent")})),H=D||v,{messages:U,isBotTyping:R,handleSend:V,newChat:N,openChat:E}=A(i.stateMachine,H||void 0),[O,W]=n(null),[z,G]=n(!1),[Q,Y]=n(!1),{service:$,currentStateName:q}=i,[K,J]=n([]),[X,Z]=n([]),[ee,te]=n(!1),[oe,ne]=n(),[re,ie]=h(i.context.selectedApp+"_prompts",[]),[se,ae]=n(!1),{extractTemplateVariables:me,replaceTemplateVariables:pe,extractFilePlaceholders:ce,replaceFilePlaceholders:le,handleSelectFiles:de}=x($.uploadFile),ue=o(!1),ge=o(null);r((()=>{const e=window.history.length>1,t=Boolean(document.referrer&&document.referrer!==window.location.href);Y(e||t)}),[]);r((()=>{f("SHOW_CHAT_PROMPTS")&&0===U.length&&i.service.getAppPrompts(H||void 0).then(ie).catch((e=>{console.error("Failed to get prompts",e)}))}),[i.service,ie,U.length,H]),r((()=>{setTimeout((()=>{M.current?.scrollIntoView({behavior:"smooth"})}),10)}),[U]),r((()=>{if(ue.current)return;ue.current=!0;const e=B.get("text"),t=B.get("id"),o=B.get("fid");if(D){console.log("Using temporary codicent from URL param:",D);const e=new URLSearchParams(B);e.delete("codicent"),L(e,{replace:!0})}if(e){(async()=>{const t=ce(e),o=me(e);N(),t.length>0||o.length>0?(Z(t),J(o),te(!0),W(I(e))):W(I(e))})()}else t?E(t):o&&ne(o)}),[]),r((()=>{oe&&"anonymous"===q&&ge.current!==oe&&(ge.current=oe,$.getFormById(oe).then((async e=>{N();const t=_().language,o=e.prompt.replace("{{fid}}",oe).replace("{{fname}}",e.name).replace("{{language}}",t);ae(!0);const n=await F(o);ae(!1),W(n),Y(!1)})))}),[oe,N,$,W,q,F,_,ae]),r((()=>{if(O&&!ee){let e=O;X.length>0&&(e=le(e,X)),K.length>0&&(e=pe(e,K)),V(e),L({},{replace:!0}),W(null),J([]),Z([])}}),[O,ee,V,L,le,pe,X,K]);const he=e=>{const t=B.get("append");t&&(e+="\n---\n"+t),V(e)};return e(C,{hideHeader:!0,hideFooter:!!oe||w,children:[e("div",{id:"chat-container",className:k.chatContainer,style:{backgroundImage:`url(${f("CHAT_BACKGROUND_IMAGE_URL")})`},children:[Q&&t("button",{onClick:()=>{Q&&T(-1)},"aria-label":I("Tillbaka"),style:{position:"absolute",top:12,left:12,zIndex:100,background:"var(--colorNeutralBackground1)",border:"none",cursor:"pointer",padding:8,borderRadius:8,boxShadow:"0 2px 8px rgba(0,0,0,0.08)",display:"flex",alignItems:"center",justifyContent:"center"},children:t(m,{style:{transform:"rotate(180deg)"}})}),t("div",{style:{marginLeft:Q?40:0},children:t(p,{title:y||I(f("APP_CHAT_TITLE")||"Chatt"),onNewChat:oe?void 0:()=>G(!0)})}),e("div",{className:k.chatMessages,children:[P&&t(g,{sender:"bot",content:P}),f("SHOW_CHAT_PROMPTS")&&re.length>0&&0===U.length&&t(g,{sender:"bot",content:I(f("CHAT_WELCOME")||I("Välkommen!")),children:re.map(((o,n)=>e("div",{children:["> ",t("a",{href:"./#/chat",onClick:()=>{he(o.title+"\n---\n"+o.prompt)},children:I(o.title)}),t("br",{})]},`prompt-${n}`)))}),U.map(((o,n)=>e("div",{children:[(R&&n===U.length-1||!R&&n===U.length-2)&&t("div",{ref:M}),t(g,{sender:o.sender,content:o.content,isNew:o.isNew,showSuggestions:n===U.length-1,onSuggestionClicked:V},o.id)]},o.id))),se&&t(g,{sender:"user",content:I("Översätter...")}),R&&t(c,{})]}),t(d,{codicent:H||i.context.selectedApp,disableSend:R,onSend:he,onSelectFiles:de,getImageUrl:j.getImageUrl,getFileInfo:e=>$.getFileInfo(e)})]}),t(l,{open:z,title:I("Vill du rensa chatten?"),content:I("En ny startas, men chatten kommer först sparas."),onYes:()=>{G(!1),N()},onNo:()=>G(!1)}),t(u,{open:ee,templateVariables:K,filePlaceholders:X,onTemplateVariablesChange:J,onFilePlaceholdersChange:Z,onConfirm:()=>te(!1),onCancel:()=>{te(!1),W(null),J([]),Z([])},uploadFile:$.uploadFile})]})};export{w as default};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e}from"react/jsx-runtime";import{useState as t,useRef as i,useCallback as n,useEffect as r}from"react";import{makeStyles as s,shorthands as a,tokens as m}from"@fluentui/react-components";import{useSearchParams as p,useNavigate as l}from"react-router-dom";import{getConfigValue as c}from"../config/index.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import d from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"@fluentui/react-icons";import{CodicentService as g}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{getGpsLocation as j}from"../utils/device.js";import"exceljs";import"./AppFrame.js";import"./Canvas.js";import"./Chat.js";import"./Snap.js";import"./Search.js";import"./Menu.js";import"./Log.js";import"./Login.js";import"./Home.js";import"./ListPage.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import{Page as u}from"../components/Page.js";import"./QrScan.js";import h from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import f from"../hooks/useToaster.js";import S from"../components/MessageInput.js";import C from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";const P=s({main:{flexGrow:1,...a.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:m.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),v=({state:s})=>{const a=P(),{t:m}=h(),[v,I]=t(!1),_=i(null),x=i(null),b=i(null),[M,U]=t(null),[w,F]=t([]),{service:A}=s,[L,E]=p(),[O,T]=t(void 0),[y,k]=t(),$=f(),B=l(),D=n((o=>{for(const e of o)A.getFileInfo(e).then((o=>{F((e=>[...e,o]))}))}),[A,F]),H=n((o=>{const e=new FormData;e.append("file",o),A.uploadFile(o.name,e).then((o=>{D([o])})).catch((()=>{$.notify(m("Error"),m("Error uploading pasted image"),"")}))}),[A,D,$,m]),R=o=>{I(o)};r((()=>{const o=L.get("text"),e=L.get("url"),t=L.get("parentId");o&&(T(o),L.delete("text")),t&&(k(t),L.delete("parentId")),e&&(L.delete("url"),T(((o||"")+" "+e).trim())),E(L,{replace:!0})}),[L,E,T,A,D]),r((()=>{c("COMPOSE_AUTO_LOCATION")&&j().then((o=>{o&&U(`#gps(${o.coords.latitude},${o.coords.longitude})`)}))}),[]);return o(u,{hideHeader:!0,children:e("div",{className:a.container,style:{backgroundImage:`url(${c("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[o(d,{title:c("APP_SAVE_TITLE")?m(c("APP_SAVE_TITLE")):m("Spara")}),o(S,{disableSend:!0,defaultText:O,onSend:o=>{o=`${o}${M?" "+M:""}${w.length>0?"\n":""}${w.map((o=>`#file:${o.id}`)).join(" ")}`,A.sendMessage(o,y).then((()=>{$.notify(m("Meddelande"),m("Meddelandet är sparat."),""),y&&(k(void 0),B(-1))}))},files:w,onFilesChange:F,isUploading:v,onHandleDefaultFiles:D,onUploadFile:()=>{_.current?.triggerUpload(),console.log("attach-file")},onUploadImage:c("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{x.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:c("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{b.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:g.getImageUrl,onLocationChange:c("COMPOSE_HIDE_LOCATION")?void 0:o=>{o?(async()=>{console.log("attach-location");const o=await j();o?($.notify(m("Position"),m("Position tillagd."),""),U(`#gps(${o.coords.latitude},${o.coords.longitude})`)):console.log("Failed to get GPS location")})():(U(null),$.notify(m("Position"),m("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!M,onImagePasted:H}),o(C,{ref:_,onFileUploaded:D,onUploading:R,multiple:!0,codicentService:A}),o(C,{codicentService:A,ref:x,onFileUploaded:D,onUploading:R,multiple:!0,accept:"image/*"}),o(C,{codicentService:A,ref:b,onFileUploaded:D,onUploading:R,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{v as Compose,v as default};
1
+ import{jsx as o,jsxs as t}from"react/jsx-runtime";import{useState as e,useRef as i,useCallback as n,useEffect as r}from"react";import{makeStyles as s,shorthands as a,tokens as p}from"@fluentui/react-components";import{useSearchParams as m,useNavigate as l}from"react-router-dom";import{getConfigValue as c}from"../config/index.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"../components/CompoundButton.js";import"../components/Spinner.js";import d from"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import"@fluentui/react-icons";import{CodicentService as u}from"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{getGpsLocation as g}from"../utils/device.js";import"exceljs";import"./AppFrame.js";import"./Canvas.js";import"./Chat.js";import"./Snap.js";import"./Search.js";import"./Menu.js";import"./Log.js";import"./Login.js";import"./Home.js";import"./ListPage.js";import"./CrmPage.js";import"./CrmPagePersistent.js";import"./ImageView.js";import"./FormInvite.js";import"./FormAccept.js";import"./Sales.js";import"./Purchase.js";import"../components/Content.js";import{Page as j}from"../components/Page.js";import"./QrScan.js";import h from"../hooks/useLocalization.js";import"../components/FileThumbnail.js";import"react-dom/client";import"../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js";import"../hooks/useAppStyles.js";import f from"../hooks/useToaster.js";import A from"../components/MessageInput.js";import S from"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/DataMessagePicker.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/QrCodeDialog.js";import"../components/QrScanner.js";import"../components/OfflineMessage.js";import"../components/LanguageSelector.js";import"../components/ListView.js";import"../components/RecordModal.js";import"../components/BulkUploadDialog.js";import"../components/CookieBanner.js";import"../components/audit/AuditCircularProgress.js";import"../components/audit/AuditHorizontalProgress.js";import"../components/audit/AuditRoleIndicator.js";import"../components/audit/AuditUnitSwitcher.js";import"../components/audit/AuditAnswerCell.js";import"../components/audit/AuditSearchBar.js";import"../components/audit/AuditFilterChips.js";import"../components/audit/AuditFilterBar.js";import"../components/audit/AuditGroupsProgress.js";import"../components/audit/AuditSummaryDashboard.js";import"../components/audit/AuditRequirementDialog.js";import"../components/audit/AuditUnitExportDialog.js";import"../components/audit/AuditUnitImportDialog.js";import"../components/audit/AuditBulkExportDialog.js";import"../components/audit/AuditBulkUploadDialog.js";import"../components/audit/AuditSortPresets.js";const P=s({main:{flexGrow:1,...a.padding("10px"),overflowY:"auto"},container:{maxWidth:"640px",margin:"0 auto",backgroundPosition:"calc(50% + 100px) center",backgroundRepeat:"no-repeat",backgroundSize:"contain",height:"100%"},root:{height:"100%"},item:{height:"auto",width:"auto",flexShrink:1,marginBottom:"1rem"},chat:{flexGrow:1,boxSizing:"border-box",overflow:"hidden",border:"none"},attachmentBar:{display:"none"},iconButton:{width:"24px",height:"24px"},imageCard:{alignContent:"center",borderRadius:p.borderRadiusLarge,height:"240px",textAlign:"left",position:"relative"}}),C=({state:s})=>{const a=P(),{t:p}=h(),[C,I]=e(!1),v=i(null),x=i(null),_=i(null),[U,b]=e(null),[w,F]=e([]),{service:M}=s,[E,L]=m(),[O,T]=e(void 0),[k,y]=e(),D=f(),B=l(),H=n((o=>{for(const t of o)M.getFileInfo(t).then((o=>{F((t=>[...t,o]))}))}),[M,F]),$=n((o=>{const t=new FormData;t.append("file",o),M.uploadFile(o.name,t).then((o=>{H([o])})).catch((()=>{D.notify(p("Error"),p("Error uploading pasted image"),"")}))}),[M,H,D,p]),R=o=>{I(o)};r((()=>{const o=E.get("text"),t=E.get("url"),e=E.get("parentId");o&&(T(o),E.delete("text")),e&&(y(e),E.delete("parentId")),t&&(E.delete("url"),T(((o||"")+" "+t).trim())),L(E,{replace:!0})}),[E,L,T,M,H]),r((()=>{c("COMPOSE_AUTO_LOCATION")&&g().then((o=>{o&&b(`#gps(${o.coords.latitude},${o.coords.longitude})`)}))}),[]);return o(j,{hideHeader:!0,children:t("div",{className:a.container,style:{backgroundImage:`url(${c("COMPOSE_BACKGROUND_IMAGE_URL")})`},children:[o(d,{title:c("APP_SAVE_TITLE")?p(c("APP_SAVE_TITLE")):p("Spara")}),o(A,{disableSend:!0,defaultText:O,onSend:o=>{o=`${o}${U?" "+U:""}${w.length>0?"\n":""}${w.map((o=>`#file:${o.id}`)).join(" ")}`,M.sendMessage(o,k).then((()=>{D.notify(p("Meddelande"),p("Meddelandet är sparat."),""),k&&(y(void 0),B(-1))}))},files:w,onFilesChange:F,isUploading:C,onHandleDefaultFiles:H,onUploadFile:()=>{v.current?.triggerUpload(),console.log("attach-file")},onUploadImage:c("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{x.current?.triggerUpload(),console.log("attach-image")},onUploadCamera:c("COMPOSE_SIMPLE_ATTACH_FILE")?void 0:()=>{_.current?.triggerUpload(),console.log("attach-camera")},getImageUrl:u.getImageUrl,onLocationChange:c("COMPOSE_HIDE_LOCATION")?void 0:o=>{o?(async()=>{console.log("attach-location");const o=await g();o?(D.notify(p("Position"),p("Position tillagd."),""),b(`#gps(${o.coords.latitude},${o.coords.longitude})`)):console.log("Failed to get GPS location")})():(b(null),D.notify(p("Position"),p("Position borttagen."),""),console.log("clear-location"))},hasLocation:!!U,onImagePasted:$}),o(S,{ref:v,onFileUploaded:H,onUploading:R,multiple:!0,codicentService:M}),o(S,{codicentService:M,ref:x,onFileUploaded:H,onUploading:R,multiple:!0,accept:"image/*"}),o(S,{codicentService:M,ref:_,onFileUploaded:H,onUploading:R,multiple:!0,accept:"image/*",capture:"environment"})]})})};export{C as Compose,C as default};