codicent-app-sdk 0.7.10 → 0.8.6

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 (268) hide show
  1. package/dist/cjs/_virtual/scheduler.production.js +1 -0
  2. package/dist/cjs/components/DataMessagePicker.d.ts +7 -1
  3. package/dist/cjs/components/DataMessagePicker.d.ts.map +1 -1
  4. package/dist/cjs/components/DataMessagePicker.js +1 -1
  5. package/dist/cjs/components/ErrorBoundary.d.ts.map +1 -1
  6. package/dist/cjs/components/ErrorBoundary.js +1 -1
  7. package/dist/cjs/components/ListView.d.ts +54 -1
  8. package/dist/cjs/components/ListView.d.ts.map +1 -1
  9. package/dist/cjs/components/ListView.js +1 -1
  10. package/dist/cjs/components/MessageItem.js +1 -1
  11. package/dist/cjs/components/RecordModal.d.ts +6 -1
  12. package/dist/cjs/components/RecordModal.d.ts.map +1 -1
  13. package/dist/cjs/components/RecordModal.js +1 -1
  14. package/dist/cjs/config/index.d.ts +1 -0
  15. package/dist/cjs/config/index.d.ts.map +1 -1
  16. package/dist/cjs/config/index.js +1 -1
  17. package/dist/cjs/hooks/useChat.d.ts +4 -1
  18. package/dist/cjs/hooks/useChat.d.ts.map +1 -1
  19. package/dist/cjs/hooks/useChat.js +1 -1
  20. package/dist/cjs/hooks/useCodicentApp.js +1 -1
  21. package/dist/cjs/hooks/useRealtimeVoiceAI.d.ts.map +1 -1
  22. package/dist/cjs/hooks/useRealtimeVoiceAI.js +1 -1
  23. package/dist/cjs/hooks/useToaster.d.ts +1 -1
  24. package/dist/cjs/hooks/useToaster.d.ts.map +1 -1
  25. package/dist/cjs/hooks/useToaster.js +1 -1
  26. package/dist/cjs/hooks/useUserRoles.js +1 -1
  27. package/dist/cjs/index.js +1 -1
  28. package/dist/cjs/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -1
  29. package/dist/cjs/node_modules/@floating-ui/devtools/dist/floating-ui.devtools.js +1 -1
  30. package/dist/cjs/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
  31. package/dist/cjs/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +1 -1
  32. package/dist/cjs/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +1 -1
  33. package/dist/cjs/node_modules/@fluentui/react-aria/lib/activedescendant/useOptionWalker.js +1 -1
  34. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/Calendar/useCalendarStyles.styles.js +1 -1
  35. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDay/CalendarDay.js +1 -1
  36. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDay/useCalendarDayStyles.styles.js +1 -1
  37. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/CalendarDayGrid.js +1 -1
  38. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/CalendarGridDayCell.js +1 -1
  39. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/CalendarMonthHeaderRow.js +1 -1
  40. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/useCalendarDayGridStyles.styles.js +1 -1
  41. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/useWeekCornerStyles.styles.js +1 -1
  42. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarMonth/CalendarMonth.js +1 -1
  43. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarPicker/useCalendarPickerStyles.styles.js +1 -1
  44. package/dist/cjs/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarYear/CalendarYear.js +1 -1
  45. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
  46. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Combobox/useComboboxStyles.styles.js +1 -1
  47. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Listbox/useListboxStyles.styles.js +1 -1
  48. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Option/useOption.js +1 -1
  49. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/components/Option/useOptionStyles.styles.js +1 -1
  50. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/contexts/ListboxContext.js +1 -1
  51. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/utils/dropdownKeyActions.js +1 -1
  52. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/utils/useComboboxPositioning.js +1 -1
  53. package/dist/cjs/node_modules/@fluentui/react-combobox/lib/utils/useListboxSlot.js +1 -1
  54. package/dist/cjs/node_modules/@fluentui/react-context-selector/lib/createContext.js +1 -1
  55. package/dist/cjs/node_modules/@fluentui/react-context-selector/lib/useContextSelector.js +1 -1
  56. package/dist/cjs/node_modules/@fluentui/react-context-selector/lib/useHasParentContext.js +1 -1
  57. package/dist/cjs/node_modules/@fluentui/react-datepicker-compat/lib/components/DatePicker/useDatePickerStyles.styles.js +1 -1
  58. package/dist/cjs/node_modules/@fluentui/react-input/lib/components/Input/useInput.js +1 -1
  59. package/dist/cjs/node_modules/@fluentui/react-input/lib/components/Input/useInputStyles.styles.js +1 -1
  60. package/dist/cjs/node_modules/@fluentui/react-jsx-runtime/lib/jsx/createJSX.js +1 -1
  61. package/dist/cjs/node_modules/@fluentui/react-jsx-runtime/lib/utils/createCompatSlotComponent.js +1 -1
  62. package/dist/cjs/node_modules/@fluentui/react-jsx-runtime/lib/utils/warnIfElementTypeIsInvalid.js +1 -1
  63. package/dist/cjs/node_modules/@fluentui/react-portal/lib/components/Portal/Portal.js +1 -1
  64. package/dist/cjs/node_modules/@fluentui/react-portal/lib/components/Portal/renderPortal.js +1 -1
  65. package/dist/cjs/node_modules/@fluentui/react-portal/lib/components/Portal/usePortal.js +1 -1
  66. package/dist/cjs/node_modules/@fluentui/react-portal/lib/components/Portal/usePortalMountNode.js +1 -1
  67. package/dist/cjs/node_modules/@fluentui/react-portal/lib/components/Portal/usePortalMountNodeStyles.js +1 -0
  68. package/dist/cjs/node_modules/@fluentui/react-positioning/lib/createPositionManager.js +1 -1
  69. package/dist/cjs/node_modules/@fluentui/react-positioning/lib/usePositioning.js +1 -1
  70. package/dist/cjs/node_modules/@fluentui/react-positioning/lib/utils/getReactFiberFromNode.js +1 -1
  71. package/dist/cjs/node_modules/@fluentui/react-tabster/lib/focus/focusVisiblePolyfill.js +1 -1
  72. package/dist/cjs/node_modules/@fluentui/react-tabster/lib/hooks/useDangerousNeverHidden.js +1 -0
  73. package/dist/cjs/node_modules/@fluentui/react-tabster/lib/hooks/useModalAttributes.js +1 -1
  74. package/dist/cjs/node_modules/@fluentui/react-tabster/lib/hooks/useTabster.js +1 -1
  75. package/dist/cjs/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePickerStyles.styles.js +1 -1
  76. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/compose/assertSlots.js +1 -1
  77. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/compose/getIntrinsicElementProps.js +1 -1
  78. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/compose/slot.js +1 -1
  79. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/hooks/useFirstMount.js +1 -1
  80. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/hooks/useOnClickOutside.js +1 -1
  81. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/utils/getNativeElementProps.js +1 -1
  82. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/utils/properties.js +1 -1
  83. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/virtualParent/getParent.js +1 -1
  84. package/dist/cjs/node_modules/@fluentui/react-utilities/lib/virtualParent/setVirtualParent.js +1 -1
  85. package/dist/cjs/node_modules/@griffel/core/src/__resetStyles.js +1 -0
  86. package/dist/cjs/node_modules/@griffel/core/src/__styles.js +1 -0
  87. package/dist/cjs/node_modules/@griffel/core/src/constants.js +1 -0
  88. package/dist/cjs/node_modules/@griffel/core/src/devtools/getAtomicDebugSequenceTree.js +1 -0
  89. package/dist/cjs/node_modules/@griffel/core/src/devtools/getResetDebugSequence.js +1 -0
  90. package/dist/cjs/node_modules/@griffel/core/src/devtools/getSourceURLfromError.js +1 -0
  91. package/dist/cjs/node_modules/@griffel/core/src/devtools/injectDevTools.js +1 -0
  92. package/dist/cjs/node_modules/@griffel/core/src/devtools/isDevToolsEnabled.js +1 -0
  93. package/dist/cjs/node_modules/@griffel/core/src/devtools/mergeDebugSequence.js +1 -0
  94. package/dist/cjs/node_modules/@griffel/core/src/devtools/react-render-tracker/stackTrace.js +1 -0
  95. package/dist/cjs/node_modules/@griffel/core/src/devtools/store.js +1 -0
  96. package/dist/cjs/node_modules/@griffel/core/src/devtools/utils.js +1 -0
  97. package/dist/cjs/node_modules/@griffel/core/src/insertionFactory.js +1 -0
  98. package/dist/cjs/node_modules/@griffel/core/src/mergeClasses.js +1 -0
  99. package/dist/cjs/node_modules/@griffel/core/src/renderer/createDOMRenderer.js +1 -0
  100. package/dist/cjs/node_modules/@griffel/core/src/renderer/createIsomorphicStyleSheet.js +1 -0
  101. package/dist/cjs/node_modules/@griffel/core/src/renderer/getStyleSheetForBucket.js +1 -0
  102. package/dist/cjs/node_modules/@griffel/core/src/renderer/safeInsertRule.js +1 -0
  103. package/dist/cjs/node_modules/@griffel/core/src/runtime/reduceToClassNameForSlots.js +1 -0
  104. package/dist/cjs/node_modules/@griffel/core/src/runtime/utils/hashSequence.js +1 -0
  105. package/dist/cjs/node_modules/@griffel/core/src/runtime/utils/normalizeCSSBucketEntry.js +1 -0
  106. package/dist/cjs/node_modules/@griffel/react/src/RendererContext.js +1 -0
  107. package/dist/cjs/node_modules/@griffel/react/src/TextDirectionContext.js +1 -0
  108. package/dist/cjs/node_modules/@griffel/react/src/__resetStyles.js +1 -0
  109. package/dist/cjs/node_modules/@griffel/react/src/__styles.js +1 -0
  110. package/dist/cjs/node_modules/@griffel/react/src/insertionFactory.js +1 -0
  111. package/dist/cjs/node_modules/@griffel/react/src/useInsertionEffect.js +1 -0
  112. package/dist/cjs/node_modules/@griffel/react/src/utils/canUseDOM.js +1 -0
  113. package/dist/cjs/node_modules/scheduler/cjs/scheduler.development.js +3 -3
  114. package/dist/cjs/node_modules/scheduler/cjs/scheduler.production.js +10 -0
  115. package/dist/cjs/node_modules/scheduler/index.js +1 -1
  116. package/dist/cjs/pages/Chat.d.ts.map +1 -1
  117. package/dist/cjs/pages/Chat.js +1 -1
  118. package/dist/cjs/pages/ListPage.d.ts +6 -1
  119. package/dist/cjs/pages/ListPage.d.ts.map +1 -1
  120. package/dist/cjs/pages/ListPage.js +1 -1
  121. package/dist/cjs/services/codicent.d.ts +23 -2
  122. package/dist/cjs/services/codicent.d.ts.map +1 -1
  123. package/dist/cjs/services/codicent.js +1 -1
  124. package/dist/cjs/types/index.d.ts +28 -0
  125. package/dist/cjs/types/index.d.ts.map +1 -1
  126. package/dist/cjs/utils/index.d.ts +3 -0
  127. package/dist/cjs/utils/index.d.ts.map +1 -1
  128. package/dist/cjs/utils/reference.d.ts +15 -0
  129. package/dist/cjs/utils/reference.d.ts.map +1 -0
  130. package/dist/cjs/utils/reference.js +1 -0
  131. package/dist/cjs/utils/telemetry.d.ts +27 -0
  132. package/dist/cjs/utils/telemetry.d.ts.map +1 -0
  133. package/dist/cjs/utils/telemetry.js +1 -0
  134. package/dist/esm/_virtual/scheduler.production.js +1 -0
  135. package/dist/esm/components/DataMessagePicker.d.ts +7 -1
  136. package/dist/esm/components/DataMessagePicker.d.ts.map +1 -1
  137. package/dist/esm/components/DataMessagePicker.js +1 -1
  138. package/dist/esm/components/ErrorBoundary.d.ts.map +1 -1
  139. package/dist/esm/components/ErrorBoundary.js +1 -1
  140. package/dist/esm/components/ListView.d.ts +54 -1
  141. package/dist/esm/components/ListView.d.ts.map +1 -1
  142. package/dist/esm/components/ListView.js +1 -1
  143. package/dist/esm/components/MessageItem.js +1 -1
  144. package/dist/esm/components/RecordModal.d.ts +6 -1
  145. package/dist/esm/components/RecordModal.d.ts.map +1 -1
  146. package/dist/esm/components/RecordModal.js +1 -1
  147. package/dist/esm/config/index.d.ts +1 -0
  148. package/dist/esm/config/index.d.ts.map +1 -1
  149. package/dist/esm/config/index.js +1 -1
  150. package/dist/esm/hooks/useChat.d.ts +4 -1
  151. package/dist/esm/hooks/useChat.d.ts.map +1 -1
  152. package/dist/esm/hooks/useChat.js +1 -1
  153. package/dist/esm/hooks/useCodicentApp.js +1 -1
  154. package/dist/esm/hooks/useRealtimeVoiceAI.d.ts.map +1 -1
  155. package/dist/esm/hooks/useRealtimeVoiceAI.js +1 -1
  156. package/dist/esm/hooks/useToaster.d.ts +1 -1
  157. package/dist/esm/hooks/useToaster.d.ts.map +1 -1
  158. package/dist/esm/hooks/useToaster.js +1 -1
  159. package/dist/esm/hooks/useUserRoles.js +1 -1
  160. package/dist/esm/index.js +1 -1
  161. package/dist/esm/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -1
  162. package/dist/esm/node_modules/@floating-ui/devtools/dist/floating-ui.devtools.js +1 -1
  163. package/dist/esm/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
  164. package/dist/esm/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +1 -1
  165. package/dist/esm/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +1 -1
  166. package/dist/esm/node_modules/@fluentui/react-aria/lib/activedescendant/useOptionWalker.js +1 -1
  167. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/Calendar/useCalendarStyles.styles.js +1 -1
  168. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDay/CalendarDay.js +1 -1
  169. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDay/useCalendarDayStyles.styles.js +1 -1
  170. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/CalendarDayGrid.js +1 -1
  171. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/CalendarGridDayCell.js +1 -1
  172. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/CalendarMonthHeaderRow.js +1 -1
  173. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/useCalendarDayGridStyles.styles.js +1 -1
  174. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarDayGrid/useWeekCornerStyles.styles.js +1 -1
  175. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarMonth/CalendarMonth.js +1 -1
  176. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarPicker/useCalendarPickerStyles.styles.js +1 -1
  177. package/dist/esm/node_modules/@fluentui/react-calendar-compat/lib/components/CalendarYear/CalendarYear.js +1 -1
  178. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Combobox/useCombobox.js +1 -1
  179. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Combobox/useComboboxStyles.styles.js +1 -1
  180. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Listbox/useListboxStyles.styles.js +1 -1
  181. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Option/useOption.js +1 -1
  182. package/dist/esm/node_modules/@fluentui/react-combobox/lib/components/Option/useOptionStyles.styles.js +1 -1
  183. package/dist/esm/node_modules/@fluentui/react-combobox/lib/contexts/ListboxContext.js +1 -1
  184. package/dist/esm/node_modules/@fluentui/react-combobox/lib/utils/dropdownKeyActions.js +1 -1
  185. package/dist/esm/node_modules/@fluentui/react-combobox/lib/utils/useComboboxPositioning.js +1 -1
  186. package/dist/esm/node_modules/@fluentui/react-combobox/lib/utils/useListboxSlot.js +1 -1
  187. package/dist/esm/node_modules/@fluentui/react-context-selector/lib/createContext.js +1 -1
  188. package/dist/esm/node_modules/@fluentui/react-context-selector/lib/useContextSelector.js +1 -1
  189. package/dist/esm/node_modules/@fluentui/react-context-selector/lib/useHasParentContext.js +1 -1
  190. package/dist/esm/node_modules/@fluentui/react-datepicker-compat/lib/components/DatePicker/useDatePickerStyles.styles.js +1 -1
  191. package/dist/esm/node_modules/@fluentui/react-input/lib/components/Input/useInput.js +1 -1
  192. package/dist/esm/node_modules/@fluentui/react-input/lib/components/Input/useInputStyles.styles.js +1 -1
  193. package/dist/esm/node_modules/@fluentui/react-jsx-runtime/lib/jsx/createJSX.js +1 -1
  194. package/dist/esm/node_modules/@fluentui/react-jsx-runtime/lib/utils/createCompatSlotComponent.js +1 -1
  195. package/dist/esm/node_modules/@fluentui/react-jsx-runtime/lib/utils/warnIfElementTypeIsInvalid.js +1 -1
  196. package/dist/esm/node_modules/@fluentui/react-portal/lib/components/Portal/Portal.js +1 -1
  197. package/dist/esm/node_modules/@fluentui/react-portal/lib/components/Portal/renderPortal.js +1 -1
  198. package/dist/esm/node_modules/@fluentui/react-portal/lib/components/Portal/usePortal.js +1 -1
  199. package/dist/esm/node_modules/@fluentui/react-portal/lib/components/Portal/usePortalMountNode.js +1 -1
  200. package/dist/esm/node_modules/@fluentui/react-portal/lib/components/Portal/usePortalMountNodeStyles.js +1 -0
  201. package/dist/esm/node_modules/@fluentui/react-positioning/lib/createPositionManager.js +1 -1
  202. package/dist/esm/node_modules/@fluentui/react-positioning/lib/usePositioning.js +1 -1
  203. package/dist/esm/node_modules/@fluentui/react-positioning/lib/utils/getReactFiberFromNode.js +1 -1
  204. package/dist/esm/node_modules/@fluentui/react-tabster/lib/focus/focusVisiblePolyfill.js +1 -1
  205. package/dist/esm/node_modules/@fluentui/react-tabster/lib/hooks/useDangerousNeverHidden.js +1 -0
  206. package/dist/esm/node_modules/@fluentui/react-tabster/lib/hooks/useModalAttributes.js +1 -1
  207. package/dist/esm/node_modules/@fluentui/react-tabster/lib/hooks/useTabster.js +1 -1
  208. package/dist/esm/node_modules/@fluentui/react-timepicker-compat/lib/components/TimePicker/useTimePickerStyles.styles.js +1 -1
  209. package/dist/esm/node_modules/@fluentui/react-utilities/lib/compose/assertSlots.js +1 -1
  210. package/dist/esm/node_modules/@fluentui/react-utilities/lib/compose/getIntrinsicElementProps.js +1 -1
  211. package/dist/esm/node_modules/@fluentui/react-utilities/lib/compose/slot.js +1 -1
  212. package/dist/esm/node_modules/@fluentui/react-utilities/lib/hooks/useFirstMount.js +1 -1
  213. package/dist/esm/node_modules/@fluentui/react-utilities/lib/hooks/useOnClickOutside.js +1 -1
  214. package/dist/esm/node_modules/@fluentui/react-utilities/lib/utils/getNativeElementProps.js +1 -1
  215. package/dist/esm/node_modules/@fluentui/react-utilities/lib/utils/properties.js +1 -1
  216. package/dist/esm/node_modules/@fluentui/react-utilities/lib/virtualParent/getParent.js +1 -1
  217. package/dist/esm/node_modules/@fluentui/react-utilities/lib/virtualParent/setVirtualParent.js +1 -1
  218. package/dist/esm/node_modules/@griffel/core/src/__resetStyles.js +1 -0
  219. package/dist/esm/node_modules/@griffel/core/src/__styles.js +1 -0
  220. package/dist/esm/node_modules/@griffel/core/src/constants.js +1 -0
  221. package/dist/esm/node_modules/@griffel/core/src/devtools/getAtomicDebugSequenceTree.js +1 -0
  222. package/dist/esm/node_modules/@griffel/core/src/devtools/getResetDebugSequence.js +1 -0
  223. package/dist/esm/node_modules/@griffel/core/src/devtools/getSourceURLfromError.js +1 -0
  224. package/dist/esm/node_modules/@griffel/core/src/devtools/injectDevTools.js +1 -0
  225. package/dist/esm/node_modules/@griffel/core/src/devtools/isDevToolsEnabled.js +1 -0
  226. package/dist/esm/node_modules/@griffel/core/src/devtools/mergeDebugSequence.js +1 -0
  227. package/dist/esm/node_modules/@griffel/core/src/devtools/react-render-tracker/stackTrace.js +1 -0
  228. package/dist/esm/node_modules/@griffel/core/src/devtools/store.js +1 -0
  229. package/dist/esm/node_modules/@griffel/core/src/devtools/utils.js +1 -0
  230. package/dist/esm/node_modules/@griffel/core/src/insertionFactory.js +1 -0
  231. package/dist/esm/node_modules/@griffel/core/src/mergeClasses.js +1 -0
  232. package/dist/esm/node_modules/@griffel/core/src/renderer/createDOMRenderer.js +1 -0
  233. package/dist/esm/node_modules/@griffel/core/src/renderer/createIsomorphicStyleSheet.js +1 -0
  234. package/dist/esm/node_modules/@griffel/core/src/renderer/getStyleSheetForBucket.js +1 -0
  235. package/dist/esm/node_modules/@griffel/core/src/renderer/safeInsertRule.js +1 -0
  236. package/dist/esm/node_modules/@griffel/core/src/runtime/reduceToClassNameForSlots.js +1 -0
  237. package/dist/esm/node_modules/@griffel/core/src/runtime/utils/hashSequence.js +1 -0
  238. package/dist/esm/node_modules/@griffel/core/src/runtime/utils/normalizeCSSBucketEntry.js +1 -0
  239. package/dist/esm/node_modules/@griffel/react/src/RendererContext.js +1 -0
  240. package/dist/esm/node_modules/@griffel/react/src/TextDirectionContext.js +1 -0
  241. package/dist/esm/node_modules/@griffel/react/src/__resetStyles.js +1 -0
  242. package/dist/esm/node_modules/@griffel/react/src/__styles.js +1 -0
  243. package/dist/esm/node_modules/@griffel/react/src/insertionFactory.js +1 -0
  244. package/dist/esm/node_modules/@griffel/react/src/useInsertionEffect.js +1 -0
  245. package/dist/esm/node_modules/@griffel/react/src/utils/canUseDOM.js +1 -0
  246. package/dist/esm/node_modules/scheduler/cjs/scheduler.development.js +3 -3
  247. package/dist/esm/node_modules/scheduler/cjs/scheduler.production.js +10 -0
  248. package/dist/esm/node_modules/scheduler/index.js +1 -1
  249. package/dist/esm/pages/Chat.d.ts.map +1 -1
  250. package/dist/esm/pages/Chat.js +1 -1
  251. package/dist/esm/pages/ListPage.d.ts +6 -1
  252. package/dist/esm/pages/ListPage.d.ts.map +1 -1
  253. package/dist/esm/pages/ListPage.js +1 -1
  254. package/dist/esm/services/codicent.d.ts +23 -2
  255. package/dist/esm/services/codicent.d.ts.map +1 -1
  256. package/dist/esm/services/codicent.js +1 -1
  257. package/dist/esm/types/index.d.ts +28 -0
  258. package/dist/esm/types/index.d.ts.map +1 -1
  259. package/dist/esm/utils/index.d.ts +3 -0
  260. package/dist/esm/utils/index.d.ts.map +1 -1
  261. package/dist/esm/utils/reference.d.ts +15 -0
  262. package/dist/esm/utils/reference.d.ts.map +1 -0
  263. package/dist/esm/utils/reference.js +1 -0
  264. package/dist/esm/utils/telemetry.d.ts +27 -0
  265. package/dist/esm/utils/telemetry.d.ts.map +1 -0
  266. package/dist/esm/utils/telemetry.js +1 -0
  267. package/dist/index.d.ts +165 -9
  268. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ "use strict";exports.__exports={};
@@ -25,9 +25,15 @@ export interface DataMessagePickerProps {
25
25
  secondaryKeys?: string[];
26
26
  dataFilters?: Record<string, string>;
27
27
  noResultsText?: string;
28
+ /**
29
+ * When true, focusing the field with an empty input lists the most-recent matches
30
+ * (filtered by `dataFilters` if present), so users can browse without typing.
31
+ * Mirrors the "click the magnifying glass to see a list" expectation.
32
+ */
33
+ showRecentOnFocus?: boolean;
28
34
  onValueChange?: (value: string) => void;
29
35
  onSelect?: (selection: DataMessagePickerSelection) => void;
30
36
  }
31
- declare const DataMessagePicker: ({ service, tag, codicent, placeholder, value, disabled, debounceMs, minSearchLength, resultLimit, displayKeys, searchKeys, primaryKey, secondaryKeys, dataFilters, noResultsText, onValueChange, onSelect, }: DataMessagePickerProps) => import("react/jsx-runtime").JSX.Element;
37
+ declare const DataMessagePicker: ({ service, tag, codicent, placeholder, value, disabled, debounceMs, minSearchLength, resultLimit, displayKeys, searchKeys, primaryKey, secondaryKeys, dataFilters, noResultsText, showRecentOnFocus, onValueChange, onSelect, }: DataMessagePickerProps) => import("react/jsx-runtime").JSX.Element;
32
38
  export default DataMessagePicker;
33
39
  //# sourceMappingURL=DataMessagePicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataMessagePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DataMessagePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAiF5C,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,WAAW,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,0BAA0B,KAAK,IAAI,CAAC;CAC5D;AAuGD,QAAA,MAAM,iBAAiB,iNAkBpB,sBAAsB,4CAkOxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"DataMessagePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DataMessagePicker.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA+E5C,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,WAAW,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,0BAA0B,KAAK,IAAI,CAAC;CAC5D;AAuGD,QAAA,MAAM,iBAAiB,oOAmBpB,sBAAsB,4CA+TxB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("@fluentui/react-components"),o=require("react");const n=[],r=["name","title","label","companyName","Company Name","customerName","description"],l=["originalMessageId","OriginalMessageId","originalmessageid"],a=t.makeStyles({root:{position:"relative",width:"100%"},searchBox:{width:"100%"},panel:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:10,backgroundColor:"#ffffff",border:"1px solid #d1d1d1",borderRadius:"8px",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.12)",overflow:"hidden"},statusRow:{display:"flex",alignItems:"center",gap:"8px",padding:"12px",color:"#616161",fontSize:"14px"},errorRow:{padding:"12px",color:"#c50f1f",fontSize:"14px"},resultsList:{maxHeight:"320px",overflowY:"auto"},option:{width:"100%",textAlign:"left",padding:"12px",border:"none",backgroundColor:"#ffffff",borderBottom:"1px solid #f0f0f0",cursor:"pointer",display:"flex",flexDirection:"column",gap:"4px",":hover":{backgroundColor:"#f5f5f5"}},optionActive:{backgroundColor:"#f3f9fd"},optionLabel:{fontSize:"14px",fontWeight:600,color:"#242424",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},optionMeta:{fontSize:"12px",color:"#616161",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}),s=e=>null==e?"":"string"==typeof e?e.trim():Array.isArray(e)?e.map((e=>s(e))).filter(Boolean).join(", "):String(e).trim(),i=e=>{const t=new Set;return e.filter((e=>!(!e||t.has(e))&&(t.add(e),!0)))},c=(e,t)=>s(e[t]),d=(e,t)=>{for(const o of t){const t=c(e,o);if(t)return t}return""},u=e=>d(e,l)||void 0,f=(e,t,o,l=n,a=n,f=n)=>{const p=e.data||{},h=d(p,i([o||"",...l,...a,...r]))||e.id,m=f.map((e=>c(p,e))).filter(Boolean).join(" • "),g=((e,t)=>0===t.length?Object.values(e).map((e=>s(e))).filter(Boolean).join(" "):t.map((t=>c(e,t))).filter(Boolean).join(" "))(p,i([...a,...l]));return{selection:{message:e,id:e.id,tag:t,label:h,searchText:g,data:p,originalMessageId:u(p)},secondaryText:m}};exports.default=({service:r,tag:l,codicent:s,placeholder:c="Search",value:d,disabled:u=!1,debounceMs:p=300,minSearchLength:h=2,resultLimit:m=8,displayKeys:g=n,searchKeys:x=n,primaryKey:w,secondaryKeys:v=n,dataFilters:y,noResultsText:b="No matches found",onValueChange:S,onSelect:j})=>{const N=a(),[M,k]=o.useState(d||""),[D,T]=o.useState([]),[C,L]=o.useState(!1),[B,A]=o.useState(!1),[R,z]=o.useState(-1),[E,O]=o.useState(null),[I,K]=o.useState(!1),q=o.useRef(null),F=o.useMemo((()=>i(g)),[g]),$=o.useMemo((()=>i(x)),[x]),_=o.useMemo((()=>i(v)),[v]),H=o.useMemo((()=>JSON.stringify(y||{})),[y]);o.useEffect((()=>{k(d||"")}),[d]),o.useEffect((()=>{const e=M.trim();if(!e||e.length<h||u)return L(!1),T([]),A(!1),z(-1),O(null),void K(!1);let t=!1;const o=window.setTimeout((async()=>{L(!0),O(null),K(!0);try{const o=await r.readDataMessages(l,e,s,0,Math.max(3*m,m),void 0,void 0,y);if(t)return;const n=o.map((e=>f(e,l,w,F,$,_))).filter((t=>0===$.length||t.selection.searchText.toLocaleLowerCase().includes(e.toLocaleLowerCase()))).slice(0,m);T(n),z(n.length>0?0:-1),A(!0)}catch(e){t||(O(e instanceof Error?e.message:"Search failed"),T([]),z(-1),A(!0))}finally{t||L(!1)}}),p);return()=>{t=!0,window.clearTimeout(o)}}),[s,p,u,M,h,F,$,_,w,m,H,r,l]),o.useEffect((()=>()=>{null!==q.current&&window.clearTimeout(q.current)}),[]);const J=e=>{k(e.selection.label),A(!1),z(-1),S?.(e.selection.label),j?.(e.selection)},P=B&&(C||!!E||D.length>0||I&&M.trim().length>=h);return e.jsxs("div",{className:N.root,children:[e.jsx(t.SearchBox,{size:"large",className:N.searchBox,placeholder:c,value:M,disabled:u,onChange:(e,t)=>{return o=t.value,k(o),void S?.(o);var o},onFocus:()=>{null!==q.current&&(window.clearTimeout(q.current),q.current=null),M.trim().length>=h&&(D.length>0||C||E||I)&&A(!0)},onBlur:()=>{q.current=window.setTimeout((()=>{A(!1)}),120)},onKeyDown:e=>{if(B&&0!==D.length)return"ArrowDown"===e.key?(e.preventDefault(),void z((e=>(e+1)%D.length))):"ArrowUp"===e.key?(e.preventDefault(),void z((e=>e<=0?D.length-1:e-1))):"Enter"===e.key&&R>=0?(e.preventDefault(),void J(D[R])):void("Escape"===e.key&&(e.preventDefault(),A(!1),z(-1)));"ArrowDown"===e.key&&M.trim().length>=h&&A(!0)}}),P?e.jsxs("div",{className:N.panel,children:[C?e.jsxs("div",{className:N.statusRow,children:[e.jsx(t.Spinner,{size:"tiny"}),"Searching..."]}):null,!C&&E?e.jsx("div",{className:N.errorRow,children:E}):null,C||E||0!==D.length?null:e.jsx("div",{className:N.statusRow,children:b}),!C&&!E&&D.length>0?e.jsx("div",{className:N.resultsList,children:D.map(((t,o)=>e.jsxs("button",{type:"button",className:`${N.option} ${o===R?N.optionActive:""}`,onMouseDown:e=>e.preventDefault(),onClick:()=>J(t),children:[e.jsx("span",{className:N.optionLabel,children:t.selection.label}),t.secondaryText?e.jsx("span",{className:N.optionMeta,children:t.secondaryText}):null]},t.selection.id)))}):null]}):null]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("@fluentui/react-components"),n=require("react"),o=require("react-dom");const r=[],l=["name","title","label","companyName","Company Name","customerName","description"],a=["originalMessageId","OriginalMessageId","originalmessageid"],i=t.makeStyles({root:{position:"relative",width:"100%"},searchBox:{width:"100%"},panel:{position:"fixed",zIndex:9999,backgroundColor:"#ffffff",border:"1px solid #d1d1d1",borderRadius:"8px",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.12)",overflow:"hidden"},statusRow:{display:"flex",alignItems:"center",gap:"8px",padding:"12px",color:"#616161",fontSize:"14px"},errorRow:{padding:"12px",color:"#c50f1f",fontSize:"14px"},resultsList:{maxHeight:"320px",overflowY:"auto"},option:{width:"100%",textAlign:"left",padding:"12px",border:"none",backgroundColor:"#ffffff",borderBottom:"1px solid #f0f0f0",cursor:"pointer",display:"flex",flexDirection:"column",gap:"4px",":hover":{backgroundColor:"#f5f5f5"}},optionActive:{backgroundColor:"#f3f9fd"},optionLabel:{fontSize:"14px",fontWeight:600,color:"#242424",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},optionMeta:{fontSize:"12px",color:"#616161",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}),s=e=>null==e?"":"string"==typeof e?e.trim():Array.isArray(e)?e.map((e=>s(e))).filter(Boolean).join(", "):String(e).trim(),c=e=>{const t=new Set;return e.filter((e=>!(!e||t.has(e))&&(t.add(e),!0)))},u=(e,t)=>s(e[t]),d=(e,t)=>{for(const n of t){const t=u(e,n);if(t)return t}return""},f=e=>d(e,a)||void 0,p=(e,t,n,o=r,a=r,i=r)=>{const p=e.data||{},h=d(p,c([n||"",...o,...a,...l]))||e.id,m=i.map((e=>u(p,e))).filter(Boolean).join(" • "),g=((e,t)=>0===t.length?Object.values(e).map((e=>s(e))).filter(Boolean).join(" "):t.map((t=>u(e,t))).filter(Boolean).join(" "))(p,c([...a,...o]));return{selection:{message:e,id:e.id,tag:t,label:h,searchText:g,data:p,originalMessageId:f(p)},secondaryText:m}};exports.default=({service:l,tag:a,codicent:s,placeholder:u="Search",value:d,disabled:f=!1,debounceMs:h=300,minSearchLength:m=2,resultLimit:g=8,displayKeys:x=r,searchKeys:w=r,primaryKey:v,secondaryKeys:y=r,dataFilters:b,noResultsText:S="No matches found",showRecentOnFocus:j=!1,onValueChange:M,onSelect:N})=>{const D=i(),[k,C]=n.useState(d||""),[R,T]=n.useState([]),[B,L]=n.useState(!1),[A,z]=n.useState(!1),[E,O]=n.useState(-1),[I,K]=n.useState(null),[q,F]=n.useState(!1),[P,$]=n.useState({}),_=n.useRef(null),H=n.useRef(null),J=n.useRef(null),U=n.useMemo((()=>c(x)),[x]),V=n.useMemo((()=>c(w)),[w]),W=n.useMemo((()=>c(y)),[y]),Y=n.useMemo((()=>JSON.stringify(b||{})),[b]);n.useEffect((()=>{C(d||"")}),[d]);const G=n.useCallback((async(e,t)=>(await l.readDataMessages(a,e,s,0,Math.max(3*t,t),void 0,void 0,b)).map((e=>p(e,a,v,U,V,W))).filter((t=>!e||0===V.length||t.selection.searchText.toLocaleLowerCase().includes(e.toLocaleLowerCase()))).slice(0,t)),[s,b,U,V,W,v,l,a]);n.useEffect((()=>{const e=k.trim();if(f)return;if(!e)return L(!1),T([]),O(-1),K(null),void F(!1);if(e.length<m)return L(!1),T([]),z(!1),O(-1),K(null),void F(!1);if(null!==H.current&&H.current===k)return L(!1),z(!1),void O(-1);let t=!1;const n=window.setTimeout((async()=>{L(!0),K(null),F(!0);try{const n=await G(e,g);if(t)return;T(n),O(n.length>0?0:-1),z(!0)}catch(e){t||(K(e instanceof Error?e.message:"Search failed"),T([]),O(-1),z(!0))}finally{t||L(!1)}}),h);return()=>{t=!0,window.clearTimeout(n)}}),[s,h,f,G,k,m,g,Y,a]),n.useEffect((()=>()=>{null!==_.current&&window.clearTimeout(_.current)}),[]);const Q=e=>{H.current=e.selection.label,C(e.selection.label),z(!1),O(-1),M?.(e.selection.label),N?.(e.selection)},X=A&&(B||!!I||R.length>0||q)?e.jsxs("div",{className:D.panel,style:P,onMouseDown:e=>e.preventDefault(),children:[B?e.jsxs("div",{className:D.statusRow,children:[e.jsx(t.Spinner,{size:"tiny"}),"Searching..."]}):null,!B&&I?e.jsx("div",{className:D.errorRow,children:I}):null,B||I||0!==R.length?null:e.jsx("div",{className:D.statusRow,children:S}),!B&&!I&&R.length>0?e.jsx("div",{className:D.resultsList,children:R.map(((t,n)=>e.jsxs("button",{type:"button",className:`${D.option} ${n===E?D.optionActive:""}`,onMouseDown:e=>e.preventDefault(),onClick:()=>Q(t),children:[e.jsx("span",{className:D.optionLabel,children:t.selection.label}),t.secondaryText?e.jsx("span",{className:D.optionMeta,children:t.secondaryText}):null]},t.selection.id)))}):null]}):null;return e.jsxs("div",{className:D.root,ref:J,children:[e.jsx(t.SearchBox,{size:"large",className:D.searchBox,placeholder:u,value:k,disabled:f,onChange:(e,t)=>{return n=t.value,null!==H.current&&n!==H.current&&(H.current=null),C(n),void M?.(n);var n},onFocus:()=>{if(null!==_.current&&(window.clearTimeout(_.current),_.current=null),J.current){const e=J.current.getBoundingClientRect();$({top:e.bottom+4,left:e.left,width:e.width})}const e=k.trim();if(e.length>=m)(R.length>0||B||I||q)&&z(!0);else{if(!(e||q||f)){let e=!1;return L(!0),z(!0),G("",10).then((t=>{e||(T(t),O(-1),F(!0))})).catch((()=>{e||T([])})).finally((()=>{e||L(!1)})),()=>{e=!0}}if(!e&&q)return void z(!0)}!j||k.trim()||f||(async()=>{L(!0),K(null),F(!0),z(!0);try{const e=(await l.readDataMessages(a,"",s,0,g,void 0,void 0,b)).map((e=>p(e,a,v,U,V,W))).slice(0,g);T(e),O(e.length>0?0:-1)}catch(e){K(e instanceof Error?e.message:"Search failed"),T([]),O(-1)}finally{L(!1)}})()},onBlur:()=>{_.current=window.setTimeout((()=>{z(!1)}),120)},onKeyDown:e=>{if(A&&0!==R.length)return"ArrowDown"===e.key?(e.preventDefault(),void O((e=>(e+1)%R.length))):"ArrowUp"===e.key?(e.preventDefault(),void O((e=>e<=0?R.length-1:e-1))):"Enter"===e.key&&E>=0?(e.preventDefault(),void Q(R[E])):void("Escape"===e.key&&(e.preventDefault(),z(!1),O(-1)));"ArrowDown"===e.key&&k.trim().length>=m&&z(!0)}}),X&&"undefined"!=typeof document?o.createPortal(X,document.body):null]})};
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,UAAU,KAAK;IACZ,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,KAAK;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAED,cAAM,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;gBACpC,KAAK,EAAE,KAAK;IAQxB,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAKpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAM3D,MAAM,IAAI,SAAS;CAqCrB;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGxD,UAAU,KAAK;IACZ,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,UAAU,KAAK;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAED,cAAM,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;gBACpC,KAAK,EAAE,KAAK;IAQxB,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAKpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAoB3D,MAAM,IAAI,SAAS;CAqCrB;AAED,eAAe,aAAa,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react/jsx-runtime"),e=require("react");class o extends e.Component{constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,e){console.error("Error caught by ErrorBoundary:",r),console.error("Component stack:",e.componentStack)}render(){return this.state.hasError?this.props.fallback||r.jsxs("div",{style:{padding:"20px",margin:"20px",border:"1px solid #f5c2c7",borderRadius:"5px",backgroundColor:"#f8d7da",color:"#842029"},children:[r.jsx("h2",{children:"Something went wrong"}),r.jsx("p",{children:"The application encountered an error. Please try refreshing the page."}),r.jsxs("details",{style:{whiteSpace:"pre-wrap",margin:"10px 0"},children:[r.jsx("summary",{children:"Error Details"}),this.state.error?.toString()]}),r.jsx("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",backgroundColor:"#0d6efd",color:"white",border:"none",borderRadius:"4px",cursor:"pointer"},children:"Refresh Page"})]}):this.props.children}}exports.default=o;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react/jsx-runtime"),e=require("react"),o=require("../utils/telemetry.js");class t extends e.Component{constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,e){console.error("Error caught by ErrorBoundary:",r),console.error("Component stack:",e.componentStack);try{o.track({type:"error",name:"react_error_boundary",ok:!1,error:`${r.name}: ${r.message}`,page:"undefined"!=typeof window?window.location.hash.replace(/^#/,"").split("?")[0]:void 0})}catch{}}render(){return this.state.hasError?this.props.fallback||r.jsxs("div",{style:{padding:"20px",margin:"20px",border:"1px solid #f5c2c7",borderRadius:"5px",backgroundColor:"#f8d7da",color:"#842029"},children:[r.jsx("h2",{children:"Something went wrong"}),r.jsx("p",{children:"The application encountered an error. Please try refreshing the page."}),r.jsxs("details",{style:{whiteSpace:"pre-wrap",margin:"10px 0"},children:[r.jsx("summary",{children:"Error Details"}),this.state.error?.toString()]}),r.jsx("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",backgroundColor:"#0d6efd",color:"white",border:"none",borderRadius:"4px",cursor:"pointer"},children:"Refresh Page"})]}):this.props.children}}exports.default=t;
@@ -1,4 +1,6 @@
1
1
  import React from "react";
2
+ import { CodicentService } from "../services/codicent";
3
+ import { DataMessagePickerSelection } from "./DataMessagePicker";
2
4
  /** Action configuration for a column, similar to app button actions */
3
5
  export interface ColumnAction {
4
6
  /** Icon component to display (e.g., from @fluentui/react-icons). Pass the component itself, not a string name. */
@@ -16,9 +18,34 @@ export interface ColumnDefinition {
16
18
  hidden?: boolean;
17
19
  hideOnMobile?: boolean;
18
20
  maxWidth?: number;
19
- type?: "file" | "checkbox" | "textarea" | "enum" | "combobox" | "thumbnail" | undefined;
21
+ type?: "file" | "checkbox" | "textarea" | "enum" | "combobox" | "reference" | "thumbnail" | undefined;
20
22
  /** Number of rows for textarea type (default: 3) */
21
23
  rows?: number;
24
+ /**
25
+ * For `type: "reference"` — the data-message tag of the list this column links to (e.g. "sunhero-project").
26
+ * Renders a {@link DataMessagePicker} that searches that list and stores a stable reference to the
27
+ * picked entity. Requires the ListView/ListPage to be given a `service`.
28
+ */
29
+ referenceTag?: string;
30
+ /** Fields on the referenced entity used to build its display label (e.g. ["project_name", "name"]). */
31
+ referenceDisplayKeys?: string[];
32
+ /** Fields on the referenced entity to search against (defaults to referenceDisplayKeys). */
33
+ referenceSearchKeys?: string[];
34
+ /** Static server-side dataFilters always applied when searching the referenced list. */
35
+ referenceFilters?: Record<string, string>;
36
+ /**
37
+ * Cascading: the key of another column on the SAME row whose stored value filters this picker.
38
+ * Combined with {@link referenceCascadeFilterField} to build a dataFilter (e.g. Projekt cascades
39
+ * from the row's `installer` reference so only that installer's projects are offered).
40
+ */
41
+ referenceCascadeFromKey?: string;
42
+ /** The field on the referenced (target) list to match the cascade value against. */
43
+ referenceCascadeFilterField?: string;
44
+ /**
45
+ * Companion field that caches the picked entity's display label so the grid renders without an
46
+ * async id→name lookup. Defaults to `"{key}_label"`. The reference id itself is stored in `key`.
47
+ */
48
+ referenceLabelKey?: string;
22
49
  /** Options for enum type columns (static, small lists) */
23
50
  enumOptions?: string[];
24
51
  /** Async loader for combobox options (e.g. 15k+ customers). Receives the current search text, returns matching options. */
@@ -52,11 +79,37 @@ export interface ListViewProps {
52
79
  onDelete?: (item: Record<string, unknown>, index: number) => void;
53
80
  onToggleCheckbox?: (item: Record<string, unknown>, key: string | string[], newValue: boolean, index: number) => void;
54
81
  onEnumChange?: (item: Record<string, unknown>, key: string | string[], newValue: string, index: number) => void;
82
+ onValueChange?: (item: Record<string, unknown>, key: string | string[], newValue: string, index: number) => void;
83
+ /** Fired when a `type: "reference"` cell picks an entity. Receives the full picker selection. */
84
+ onReferenceChange?: (item: Record<string, unknown>, key: string | string[], selection: DataMessagePickerSelection, index: number) => void;
85
+ /** Required to render `type: "reference"` columns (used by the embedded DataMessagePicker to search). */
86
+ service?: CodicentService;
55
87
  onFilteredDataChange?: (filteredData: Record<string, unknown>[]) => void;
88
+ /** Fired when column filters become active/inactive. Lets the parent load the full dataset so client-side filters cover all rows. */
89
+ onActiveFiltersChange?: (hasActiveFilters: boolean) => void;
56
90
  /** Callback to compute a CSS background color for an entire row. Takes precedence over column colorScope:"row". */
57
91
  rowColor?: (row: Record<string, unknown>) => string | undefined;
58
92
  /** Reduces row height to 36px and cell padding for a denser, Excel-like view. Activated via ?compact in the URL. */
59
93
  compact?: boolean;
94
+ /**
95
+ * Optional callback invoked when the user picks files for an empty `type: "file"` cell.
96
+ * When provided, the empty-file placeholder turns into a small "Bifoga" button (with a
97
+ * hidden `<input type="file" />`) instead of a static em-dash. The parent decides what
98
+ * "attach" means for the entity (upload + post child message, etc.). The Promise lets
99
+ * callers show their own progress UI before resolving.
100
+ */
101
+ onAttachFile?: (rowData: Record<string, unknown>, files: File[]) => void | Promise<void>;
102
+ /** When true, shows a leading checkbox column and emits selection changes via onSelectionChange. */
103
+ selectable?: boolean;
104
+ /** Currently selected row keys (originalMessageId / _id). Set externally; ListView is uncontrolled-ish — just renders. */
105
+ selectedRowKeys?: Set<string>;
106
+ /** Fired when the user toggles a single row. */
107
+ onToggleRow?: (rowKey: string, row: Record<string, unknown>) => void;
108
+ /** Fired when the user toggles the header checkbox; receives the currently visible (post-filter) rows. */
109
+ onToggleAll?: (rows: Record<string, unknown>[]) => void;
110
+ /** Raw-data indices (matching `_index` / actualIndex) of rows with an in-flight inline-cell save.
111
+ * Editable controls on these rows are disabled and show a spinner; values revert on failure. */
112
+ savingRows?: Set<number>;
60
113
  }
61
114
  export declare const ListView: React.FC<ListViewProps>;
62
115
  declare const _default: React.NamedExoticComponent<ListViewProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../src/components/ListView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("@fluentui/react-components"),r=require("@fluentui/react-icons"),o=require("../services/codicent.js"),i=require("../hooks/useLocalization.js");const l=n.makeStyles({container:{width:"100%",overflowX:"auto",userSelect:"text"},table:{width:"100%",borderCollapse:"collapse",backgroundColor:"#ffffff",fontSize:"14px",tableLayout:"fixed",userSelect:"text"},th:{textAlign:"left",padding:"12px 8px",borderBottom:"2px solid #e0e0e0",fontWeight:"600",backgroundColor:"#f5f5f5",position:"sticky",top:0,zIndex:1,cursor:"pointer",userSelect:"none","&:hover":{backgroundColor:"#e8e8e8"}},td:{padding:"12px 8px",borderBottom:"1px solid #e0e0e0",verticalAlign:"top",wordWrap:"break-word",overflow:"hidden",userSelect:"text"},tdTruncated:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap","@media (hover: none)":{cursor:"pointer"}},tr:{height:"57px","&:hover":{backgroundColor:"#f9f9f9"}},emptyState:{padding:"20px",textAlign:"center",color:"#666"},sortIndicator:{marginLeft:"4px",fontSize:"10px"},hideOnMobile:{"@media (max-width: 768px)":{display:"none"}},dialogContent:{wordWrap:"break-word",whiteSpace:"pre-wrap",maxHeight:"60vh",overflowY:"auto"},thumbnail:{maxWidth:"50px",maxHeight:"50px",objectFit:"cover"},tooltip:{maxWidth:"600px",whiteSpace:"normal",wordWrap:"break-word"},editButton:{minWidth:"auto",padding:"4px 8px"},actionsColumn:{width:"100px",textAlign:"center"},filterInput:{width:"100%",padding:"4px 8px",fontSize:"14px",border:"1px solid #e0e0e0",borderRadius:"4px",paddingRight:"28px"},filterWrapper:{position:"relative"},clearFilterButton:{position:"absolute",right:"6px",top:"50%",transform:"translateY(-50%)",minWidth:"auto",height:"20px",padding:"0 6px",lineHeight:"18px"},filterToolbar:{display:"flex",justifyContent:"flex-end",padding:"8px",gap:"8px"},cellWithAction:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"4px"},actionIcon:{minWidth:"auto",padding:"2px",marginLeft:"4px",flexShrink:0,cursor:"pointer",opacity:.7,"&:hover":{opacity:1}},thumbnailRow:{display:"flex",gap:"4px",flexWrap:"wrap"},cellText:{flex:1,overflow:"hidden",textOverflow:"ellipsis"},badge:{borderRadius:"12px",padding:"2px 8px",fontSize:"12px",fontWeight:"600",display:"inline-block",whiteSpace:"nowrap"},tdCompact:{paddingTop:"4px",paddingBottom:"4px"}}),a=e=>{if(/^\d{4}-\d{2}-\d{2}/.test(e)){const t=new Date(e);if(!isNaN(t.getTime()))return t.getTime()}const t=e.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})/);if(t){const e=parseInt(t[1],10),n=parseInt(t[2],10)-1,r=parseInt(t[3],10),o=new Date(r,n,e);if(o.getFullYear()===r&&o.getMonth()===n&&o.getDate()===e)return o.getTime()}return null},s=e=>{const t=e.trim().replace(/[\s\u00a0]/g,"");if(""===t||"-"===t)return null;const n=(t.match(/,/g)||[]).length,r=(t.match(/\./g)||[]).length;let o;o=1===n&&0===r?/,\d{1,2}$/.test(t)?t.replace(/,\d+$/,"").replace(/[^0-9-]/g,""):t.replace(/,/g,""):1===r&&0===n?/\.\d{1,2}$/.test(t)?t.replace(/\.\d+$/,"").replace(/[^0-9-]/g,""):t.replace(/\./g,""):t.replace(/[,.]/g,"");const i=Number(o);return""!==o&&isFinite(i)?i:null},c=(e,t)=>{if("string"==typeof t)return e[t];for(const n of t)if(void 0!==e[n])return e[n]},d=new Set,p=n.makeStyles({img:{maxWidth:"40px",maxHeight:"40px",objectFit:"cover",borderRadius:"3px",display:"block"},fileIcon:{width:"24px",height:"24px",verticalAlign:"middle"}}),u=({fileId:n})=>{const[i,l]=t.useState((()=>!d.has(n))),a=p();return e.jsx("a",{href:o.CodicentService.getFileUrl(n),target:"_blank",rel:"noopener noreferrer",children:i?e.jsx("img",{src:o.CodicentService.getImageUrl(n,40),alt:"",className:a.img,onError:()=>{d.add(n),l(!1)}}):e.jsx(r.Attach24Regular,{className:a.fileIcon})})},h=({value:r,options:o,optionsLoader:i,minChars:l=2,maxResults:a=50,columnKey:s,item:c,actualIndex:d,onEnumChange:p,label:u,t:h})=>{const[x,m]=t.useState(r),[f,g]=t.useState([]),[y,j]=t.useState(!1),b=t.useRef(null);t.useEffect((()=>{m(r)}),[r]),t.useEffect((()=>{if(i){if(!(x.length<l))return b.current&&clearTimeout(b.current),b.current=setTimeout((async()=>{j(!0);try{const e=await i(x);g(e.slice(0,a))}finally{j(!1)}}),250),()=>{b.current&&clearTimeout(b.current)};g([])}}),[x,i,l,a]);const C=t.useMemo((()=>(o??[]).filter((e=>e.toLowerCase().includes(x.toLowerCase()))).slice(0,a)),[o,x,a]),v=i?f:C;return e.jsx(n.Combobox,{value:x,freeform:!0,"aria-label":u,placeholder:y?h("Loading..."):i&&x.length<l?h(`Type ${l}+ characters to search...`):void 0,onChange:e=>m(e.target.value),onOptionSelect:(e,t)=>{t.optionValue&&(m(t.optionValue),p&&p(c,s,t.optionValue,d))},onBlur:()=>{p&&p(c,s,x,d)},style:{width:"100%"},children:v.map((t=>e.jsx(n.Option,{value:t,children:t},t)))})},x=({data:d,columns:p,canEdit:x,onEdit:m,onDelete:f,onToggleCheckbox:g,onEnumChange:y,onFilteredDataChange:j,rowColor:b,compact:C})=>{const v=l(),{visibleColumns:w,defaultSortIndex:S,defaultSortDirection:k}=t.useMemo((()=>{const e=d&&d.length>0?Array.from(new Set(d.flatMap((e=>Object.keys(e))))):[],t=(p||e.map((e=>({key:e})))).filter((e=>!e.hidden)),n=t.findIndex((e=>e.defaultSort));return{visibleColumns:t,defaultSortIndex:n,defaultSortDirection:n>=0&&t[n].defaultSort||null}}),[d,p]),[N,W]=t.useState(S>=0?S:null),[M,$]=t.useState(k),[I,O]=t.useState(!1),[A,T]=t.useState({title:"",text:""}),[L,F]=t.useState({}),[D,B]=t.useState(0),R=t.useRef(null),{t:E}=i.default(),q=C?36:57;t.useEffect((()=>()=>{null!==R.current&&cancelAnimationFrame(R.current)}),[]);const z=e=>e.title?E(e.title):Array.isArray(e.key)?e.key[0]:e.key,_=e=>{const t=[];return e.hideOnMobile&&t.push(v.hideOnMobile),t.join(" ")},H=(e,t)=>{F((n=>{const r={...n};return""===t.trim()?delete r[e]:r[e]=t,r}))},P=e=>null==e||"string"==typeof e&&e.startsWith("[")&&e.endsWith("]")?"":"object"==typeof e?JSON.stringify(e):String(e),V=t.useMemo((()=>{const e=[...d];if(null!==N&&M){const t=w[N];e.sort(((e,n)=>{const r=c(e,t.key),o=c(n,t.key);if(null==r)return 1;if(null==o)return-1;let i=0;if("string"==typeof r&&"string"==typeof o){const e=a(r),t=a(o);if(null!==e&&null!==t)i=e-t;else{const e=s(r),t=s(o);i=null!==e&&null!==t?e-t:r.localeCompare(o)}}else if("number"==typeof r&&"number"==typeof o)i=r-o;else{const e=s(String(r)),t=s(String(o));i=null!==e&&null!==t?e-t:String(r).localeCompare(String(o))}return"asc"===M?i:-i}))}return e}),[d,N,M,w]),Y=t.useMemo((()=>V.filter((e=>{for(const[t,n]of Object.entries(L)){const r=parseInt(t),o=w[r],i=c(e,o.key),l=P(i).toLowerCase(),a=n.toLowerCase();if(!("enum"===o.type&&o.enumOptions?l===a:l.includes(a)))return!1}return!0}))),[V,L,w]);t.useEffect((()=>{j&&j(Y)}),[Y,j]);const U="undefined"!=typeof window?window.innerHeight-250:600,K=Math.max(0,Math.floor(D/q)-5),J=Math.min(Y.length,Math.ceil((D+U)/q)+5),X=Y.slice(K,J),G=Y.length*q,Q=K*q,Z=(e,t)=>{if(void 0!==e.id)return String(e.id);if(void 0!==e._id)return String(e._id);if(void 0!==e.originalMessageId)return String(e.originalMessageId);return`row-${t}-${(e=>{let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t)})(w.slice(0,3).map((t=>String(c(e,t.key)??""))).join("-"))}`};return d&&0!==d.length?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:v.container,onScroll:e=>{const t=e.currentTarget.scrollTop;null!==R.current&&cancelAnimationFrame(R.current),R.current=requestAnimationFrame((()=>{B(t),R.current=null}))},style:{maxHeight:"calc(100vh - 200px)",overflowY:"auto"},children:e.jsxs("table",{className:v.table,children:[e.jsxs("thead",{children:[e.jsxs("tr",{children:[w.map(((t,n)=>{const r=t.maxWidth?{width:`${t.maxWidth}px`,maxWidth:`${t.maxWidth}px`}:{};return e.jsxs("th",{className:`${v.th} ${_(t)}`.trim(),style:r,onClick:()=>(e=>{N===e?"asc"===M?$("desc"):"desc"===M&&(W(null),$(null)):(W(e),$("asc"))})(n),children:[z(t),N===n&&e.jsx("span",{className:v.sortIndicator,children:"asc"===M?"▲":"▼"})]},n)})),x&&e.jsx("th",{className:`${v.th} ${v.actionsColumn}`,style:{width:"100px"},children:E("Actions")})]}),e.jsxs("tr",{children:[w.map(((t,r)=>{const o=t.maxWidth?{width:`${t.maxWidth}px`,maxWidth:`${t.maxWidth}px`}:{};return e.jsx("th",{className:_(t),style:o,children:t.filterable&&e.jsx("div",{className:v.filterWrapper,children:"enum"===t.type&&t.enumOptions?e.jsxs(n.Select,{className:v.filterInput,value:L[r]||"",onChange:(e,t)=>H(r,t.value),onClick:e=>e.stopPropagation(),children:[e.jsx("option",{value:"",children:E("All")}),t.enumOptions.filter((e=>""!==e)).map((t=>e.jsx("option",{value:t,children:E(t)},t)))]}):e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",className:v.filterInput,placeholder:E("Filter")+"...",value:L[r]||"",onChange:e=>H(r,e.target.value),onClick:e=>e.stopPropagation()}),(L[r]||"").length>0&&e.jsx(n.Button,{appearance:"subtle",className:v.clearFilterButton,onClick:e=>{e.stopPropagation(),(e=>{F((t=>{const n={...t};return delete n[e],n}))})(r)},children:"×"})]})})},r)})),x&&e.jsx("th",{className:v.actionsColumn})]})]}),e.jsxs("tbody",{children:[K>0&&e.jsx("tr",{style:{height:`${Q}px`},children:e.jsx("td",{colSpan:w.length+(x?1:0),style:{padding:0,border:"none"}})}),X.map(((t,i)=>{const l=t._index,a="number"==typeof l?l:K+i;let s;if(b&&(s=b(t)),!s)for(const e of w)if("row"===e.colorScope&&e.colorMap){const n=e.format?e.format(c(t,e.key)):P(c(t,e.key));if(s=e.colorMap[n],s)break}return e.jsxs("tr",{className:v.tr,style:{height:`${q}px`,...s?{backgroundColor:s}:{}},children:[w.map(((r,i)=>{const l=c(t,r.key),s=r.format?r.format(l):P(l),d=r.maxWidth?`${v.td} ${v.tdTruncated} ${C?v.tdCompact:""} ${_(r)}`.trim():`${v.td} ${C?v.tdCompact:""} ${_(r)}`.trim(),p=r.colorFn?r.colorFn(l,t):r.colorMap&&"row"!==r.colorScope?r.colorMap[s]:void 0,x=()=>{window.matchMedia("(hover: hover)").matches||r.maxWidth&&s.length>0&&(T({title:z(r),text:s}),O(!0))};if("thumbnail"===r.type){const t=Array.isArray(l)?l:[];return e.jsx("td",{className:d,children:e.jsx("div",{className:v.thumbnailRow,children:t.map((t=>e.jsx(u,{fileId:t},t)))})},i)}if("file"===r.type&&s)return e.jsx("td",{className:d,onClick:x,children:e.jsx("a",{href:o.CodicentService.getFileUrl(s),target:"_blank",rel:"noopener noreferrer",children:E("Download")})},i);if("checkbox"===r.type){const o=!0===l||"true"===l||"yes"===l||"1"===l;return e.jsx("td",{className:d,children:e.jsx(n.Checkbox,{checked:o,onChange:(e,n)=>{g&&g(t,r.key,!0===n.checked,a)}})},i)}if("enum"===r.type&&r.enumOptions&&r.editable)return e.jsx("td",{className:d,children:e.jsxs(n.Select,{value:s,"aria-label":r.title?E(r.title):Array.isArray(r.key)?r.key[0]:r.key,onChange:(e,n)=>{y&&y(t,r.key,n.value,a)},style:{width:"100%"},children:[!r.enumOptions.includes(s)&&s&&e.jsx("option",{value:s,children:s}),r.enumOptions.map((t=>e.jsx("option",{value:t,children:E(t)},t)))]})},i);if("combobox"===r.type&&r.editable&&(r.enumOptions||r.enumOptionsLoader))return e.jsx("td",{className:d,children:e.jsx(h,{value:s,options:r.enumOptions,optionsLoader:r.enumOptionsLoader,minChars:r.enumOptionsLoaderMinChars,maxResults:r.enumOptionsLoaderMaxResults,columnKey:r.key,item:t,actualIndex:a,onEnumChange:y,label:r.title?E(r.title):Array.isArray(r.key)?r.key[0]:r.key,t:E})},i);const m=()=>{if(r.badge&&r.colorMap){const t=r.colorMap[s];return e.jsx("span",{className:v.badge,style:t?{backgroundColor:t}:{backgroundColor:"#e0e0e0"},children:s})}return r.maxWidth&&s.length>0?e.jsx(n.Tooltip,{content:{children:s,style:{maxWidth:"600px",whiteSpace:"normal"}},relationship:"description",children:e.jsx("span",{children:s})}):s},f=()=>{if(!r.action)return null;const o=r.action,i=r.action.icon,l=e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(i,{}),className:v.actionIcon,onClick:e=>{e.stopPropagation(),o.onClick(t)},size:"small"});return o.tooltip?e.jsx(n.Tooltip,{content:E(o.tooltip),relationship:"label",children:l}):l};return e.jsx("td",{className:d,style:p?{backgroundColor:p}:void 0,onClick:x,children:r.action?e.jsxs("div",{className:v.cellWithAction,children:[r.action.iconLeft&&f(),e.jsx("span",{className:v.cellText,children:m()}),!r.action.iconLeft&&f()]}):m()},i)})),x&&(m||f)&&e.jsx("td",{className:`${v.td} ${v.actionsColumn}`,children:e.jsxs("div",{style:{display:"flex",gap:"4px",justifyContent:"center"},children:[m&&e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(r.Edit24Regular,{}),className:v.editButton,onClick:()=>m(t,a),title:E("Edit")}),f&&e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(r.Delete24Regular,{}),className:v.editButton,onClick:()=>f(t,a),title:E("Delete")})]})})]},Z(t,a))})),J<Y.length&&e.jsx("tr",{style:{height:G-Q-X.length*q+"px"},children:e.jsx("td",{colSpan:w.length+(x?1:0),style:{padding:0,border:"none"}})})]})]})}),e.jsx(n.Dialog,{open:I,onOpenChange:(e,t)=>O(t.open),children:e.jsx(n.DialogSurface,{children:e.jsxs(n.DialogBody,{children:[e.jsx(n.DialogTitle,{children:A.title}),e.jsx(n.DialogContent,{className:v.dialogContent,children:A.text})]})})})]}):e.jsx("div",{className:v.emptyState,children:E("No data to display")})};var m=t.memo(x);exports.ListView=x,exports.default=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("@fluentui/react-components"),r=require("@fluentui/react-icons"),a=require("../services/codicent.js"),i=require("../hooks/useLocalization.js"),l=require("./DataMessagePicker.js");const o=n.makeStyles({container:{width:"100%",overflowX:"auto",userSelect:"text"},table:{width:"100%",borderCollapse:"collapse",backgroundColor:"#ffffff",fontSize:"14px",tableLayout:"fixed",userSelect:"text"},th:{textAlign:"left",padding:"12px 8px",borderBottom:"2px solid #e0e0e0",fontWeight:"600",backgroundColor:"#f5f5f5",position:"sticky",top:0,zIndex:1,cursor:"pointer",userSelect:"none","&:hover":{backgroundColor:"#e8e8e8"}},td:{padding:"12px 8px",borderBottom:"1px solid #e0e0e0",verticalAlign:"top",wordWrap:"break-word",overflow:"hidden",userSelect:"text"},tdTruncated:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap","@media (hover: none)":{cursor:"pointer"}},tdWrap:{whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"hidden",maxHeight:"6.5em",lineHeight:"1.4"},tr:{height:"57px","&:hover":{backgroundColor:"#f9f9f9"}},emptyState:{padding:"20px",textAlign:"center",color:"#666"},sortIndicator:{marginLeft:"4px",fontSize:"10px"},hideOnMobile:{"@media (max-width: 768px)":{display:"none"}},dialogContent:{wordWrap:"break-word",whiteSpace:"pre-wrap",maxHeight:"60vh",overflowY:"auto"},thumbnail:{maxWidth:"50px",maxHeight:"50px",objectFit:"cover"},tooltip:{maxWidth:"600px",whiteSpace:"normal",wordWrap:"break-word"},editButton:{minWidth:"auto",padding:"4px 8px"},actionsColumn:{width:"100px",textAlign:"center"},filterInput:{width:"100%",padding:"4px 8px",fontSize:"14px",border:"1px solid #e0e0e0",borderRadius:"4px",paddingRight:"28px"},filterSelect:{width:"100%",padding:"4px 8px",paddingRight:"8px",fontSize:"14px",border:"1px solid #c8c6c4",borderRadius:"4px",backgroundColor:"#fff",cursor:"pointer"},filterWrapper:{position:"relative"},clearFilterButton:{position:"absolute",right:"6px",top:"50%",transform:"translateY(-50%)",minWidth:"auto",height:"20px",padding:"0 6px",lineHeight:"18px"},filterToolbar:{display:"flex",justifyContent:"flex-end",padding:"8px",gap:"8px"},cellWithAction:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"4px"},actionIcon:{minWidth:"auto",padding:"2px",marginLeft:"4px",flexShrink:0,cursor:"pointer",opacity:.7,"&:hover":{opacity:1}},thumbnailRow:{display:"flex",gap:"4px",flexWrap:"wrap"},cellText:{flex:1,overflow:"hidden",textOverflow:"ellipsis"},badge:{borderRadius:"12px",padding:"2px 8px",fontSize:"12px",fontWeight:"600",display:"inline-block",whiteSpace:"nowrap"},tdCompact:{paddingTop:"4px",paddingBottom:"4px"}}),s=(e,t,n)=>{if(t<1||t>12||n<1||n>31)return null;const r=new Date(e,t-1,n);return r.getFullYear()===e&&r.getMonth()===t-1&&r.getDate()===n?r.getTime():null},c=e=>{const t=e.trim();if(!t)return null;if(/^\d{4}-\d{2}-\d{2}/.test(t)){const e=new Date(t);if(!isNaN(e.getTime()))return e.getTime()}let n=t.match(/^(\d{4})[/.](\d{1,2})[/.](\d{1,2})/);if(n){const e=s(parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10));if(null!==e)return e}if(n=t.match(/^(\d{1,2})[/.-](\d{1,2})[/.-](\d{4})/),n){const e=s(parseInt(n[3],10),parseInt(n[2],10),parseInt(n[1],10));if(null!==e)return e}if(n=t.match(/^(\d{4})(\d{2})(\d{2})$/),n){const e=s(parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10));if(null!==e)return e}return null},d=e=>{const t=e.trim().replace(/[\s\u00a0]/g,"");if(""===t||"-"===t)return null;const n=(t.match(/,/g)||[]).length,r=(t.match(/\./g)||[]).length;let a;a=1===n&&0===r?/,\d{1,2}$/.test(t)?t.replace(/,\d+$/,"").replace(/[^0-9-]/g,""):t.replace(/,/g,""):1===r&&0===n?/\.\d{1,2}$/.test(t)?t.replace(/\.\d+$/,"").replace(/[^0-9-]/g,""):t.replace(/\./g,""):t.replace(/[,.]/g,"");const i=Number(a);return""!==a&&isFinite(i)?i:null},p=(e,t)=>{if("string"==typeof t)return e[t];for(const n of t)if(void 0!==e[n])return e[n]},u=e=>e.referenceLabelKey??`${Array.isArray(e.key)?e.key[0]:e.key}_label`,h=(e,t)=>{if("reference"===t.type){const n=p(e,u(t));if(null!=n&&""!==String(n))return n}return p(e,t.key)},x=new Set,m=n.makeStyles({img:{maxWidth:"40px",maxHeight:"40px",objectFit:"cover",borderRadius:"3px",display:"block"},fileIcon:{width:"24px",height:"24px",verticalAlign:"middle"}}),f=({fileId:n})=>{const[i,l]=t.useState((()=>!x.has(n))),o=m();return e.jsx("a",{href:a.CodicentService.getFileUrl(n),target:"_blank",rel:"noopener noreferrer",children:i?e.jsx("img",{src:a.CodicentService.getImageUrl(n,40),alt:"",className:o.img,onError:()=>{x.add(n),l(!1)}}):e.jsx(r.Attach24Regular,{className:o.fileIcon})})},g=({value:r,options:a,optionsLoader:i,minChars:l=2,maxResults:o=50,columnKey:s,item:c,actualIndex:d,onEnumChange:p,label:u,t:h,isSaving:x})=>{const[m,f]=t.useState(r),[g,y]=t.useState([]),[b,j]=t.useState(!1),C=t.useRef(null);t.useEffect((()=>{f(r)}),[r]),t.useEffect((()=>{x||f(r)}),[x,r]),t.useEffect((()=>{if(i){if(!(m.length<l))return C.current&&clearTimeout(C.current),C.current=setTimeout((async()=>{j(!0);try{const e=await i(m);y(e.slice(0,o))}finally{j(!1)}}),250),()=>{C.current&&clearTimeout(C.current)};y([])}}),[m,i,l,o]);const v=t.useMemo((()=>(a??[]).filter((e=>e.toLowerCase().includes(m.toLowerCase()))).slice(0,o)),[a,m,o]),k=i?g:v;return e.jsx(n.Combobox,{value:m,freeform:!0,disabled:x,"aria-label":u,placeholder:x?h("Sparar..."):b?h("Loading..."):i&&m.length<l?h(`Type ${l}+ characters to search...`):void 0,onChange:e=>f(e.target.value),onOptionSelect:(e,t)=>{t.optionValue&&(f(t.optionValue),p&&p(c,s,t.optionValue,d))},onBlur:()=>{p&&p(c,s,m,d)},style:{width:"100%"},children:k.map((t=>e.jsx(n.Option,{value:t,children:t},t)))})},y=({value:r,columnKey:a,item:i,actualIndex:l,multiline:o,rows:s,onValueChange:c,isSaving:d})=>{const[p,u]=t.useState(r);t.useEffect((()=>{u(r)}),[r]),t.useEffect((()=>{d||u(r)}),[d,r]);const h=()=>{c&&p!==r&&c(i,a,p,l)};return o?e.jsx(n.Textarea,{value:p,rows:s??3,resize:"vertical",disabled:d,onChange:e=>u(e.target.value),onBlur:h}):e.jsx(n.Input,{value:p,disabled:d,contentAfter:d?e.jsx(n.Spinner,{size:"tiny"}):void 0,onChange:e=>u(e.target.value),onBlur:h,onKeyDown:e=>{"Enter"===e.key&&e.currentTarget.blur()}})},b=({data:s,columns:x,canEdit:m,onEdit:b,onDelete:j,onToggleCheckbox:C,onEnumChange:v,onValueChange:k,onReferenceChange:w,service:S,onFilteredDataChange:N,onActiveFiltersChange:I,rowColor:W,compact:A,onAttachFile:$,selectable:M,selectedRowKeys:F,onToggleRow:O,onToggleAll:T,savingRows:R})=>{const D=o(),{visibleColumns:L,defaultSortIndex:B,defaultSortDirection:E}=t.useMemo((()=>{const e=s&&s.length>0?Array.from(new Set(s.flatMap((e=>Object.keys(e))))):[],t=(x||e.map((e=>({key:e})))).filter((e=>!e.hidden)),n=t.findIndex((e=>e.defaultSort));return{visibleColumns:t,defaultSortIndex:n,defaultSortDirection:n>=0&&t[n].defaultSort||null}}),[s,x]),[K,z]=t.useState(B>=0?B:null),[P,_]=t.useState(E),[q,H]=t.useState(!1),[V,Y]=t.useState({title:"",text:""}),[U,J]=t.useState({}),[X,G]=t.useState(0),Q=t.useRef(null),{t:Z}=i.default(),ee=A?36:57;t.useEffect((()=>()=>{null!==Q.current&&cancelAnimationFrame(Q.current)}),[]);const te=e=>e.title?Z(e.title):Array.isArray(e.key)?e.key[0]:e.key,ne=e=>{const t=[];return e.hideOnMobile&&t.push(D.hideOnMobile),t.join(" ")},re=(e,t)=>{J((n=>{const r={...n};return""===t.trim()?delete r[e]:r[e]=t,r}))},ae=e=>null==e||"string"==typeof e&&e.startsWith("[")&&e.endsWith("]")?"":"object"==typeof e?JSON.stringify(e):String(e),ie=t.useMemo((()=>{const e=[...s];if(null!==K&&P){const t=L[K];e.sort(((e,n)=>{const r=p(e,t.key),a=p(n,t.key);if(null==r)return 1;if(null==a)return-1;let i=0;if("string"==typeof r&&"string"==typeof a){const e=c(r),t=c(a);if(null!==e&&null!==t)i=e-t;else{const e=d(r),t=d(a);i=null!==e&&null!==t?e-t:r.localeCompare(a)}}else if("number"==typeof r&&"number"==typeof a)i=r-a;else{const e=d(String(r)),t=d(String(a));i=null!==e&&null!==t?e-t:String(r).localeCompare(String(a))}return"asc"===P?i:-i}))}return e}),[s,K,P,L]),le=t.useMemo((()=>ie.filter((e=>{for(const[t,n]of Object.entries(U)){const r=parseInt(t),a=L[r],i=h(e,a),l=ae(i).toLowerCase(),o=n.toLowerCase();if(!("enum"===a.type&&a.enumOptions?l===o:l.includes(o)))return!1}return!0}))),[ie,U,L]);t.useEffect((()=>{N&&N(le)}),[le,N]),t.useEffect((()=>{I&&I(Object.keys(U).length>0)}),[U,I]);const oe="undefined"!=typeof window?window.innerHeight-250:600,se=Math.max(0,Math.floor(X/ee)-5),ce=Math.min(le.length,Math.ceil((X+oe)/ee)+5),de=le.slice(se,ce),pe=le.length*ee,ue=se*ee,he=(e,t)=>{if(void 0!==e.id)return String(e.id);if(void 0!==e._id)return String(e._id);if(void 0!==e.originalMessageId)return String(e.originalMessageId);return`row-${t}-${(e=>{let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return Math.abs(t)})(L.slice(0,3).map((t=>String(p(e,t.key)??""))).join("-"))}`};if(!s||0===s.length)return e.jsx("div",{className:D.emptyState,children:Z("No data to display")});const xe=e=>String(e.originalMessageId??e._id??e.id??""),me=M&&s.length>0&&s.every((e=>F?.has(xe(e)))),fe=M&&!me&&s.some((e=>F?.has(xe(e))));return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:D.container,onScroll:e=>{const t=e.currentTarget.scrollTop;null!==Q.current&&cancelAnimationFrame(Q.current),Q.current=requestAnimationFrame((()=>{G(t),Q.current=null}))},style:{maxHeight:"calc(100vh - 200px)",overflowY:"auto"},children:e.jsxs("table",{className:D.table,children:[e.jsxs("thead",{children:[e.jsxs("tr",{children:[M&&e.jsx("th",{className:D.th,style:{width:"36px"},onClick:e=>e.stopPropagation(),children:e.jsx(n.Checkbox,{checked:!!me||!!fe&&"mixed",onChange:()=>T?.(s)})}),L.map(((t,n)=>{const r=t.maxWidth?{width:`${t.maxWidth}px`,maxWidth:`${t.maxWidth}px`}:{};return e.jsxs("th",{className:`${D.th} ${ne(t)}`.trim(),style:r,onClick:()=>(e=>{K===e?"asc"===P?_("desc"):"desc"===P&&(z(null),_(null)):(z(e),_("asc"))})(n),children:[te(t),K===n&&e.jsx("span",{className:D.sortIndicator,children:"asc"===P?"▲":"▼"})]},n)})),m&&e.jsx("th",{className:`${D.th} ${D.actionsColumn}`,style:{width:"100px"},children:Z("Actions")})]}),e.jsxs("tr",{children:[M&&e.jsx("th",{style:{width:"36px"}}),L.map(((t,r)=>{const a=t.maxWidth?{width:`${t.maxWidth}px`,maxWidth:`${t.maxWidth}px`}:{};return e.jsx("th",{className:ne(t),style:a,children:t.filterable&&e.jsx("div",{className:D.filterWrapper,children:"enum"===t.type&&t.enumOptions?e.jsxs(n.Select,{className:D.filterSelect,value:U[r]||"",onChange:(e,t)=>re(r,t.value),onClick:e=>e.stopPropagation(),children:[e.jsx("option",{value:"",children:Z("All")}),t.enumOptions.filter((e=>""!==e)).map((t=>e.jsx("option",{value:t,children:Z(t)},t)))]}):e.jsxs(e.Fragment,{children:[e.jsx("input",{type:"text",className:D.filterInput,placeholder:Z("Filter")+"...",value:U[r]||"",onChange:e=>re(r,e.target.value),onClick:e=>e.stopPropagation()}),(U[r]||"").length>0&&e.jsx(n.Button,{appearance:"subtle",className:D.clearFilterButton,onClick:e=>{e.stopPropagation(),(e=>{J((t=>{const n={...t};return delete n[e],n}))})(r)},children:"×"})]})})},r)})),m&&e.jsx("th",{className:D.actionsColumn})]})]}),e.jsxs("tbody",{children:[se>0&&e.jsx("tr",{style:{height:`${ue}px`},children:e.jsx("td",{colSpan:L.length+(m?1:0)+(M?1:0),style:{padding:0,border:"none"}})}),de.map(((t,i)=>{const o=t._index,s="number"==typeof o?o:se+i,c=R?.has(s)??!1;let d;if(W&&(d=W(t)),!d)for(const e of L)if("row"===e.colorScope&&e.colorMap){const n=e.format?e.format(p(t,e.key)):ae(p(t,e.key));if(d=e.colorMap[n],d)break}return e.jsxs("tr",{className:D.tr,style:{height:`${ee}px`,...d?{backgroundColor:d}:{}},children:[M&&e.jsx("td",{className:`${D.td} ${A?D.tdCompact:""}`.trim(),style:{width:"36px"},onClick:e=>e.stopPropagation(),children:e.jsx(n.Checkbox,{checked:F?.has(xe(t))??!1,onChange:()=>O?.(xe(t),t)})}),L.map(((r,i)=>{const o=p(t,r.key),d=ae(o);let h=r.format?r.format(o):d;"reference"===r.type&&(h=ae(p(t,u(r)))||h);const x="textarea"===r.type,m=r.maxWidth?`${D.td} ${x?D.tdWrap:D.tdTruncated} ${A?D.tdCompact:""} ${ne(r)}`.trim():`${D.td} ${x?D.tdWrap:""} ${A?D.tdCompact:""} ${ne(r)}`.trim(),b=r.colorFn?r.colorFn(o,t):r.colorMap&&"row"!==r.colorScope?r.colorMap[h]:void 0,j=()=>{window.matchMedia("(hover: hover)").matches||r.maxWidth&&h.length>0&&(Y({title:te(r),text:h}),H(!0))};if("thumbnail"===r.type){const t=Array.isArray(o)?o:[];return e.jsx("td",{className:m,children:e.jsx("div",{className:D.thumbnailRow,children:t.map((t=>e.jsx(f,{fileId:t},t)))})},i)}if("file"===r.type)return h?e.jsx("td",{className:m,onClick:j,children:e.jsx("a",{href:a.CodicentService.getFileUrl(h),target:"_blank",rel:"noopener noreferrer",children:Z("Download")})},i):$?e.jsx("td",{className:m,onClick:e=>e.stopPropagation(),children:e.jsxs("label",{style:{color:"#0078d4",cursor:"pointer",textDecoration:"underline",fontSize:"13px"},title:Z("Attach file"),children:[Z("Attach"),e.jsx("input",{type:"file",style:{display:"none"},onChange:e=>{const n=Array.from(e.target.files||[]);n.length>0&&$(t,n),e.target.value=""}})]})},i):e.jsx("td",{className:m,onClick:j,children:e.jsx("span",{style:{color:"#888"},title:Z("No file attached"),children:"—"})},i);if("checkbox"===r.type){const a=!0===o||"true"===o||"yes"===o||"1"===o;return e.jsx("td",{className:m,children:e.jsx(n.Checkbox,{checked:a,disabled:c,onChange:(e,n)=>{C&&C(t,r.key,!0===n.checked,s)}})},i)}if("enum"===r.type&&r.enumOptions&&r.editable)return e.jsx("td",{className:m,style:b?{backgroundColor:b}:void 0,children:e.jsxs(n.Select,{value:h,disabled:c,"aria-label":r.title?Z(r.title):Array.isArray(r.key)?r.key[0]:r.key,onChange:(e,n)=>{v&&v(t,r.key,n.value,s)},style:{width:"100%",...b?{backgroundColor:b}:{}},children:[!r.enumOptions.includes(h)&&h&&e.jsx("option",{value:h,children:h}),r.enumOptions.map((t=>e.jsx("option",{value:t,children:Z(t)},t)))]})},i);if("reference"===r.type&&r.editable&&r.referenceTag&&S){const n=h,a=r.referenceDisplayKeys??[],o=r.referenceCascadeFromKey?ae(p(t,r.referenceCascadeFromKey)):"",d={...r.referenceFilters??{}};return r.referenceCascadeFilterField&&o&&(d[r.referenceCascadeFilterField]=o),e.jsx("td",{className:m,children:e.jsx(l.default,{service:S,tag:r.referenceTag,value:n,placeholder:r.title?Z(r.title):void 0,displayKeys:a,searchKeys:r.referenceSearchKeys??a,dataFilters:Object.keys(d).length>0?d:void 0,disabled:c,onSelect:e=>w?.(t,r.key,e,s)})},i)}if("combobox"===r.type&&r.editable&&(r.enumOptions||r.enumOptionsLoader))return e.jsx("td",{className:m,children:e.jsx(g,{value:h,options:r.enumOptions,optionsLoader:r.enumOptionsLoader,minChars:r.enumOptionsLoaderMinChars,maxResults:r.enumOptionsLoaderMaxResults,columnKey:r.key,item:t,actualIndex:s,onEnumChange:v,label:r.title?Z(r.title):Array.isArray(r.key)?r.key[0]:r.key,t:Z,isSaving:c})},i);if(r.editable)return e.jsx("td",{className:m,children:e.jsx(y,{value:d,columnKey:r.key,item:t,actualIndex:s,multiline:"textarea"===r.type,rows:r.rows,onValueChange:k,isSaving:c})},i);const N=()=>{if(r.badge&&r.colorMap){const t=r.colorMap[h];return e.jsx("span",{className:D.badge,style:t?{backgroundColor:t}:{backgroundColor:"#e0e0e0"},children:h})}return r.maxWidth&&h.length>0?e.jsx(n.Tooltip,{content:{children:h,style:{maxWidth:"600px",whiteSpace:"normal"}},relationship:"description",children:e.jsx("span",{children:h})}):h},I=()=>{if(!r.action)return null;const a=r.action,i=r.action.icon,l=e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(i,{}),className:D.actionIcon,onClick:e=>{e.stopPropagation(),a.onClick(t)},size:"small"});return a.tooltip?e.jsx(n.Tooltip,{content:Z(a.tooltip),relationship:"label",children:l}):l};return e.jsx("td",{className:m,style:b?{backgroundColor:b}:void 0,onClick:j,children:r.action?e.jsxs("div",{className:D.cellWithAction,children:[r.action.iconLeft&&I(),e.jsx("span",{className:D.cellText,children:N()}),!r.action.iconLeft&&I()]}):N()},i)})),m&&(b||j)&&e.jsx("td",{className:`${D.td} ${D.actionsColumn}`,children:e.jsxs("div",{style:{display:"flex",gap:"4px",justifyContent:"center"},children:[b&&e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(r.Edit24Regular,{}),className:D.editButton,onClick:()=>b(t,s),title:Z("Edit")}),j&&e.jsx(n.Button,{appearance:"subtle",icon:e.jsx(r.Delete24Regular,{}),className:D.editButton,onClick:()=>j(t,s),title:Z("Delete")})]})})]},he(t,s))})),ce<le.length&&e.jsx("tr",{style:{height:pe-ue-de.length*ee+"px"},children:e.jsx("td",{colSpan:L.length+(m?1:0)+(M?1:0),style:{padding:0,border:"none"}})})]})]})}),e.jsx(n.Dialog,{open:q,onOpenChange:(e,t)=>H(t.open),children:e.jsx(n.DialogSurface,{children:e.jsxs(n.DialogBody,{children:[e.jsx(n.DialogTitle,{children:V.title}),e.jsx(n.DialogContent,{className:D.dialogContent,children:V.text})]})})})]})};var j=t.memo(b);exports.ListView=b,exports.default=j;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),i=require("@fluentui/react-components"),t=require("react-router-dom"),s=require("@fluentui/react-icons"),a=require("../services/codicent.js"),o=require("./Markdown.js");require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js");var n=require("./Text.js");require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js");var l=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var u=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("exceljs"),require("../pages/AppFrame.js"),require("../pages/Canvas.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Menu.js"),require("../pages/Log.js"),require("../pages/Login.js"),require("../pages/Home.js"),require("../pages/ListPage.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("./Content.js"),require("./Page.js"),require("../pages/QrScan.js");var d=require("../hooks/useLocalization.js"),c=require("./FileThumbnail.js");require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./DataMessagePicker.js"),require("./HtmlView.js"),require("./Footer.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js"),require("./audit/AuditCircularProgress.js"),require("./audit/AuditHorizontalProgress.js"),require("./audit/AuditRoleIndicator.js"),require("./audit/AuditUnitSwitcher.js"),require("./audit/AuditAnswerCell.js"),require("./audit/AuditSearchBar.js"),require("./audit/AuditFilterChips.js"),require("./audit/AuditFilterBar.js"),require("./audit/AuditGroupsProgress.js"),require("./audit/AuditSummaryDashboard.js"),require("./audit/AuditRequirementDialog.js"),require("./audit/AuditUnitExportDialog.js"),require("./audit/AuditUnitImportDialog.js"),require("./audit/AuditBulkExportDialog.js"),require("./audit/AuditBulkUploadDialog.js"),require("./audit/AuditSortPresets.js");const g=i.makeStyles({iframe:{border:"none",width:"100%",height:"100%"},main:{gap:"36px",display:"flex",flexDirection:"column",flexWrap:"wrap"},card:{minWidth:"300px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",maxHeight:"11em",borderRadius:"10px",position:"relative"},expandedCard:{minWidth:"320px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",borderRadius:"10px",position:"relative"},text:{margin:"0.5em",whiteSpace:"normal",fontSize:"larger"},caption:{color:i.tokens.colorNeutralForeground3},headerImage:{borderRadius:"4px",maxWidth:"44px",maxHeight:"44px"},rectangle:{margin:0,top:"-5px",left:"-2px",width:"5px",position:"absolute",height:"100%"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px",margin:"0 -4px",maxWidth:"100%",boxSizing:"border-box","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:i.tokens.colorNeutralStroke1,borderRadius:"3px"}},htmlButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},headerButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},iconButtonRow:{position:"absolute",top:"0.5em",right:"0.5em",display:"flex",alignItems:"center",gap:"0.5em",zIndex:2},content:{overflow:"hidden",transition:"max-height 0.3s ease-out",userSelect:"text"},truncated:{maxHeight:"10em"},header:{display:"flex",flexDirection:"row",gap:"0.5em",alignItems:"center"},todoSwitch:{transform:"scale(0.8)","& .fui-Switch__label":{fontSize:"0.75rem"}}});exports.default=({header:m,description:j,timestamp:p,timestampTitle:h,text:x,image:q,tags:f,id:S,fileIds:w,codicentService:C,busy:b,onEdit:k,onShowHtmlPreview:A,maxHeightPx:O})=>{const v=g(),I=t.useNavigate(),[_,E]=r.useState(!1),[T,N]=r.useState(!1),[y,B]=r.useState("unknown"),[P,R]=r.useState(!1),L=r.useRef(null),D=Object.keys(u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")),F=D.find((e=>f.includes(e)))||(w.length>0?D.find((e=>"file"===e)):void 0),[H,M]=r.useState([]),G=f.includes("todo"),{t:z}=d.default(),V=["TYPE","CUSTOMER","CONTACT","SALESPERSON","MESSAGE","COMPANY","PHONE","EMAIL","WEBSITE","INFO","FÖRETAG","ROLE","KONTAKT"],U=[z("Typ"),z("Kund"),z("Kontakt"),z("Säljare"),z("Meddelande"),z("Företag"),z("Telefon"),z("E-post"),z("Hemsida"),z("Info"),z("Företag"),z("Roll"),z("Kontakt")];r.useEffect((()=>{Promise.all(w.map((e=>C.getFileInfo(e)))).then((e=>{M(e)}))}),[C,M,w]),r.useEffect((()=>{const e=()=>{if(L.current){const e=O??100,r=L.current.scrollHeight>e+(H.length>0?-72:0);N(r)}};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[x,H,O]),r.useEffect((()=>{if(G){(async()=>{try{const e=await C.getTodoStatus(S);B(e)}catch(e){console.error("Error loading todo status:",e),B("unknown")}})()}}),[G,S,C]);const K=()=>E(!_),W=f.includes("chat")&&(x.includes("#function_result")||x.includes("#finish_reason_function_call")||x.includes("#function_results_batch")||x.includes("#finish_reason_tool_calls_batch")),$=e=>{const r=e.indexOf("```html");if(-1===r)return e;const i=e.indexOf("```",r+7);if(-1===i)return e.substring(r+7);return e.substring(r+7,i)},Q=new l.default(x),Y=Q.data,X=u.getConfigValue("LOGBOOK_STRIP_TAGS")?Q.content:x,J=F&&u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].editable,Z=F&&u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].imageSize||void 0;return e.jsxs(i.Card,{className:_?v.expandedCard:v.card,style:{backgroundColor:u.getConfigValue("MESSAGE_HIDE_BAR")?F?u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].color:u.getConfigValue("APP_HEADER_COLOR")||"#eee":"#eee",maxHeight:!_&&O?`${O}px`:void 0},onClick:f.includes("chat")?e=>{f.includes("chat")&&(e&&e.stopPropagation(),I("/chat?id="+S))}:void 0,children:[!u.getConfigValue("MESSAGE_HIDE_BAR")&&e.jsx("div",{className:v.rectangle,style:{backgroundColor:F?u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].color:u.getConfigValue("APP_HEADER_COLOR")||void 0}}),e.jsxs("div",{className:v.iconButtonRow,children:[G&&e.jsx(i.Switch,{className:v.todoSwitch,checked:"done"===y,onChange:(e,r)=>(async e=>{if(!P){R(!0);try{const r=e?"done":"undone";await C.updateTodoStatus(S,r)&&B(r)}catch(e){console.error("Error updating todo status:",e)}finally{R(!1)}}})(r.checked),disabled:P||"unknown"===y,label:z("done"===y?"Done":"Todo")}),J&&k&&e.jsx(s.Edit20Regular,{className:v.htmlButton,onClick:()=>k()}),A&&!J&&f.includes("html")&&e.jsx(s.FullScreenMaximizeRegular,{className:v.htmlButton,onClick:e=>{e.stopPropagation(),A($(x))}}),T&&!f.includes("chat")&&_&&e.jsx(s.ArrowCollapseAllRegular,{className:v.headerButton,onClick:K}),T&&!f.includes("chat")&&!_&&e.jsx(s.ArrowExpandAllRegular,{className:v.headerButton,onClick:K})]}),e.jsx(i.CardHeader,{image:q?e.jsx("img",{className:v.headerImage,src:"app_logo.svg",alt:"User"}):null,header:b?e.jsx(i.Skeleton,{style:{width:"50%"},children:e.jsx(i.SkeletonItem,{})}):e.jsxs("div",{className:v.header,children:[e.jsx(n.Text,{weight:"semibold",children:m}),p&&e.jsx("span",{title:h||void 0,children:e.jsx(n.Text,{weight:"regular",children:p})})]}),description:e.jsx(i.Caption1,{className:v.caption,children:j})}),e.jsxs("div",{ref:L,className:`${v.content} ${_?"":v.truncated}`,style:{maxHeight:!_&&O?`${O}px`:void 0},children:[H.length>0&&e.jsx("div",{className:v.fileList,children:H.map((r=>e.jsx(c.FileThumbnail,{file:r,thumbnailSize:Z,getImageUrl:a.CodicentService.getImageUrl,onClick:()=>{r.contentType.startsWith("image")?I(`/image?id=${S}&file=${r.id}`):a.CodicentService.downloadFile(r)}},r.id)))}),b?e.jsxs(i.Skeleton,{style:{width:"100%"},children:[e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{})]}):e.jsx("div",{className:v.text,children:f.includes("html")?e.jsx("iframe",{className:v.iframe,title:"html",srcDoc:$(x),sandbox:"allow-same-origin allow-scripts"}):f.includes("crm")&&0===Object.keys(Y).length?e.jsx(o.default,{content:W?"*"+z("Tänker")+"...*":Y?(()=>{const e=new RegExp(`(${V.join("|")})\\s*:\\s*`,"gi"),r=X.replace(e,((e,r)=>{const i=V.indexOf(r.toUpperCase());-1===i&&console.log("Field not found:",r);return`\n**${-1!==i?U[i]:r}:** `}));return r.trim()})():x}):e.jsx(o.default,{content:W?"*"+z("Tänker")+"...*":Y?Y&&Object.keys(Y).length>0?Object.keys(Y).map((e=>{const r=V.indexOf(e.toUpperCase());return`**${-1!==r?U[r]:e}:** ${Y[e]}\n`})).join("\n"):X:x})})]})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),i=require("@fluentui/react-components"),t=require("react-router-dom"),s=require("@fluentui/react-icons"),a=require("../services/codicent.js"),o=require("./Markdown.js");require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js");var n=require("./Text.js");require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js");var l=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js");var u=require("../config/index.js");require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("exceljs"),require("../pages/AppFrame.js"),require("../pages/Canvas.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Menu.js"),require("../pages/Log.js"),require("../pages/Login.js"),require("../pages/Home.js"),require("../pages/ListPage.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js"),require("./Content.js"),require("./Page.js"),require("../pages/QrScan.js");var d=require("../hooks/useLocalization.js"),c=require("./FileThumbnail.js");require("react-dom/client"),require("../node_modules/@auth0/auth0-react/dist/auth0-react.esm.js"),require("../hooks/useAppStyles.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./DataMessagePicker.js"),require("./HtmlView.js"),require("./Footer.js"),require("./QrCodeDialog.js"),require("./QrScanner.js"),require("./OfflineMessage.js"),require("./LanguageSelector.js"),require("./ListView.js"),require("./RecordModal.js"),require("./BulkUploadDialog.js"),require("./CookieBanner.js"),require("./audit/AuditCircularProgress.js"),require("./audit/AuditHorizontalProgress.js"),require("./audit/AuditRoleIndicator.js"),require("./audit/AuditUnitSwitcher.js"),require("./audit/AuditAnswerCell.js"),require("./audit/AuditSearchBar.js"),require("./audit/AuditFilterChips.js"),require("./audit/AuditFilterBar.js"),require("./audit/AuditGroupsProgress.js"),require("./audit/AuditSummaryDashboard.js"),require("./audit/AuditRequirementDialog.js"),require("./audit/AuditUnitExportDialog.js"),require("./audit/AuditUnitImportDialog.js"),require("./audit/AuditBulkExportDialog.js"),require("./audit/AuditBulkUploadDialog.js"),require("./audit/AuditSortPresets.js");const g=i.makeStyles({iframe:{border:"none",width:"100%",height:"100%"},main:{gap:"36px",display:"flex",flexDirection:"column",flexWrap:"wrap"},card:{minWidth:"300px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",maxHeight:"11em",borderRadius:"10px",position:"relative"},expandedCard:{minWidth:"320px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",borderRadius:"10px",position:"relative"},text:{margin:"0.5em",whiteSpace:"normal",fontSize:"larger"},caption:{color:i.tokens.colorNeutralForeground3},headerImage:{borderRadius:"4px",maxWidth:"44px",maxHeight:"44px"},rectangle:{margin:0,top:"-5px",left:"-2px",width:"5px",position:"absolute",height:"100%"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px",margin:"0 -4px",maxWidth:"100%",boxSizing:"border-box","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:i.tokens.colorNeutralStroke1,borderRadius:"3px"}},htmlButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},headerButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},iconButtonRow:{position:"absolute",top:"0.5em",right:"0.5em",display:"flex",alignItems:"center",gap:"0.5em",zIndex:2},content:{overflow:"hidden",transition:"max-height 0.3s ease-out",userSelect:"text"},truncated:{maxHeight:"10em"},header:{display:"flex",flexDirection:"row",gap:"0.5em",alignItems:"center"},todoSwitch:{transform:"scale(0.8)","& .fui-Switch__label":{fontSize:"0.75rem"}}});exports.default=({header:m,description:j,timestamp:p,timestampTitle:h,text:x,image:q,tags:f,id:S,fileIds:w,codicentService:C,busy:b,onEdit:k,onShowHtmlPreview:A,maxHeightPx:O})=>{const v=g(),I=t.useNavigate(),[_,E]=r.useState(!1),[T,N]=r.useState(!1),[y,B]=r.useState("unknown"),[P,R]=r.useState(!1),L=r.useRef(null),D=Object.keys(u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")),F=D.find((e=>f.includes(e)))||(w.length>0?D.find((e=>"file"===e)):void 0),[H,M]=r.useState([]),G=f.includes("todo"),{t:z}=d.default(),V=["TYPE","CUSTOMER","CONTACT","SALESPERSON","MESSAGE","COMPANY","PHONE","EMAIL","WEBSITE","INFO","FÖRETAG","ROLE","KONTAKT"],U=[z("Typ"),z("Kund"),z("Kontakt"),z("Säljare"),z("Meddelande"),z("Företag"),z("Telefon"),z("E-post"),z("Hemsida"),z("Info"),z("Företag"),z("Roll"),z("Kontakt")];r.useEffect((()=>{Promise.all(w.map((e=>C.getFileInfo(e)))).then((e=>{M(e)}))}),[C,M,w]),r.useEffect((()=>{const e=()=>{if(L.current){const e=O??100,r=L.current.scrollHeight>e+(H.length>0?-72:0);N(r)}};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[x,H,O]),r.useEffect((()=>{if(G){(async()=>{try{const e=await C.getTodoStatus(S);B(e)}catch(e){console.error("Error loading todo status:",e),B("unknown")}})()}}),[G,S,C]);const K=()=>E(!_),W=f.includes("chat")&&(x.includes("#function_result")||x.includes("#finish_reason_function_call")||x.includes("#function_results_batch")||x.includes("#finish_reason_tool_calls_batch")),$=e=>{const r=e.indexOf("```html");if(-1===r)return e;const i=e.indexOf("```",r+7);if(-1===i)return e.substring(r+7);return e.substring(r+7,i)},Q=new l.default(x),Y=Q.data,X=u.getConfigValue("LOGBOOK_STRIP_TAGS")?Q.content:x,J=F&&u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].editable,Z=F&&u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].imageSize||void 0;return e.jsxs(i.Card,{className:_?v.expandedCard:v.card,style:{backgroundColor:u.getConfigValue("MESSAGE_HIDE_BAR")?F?u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].color:u.getConfigValue("APP_HEADER_COLOR")||"#eee":"#eee",maxHeight:!_&&O?`${O}px`:void 0},onClick:f.includes("chat")?e=>{f.includes("chat")&&(e&&e.stopPropagation(),I("/chat?id="+S))}:void 0,children:[!u.getConfigValue("MESSAGE_HIDE_BAR")&&e.jsx("div",{className:v.rectangle,style:{backgroundColor:F?u.getConfigValue("LOGBOOK_TAG_DEFINITIONS")[F].color:u.getConfigValue("APP_HEADER_COLOR")||void 0}}),e.jsxs("div",{className:v.iconButtonRow,children:[G&&e.jsx(i.Switch,{className:v.todoSwitch,checked:"done"===y,onChange:(e,r)=>(async e=>{if(!P){R(!0);try{const r=e?"done":"undone";await C.updateTodoStatus(S,r)&&B(r)}catch(e){console.error("Error updating todo status:",e)}finally{R(!1)}}})(r.checked),disabled:P||"unknown"===y,label:z("done"===y?"Done":"Todo")}),J&&k&&e.jsx(s.Edit20Regular,{className:v.htmlButton,onClick:()=>k()}),A&&!J&&f.includes("html")&&e.jsx(s.FullScreenMaximizeRegular,{className:v.htmlButton,onClick:e=>{e.stopPropagation(),A($(x))}}),T&&!f.includes("chat")&&_&&e.jsx(s.ArrowCollapseAllRegular,{className:v.headerButton,onClick:K}),T&&!f.includes("chat")&&!_&&e.jsx(s.ArrowExpandAllRegular,{className:v.headerButton,onClick:K})]}),e.jsx(i.CardHeader,{image:q?e.jsx("img",{className:v.headerImage,src:"app_logo.svg",alt:"User"}):null,header:b?e.jsx(i.Skeleton,{style:{width:"50%"},children:e.jsx(i.SkeletonItem,{})}):e.jsxs("div",{className:v.header,children:[e.jsx(n.Text,{weight:"semibold",children:m}),p&&e.jsx("span",{title:h||void 0,children:e.jsx(n.Text,{weight:"regular",children:p})})]}),description:e.jsx(i.Caption1,{className:v.caption,children:j})}),e.jsxs("div",{ref:L,className:`${v.content} ${_?"":v.truncated}`,style:{maxHeight:!_&&O?`${O}px`:void 0},children:[H.length>0&&e.jsx("div",{className:v.fileList,children:H.map((r=>e.jsx(c.FileThumbnail,{file:r,thumbnailSize:Z,getImageUrl:a.CodicentService.getImageUrl,onClick:()=>{r.contentType.startsWith("image")?I(`/image?id=${S}&file=${r.id}`):a.CodicentService.downloadFile(r)}},r.id)))}),b?e.jsxs(i.Skeleton,{style:{width:"100%"},children:[e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{}),e.jsx(i.SkeletonItem,{})]}):e.jsx("div",{className:v.text,children:f.includes("html")?e.jsx("iframe",{className:v.iframe,title:"html",srcDoc:$(x),sandbox:"allow-same-origin allow-scripts"}):f.includes("crm")&&0===Object.keys(Y).length?e.jsx(o.default,{content:W?"*"+z("Tänker")+"...*":Y?(()=>{const e=new RegExp(`(${V.join("|")})\\s*:\\s*`,"gi"),r=X.replace(e,((e,r)=>{const i=V.indexOf(r.toUpperCase());-1===i&&console.log("Field not found:",r);return`\n**${-1!==i?U[i]:r}:** `}));return r.trim()})():x}):e.jsx(o.default,{content:W?"*"+z("Tänker")+"...*":Y?Y&&Object.keys(Y).length>0?Object.keys(Y).map((e=>{const r=V.indexOf(e.toUpperCase());return`**${-1!==r?U[r]:e}:** ${Y[e]??""}\n`})).join("\n"):X:x})})]})]})};
@@ -1,12 +1,17 @@
1
1
  import React from "react";
2
2
  import { ColumnDefinition } from "./ListView";
3
+ import { CodicentService } from "../services/codicent";
3
4
  export interface RecordModalProps {
4
5
  open: boolean;
5
6
  onClose: () => void;
6
- onSave: (data: Record<string, unknown>) => Promise<void>;
7
+ onSave: (data: Record<string, unknown>, fileIds?: string[]) => Promise<void>;
7
8
  columns: ColumnDefinition[];
8
9
  initialData?: Record<string, unknown>;
9
10
  title?: string;
11
+ /** Service used to upload attachments. Required for the attach control to work. */
12
+ codicentService?: CodicentService;
13
+ /** When true, shows a file-attach control (only while adding a new record). Default off. */
14
+ allowAttachments?: boolean;
10
15
  }
11
16
  export declare const RecordModal: React.FC<RecordModalProps>;
12
17
  export default RecordModal;
@@ -1 +1 @@
1
- {"version":3,"file":"RecordModal.d.ts","sourceRoot":"","sources":["../../../src/components/RecordModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAqB5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAwJ9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+KlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"RecordModal.d.ts","sourceRoot":"","sources":["../../../src/components/RecordModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAwBpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA0JvD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,4FAA4F;IAC5F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA8QlD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("@fluentui/react-components"),l=require("@fluentui/react-icons"),r=require("../hooks/useLocalization.js"),n=require("../services/codicent.js");const i=t.makeStyles({surface:{backgroundColor:t.tokens.colorNeutralBackground1,width:"min(calc(100vw - 32px), 560px)",maxWidth:"calc(100vw - 32px)"},content:{display:"flex",flexDirection:"column",gap:"16px",minWidth:"0",maxHeight:"60vh",overflowY:"auto"},field:{display:"flex",flexDirection:"column"},thumbnailRow:{display:"flex",flexWrap:"wrap",gap:"6px",marginTop:"4px"},thumbnailImg:{maxWidth:"60px",maxHeight:"60px",objectFit:"cover",borderRadius:"4px",display:"block"},thumbnailIcon:{width:"32px",height:"32px",verticalAlign:"middle"}}),o=({fileId:t,imgClassName:r,iconClassName:i})=>{const[o,s]=a.useState(!0);return e.jsx("a",{href:n.CodicentService.getFileUrl(t),target:"_blank",rel:"noopener noreferrer",children:o?e.jsx("img",{src:n.CodicentService.getImageUrl(t,60),alt:`File attachment ${t}`,className:r,onError:()=>s(!1)}):e.jsx(l.Attach24Regular,{className:i})})},s=({value:l,options:r,optionsLoader:n,minChars:i=2,maxResults:o=50,label:s,onChange:c,t:u})=>{const[d,m]=a.useState(l),[p,h]=a.useState([]),[x,f]=a.useState(!1),g=a.useRef(null);a.useEffect((()=>{m(l)}),[l]),a.useEffect((()=>{if(n){if(!(d.length<i))return g.current&&clearTimeout(g.current),g.current=setTimeout((async()=>{f(!0);try{const e=await n(d);h(e.slice(0,o))}finally{f(!1)}}),250),()=>{g.current&&clearTimeout(g.current)};h([])}}),[d,n,i,o]);const y=a.useMemo((()=>(r??[]).filter((e=>e.toLowerCase().includes(d.toLowerCase()))).slice(0,o)),[r,d,o]),b=n?p:y;return e.jsx(t.Combobox,{value:d,freeform:!0,"aria-label":s,placeholder:x?u("Loading..."):n&&d.length<i?u(`Type ${i}+ characters to search...`):void 0,onChange:e=>m(e.target.value),onOptionSelect:(e,a)=>{a.optionValue&&(m(a.optionValue),c(a.optionValue))},onBlur:()=>c(d),style:{width:"100%"},children:b.map((a=>e.jsx(t.Option,{value:a,children:a},a)))})},c=({open:l,onClose:n,onSave:c,columns:u,initialData:d,title:m})=>{const p=i(),{t:h}=r.default(),[x,f]=a.useState({}),[g,y]=a.useState(!1);a.useEffect((()=>{l&&f(d||{})}),[l,d]);const b=e=>Array.isArray(e.key)?e.key[0]:e.key,j=e=>{if(Array.isArray(e.key))for(const a of e.key)if(void 0!==x[a])return a;return b(e)},v=(e,a)=>{const t=j(e);f((e=>({...e,[t]:a})))},C=u.filter((e=>!e.hidden&&"file"!==e.type&&"thumbnail"!==e.type&&"createdAt"!==b(e))),k=u.filter((e=>!e.hidden&&"thumbnail"===e.type));return e.jsx(t.Dialog,{open:l,onOpenChange:(e,a)=>!g&&!1===a.open&&n(),children:e.jsx(t.DialogSurface,{className:p.surface,backdrop:{style:{backgroundColor:"rgba(0, 0, 0, 0.4)"}},children:e.jsxs(t.DialogBody,{children:[e.jsx(t.DialogTitle,{children:m||h(d?"Edit Record":"Add Record")}),e.jsxs(t.DialogContent,{className:p.content,children:[k.map(((a,l)=>{const r=b(a),n=a.title||r,i=d?.[r],s=Array.isArray(i)?i:[];return 0===s.length?null:e.jsx(t.Field,{label:n,className:p.field,children:e.jsx("div",{className:p.thumbnailRow,children:s.map((a=>e.jsx(o,{fileId:a,imgClassName:p.thumbnailImg,iconClassName:p.thumbnailIcon},a)))})},`thumb-${l}`)})),C.map(((a,l)=>{const r=b(a),n=(e=>{const a=j(e);return x[a]})(a),i=a.title||r;return"checkbox"===a.type?e.jsx(t.Field,{label:i,className:p.field,children:e.jsx(t.Checkbox,{checked:!0===n||"true"===n||"yes"===n||"1"===n,onChange:(e,t)=>v(a,t.checked)})},l):"textarea"===a.type?e.jsx(t.Field,{label:i,className:p.field,children:e.jsx(t.Textarea,{value:String(n??""),rows:a.rows??3,onChange:(e,t)=>v(a,t.value),placeholder:h("Enter")+" "+i.toLowerCase(),resize:"vertical"})},l):"enum"===a.type&&a.enumOptions?e.jsx(t.Field,{label:i,className:p.field,children:e.jsx(t.Select,{value:String(n??""),onChange:(e,t)=>v(a,t.value),children:a.enumOptions.map((a=>e.jsx("option",{value:a,children:a||h("(None)")},a)))})},l):"combobox"===a.type&&(a.enumOptions||a.enumOptionsLoader)?e.jsx(t.Field,{label:i,className:p.field,children:e.jsx(s,{value:String(n??""),options:a.enumOptions,optionsLoader:a.enumOptionsLoader,minChars:a.enumOptionsLoaderMinChars,maxResults:a.enumOptionsLoaderMaxResults,label:i,onChange:e=>v(a,e),t:h})},l):e.jsx(t.Field,{label:i,className:p.field,children:e.jsx(t.Input,{value:String(n??""),onChange:(e,t)=>v(a,t.value),placeholder:h("Enter")+" "+i.toLowerCase()})},l)}))]}),e.jsxs(t.DialogActions,{children:[e.jsx(t.Button,{appearance:"secondary",onClick:n,disabled:g,children:h("Cancel")}),e.jsx(t.Button,{appearance:"primary",onClick:async()=>{y(!0);try{await c(x),n()}catch(e){console.error("Failed to save record:",e)}finally{y(!1)}},disabled:g,children:h(g?"Saving...":"Save")})]})]})})})};exports.RecordModal=c,exports.default=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),r=require("@fluentui/react-components"),l=require("@fluentui/react-icons"),n=require("../hooks/useLocalization.js"),t=require("../services/codicent.js"),i=require("./UploadFile.js"),s=require("./DataMessagePicker.js"),o=require("../utils/reference.js");const c=r.makeStyles({surface:{backgroundColor:r.tokens.colorNeutralBackground1,width:"min(calc(100vw - 32px), 560px)",maxWidth:"calc(100vw - 32px)"},content:{display:"flex",flexDirection:"column",gap:"16px",minWidth:"0",maxHeight:"60vh",overflowY:"auto"},field:{display:"flex",flexDirection:"column"},thumbnailRow:{display:"flex",flexWrap:"wrap",gap:"6px",marginTop:"4px"},thumbnailImg:{maxWidth:"60px",maxHeight:"60px",objectFit:"cover",borderRadius:"4px",display:"block"},thumbnailIcon:{width:"32px",height:"32px",verticalAlign:"middle"}}),d=({fileId:r,imgClassName:n,iconClassName:i})=>{const[s,o]=a.useState(!0);return e.jsx("a",{href:t.CodicentService.getFileUrl(r),target:"_blank",rel:"noopener noreferrer",children:s?e.jsx("img",{src:t.CodicentService.getImageUrl(r,60),alt:`File attachment ${r}`,className:n,onError:()=>o(!1)}):e.jsx(l.Attach24Regular,{className:i})})},u=({value:l,options:n,optionsLoader:t,minChars:i=2,maxResults:s=50,label:o,onChange:c,t:d})=>{const[u,m]=a.useState(l),[h,p]=a.useState([]),[f,x]=a.useState(!1),g=a.useRef(null);a.useEffect((()=>{m(l)}),[l]),a.useEffect((()=>{if(t){if(!(u.length<i))return g.current&&clearTimeout(g.current),g.current=setTimeout((async()=>{x(!0);try{const e=await t(u);p(e.slice(0,s))}finally{x(!1)}}),250),()=>{g.current&&clearTimeout(g.current)};p([])}}),[u,t,i,s]);const y=a.useMemo((()=>(n??[]).filter((e=>e.toLowerCase().includes(u.toLowerCase()))).slice(0,s)),[n,u,s]),j=t?h:y;return e.jsx(r.Combobox,{value:u,freeform:!0,"aria-label":o,placeholder:f?d("Loading..."):t&&u.length<i?d(`Type ${i}+ characters to search...`):void 0,onChange:e=>m(e.target.value),onOptionSelect:(e,a)=>{a.optionValue&&(m(a.optionValue),c(a.optionValue))},onBlur:()=>c(u),style:{width:"100%"},children:j.map((a=>e.jsx(r.Option,{value:a,children:a},a)))})},m=({open:t,onClose:m,onSave:h,columns:p,initialData:f,title:x,codicentService:g,allowAttachments:y})=>{const j=c(),{t:b}=n.default(),[v,C]=a.useState({}),[S,k]=a.useState(!1),[N,F]=a.useState(null),[w,R]=a.useState([]),[L,A]=a.useState(!1),O=a.useRef(null),I=!!y&&!f&&!!g;a.useEffect((()=>{t&&(C(f||{}),R([]),A(!1),F(null))}),[t,f]);const B=e=>Array.isArray(e.key)?e.key[0]:e.key,D=e=>{if(Array.isArray(e.key))for(const a of e.key)if(void 0!==v[a])return a;return B(e)},T=(e,a)=>{const r=D(e);C((e=>({...e,[r]:a})))},q=p.filter((e=>!e.hidden&&"file"!==e.type&&"thumbnail"!==e.type&&"createdAt"!==B(e))),M=p.filter((e=>!e.hidden&&"thumbnail"===e.type));return e.jsx(r.Dialog,{open:t,onOpenChange:(e,a)=>!S&&!1===a.open&&m(),children:e.jsx(r.DialogSurface,{className:j.surface,backdrop:{style:{backgroundColor:"rgba(0, 0, 0, 0.4)"}},children:e.jsxs(r.DialogBody,{children:[e.jsx(r.DialogTitle,{children:x||b(f?"Edit Record":"Add Record")}),e.jsxs(r.DialogContent,{className:j.content,children:[N&&e.jsx(r.MessageBar,{intent:"error",children:e.jsx(r.MessageBarBody,{children:b("Kunde inte spara")+": "+N})}),M.map(((a,l)=>{const n=B(a),t=a.title||n,i=f?.[n],s=Array.isArray(i)?i:[];return 0===s.length?null:e.jsx(r.Field,{label:t,className:j.field,children:e.jsx("div",{className:j.thumbnailRow,children:s.map((a=>e.jsx(d,{fileId:a,imgClassName:j.thumbnailImg,iconClassName:j.thumbnailIcon},a)))})},`thumb-${l}`)})),q.map(((a,l)=>{const n=B(a),t=(e=>{const a=D(e);return v[a]})(a),i=a.title||n;if("checkbox"===a.type)return e.jsx(r.Field,{label:i,className:j.field,children:e.jsx(r.Checkbox,{checked:!0===t||"true"===t||"yes"===t||"1"===t,onChange:(e,r)=>T(a,r.checked)})},l);if("textarea"===a.type)return e.jsx(r.Field,{label:i,className:j.field,children:e.jsx(r.Textarea,{value:String(t??""),rows:a.rows??3,onChange:(e,r)=>T(a,r.value),placeholder:b("Enter")+" "+i.toLowerCase(),resize:"vertical"})},l);if("enum"===a.type&&a.enumOptions)return e.jsx(r.Field,{label:i,className:j.field,children:e.jsx(r.Select,{value:String(t??""),onChange:(e,r)=>T(a,r.value),children:a.enumOptions.map((a=>e.jsx("option",{value:a,children:b(a||"(None)")},a)))})},l);if("reference"===a.type&&a.referenceTag&&g){const n=B(a),c=a.referenceLabelKey??`${n}_label`,d=a.referenceDisplayKeys??[],u=a.referenceCascadeFromKey?String(v[a.referenceCascadeFromKey]??""):"",m={...a.referenceFilters??{}};return a.referenceCascadeFilterField&&u&&(m[a.referenceCascadeFilterField]=u),e.jsx(r.Field,{label:i,className:j.field,children:e.jsx(s.default,{service:g,tag:a.referenceTag,value:String(v[c]??t??""),placeholder:b("Search"),displayKeys:d,searchKeys:a.referenceSearchKeys??d,dataFilters:Object.keys(m).length>0?m:void 0,onSelect:e=>C((r=>({...r,[n]:o.formatReference(a.referenceTag,e.originalMessageId||e.id),[c]:e.label})))})},l)}return"combobox"===a.type&&(a.enumOptions||a.enumOptionsLoader)?e.jsx(r.Field,{label:i,className:j.field,children:e.jsx(u,{value:String(t??""),options:a.enumOptions,optionsLoader:a.enumOptionsLoader,minChars:a.enumOptionsLoaderMinChars,maxResults:a.enumOptionsLoaderMaxResults,label:i,onChange:e=>T(a,e),t:b})},l):e.jsx(r.Field,{label:i,className:j.field,children:e.jsx(r.Input,{value:String(t??""),onChange:(e,r)=>T(a,r.value),placeholder:b("Enter")+" "+i.toLowerCase()})},l)})),I&&e.jsxs(r.Field,{label:b("Bilagor"),className:j.field,children:[e.jsx(r.Button,{appearance:"secondary",icon:e.jsx(l.Attach24Regular,{}),onClick:()=>O.current?.triggerUpload(),disabled:L||S,children:b(L?"Laddar...":"Bifoga fil")}),w.length>0&&e.jsx("div",{className:j.thumbnailRow,children:w.map((a=>e.jsx(d,{fileId:a,imgClassName:j.thumbnailImg,iconClassName:j.thumbnailIcon},a)))}),e.jsx(i.default,{ref:O,codicentService:g,multiple:!0,onFileUploaded:e=>R((a=>[...a,...e])),onUploading:A})]})]}),e.jsxs(r.DialogActions,{children:[e.jsx(r.Button,{appearance:"secondary",onClick:m,disabled:S,children:b("Cancel")}),e.jsx(r.Button,{appearance:"primary",onClick:async()=>{k(!0),F(null);try{await h(v,w),m()}catch(e){F(e instanceof Error?e.message:String(e))}finally{k(!1)}},disabled:S||L,icon:S?e.jsx(r.Spinner,{size:"tiny"}):void 0,children:b(S?"Saving...":"Save")})]})]})})})};exports.RecordModal=m,exports.default=m;
@@ -103,6 +103,7 @@ export interface AppConfigOptions {
103
103
  REALTIME_CONFIG_ENDPOINT: string;
104
104
  SEND_BUTTON_ROUND_BACKGROUND: boolean;
105
105
  SHOW_CANVAS_BUTTON: boolean;
106
+ ENABLE_CHAT_GPS: boolean;
106
107
  SHOW_CHAT_PROMPTS: boolean;
107
108
  SHOW_HELP_BUTTON: boolean;
108
109
  SHOW_LOGBOOK_BUTTON: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";class _{constructor(){this.CHAT_INSTRUCTIONS="",this.REALTIME_VOICE_INSTRUCTIONS="",this.apps={}}}const T={LOGIN_REDIRECT:!1,ABOUT_TEXT:"Codicent APP SDK",ANONYMOUS_CODICENT:void 0,ANONYMOUS_TOKEN:void 0,API_BASE_URL:"https://codicent.com/",PUBSUB_URL:"https://pubsub.codicent.com/hub",APP_BUTTONS:void 0,APP_CHAT_TEXT_PLACEHOLDER:void 0,APP_CHAT_TITLE:void 0,APP_CONFIG:new _,APP_FOOTER_COLOR:void 0,APP_FOOTER_SELECTED_COLOR:void 0,APP_FOOTER_TEXT_COLOR:void 0,APP_HEADER_COLOR:void 0,APP_HEADER_ICON_URL:void 0,APP_HEADER_TEXT_COLOR:void 0,APP_ICON_URL:void 0,APP_LOG_CODICENT:"",APP_LOG_TOKEN:"",APP_LOGBOOK_TITLE:void 0,APP_MENU_TITLE:void 0,APP_NAME:void 0,APP_PREFIX:void 0,APP_SAVE_TITLE:void 0,APP_SEARCH_TITLE:void 0,APP_SLOGAN:void 0,APP_SPLASH_TEXT:void 0,APP_SPLASH_URL:void 0,APP_TEMPLATE:"",APP_TITLE:void 0,AUTH_REDIRECT_URL:void 0,AUTH0_AUDIENCE:"https://codicent.com/api",AUTH0_CLIENT_ID:"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_DOMAIN:"auth.codicent.com",AUTH0_PASSWORDLESS_ENABLED:!1,AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",AUTH0_USER_DOMAIN:void 0,BUTTON_ACTIVE_COLOR:void 0,BUTTON_BACKGROUND_COLOR:void 0,BUTTON_BORDER_RADIUS:void 0,BUTTON_HOVER_COLOR:void 0,BUTTON_TAG:"app-button",BUTTON_TEXT_COLOR:void 0,CHAT_BACKGROUND_IMAGE_URL:void 0,CHAT_BOT_BACKGROUND_COLOR:void 0,CHAT_BOT_TEXT_COLOR:void 0,CHAT_INSTRUCTIONS:void 0,CHAT_USER_BACKGROUND_COLOR:void 0,CHAT_USER_TEXT_COLOR:void 0,CHAT_WELCOME:"Welcome",COMPOSE_BACKGROUND_IMAGE_URL:void 0,COMPOSE_AUTO_LOCATION:void 0,COMPOSE_HIDE_LOCATION:void 0,COMPOSE_SIMPLE_ATTACH_FILE:void 0,DEFAULT_LANGUAGE:"en",HIDE_CHAT_BUTTON:!1,HIDE_MENU_BUTTON:!1,HIDE_REGISTER_BUTTON:!1,HIDE_SAVE_BUTTON:!1,HOME_BACKGROUND_IMAGE_URL:void 0,INDEX_TITLE:void 0,LOGBOOK_TAG_DEFINITIONS:{},LOGBOOK_STRIP_TAGS:!1,LOGBOOK_TAGS:"[]",MENU_BACKGROUND_IMAGE_URL:void 0,MESSAGE_HIDE_BAR:!1,MODULE_VOICE:!1,PUBLIC_FLOW_CODICENT:void 0,REALTIME_VOICE_MODEL:"alloy",REALTIME_VOICE_PROVIDER:"openai",USE_REALTIME_SESSION_ENDPOINT:!0,REALTIME_SESSION_ENDPOINT:"/realtime/session",REALTIME_CONFIG_ENDPOINT:"/realtime/config",SEND_BUTTON_ROUND_BACKGROUND:!1,SHOW_CANVAS_BUTTON:!1,SHOW_CHAT_PROMPTS:!1,SHOW_HELP_BUTTON:!1,SHOW_LOGBOOK_BUTTON:!1,SHOW_MICROPHONE_BUTTON:!1,SHOW_SETTINGS_BUTTON:!1,SHOW_SNAP_BUTTON:!1,SHOW_VOICE_BUTTON:!1,STRIPE_CUSTOMER_PORTAL:"",STRIPE_PRICE_ID:"",STRIPE_PUBLIC_KEY:"",STRIPE_SOURCE:"",STRIPE_TRIAL_PERIOD_DAYS:0,SUBSCRIPTION_NEEDED:!1,THEME_WELCOME:void 0,USER_PREFIX:void 0,WELCOME_STATUS_PROMPT:"",SHOW_SEND_BUTTON_TEXT:!1,SHOW_SAVE_BUTTON_TEXT:!1,FORM_BACKGROUND_IMAGE_URL:void 0,AUTO_TRANSLATE:!0,FORCE_LANGUAGE:void 0,TRANSLATIONS:void 0,LOGIN_WELCOME_TEXT:void 0,LOGIN_HIDE_WELCOME:!1,LOGIN_LOGO_URL:void 0,HIDE_CHAT_ADD_FILE_BUTTON:!1,FORM_ACCEPT_MARKDOWN:void 0,RESTART_AUDIO_ON_TAKE_PHOTO:!1,ENABLE_STATE_CACHE:!1,SESSION_CACHE_TTL:864e5,USER_INFO_CACHE_TTL:36e5,APPS_CACHE_TTL:3e5,OPTIMISTIC_CACHE_LOAD:!0,VALIDATE_CACHE_IN_BACKGROUND:!0,SHOW_VALIDATION_INDICATOR:!1,CACHE_FAILURE_MODE:"lenient"};const O=function(_){return new Proxy(_,{get:(_,T,O)=>Reflect.get(_,T,O)})}(T);exports.AppConfig=_,exports.getConfigValue=function(_){return O[_]},exports.initCodicentApp=function(_={}){for(const[O,E]of Object.entries(_))void 0!==E&&(T[O]=E);void 0!==_.TRANSLATIONS&&(globalThis.__CODICENT_REINIT_I18N__=!0)};
1
+ "use strict";class _{constructor(){this.CHAT_INSTRUCTIONS="",this.REALTIME_VOICE_INSTRUCTIONS="",this.apps={}}}const T={LOGIN_REDIRECT:!1,ABOUT_TEXT:"Codicent APP SDK",ANONYMOUS_CODICENT:void 0,ANONYMOUS_TOKEN:void 0,API_BASE_URL:"https://codicent.com/",PUBSUB_URL:"https://pubsub.codicent.com/hub",APP_BUTTONS:void 0,APP_CHAT_TEXT_PLACEHOLDER:void 0,APP_CHAT_TITLE:void 0,APP_CONFIG:new _,APP_FOOTER_COLOR:void 0,APP_FOOTER_SELECTED_COLOR:void 0,APP_FOOTER_TEXT_COLOR:void 0,APP_HEADER_COLOR:void 0,APP_HEADER_ICON_URL:void 0,APP_HEADER_TEXT_COLOR:void 0,APP_ICON_URL:void 0,APP_LOG_CODICENT:"",APP_LOG_TOKEN:"",APP_LOGBOOK_TITLE:void 0,APP_MENU_TITLE:void 0,APP_NAME:void 0,APP_PREFIX:void 0,APP_SAVE_TITLE:void 0,APP_SEARCH_TITLE:void 0,APP_SLOGAN:void 0,APP_SPLASH_TEXT:void 0,APP_SPLASH_URL:void 0,APP_TEMPLATE:"",APP_TITLE:void 0,AUTH_REDIRECT_URL:void 0,AUTH0_AUDIENCE:"https://codicent.com/api",AUTH0_CLIENT_ID:"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_DOMAIN:"auth.codicent.com",AUTH0_PASSWORDLESS_ENABLED:!1,AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",AUTH0_USER_DOMAIN:void 0,BUTTON_ACTIVE_COLOR:void 0,BUTTON_BACKGROUND_COLOR:void 0,BUTTON_BORDER_RADIUS:void 0,BUTTON_HOVER_COLOR:void 0,BUTTON_TAG:"app-button",BUTTON_TEXT_COLOR:void 0,CHAT_BACKGROUND_IMAGE_URL:void 0,CHAT_BOT_BACKGROUND_COLOR:void 0,CHAT_BOT_TEXT_COLOR:void 0,CHAT_INSTRUCTIONS:void 0,CHAT_USER_BACKGROUND_COLOR:void 0,CHAT_USER_TEXT_COLOR:void 0,CHAT_WELCOME:"Welcome",COMPOSE_BACKGROUND_IMAGE_URL:void 0,COMPOSE_AUTO_LOCATION:void 0,COMPOSE_HIDE_LOCATION:void 0,COMPOSE_SIMPLE_ATTACH_FILE:void 0,DEFAULT_LANGUAGE:"en",HIDE_CHAT_BUTTON:!1,HIDE_MENU_BUTTON:!1,HIDE_REGISTER_BUTTON:!1,HIDE_SAVE_BUTTON:!1,HOME_BACKGROUND_IMAGE_URL:void 0,INDEX_TITLE:void 0,LOGBOOK_TAG_DEFINITIONS:{},LOGBOOK_STRIP_TAGS:!1,LOGBOOK_TAGS:"[]",MENU_BACKGROUND_IMAGE_URL:void 0,MESSAGE_HIDE_BAR:!1,MODULE_VOICE:!1,PUBLIC_FLOW_CODICENT:void 0,REALTIME_VOICE_MODEL:"alloy",REALTIME_VOICE_PROVIDER:"openai",USE_REALTIME_SESSION_ENDPOINT:!0,REALTIME_SESSION_ENDPOINT:"/realtime/session",REALTIME_CONFIG_ENDPOINT:"/realtime/config",SEND_BUTTON_ROUND_BACKGROUND:!1,SHOW_CANVAS_BUTTON:!1,ENABLE_CHAT_GPS:!1,SHOW_CHAT_PROMPTS:!1,SHOW_HELP_BUTTON:!1,SHOW_LOGBOOK_BUTTON:!1,SHOW_MICROPHONE_BUTTON:!1,SHOW_SETTINGS_BUTTON:!1,SHOW_SNAP_BUTTON:!1,SHOW_VOICE_BUTTON:!1,STRIPE_CUSTOMER_PORTAL:"",STRIPE_PRICE_ID:"",STRIPE_PUBLIC_KEY:"",STRIPE_SOURCE:"",STRIPE_TRIAL_PERIOD_DAYS:0,SUBSCRIPTION_NEEDED:!1,THEME_WELCOME:void 0,USER_PREFIX:void 0,WELCOME_STATUS_PROMPT:"",SHOW_SEND_BUTTON_TEXT:!1,SHOW_SAVE_BUTTON_TEXT:!1,FORM_BACKGROUND_IMAGE_URL:void 0,AUTO_TRANSLATE:!0,FORCE_LANGUAGE:void 0,TRANSLATIONS:void 0,LOGIN_WELCOME_TEXT:void 0,LOGIN_HIDE_WELCOME:!1,LOGIN_LOGO_URL:void 0,HIDE_CHAT_ADD_FILE_BUTTON:!1,FORM_ACCEPT_MARKDOWN:void 0,RESTART_AUDIO_ON_TAKE_PHOTO:!1,ENABLE_STATE_CACHE:!1,SESSION_CACHE_TTL:864e5,USER_INFO_CACHE_TTL:36e5,APPS_CACHE_TTL:3e5,OPTIMISTIC_CACHE_LOAD:!0,VALIDATE_CACHE_IN_BACKGROUND:!0,SHOW_VALIDATION_INDICATOR:!1,CACHE_FAILURE_MODE:"lenient"};const O=function(_){return new Proxy(_,{get:(_,T,O)=>Reflect.get(_,T,O)})}(T);exports.AppConfig=_,exports.getConfigValue=function(_){return O[_]},exports.initCodicentApp=function(_={}){for(const[O,E]of Object.entries(_))void 0!==E&&(T[O]=E);void 0!==_.TRANSLATIONS&&(globalThis.__CODICENT_REINIT_I18N__=!0)};
@@ -8,7 +8,10 @@ export interface Message {
8
8
  export declare function useChat(state: AppStateMachine, temporaryCodicent?: string): {
9
9
  messages: Message[];
10
10
  isBotTyping: boolean;
11
- handleSend: (text: string, retryCount?: number) => void;
11
+ handleSend: (text: string, retryCount?: number, gps?: {
12
+ lat: number;
13
+ lon: number;
14
+ }) => void;
12
15
  newChat: () => void;
13
16
  openChat: (id: string) => void;
14
17
  reloadChatHistory: () => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAO,MAAM,UAAU,CAAC;AAOhD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,MAAM;;;uBAoD/D,MAAM;;mBA2IR,MAAM;;EA2Bd"}
1
+ {"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../../src/hooks/useChat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAO,MAAM,UAAU,CAAC;AAOhD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,MAAM;;;uBAoD/D,MAAM,6BAAwB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;;mBA2I5D,MAAM;;EA2Bd"}
@@ -1 +1 @@
1
- "use strict";var e=require("react"),t=require("../stores/chatStore.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js");var s=require("../utils/logging.js");require("react/jsx-runtime"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("exceljs"),exports.useChat=function(r,a){const{service:o}=r,n=a||r.context.selectedApp||"",[i,c]=e.useState(t.chatStore.getState(n));e.useEffect((()=>t.chatStore.subscribe(n,c)),[n]);const l=e.useCallback((async()=>{const e=t.chatStore.getConversationId(n);if(e){console.log("Reloading chat history to check for missed messages...");try{const r=await o.getChatHistory(e),a=t.chatStore.getMessages(n);return r.length>a.length?(console.log(`Found ${r.length-a.length} missed messages, updating chat...`),t.chatStore.reset(n),r.forEach(((e,s)=>{const r={id:e.id,sender:s%2==0?"user":"bot",content:e.content};t.chatStore.addMessage(n,r)})),t.chatStore.setConversationId(n,e),s.default("chat-history-reloaded"),!0):(console.log("No missed messages found"),!1)}catch(e){return console.error("Failed to reload chat history:",e),!1}}return!1}),[o,n]),d=e.useCallback(((e,r=0)=>{if(""===e.trim())return;const a=`$user-msg-${Date.now()}`,c={id:a,sender:"user",content:e},u=i.messages.length>0?i.messages[i.messages.length-1].id:void 0;t.chatStore.addMessage(n,c),t.chatStore.setBotTyping(n,!0),s.default("chat-send");const g=Promise.race([o.chat(e,u,n),new Promise(((e,t)=>{setTimeout((()=>t(new Error("Request timeout - please try again"))),36e4)}))]).then((e=>{const{id:r,content:a}=e,o={id:r,sender:"bot",content:a,isNew:!0};t.chatStore.setConversationId(n,r),t.chatStore.addMessage(n,o),t.chatStore.setBotTyping(n,!1),s.default("chat-receive"),a.startsWith("Error code: ")&&s.default("chat-error: "+a)})).catch((async i=>{console.error("Chat error details:",{error:i,message:i?.message,name:i?.name,stack:i?.stack,tempId:a,lastMessageId:u,retryCount:r,timestamp:(new Date).toISOString()});if(0===r&&("AbortError"===i?.name||i?.message?.includes("timeout")||i?.message?.includes("Failed to fetch")||i?.message?.includes("NetworkError")))return console.log("Auto-retrying chat request..."),t.chatStore.removeMessage(n,a),t.chatStore.setBotTyping(n,!1),void setTimeout((()=>d(e,r+1)),2e3);function c(){let e="An error occurred while sending the message. Please try again.";if(o.onUnauthorized&&i?.toString().includes("401"))return alert("Session expired. Please log in again."),void o.onUnauthorized();"AbortError"===i?.name||i?.message?.includes("timeout")?(e="Request timed out. Please check your connection and try again.",s.default("chat-timeout")):i?.message?.includes("HTTP error: 500")?(e="Server error. Please try again in a moment.",s.default("chat-server-error")):(i?.message?.includes("Failed to fetch")||i?.message?.includes("NetworkError"))&&(e="Network error. Please check your connection and try again.",s.default("chat-network-error")),console.warn(e),t.chatStore.removeMessage(n,a),t.chatStore.setBotTyping(n,!1),s.default("chat-error")}"AbortError"===i?.name||i?.message?.includes("timeout")||i?.message?.includes("Failed to fetch")||i?.message?.includes("NetworkError")||i?.message?.includes("WebSocket")||i?.message?.includes("SignalR")||i?.message?.includes("Connection")?(console.log("Potential SignalR/connection issue detected, checking for missed messages..."),setTimeout((async()=>{if(await l())return t.chatStore.removeMessage(n,a),t.chatStore.setBotTyping(n,!1),console.log("Recovered missed message(s) from server"),void s.default("chat-recovered");c()}),2e3)):c()}));t.chatStore.addPendingRequest(n,a,g)}),[o,i.messages,l,n]),u=e.useCallback((()=>{t.chatStore.reset(n),t.chatStore.clearMessages(n),s.default("new-chat")}),[n]),g=e.useCallback((e=>{t.chatStore.reset(n),t.chatStore.clearMessages(n),s.default("open-chat"),o.getChatHistory(e).then((e=>{e.forEach(((e,s)=>{const r={id:e.id,sender:s%2==0?"user":"bot",content:e.content};t.chatStore.addMessage(n,r)}))}))}),[o,n]);return{messages:i.messages,isBotTyping:i.isBotTyping,handleSend:d,newChat:u,openChat:g,reloadChatHistory:l}};
1
+ "use strict";var e=require("react"),t=require("../stores/chatStore.js");require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js");var s=require("../utils/logging.js");require("react/jsx-runtime"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("exceljs"),exports.useChat=function(r,a){const{service:o}=r,n=a||r.context.selectedApp||"",[i,c]=e.useState(t.chatStore.getState(n));e.useEffect((()=>t.chatStore.subscribe(n,c)),[n]);const l=e.useCallback((async()=>{const e=t.chatStore.getConversationId(n);if(e){console.log("Reloading chat history to check for missed messages...");try{const r=await o.getChatHistory(e),a=t.chatStore.getMessages(n);return r.length>a.length?(console.log(`Found ${r.length-a.length} missed messages, updating chat...`),t.chatStore.reset(n),r.forEach(((e,s)=>{const r={id:e.id,sender:s%2==0?"user":"bot",content:e.content};t.chatStore.addMessage(n,r)})),t.chatStore.setConversationId(n,e),s.default("chat-history-reloaded"),!0):(console.log("No missed messages found"),!1)}catch(e){return console.error("Failed to reload chat history:",e),!1}}return!1}),[o,n]),d=e.useCallback(((e,r=0,a)=>{if(""===e.trim())return;const c=`$user-msg-${Date.now()}`,u={id:c,sender:"user",content:e},g=i.messages.length>0?i.messages[i.messages.length-1].id:void 0;t.chatStore.addMessage(n,u),t.chatStore.setBotTyping(n,!0),s.default("chat-send");const h=Promise.race([o.chat(e,g,n,a?.lat,a?.lon),new Promise(((e,t)=>{setTimeout((()=>t(new Error("Request timeout - please try again"))),36e4)}))]).then((e=>{const{id:r,content:a}=e,o={id:r,sender:"bot",content:a,isNew:!0};t.chatStore.setConversationId(n,r),t.chatStore.addMessage(n,o),t.chatStore.setBotTyping(n,!1),s.default("chat-receive"),a.startsWith("Error code: ")&&s.default("chat-error: "+a)})).catch((async i=>{console.error("Chat error details:",{error:i,message:i?.message,name:i?.name,stack:i?.stack,tempId:c,lastMessageId:g,retryCount:r,timestamp:(new Date).toISOString()});if(0===r&&("AbortError"===i?.name||i?.message?.includes("timeout")||i?.message?.includes("Failed to fetch")||i?.message?.includes("NetworkError")))return console.log("Auto-retrying chat request..."),t.chatStore.removeMessage(n,c),t.chatStore.setBotTyping(n,!1),void setTimeout((()=>d(e,r+1,a)),2e3);function u(){let e="An error occurred while sending the message. Please try again.";if(o.onUnauthorized&&i?.toString().includes("401"))return alert("Session expired. Please log in again."),void o.onUnauthorized();"AbortError"===i?.name||i?.message?.includes("timeout")?(e="Request timed out. Please check your connection and try again.",s.default("chat-timeout")):i?.message?.includes("HTTP error: 500")?(e="Server error. Please try again in a moment.",s.default("chat-server-error")):(i?.message?.includes("Failed to fetch")||i?.message?.includes("NetworkError"))&&(e="Network error. Please check your connection and try again.",s.default("chat-network-error")),console.warn(e),t.chatStore.removeMessage(n,c),t.chatStore.setBotTyping(n,!1),s.default("chat-error")}"AbortError"===i?.name||i?.message?.includes("timeout")||i?.message?.includes("Failed to fetch")||i?.message?.includes("NetworkError")||i?.message?.includes("WebSocket")||i?.message?.includes("SignalR")||i?.message?.includes("Connection")?(console.log("Potential SignalR/connection issue detected, checking for missed messages..."),setTimeout((async()=>{if(await l())return t.chatStore.removeMessage(n,c),t.chatStore.setBotTyping(n,!1),console.log("Recovered missed message(s) from server"),void s.default("chat-recovered");u()}),2e3)):u()}));t.chatStore.addPendingRequest(n,c,h)}),[o,i.messages,l,n]),u=e.useCallback((()=>{t.chatStore.reset(n),t.chatStore.clearMessages(n),s.default("new-chat")}),[n]),g=e.useCallback((e=>{t.chatStore.reset(n),t.chatStore.clearMessages(n),s.default("open-chat"),o.getChatHistory(e).then((e=>{e.forEach(((e,s)=>{const r={id:e.id,sender:s%2==0?"user":"bot",content:e.content};t.chatStore.addMessage(n,r)}))}))}),[o,n]);return{messages:i.messages,isBotTyping:i.isBotTyping,handleSend:d,newChat:u,openChat:g,reloadChatHistory:l}};
@@ -1 +1 @@
1
- "use strict";var e=require("react"),t=require("./useAudioRecorder.js"),r=require("./useAuthState.js"),s=require("./useRealtimeVoiceAI.js"),n=require("./useTools.js"),a=require("../config/index.js"),c=require("../utils/cacheManager.js"),i=require("./useAppState.js");exports.useCodicentApp=({auth0:o,toolsConfig:u,authOptions:p})=>{const l=r.default(o,p),A=l.codicentService,[{phase:E,context:d},f]=e.useReducer(i.appStateReducer,null,i.createInitialState),T=e.useCallback(((e,t)=>{const r=e.get("file").name;A.uploadFile(r,e).then((e=>{A.sendMessage(`#transcribe ${""!==t?(t.startsWith("#")?"":"#")+t+" ":""}#file:${e}`).catch(console.warn)}))}),[A]),g=t.useAudioRecorder(T),[m,h]=e.useState(),[S,k]=e.useState(),[C,y]=e.useState(!1),R=e.useMemo((()=>new Audio("./notification.mp3")),[]),_=e.useCallback((()=>y(!0)),[]),I=n.default(A,h,k,R,m,_,u),U=s.default(A,I);e.useEffect((()=>{C&&(U?.disconnectConversation(),y(!1))}),[C,U]),e.useEffect((()=>{l.isLoading||(l.isAuthenticated&&l.accessToken?f({type:"AUTHENTICATED",accessToken:l.accessToken,user:{sub:l.user?.sub??"",email:l.user?.email??""}}):l.isAuthenticated?l.authError&&f({type:"UPDATE_CONTEXT",updates:{error:l.authError}}):f({type:"NOT_AUTHENTICATED"}))}),[l.isLoading,l.isAuthenticated,l.accessToken,l.authError]),e.useEffect((()=>{"checkingCodicentAccess"===E&&(void 0===l.isRegistered&&l.authError?f({type:"UPDATE_CONTEXT",updates:{error:l.authError,errorType:"CodicentLoginFailed"}}):void 0!==l.isRegistered&&(!0===l.isRegistered&&l.nickname?f({type:"REGISTERED",nickname:l.nickname}):!1===l.isRegistered&&f({type:"NOT_REGISTERED"})))}),[E,l.isRegistered,l.nickname,l.authError]),e.useEffect((()=>{if("registering"!==E)return;if(!d.accessToken||!d.user)return;let e=!1;return A.setToken(d.accessToken),A.findUsername().then((async t=>{if(e)return;if(!t)return void f({type:"REGISTER_AUTO_FAIL",error:"Användarnamn kunde inte hittas.",errorType:"NoUsernameFound"});const r=await A.nicknameExists(t);e||(r?f({type:"REGISTER_AUTO_FAIL",error:"Användarnamnet finns redan.",errorType:"UsernameExists"}):(await A.registerUser(t,d.user.email,d.user.sub,d.accessToken),e||(A.setToken(d.accessToken),f({type:"REGISTER_AUTO_SUCCESS",nickname:t}))))})).catch((t=>{e||f({type:"REGISTER_AUTO_FAIL",error:t instanceof Error?t.message:String(t),errorType:"ErrorRegistering"})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("loadingUser"!==E||!d.nickname)return;let e=!1;return localStorage.setItem("nickname",d.nickname),A.getUserInfo(d.nickname).then((t=>{e||f({type:"USER_LOADED",name:t?.name||t?.nickname||""})})).catch((()=>{e||f({type:"USER_LOADED",name:""})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("checkingPurchase"!==E)return;if(!a.getConfigValue("SUBSCRIPTION_NEEDED"))return void f({type:"PURCHASE_VALID"});let e=!1;return A.checkSubscriptionStatus().then((t=>{if(!e){f("active"===t||"trialing"===t?{type:"PURCHASE_VALID"}:{type:"PURCHASE_INVALID"})}})).catch((()=>{e||f({type:"PURCHASE_INVALID"})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("gettingApps"!==E)return;let e=!1;return A.getApps().then((t=>{e||f(null!==t?{type:"APPS_LOADED",apps:t}:{type:"APPS_FAILED",error:"Failed to fetch apps."})})).catch((t=>{e||f({type:"APPS_FAILED",error:String(t)})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("creatingApp"!==E)return;let e=!1;return A.createApp().then((t=>{e||f(t?{type:"APP_CREATED",appId:t}:{type:"APP_CREATE_FAILED",error:"Misslyckades att skapa din app. Försök igen senare."})})).catch((t=>{e||f({type:"APP_CREATE_FAILED",error:String(t)})})),()=>{e=!0}}),[E]),e.useEffect((()=>{"hasAccess"===E&&d.selectedApp&&(A.codicent=d.selectedApp,localStorage.setItem("selectedApp",d.selectedApp),d.isFromCache||i.saveSession(d))}),[E,d.selectedApp]);const O=e.useRef(!1);e.useEffect((()=>{"hasAccess"===E&&d.isFromCache&&d.needsValidation&&l.accessToken&&l.isAuthenticated&&(O.current||(O.current=!0,i.runBackgroundValidation(A,d,f)))}),[E,d.isFromCache,d.needsValidation,l.accessToken,l.isAuthenticated]),e.useEffect((()=>{"needsPurchase"===E&&(window.location.href="./#/purchase")}),[E]),e.useEffect((()=>{if("anonymous"!==E)return;const e=a.getConfigValue("ANONYMOUS_TOKEN"),t=a.getConfigValue("ANONYMOUS_CODICENT")||a.getConfigValue("APP_NAME")||"";e&&(A.setToken(e),A.codicent=t)}),[E]),e.useEffect((()=>{"loggingOut"===E&&(a.getConfigValue("ENABLE_STATE_CACHE")&&c.stateMachineCacheManager.clear(),localStorage.removeItem("selectedApp"),localStorage.removeItem("nickname"),localStorage.removeItem("codicent"),sessionStorage.clear(),l.logout())}),[E]);const P=e.useRef(d);P.current=d;const D=e.useRef({}).current,N=e.useRef({}).current,L=e.useMemo((()=>({service:A,get context(){return P.current},current:"hasAccess"===E?D:N,allStates:{hasAccess:D},setSelectedApp:e=>{f({type:"SET_SELECTED_APP",appId:e})},updateContext:e=>{f({type:"UPDATE_CONTEXT",updates:e})},logout:()=>{f({type:"LOGOUT"})},update:()=>{},isBusy:()=>i.isBusyPhase(E)})),[E,A]),v=e.useCallback((e=>e.replace("{nickname}",d.nickname||"unknown").replace("{token}",encodeURIComponent(l.accessToken||"unknown")).replace("{app}",d.selectedApp||"unknown")),[d.nickname,l.accessToken,d.selectedApp]),F=e.useCallback((e=>{e&&a.getConfigValue("ANONYMOUS_TOKEN")&&f({type:"SET_ANONYMOUS"})}),[]),M=e.useCallback((()=>i.isBusyPhase(E)),[E]);return e.useMemo((()=>({audio:g,auth:l,currentStateName:E,stateMachine:L,service:A,context:d,state:E,nickname:d.nickname||"",name:d.name||"",error:d.error||"",errorType:d.errorType||"",fixAppUrl:v,setAnonymous:F,allStates:L.allStates,isBusy:M,voice:U,html:m||"",setHtml:h,script:S||""})),[E,d,m,S,l.isAuthenticated,l.isLoading,g.isRecording,U?.isConnected,v,F,M,L])};
1
+ "use strict";var e=require("react"),t=require("./useAudioRecorder.js"),r=require("./useAuthState.js"),s=require("./useRealtimeVoiceAI.js"),n=require("./useTools.js"),a=require("../config/index.js"),c=require("../utils/cacheManager.js"),i=require("./useAppState.js");exports.useCodicentApp=({auth0:o,toolsConfig:u,authOptions:p})=>{const l=r.default(o,p),A=l.codicentService,[{phase:E,context:d},f]=e.useReducer(i.appStateReducer,null,i.createInitialState),g=e.useCallback(((e,t)=>{const r=e.get("file").name;A.uploadFile(r,e).then((e=>{A.sendMessage(`#transcribe ${""!==t?(t.startsWith("#")?"":"#")+t+" ":""}#file:${e}`).catch(console.warn)}))}),[A]),T=t.useAudioRecorder(g),[m,h]=e.useState(),[S,k]=e.useState(),[C,y]=e.useState(!1),R=e.useMemo((()=>new Audio("./notification.mp3")),[]),_=e.useCallback((()=>y(!0)),[]),I=n.default(A,h,k,R,m,_,u),P=s.default(A,I);e.useEffect((()=>{C&&(P?.disconnectConversation(),y(!1))}),[C,P]),e.useEffect((()=>{l.isLoading||(l.isAuthenticated&&l.accessToken?f({type:"AUTHENTICATED",accessToken:l.accessToken,user:{sub:l.user?.sub??"",email:l.user?.email??""}}):l.isAuthenticated?l.authError&&f({type:"UPDATE_CONTEXT",updates:{error:l.authError}}):f({type:"NOT_AUTHENTICATED"}))}),[l.isLoading,l.isAuthenticated,l.accessToken,l.authError]),e.useEffect((()=>{"checkingCodicentAccess"===E&&(void 0===l.isRegistered&&l.authError?f({type:"UPDATE_CONTEXT",updates:{error:l.authError,errorType:"CodicentLoginFailed"}}):void 0!==l.isRegistered&&(!0===l.isRegistered&&l.nickname?f({type:"REGISTERED",nickname:l.nickname}):!1===l.isRegistered&&f({type:"NOT_REGISTERED"})))}),[E,l.isRegistered,l.nickname,l.authError]),e.useEffect((()=>{if("registering"!==E)return;if(!d.accessToken||!d.user)return;let e=!1;return A.setToken(d.accessToken),A.findUsername().then((async t=>{if(e)return;if(!t)return void f({type:"REGISTER_AUTO_FAIL",error:"Användarnamn kunde inte hittas.",errorType:"NoUsernameFound"});const r=await A.nicknameExists(t);e||(r?f({type:"REGISTER_AUTO_FAIL",error:"Användarnamnet finns redan.",errorType:"UsernameExists"}):(await A.registerUser(t,d.user.email,d.user.sub,d.accessToken),e||(A.setToken(d.accessToken),f({type:"REGISTER_AUTO_SUCCESS",nickname:t}))))})).catch((t=>{e||f({type:"REGISTER_AUTO_FAIL",error:t instanceof Error?t.message:String(t),errorType:"ErrorRegistering"})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("loadingUser"!==E||!d.nickname)return;let e=!1;return localStorage.setItem("nickname",d.nickname),A.getUserInfo(d.nickname).then((t=>{e||f({type:"USER_LOADED",name:t?.name||t?.nickname||""})})).catch((()=>{e||f({type:"USER_LOADED",name:""})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("checkingPurchase"!==E)return;if(!a.getConfigValue("SUBSCRIPTION_NEEDED"))return void f({type:"PURCHASE_VALID"});let e=!1;return A.checkSubscriptionStatus().then((t=>{if(!e){f("active"===t||"trialing"===t?{type:"PURCHASE_VALID"}:{type:"PURCHASE_INVALID"})}})).catch((()=>{e||f({type:"PURCHASE_INVALID"})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("gettingApps"!==E)return;let e=!1;return A.getApps().then((t=>{e||f(null!==t?{type:"APPS_LOADED",apps:t}:{type:"APPS_FAILED",error:"Failed to fetch apps."})})).catch((t=>{e||f({type:"APPS_FAILED",error:String(t)})})),()=>{e=!0}}),[E]),e.useEffect((()=>{if("creatingApp"!==E)return;let e=!1;return A.createApp().then((t=>{e||f(t?{type:"APP_CREATED",appId:t}:{type:"APP_CREATE_FAILED",error:"Misslyckades att skapa din app. Försök igen senare."})})).catch((t=>{e||f({type:"APP_CREATE_FAILED",error:String(t)})})),()=>{e=!0}}),[E]),e.useEffect((()=>{"hasAccess"===E&&d.selectedApp&&(A.codicent=d.selectedApp,localStorage.setItem("selectedApp",d.selectedApp),d.isFromCache||i.saveSession(d))}),[E,d.selectedApp]);const U=e.useRef(!1);e.useEffect((()=>{"hasAccess"===E&&d.isFromCache&&d.needsValidation&&l.accessToken&&l.isAuthenticated&&(U.current||(U.current=!0,i.runBackgroundValidation(A,d,f)))}),[E,d.isFromCache,d.needsValidation,l.accessToken,l.isAuthenticated]),e.useEffect((()=>{"needsPurchase"===E&&(window.location.href="./#/purchase")}),[E]),e.useEffect((()=>{if("anonymous"!==E)return;const e=a.getConfigValue("ANONYMOUS_TOKEN"),t=a.getConfigValue("ANONYMOUS_CODICENT")||a.getConfigValue("APP_NAME")||"";e&&(A.setToken(e),A.codicent=t)}),[E]),e.useEffect((()=>{"loggingOut"===E&&(a.getConfigValue("ENABLE_STATE_CACHE")&&c.stateMachineCacheManager.clear(),localStorage.removeItem("selectedApp"),localStorage.removeItem("nickname"),localStorage.removeItem("codicent"),sessionStorage.clear(),l.logout())}),[E]);const O=e.useRef(d);O.current=d;const N=e.useRef({}).current,D=e.useRef({}).current,L=e.useMemo((()=>({service:A,get context(){return O.current},current:"hasAccess"===E?N:D,allStates:{hasAccess:N},setSelectedApp:e=>{f({type:"SET_SELECTED_APP",appId:e})},updateContext:e=>{f({type:"UPDATE_CONTEXT",updates:e})},logout:()=>{f({type:"LOGOUT"})},update:()=>{},isBusy:()=>i.isBusyPhase(E)})),[E,A]),v=e.useCallback((e=>e.replace("{nickname}",d.nickname||"unknown").replace("{token}",encodeURIComponent(l.accessToken||"unknown")).replace("{app}",d.selectedApp||a.getConfigValue("APP_NAME")||"unknown")),[d.nickname,l.accessToken,d.selectedApp]),F=e.useCallback((e=>{e&&a.getConfigValue("ANONYMOUS_TOKEN")&&f({type:"SET_ANONYMOUS"})}),[]),M=e.useCallback((()=>i.isBusyPhase(E)),[E]);return e.useMemo((()=>({audio:T,auth:l,currentStateName:E,stateMachine:L,service:A,context:d,state:E,nickname:d.nickname||"",name:d.name||"",error:d.error||"",errorType:d.errorType||"",fixAppUrl:v,setAnonymous:F,allStates:L.allStates,isBusy:M,voice:P,html:m||"",setHtml:h,script:S||""})),[E,d,m,S,l.isAuthenticated,l.isLoading,T.isRecording,P?.isConnected,v,F,M,L])};
@@ -1 +1 @@
1
- {"version":3,"file":"useRealtimeVoiceAI.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoiceAI.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAK/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC/B;AAED,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,kBAAkB,oBACL,eAAe,SACzB;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,EAAE,UACtD,MAAM,aACH,MAAM,KAChB,aAAa,GAAG,SAquBlB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"useRealtimeVoiceAI.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoiceAI.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAK/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC/B;AAED,8CAA8C;AAC9C,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,kBAAkB,oBACL,eAAe,SACzB;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,EAAE,UACtD,MAAM,aACH,MAAM,KAChB,aAAa,GAAG,SAywBlB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}