@peers-app/peers-ui 0.0.14

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 (404) hide show
  1. package/.github/README.md +52 -0
  2. package/.github/workflows/publish.yml +45 -0
  3. package/babel.config.js +7 -0
  4. package/dist/app.d.ts +9 -0
  5. package/dist/app.js +54 -0
  6. package/dist/command-palette/command-palette-ui.d.ts +2 -0
  7. package/dist/command-palette/command-palette-ui.js +192 -0
  8. package/dist/command-palette/command-palette.d.ts +23 -0
  9. package/dist/command-palette/command-palette.js +371 -0
  10. package/dist/components/checkbox.d.ts +7 -0
  11. package/dist/components/checkbox.js +20 -0
  12. package/dist/components/group-switcher.d.ts +6 -0
  13. package/dist/components/group-switcher.js +301 -0
  14. package/dist/components/input-date.d.ts +7 -0
  15. package/dist/components/input-date.js +19 -0
  16. package/dist/components/input-datetime.d.ts +7 -0
  17. package/dist/components/input-datetime.js +35 -0
  18. package/dist/components/input-number.d.ts +9 -0
  19. package/dist/components/input-number.js +87 -0
  20. package/dist/components/input.d.ts +7 -0
  21. package/dist/components/input.js +20 -0
  22. package/dist/components/io-schema-values.d.ts +15 -0
  23. package/dist/components/io-schema-values.js +105 -0
  24. package/dist/components/io-schema.d.ts +13 -0
  25. package/dist/components/io-schema.js +163 -0
  26. package/dist/components/lazy-list.d.ts +13 -0
  27. package/dist/components/lazy-list.js +91 -0
  28. package/dist/components/lazy-sortable-list.d.ts +29 -0
  29. package/dist/components/lazy-sortable-list.js +12 -0
  30. package/dist/components/left-bar.d.ts +3 -0
  31. package/dist/components/left-bar.js +130 -0
  32. package/dist/components/list-screen.d.ts +16 -0
  33. package/dist/components/list-screen.js +100 -0
  34. package/dist/components/loading-indicator.d.ts +2 -0
  35. package/dist/components/loading-indicator.js +12 -0
  36. package/dist/components/main-content-container.d.ts +2 -0
  37. package/dist/components/main-content-container.js +90 -0
  38. package/dist/components/markdown-editor/autolink-plugin.d.ts +2 -0
  39. package/dist/components/markdown-editor/autolink-plugin.js +29 -0
  40. package/dist/components/markdown-editor/editor-inline.d.ts +3 -0
  41. package/dist/components/markdown-editor/editor-inline.js +13 -0
  42. package/dist/components/markdown-editor/editor.d.ts +18 -0
  43. package/dist/components/markdown-editor/editor.js +143 -0
  44. package/dist/components/markdown-editor/markdown-plugin.d.ts +9 -0
  45. package/dist/components/markdown-editor/markdown-plugin.js +194 -0
  46. package/dist/components/markdown-editor/mention-node.d.ts +21 -0
  47. package/dist/components/markdown-editor/mention-node.js +160 -0
  48. package/dist/components/markdown-editor/mentions-plugin.d.ts +7 -0
  49. package/dist/components/markdown-editor/mentions-plugin.js +268 -0
  50. package/dist/components/markdown-editor/theme.d.ts +46 -0
  51. package/dist/components/markdown-editor/theme.js +48 -0
  52. package/dist/components/markdown-editor/toolbar.d.ts +10 -0
  53. package/dist/components/markdown-editor/toolbar.js +112 -0
  54. package/dist/components/markdown-with-mentions.d.ts +4 -0
  55. package/dist/components/markdown-with-mentions.js +140 -0
  56. package/dist/components/message-logs/message-logs.d.ts +6 -0
  57. package/dist/components/message-logs/message-logs.js +307 -0
  58. package/dist/components/messages/avatar.d.ts +10 -0
  59. package/dist/components/messages/avatar.js +65 -0
  60. package/dist/components/messages/channel-message-list.d.ts +14 -0
  61. package/dist/components/messages/channel-message-list.js +158 -0
  62. package/dist/components/messages/channel-view.d.ts +6 -0
  63. package/dist/components/messages/channel-view.js +82 -0
  64. package/dist/components/messages/message-compose.d.ts +11 -0
  65. package/dist/components/messages/message-compose.js +152 -0
  66. package/dist/components/messages/message-display.d.ts +10 -0
  67. package/dist/components/messages/message-display.js +152 -0
  68. package/dist/components/messages/thread-message-list.d.ts +11 -0
  69. package/dist/components/messages/thread-message-list.js +122 -0
  70. package/dist/components/messages/thread-view.d.ts +6 -0
  71. package/dist/components/messages/thread-view.js +174 -0
  72. package/dist/components/off-canvas.d.ts +13 -0
  73. package/dist/components/off-canvas.js +89 -0
  74. package/dist/components/router.d.ts +6 -0
  75. package/dist/components/router.js +240 -0
  76. package/dist/components/save-button.d.ts +13 -0
  77. package/dist/components/save-button.js +75 -0
  78. package/dist/components/sortable-list.d.ts +36 -0
  79. package/dist/components/sortable-list.js +77 -0
  80. package/dist/components/tabs.d.ts +11 -0
  81. package/dist/components/tabs.js +69 -0
  82. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +6 -0
  83. package/dist/components/text-list-editor.tsx/text-list-editor.js +13 -0
  84. package/dist/components/tooltip.d.ts +11 -0
  85. package/dist/components/tooltip.js +20 -0
  86. package/dist/components/top-bar.d.ts +2 -0
  87. package/dist/components/top-bar.js +51 -0
  88. package/dist/components/typeahead/mentions-plugin.d.ts +7 -0
  89. package/dist/components/typeahead/mentions-plugin.js +203 -0
  90. package/dist/components/typeahead/typeahead-editor.d.ts +15 -0
  91. package/dist/components/typeahead/typeahead-editor.js +134 -0
  92. package/dist/components/typeahead/typeahead.d.ts +12 -0
  93. package/dist/components/typeahead/typeahead.js +94 -0
  94. package/dist/components/typeahead.d.ts +22 -0
  95. package/dist/components/typeahead.js +270 -0
  96. package/dist/globals.d.ts +29 -0
  97. package/dist/globals.js +148 -0
  98. package/dist/hooks.d.ts +34 -0
  99. package/dist/hooks.js +137 -0
  100. package/dist/index.d.ts +4 -0
  101. package/dist/index.js +20 -0
  102. package/dist/layout-vars.d.ts +6 -0
  103. package/dist/layout-vars.js +10 -0
  104. package/dist/mention-configs.d.ts +18 -0
  105. package/dist/mention-configs.js +149 -0
  106. package/dist/screens/assistants/assistant-config.d.ts +5 -0
  107. package/dist/screens/assistants/assistant-config.js +52 -0
  108. package/dist/screens/assistants/assistant-details.d.ts +4 -0
  109. package/dist/screens/assistants/assistant-details.js +85 -0
  110. package/dist/screens/assistants/assistant-info.d.ts +6 -0
  111. package/dist/screens/assistants/assistant-info.js +28 -0
  112. package/dist/screens/assistants/assistant-list.d.ts +2 -0
  113. package/dist/screens/assistants/assistant-list.js +114 -0
  114. package/dist/screens/assistants/assistant-tools.d.ts +5 -0
  115. package/dist/screens/assistants/assistant-tools.js +38 -0
  116. package/dist/screens/contacts/contact-details.d.ts +6 -0
  117. package/dist/screens/contacts/contact-details.js +100 -0
  118. package/dist/screens/contacts/contact-list.d.ts +2 -0
  119. package/dist/screens/contacts/contact-list.js +213 -0
  120. package/dist/screens/contacts/index.d.ts +4 -0
  121. package/dist/screens/contacts/index.js +21 -0
  122. package/dist/screens/events/cron.d.ts +3 -0
  123. package/dist/screens/events/cron.js +77 -0
  124. package/dist/screens/events/event-details.d.ts +6 -0
  125. package/dist/screens/events/event-details.js +112 -0
  126. package/dist/screens/events/event-handlers.d.ts +7 -0
  127. package/dist/screens/events/event-handlers.js +84 -0
  128. package/dist/screens/events/event-info.d.ts +5 -0
  129. package/dist/screens/events/event-info.js +19 -0
  130. package/dist/screens/events/event-list.d.ts +2 -0
  131. package/dist/screens/events/event-list.js +107 -0
  132. package/dist/screens/events/event-schedule.d.ts +5 -0
  133. package/dist/screens/events/event-schedule.js +124 -0
  134. package/dist/screens/groups/group-details.d.ts +6 -0
  135. package/dist/screens/groups/group-details.js +218 -0
  136. package/dist/screens/groups/group-list.d.ts +2 -0
  137. package/dist/screens/groups/group-list.js +275 -0
  138. package/dist/screens/groups/group-members.d.ts +8 -0
  139. package/dist/screens/groups/group-members.js +315 -0
  140. package/dist/screens/groups/index.d.ts +6 -0
  141. package/dist/screens/groups/index.js +23 -0
  142. package/dist/screens/knowledge/knowledge-frame-details.bk.d.ts +6 -0
  143. package/dist/screens/knowledge/knowledge-frame-details.bk.js +84 -0
  144. package/dist/screens/knowledge/knowledge-frame-details.d.ts +8 -0
  145. package/dist/screens/knowledge/knowledge-frame-details.js +143 -0
  146. package/dist/screens/knowledge/knowledge-frame-list.d.ts +2 -0
  147. package/dist/screens/knowledge/knowledge-frame-list.js +45 -0
  148. package/dist/screens/knowledge/knowledge-value-details.d.ts +6 -0
  149. package/dist/screens/knowledge/knowledge-value-details.js +150 -0
  150. package/dist/screens/knowledge/knowledge-value-list-item.d.ts +5 -0
  151. package/dist/screens/knowledge/knowledge-value-list-item.js +39 -0
  152. package/dist/screens/knowledge/knowledge-value-list.d.ts +3 -0
  153. package/dist/screens/knowledge/knowledge-value-list.js +123 -0
  154. package/dist/screens/packages/package-details.d.ts +6 -0
  155. package/dist/screens/packages/package-details.js +82 -0
  156. package/dist/screens/packages/package-info.d.ts +5 -0
  157. package/dist/screens/packages/package-info.js +42 -0
  158. package/dist/screens/packages/package-list.d.ts +2 -0
  159. package/dist/screens/packages/package-list.js +182 -0
  160. package/dist/screens/packages/package-new-local.d.ts +2 -0
  161. package/dist/screens/packages/package-new-local.js +82 -0
  162. package/dist/screens/peer-types/peer-type-details.d.ts +10 -0
  163. package/dist/screens/peer-types/peer-type-details.js +126 -0
  164. package/dist/screens/peer-types/peer-type-list.d.ts +2 -0
  165. package/dist/screens/peer-types/peer-type-list.js +57 -0
  166. package/dist/screens/predicates/predicate-details.d.ts +6 -0
  167. package/dist/screens/predicates/predicate-details.js +103 -0
  168. package/dist/screens/predicates/predicate-list.d.ts +2 -0
  169. package/dist/screens/predicates/predicate-list.js +46 -0
  170. package/dist/screens/profile.d.ts +2 -0
  171. package/dist/screens/profile.js +66 -0
  172. package/dist/screens/search/global-search.d.ts +2 -0
  173. package/dist/screens/search/global-search.js +186 -0
  174. package/dist/screens/settings/color-mode-dropdown.d.ts +6 -0
  175. package/dist/screens/settings/color-mode-dropdown.js +63 -0
  176. package/dist/screens/settings/settings-page.d.ts +2 -0
  177. package/dist/screens/settings/settings-page.js +49 -0
  178. package/dist/screens/setup-user.d.ts +2 -0
  179. package/dist/screens/setup-user.js +270 -0
  180. package/dist/screens/tools/tool-code.d.ts +5 -0
  181. package/dist/screens/tools/tool-code.js +32 -0
  182. package/dist/screens/tools/tool-details.d.ts +6 -0
  183. package/dist/screens/tools/tool-details.js +68 -0
  184. package/dist/screens/tools/tool-info.d.ts +5 -0
  185. package/dist/screens/tools/tool-info.js +74 -0
  186. package/dist/screens/tools/tool-list.d.ts +2 -0
  187. package/dist/screens/tools/tool-list.js +123 -0
  188. package/dist/screens/tools/tool-schema.d.ts +5 -0
  189. package/dist/screens/tools/tool-schema.js +30 -0
  190. package/dist/screens/tools/tool-test-details.d.ts +4 -0
  191. package/dist/screens/tools/tool-test-details.js +54 -0
  192. package/dist/screens/tools/tool-test-list.d.ts +4 -0
  193. package/dist/screens/tools/tool-test-list.js +82 -0
  194. package/dist/screens/variables/variable-details.d.ts +6 -0
  195. package/dist/screens/variables/variable-details.js +140 -0
  196. package/dist/screens/variables/variable-list.d.ts +2 -0
  197. package/dist/screens/variables/variable-list.js +58 -0
  198. package/dist/screens/workflows/workflow-details.d.ts +6 -0
  199. package/dist/screens/workflows/workflow-details.js +122 -0
  200. package/dist/screens/workflows/workflow-info.d.ts +5 -0
  201. package/dist/screens/workflows/workflow-info.js +18 -0
  202. package/dist/screens/workflows/workflow-instructions.d.ts +5 -0
  203. package/dist/screens/workflows/workflow-instructions.js +118 -0
  204. package/dist/screens/workflows/workflow-list.d.ts +2 -0
  205. package/dist/screens/workflows/workflow-list.js +109 -0
  206. package/dist/screens/workflows/workflow-subscriptions.d.ts +6 -0
  207. package/dist/screens/workflows/workflow-subscriptions.js +81 -0
  208. package/dist/setupTests.d.ts +1 -0
  209. package/dist/setupTests.js +31 -0
  210. package/dist/system-apps/assistants.app.d.ts +2 -0
  211. package/dist/system-apps/assistants.app.js +8 -0
  212. package/dist/system-apps/contacts.app.d.ts +2 -0
  213. package/dist/system-apps/contacts.app.js +9 -0
  214. package/dist/system-apps/events.app.d.ts +2 -0
  215. package/dist/system-apps/events.app.js +8 -0
  216. package/dist/system-apps/groups.app.d.ts +2 -0
  217. package/dist/system-apps/groups.app.js +9 -0
  218. package/dist/system-apps/index.d.ts +19 -0
  219. package/dist/system-apps/index.js +90 -0
  220. package/dist/system-apps/knowledge-frames.app.d.ts +2 -0
  221. package/dist/system-apps/knowledge-frames.app.js +9 -0
  222. package/dist/system-apps/knowledge-values.app.d.ts +2 -0
  223. package/dist/system-apps/knowledge-values.app.js +9 -0
  224. package/dist/system-apps/packages.app.d.ts +2 -0
  225. package/dist/system-apps/packages.app.js +8 -0
  226. package/dist/system-apps/predicates.app.d.ts +2 -0
  227. package/dist/system-apps/predicates.app.js +8 -0
  228. package/dist/system-apps/profile.app.d.ts +2 -0
  229. package/dist/system-apps/profile.app.js +8 -0
  230. package/dist/system-apps/search.app.d.ts +2 -0
  231. package/dist/system-apps/search.app.js +9 -0
  232. package/dist/system-apps/settings.app.d.ts +2 -0
  233. package/dist/system-apps/settings.app.js +8 -0
  234. package/dist/system-apps/threads.app.d.ts +2 -0
  235. package/dist/system-apps/threads.app.js +8 -0
  236. package/dist/system-apps/tools.app.d.ts +2 -0
  237. package/dist/system-apps/tools.app.js +8 -0
  238. package/dist/system-apps/types.app.d.ts +2 -0
  239. package/dist/system-apps/types.app.js +8 -0
  240. package/dist/system-apps/variables.app.d.ts +2 -0
  241. package/dist/system-apps/variables.app.js +8 -0
  242. package/dist/system-apps/workflows.app.d.ts +2 -0
  243. package/dist/system-apps/workflows.app.js +8 -0
  244. package/dist/tabs-layout/tabs-layout.d.ts +5 -0
  245. package/dist/tabs-layout/tabs-layout.js +374 -0
  246. package/dist/tabs-layout/tabs-state.d.ts +26 -0
  247. package/dist/tabs-layout/tabs-state.js +239 -0
  248. package/dist/three-bar-layout/left-bar-content.d.ts +7 -0
  249. package/dist/three-bar-layout/left-bar-content.js +151 -0
  250. package/dist/three-bar-layout/right-bar-content.d.ts +2 -0
  251. package/dist/three-bar-layout/right-bar-content.js +64 -0
  252. package/dist/three-bar-layout/three-bar-layout.d.ts +5 -0
  253. package/dist/three-bar-layout/three-bar-layout.js +218 -0
  254. package/dist/ui-defaults/index.d.ts +2 -0
  255. package/dist/ui-defaults/index.js +4 -0
  256. package/dist/ui-defaults/list-screen.d.ts +6 -0
  257. package/dist/ui-defaults/list-screen.js +74 -0
  258. package/dist/ui-defaults/notes-editor.d.ts +7 -0
  259. package/dist/ui-defaults/notes-editor.js +41 -0
  260. package/dist/ui-router/routes-loader.d.ts +25 -0
  261. package/dist/ui-router/routes-loader.js +97 -0
  262. package/dist/ui-router/ui-loader.d.ts +18 -0
  263. package/dist/ui-router/ui-loader.js +481 -0
  264. package/dist/utils.d.ts +9 -0
  265. package/dist/utils.js +250 -0
  266. package/docs/conversation-tab.md +201 -0
  267. package/docs/getting-started.md +284 -0
  268. package/docs/knowledge.md +187 -0
  269. package/docs/tabs-ui.md +696 -0
  270. package/docs/user-contacts-ui.md +384 -0
  271. package/jest.config.js +25 -0
  272. package/package.json +109 -0
  273. package/src/app.tsx +59 -0
  274. package/src/command-palette/command-palette-ui.tsx +264 -0
  275. package/src/command-palette/command-palette.ts +364 -0
  276. package/src/components/checkbox.tsx +22 -0
  277. package/src/components/group-switcher.tsx +469 -0
  278. package/src/components/input-date.tsx +28 -0
  279. package/src/components/input-datetime.tsx +41 -0
  280. package/src/components/input-number.tsx +67 -0
  281. package/src/components/input.tsx +22 -0
  282. package/src/components/io-schema-values.tsx +122 -0
  283. package/src/components/io-schema.tsx +234 -0
  284. package/src/components/lazy-list.tsx +98 -0
  285. package/src/components/lazy-sortable-list.tsx +51 -0
  286. package/src/components/left-bar.tsx +264 -0
  287. package/src/components/list-screen.tsx +105 -0
  288. package/src/components/loading-indicator.tsx +9 -0
  289. package/src/components/main-content-container.tsx +76 -0
  290. package/src/components/markdown-editor/autolink-plugin.tsx +36 -0
  291. package/src/components/markdown-editor/editor-inline.tsx +10 -0
  292. package/src/components/markdown-editor/editor.tsx +152 -0
  293. package/src/components/markdown-editor/markdown-plugin.tsx +224 -0
  294. package/src/components/markdown-editor/mention-node.ts +199 -0
  295. package/src/components/markdown-editor/mentions-plugin.tsx +356 -0
  296. package/src/components/markdown-editor/theme.ts +47 -0
  297. package/src/components/markdown-editor/toolbar.tsx +263 -0
  298. package/src/components/markdown-with-mentions.tsx +183 -0
  299. package/src/components/message-logs/message-logs.tsx +406 -0
  300. package/src/components/messages/avatar.tsx +95 -0
  301. package/src/components/messages/channel-message-list.tsx +177 -0
  302. package/src/components/messages/channel-view.tsx +74 -0
  303. package/src/components/messages/message-compose.tsx +162 -0
  304. package/src/components/messages/message-display.tsx +217 -0
  305. package/src/components/messages/thread-message-list.tsx +126 -0
  306. package/src/components/messages/thread-view.tsx +214 -0
  307. package/src/components/off-canvas.tsx +83 -0
  308. package/src/components/router.tsx +224 -0
  309. package/src/components/save-button.tsx +109 -0
  310. package/src/components/sortable-list.tsx +102 -0
  311. package/src/components/tabs.tsx +70 -0
  312. package/src/components/text-list-editor.tsx/text-list-editor.tsx +13 -0
  313. package/src/components/tooltip.tsx +50 -0
  314. package/src/components/top-bar.tsx +119 -0
  315. package/src/components/typeahead/mentions-plugin.tsx +265 -0
  316. package/src/components/typeahead/typeahead-editor.tsx +140 -0
  317. package/src/components/typeahead/typeahead.tsx +77 -0
  318. package/src/components/typeahead.tsx +359 -0
  319. package/src/globals.tsx +162 -0
  320. package/src/hooks.ts +144 -0
  321. package/src/index.tsx +8 -0
  322. package/src/layout-vars.ts +8 -0
  323. package/src/mention-configs.ts +166 -0
  324. package/src/screens/assistants/assistant-config.tsx +80 -0
  325. package/src/screens/assistants/assistant-details.tsx +77 -0
  326. package/src/screens/assistants/assistant-info.tsx +45 -0
  327. package/src/screens/assistants/assistant-list.tsx +115 -0
  328. package/src/screens/assistants/assistant-tools.tsx +61 -0
  329. package/src/screens/contacts/contact-details.tsx +175 -0
  330. package/src/screens/contacts/contact-list.tsx +251 -0
  331. package/src/screens/contacts/index.ts +6 -0
  332. package/src/screens/events/cron.ts +74 -0
  333. package/src/screens/events/event-details.tsx +117 -0
  334. package/src/screens/events/event-handlers.tsx +61 -0
  335. package/src/screens/events/event-info.tsx +29 -0
  336. package/src/screens/events/event-list.tsx +104 -0
  337. package/src/screens/events/event-schedule.tsx +130 -0
  338. package/src/screens/groups/group-details.tsx +306 -0
  339. package/src/screens/groups/group-list.tsx +366 -0
  340. package/src/screens/groups/group-members.tsx +455 -0
  341. package/src/screens/groups/index.ts +9 -0
  342. package/src/screens/knowledge/knowledge-frame-details.bk.tsx +160 -0
  343. package/src/screens/knowledge/knowledge-frame-details.tsx +176 -0
  344. package/src/screens/knowledge/knowledge-frame-list.tsx +49 -0
  345. package/src/screens/knowledge/knowledge-value-details.tsx +181 -0
  346. package/src/screens/knowledge/knowledge-value-list-item.tsx +48 -0
  347. package/src/screens/knowledge/knowledge-value-list.tsx +131 -0
  348. package/src/screens/packages/package-details.tsx +117 -0
  349. package/src/screens/packages/package-info.tsx +83 -0
  350. package/src/screens/packages/package-list.tsx +191 -0
  351. package/src/screens/packages/package-new-local.tsx +93 -0
  352. package/src/screens/peer-types/peer-type-details.tsx +162 -0
  353. package/src/screens/peer-types/peer-type-list.tsx +74 -0
  354. package/src/screens/predicates/predicate-details.tsx +125 -0
  355. package/src/screens/predicates/predicate-list.tsx +50 -0
  356. package/src/screens/profile.tsx +68 -0
  357. package/src/screens/search/global-search.tsx +274 -0
  358. package/src/screens/settings/color-mode-dropdown.tsx +57 -0
  359. package/src/screens/settings/settings-page.tsx +76 -0
  360. package/src/screens/setup-user.tsx +367 -0
  361. package/src/screens/tools/tool-code.tsx +35 -0
  362. package/src/screens/tools/tool-details.tsx +101 -0
  363. package/src/screens/tools/tool-info.tsx +60 -0
  364. package/src/screens/tools/tool-list.tsx +121 -0
  365. package/src/screens/tools/tool-schema.tsx +42 -0
  366. package/src/screens/tools/tool-test-details.tsx +100 -0
  367. package/src/screens/tools/tool-test-list.tsx +74 -0
  368. package/src/screens/variables/variable-details.tsx +183 -0
  369. package/src/screens/variables/variable-list.tsx +74 -0
  370. package/src/screens/workflows/workflow-details.tsx +130 -0
  371. package/src/screens/workflows/workflow-info.tsx +29 -0
  372. package/src/screens/workflows/workflow-instructions.tsx +127 -0
  373. package/src/screens/workflows/workflow-list.tsx +107 -0
  374. package/src/screens/workflows/workflow-subscriptions.tsx +58 -0
  375. package/src/setupTests.ts +32 -0
  376. package/src/system-apps/assistants.app.ts +7 -0
  377. package/src/system-apps/contacts.app.ts +8 -0
  378. package/src/system-apps/events.app.ts +7 -0
  379. package/src/system-apps/groups.app.ts +8 -0
  380. package/src/system-apps/index.ts +79 -0
  381. package/src/system-apps/knowledge-frames.app.ts +8 -0
  382. package/src/system-apps/knowledge-values.app.ts +8 -0
  383. package/src/system-apps/packages.app.ts +7 -0
  384. package/src/system-apps/predicates.app.ts +7 -0
  385. package/src/system-apps/profile.app.ts +7 -0
  386. package/src/system-apps/search.app.ts +8 -0
  387. package/src/system-apps/settings.app.ts +7 -0
  388. package/src/system-apps/threads.app.ts +7 -0
  389. package/src/system-apps/tools.app.ts +7 -0
  390. package/src/system-apps/types.app.ts +7 -0
  391. package/src/system-apps/variables.app.ts +7 -0
  392. package/src/system-apps/workflows.app.ts +7 -0
  393. package/src/tabs-layout/tabs-layout.tsx +672 -0
  394. package/src/tabs-layout/tabs-state.ts +269 -0
  395. package/src/three-bar-layout/left-bar-content.tsx +202 -0
  396. package/src/three-bar-layout/right-bar-content.tsx +67 -0
  397. package/src/three-bar-layout/three-bar-layout.tsx +297 -0
  398. package/src/ui-defaults/index.ts +3 -0
  399. package/src/ui-defaults/list-screen.tsx +92 -0
  400. package/src/ui-defaults/notes-editor.tsx +51 -0
  401. package/src/ui-router/routes-loader.ts +98 -0
  402. package/src/ui-router/ui-loader.tsx +497 -0
  403. package/src/utils.ts +266 -0
  404. package/tsconfig.json +24 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ChannelMessageList = void 0;
40
+ exports.getMessages = getMessages;
41
+ const peers_sdk_1 = require("@peers-app/peers-sdk");
42
+ const lodash_1 = require("lodash");
43
+ const react_1 = __importStar(require("react"));
44
+ const react_infinite_scroll_component_1 = __importDefault(require("react-infinite-scroll-component"));
45
+ const globals_1 = require("../../globals");
46
+ const loading_indicator_1 = require("../loading-indicator");
47
+ const message_display_1 = require("./message-display");
48
+ const windowHeight = () => window.innerHeight;
49
+ const ChannelMessageList = (props) => {
50
+ const { height, channelId, batchSize } = props;
51
+ const [messages, setMessages] = (0, react_1.useState)([]);
52
+ const [allMessagesLoaded, setAllMessagesLoaded] = (0, react_1.useState)(false);
53
+ const messagesEndRef = react_1.default.useRef(null);
54
+ function scrollToBottom(behavior, delay = 100) {
55
+ setTimeout(() => {
56
+ messagesEndRef.current?.scrollIntoView({ behavior });
57
+ }, delay);
58
+ }
59
+ (0, react_1.useEffect)(() => {
60
+ const observer = new IntersectionObserver(([entry]) => {
61
+ props?.scrollChanged?.(entry.isIntersecting);
62
+ }, { threshold: 1.0 });
63
+ if (messagesEndRef.current) {
64
+ observer.observe(messagesEndRef.current);
65
+ }
66
+ return () => {
67
+ if (messagesEndRef.current) {
68
+ observer.unobserve(messagesEndRef.current);
69
+ }
70
+ };
71
+ }, []);
72
+ function prependItems() {
73
+ const lastMessage = messages[messages.length - 1];
74
+ getMessages(batchSize, channelId, lastMessage)
75
+ .then(fetchedMessages => {
76
+ if (fetchedMessages.length === 0) {
77
+ setAllMessagesLoaded(true);
78
+ }
79
+ else {
80
+ const _messages = (0, lodash_1.sortBy)([...messages, ...fetchedMessages], 'createdAt').reverse();
81
+ setMessages((0, lodash_1.uniqBy)(_messages, 'messageId'));
82
+ }
83
+ });
84
+ return false;
85
+ }
86
+ const minHeightOfMessage = 20;
87
+ (0, react_1.useEffect)(() => {
88
+ if (!allMessagesLoaded && (!messages.length || messages.length * minHeightOfMessage < windowHeight())) {
89
+ prependItems();
90
+ }
91
+ }, [channelId, messages]);
92
+ const [effects] = (0, react_1.useState)(() => props.effects || {});
93
+ effects.pushMessage = (newMessage) => {
94
+ if ((messages.length > batchSize && (0, lodash_1.min)(messages.map(m => m.createdAt)) > newMessage.createdAt)
95
+ || messages.find(m => m.messageId === newMessage.messageId)) {
96
+ return;
97
+ }
98
+ let _messages = (0, lodash_1.sortBy)([newMessage, ...messages], 'createdAt').reverse();
99
+ setMessages(_messages);
100
+ if (newMessage.userId === globals_1.me.userId && !newMessage.assistantId) {
101
+ scrollToBottom('instant', 1);
102
+ }
103
+ else {
104
+ scrollToBottom('smooth');
105
+ }
106
+ };
107
+ (0, react_1.useEffect)(() => {
108
+ const sub = (0, peers_sdk_1.Messages)().dataChanged.subscribe(evt => {
109
+ const message = evt.dataObject;
110
+ if (message.channelId !== channelId || message.messageParentId) {
111
+ return;
112
+ }
113
+ if (evt.op === 'insert') {
114
+ effects.pushMessage(message);
115
+ }
116
+ });
117
+ return () => {
118
+ sub.unsubscribe();
119
+ };
120
+ }, [channelId]);
121
+ return (react_1.default.createElement("div", { id: "scrollableDiv", style: {
122
+ height,
123
+ overflow: 'auto',
124
+ display: 'flex',
125
+ flexDirection: 'column-reverse',
126
+ // marginBottom: '70px',
127
+ } },
128
+ react_1.default.createElement(react_infinite_scroll_component_1.default, { dataLength: messages.length, next: prependItems, style: { display: 'flex', flexDirection: 'column-reverse', overflow: 'hidden' }, inverse: true, hasMore: !allMessagesLoaded, loader: react_1.default.createElement(loading_indicator_1.LoadingIndicator, null), scrollableTarget: "scrollableDiv", endMessage: react_1.default.createElement(react_1.Fragment, null,
129
+ react_1.default.createElement("div", { className: "d-flex justify-content-center" }, messages[0] && (react_1.default.createElement("div", null, (new Date(messages[messages.length - 1].createdAt).toLocaleDateString())))),
130
+ react_1.default.createElement("div", { className: "d-flex justify-content-center" },
131
+ react_1.default.createElement("div", null,
132
+ react_1.default.createElement("i", null, "beginning of messages")))) },
133
+ react_1.default.createElement("div", { ref: messagesEndRef }),
134
+ messages.map((message, index) => {
135
+ return react_1.default.createElement(message_display_1.MessageDisplay, { key: message.messageId, message: message, messageAbove: messages[index + 1], index: index });
136
+ }))));
137
+ };
138
+ exports.ChannelMessageList = ChannelMessageList;
139
+ async function getMessages(batchSize, channelId, lastMessage) {
140
+ const query = {
141
+ channelId,
142
+ messageParentId: null,
143
+ };
144
+ if (lastMessage) {
145
+ query.messageId = { $lt: lastMessage.messageId };
146
+ }
147
+ const cursor = await (0, peers_sdk_1.Messages)().cursor(query, {
148
+ sortBy: ['-createdAt', '-messageId'],
149
+ });
150
+ const messages = [];
151
+ for await (const message of cursor) {
152
+ messages.push(message);
153
+ if (messages.length >= batchSize) {
154
+ break;
155
+ }
156
+ }
157
+ return messages;
158
+ }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface IProps {
3
+ channelId?: string;
4
+ }
5
+ export declare const ChannelMessages: (props: IProps) => React.JSX.Element;
6
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ChannelMessages = void 0;
37
+ const react_1 = __importStar(require("react"));
38
+ const peers_sdk_1 = require("@peers-app/peers-sdk");
39
+ const globals_1 = require("../../globals");
40
+ const channel_message_list_1 = require("./channel-message-list");
41
+ const message_compose_1 = require("./message-compose");
42
+ const ui_loader_1 = require("../../ui-router/ui-loader");
43
+ const ChannelMessages = (props) => {
44
+ const messagesEndRef = (0, react_1.useRef)(null);
45
+ const [effects] = (0, react_1.useState)(() => ({}));
46
+ const [scrolledToBottom, setScrolledToBottom] = (0, react_1.useState)(true);
47
+ let channelId = props.channelId;
48
+ // const scrollToBottom = (behavior: 'instant' | 'smooth' = 'instant') => {
49
+ // setTimeout(() => messagesEndRef.current?.scrollIntoView({ behavior }), 500);
50
+ // };
51
+ const sendMessage = (userMessage) => {
52
+ effects.pushMessage(userMessage);
53
+ (0, peers_sdk_1.Messages)().save(userMessage).then(message => {
54
+ (0, globals_1.openThread)(message.messageId);
55
+ });
56
+ };
57
+ channelId = channelId || globals_1.me.userId;
58
+ return (react_1.default.createElement("div", { className: "d-flex flex-column flex-col-reverse", style: {
59
+ // height: '100vh',
60
+ height: 'calc(100vh - 50px)',
61
+ // marginTop: '50px',
62
+ } },
63
+ react_1.default.createElement(channel_message_list_1.ChannelMessageList, { batchSize: 30, channelId: channelId,
64
+ // height="calc(100vh - 50px)"
65
+ height: '100vh', effects: effects, scrollChanged: setScrolledToBottom }),
66
+ react_1.default.createElement("div", { ref: messagesEndRef }),
67
+ react_1.default.createElement("div", { className: 'p-2 pt-1', style: {
68
+ boxShadow: scrolledToBottom ? '' : `0 -10px 11px -10px rgba(0, 0, 0, 0.9)`
69
+ } },
70
+ react_1.default.createElement(message_compose_1.MessageCompose, { channelId: channelId, onMessageSubmit: sendMessage }))));
71
+ };
72
+ exports.ChannelMessages = ChannelMessages;
73
+ (0, ui_loader_1.registerInternalPeersUI)({
74
+ peersUIId: '00m5fsd8d4jma58fgvyr1riny',
75
+ component: exports.ChannelMessages,
76
+ routes: [
77
+ {
78
+ isMatch: (props, context) => context.path === 'threads' || context.path === '',
79
+ uiCategory: 'screen'
80
+ },
81
+ ]
82
+ });
@@ -0,0 +1,11 @@
1
+ import { IFile, IMessage, PersistentVar } from "@peers-app/peers-sdk";
2
+ import React from 'react';
3
+ export declare function getContentPersistenceValue(channelId: string, threadId?: string): PersistentVar<string>;
4
+ interface IProps {
5
+ channelId: string;
6
+ threadId?: string;
7
+ onMessageSubmit: (message: IMessage, files?: IFile[]) => any;
8
+ }
9
+ export declare const MessageCompose: (props: IProps) => React.JSX.Element;
10
+ export declare function isMobile(): boolean;
11
+ export {};
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MessageCompose = void 0;
37
+ exports.getContentPersistenceValue = getContentPersistenceValue;
38
+ exports.isMobile = isMobile;
39
+ const peers_sdk_1 = require("@peers-app/peers-sdk");
40
+ const peers_sdk_2 = require("@peers-app/peers-sdk");
41
+ const react_1 = __importStar(require("react"));
42
+ const globals_1 = require("../../globals");
43
+ const hooks_1 = require("../../hooks");
44
+ const editor_1 = require("../markdown-editor/editor");
45
+ const pVarCache = {};
46
+ function getContentPersistenceValue(channelId, threadId) {
47
+ const contentPersistenceName = `messageCompose-channel-${channelId}${threadId ? '-thread-' + threadId : ''}`;
48
+ if (!pVarCache[contentPersistenceName]) {
49
+ pVarCache[contentPersistenceName] = (0, peers_sdk_1.userVar)(contentPersistenceName, { defaultValue: '' });
50
+ }
51
+ return pVarCache[contentPersistenceName];
52
+ }
53
+ const MessageCompose = (props) => {
54
+ const { channelId, threadId, onMessageSubmit } = props;
55
+ const [contentObs] = (0, react_1.useState)(() => (0, peers_sdk_1.observable)(''));
56
+ const [mdEffects] = (0, react_1.useState)(() => ({}));
57
+ const composeBottomRef = react_1.default.useRef(null);
58
+ function scrollToBottom() {
59
+ if (composeBottomRef?.current) {
60
+ composeBottomRef.current.scrollIntoView({ behavior: 'instant' });
61
+ }
62
+ }
63
+ (0, react_1.useEffect)(() => {
64
+ let disposed = false;
65
+ let sub;
66
+ getContentPersistenceValue(channelId, threadId).loadingPromise.then(pVar => {
67
+ if (!disposed) {
68
+ contentObs(pVar() ?? '');
69
+ sub = contentObs.subscribe(() => pVar(contentObs()));
70
+ setTimeout(() => scrollToBottom(), 100);
71
+ }
72
+ });
73
+ return () => {
74
+ disposed = true;
75
+ sub?.dispose();
76
+ };
77
+ }, [channelId, threadId]);
78
+ (0, react_1.useEffect)(() => {
79
+ const sub = contentObs.subscribe(() => scrollToBottom());
80
+ return () => sub.dispose();
81
+ }, [contentObs]);
82
+ function submitMessage() {
83
+ const markdown = contentObs() ?? '';
84
+ contentObs('');
85
+ if (!markdown.trim()) {
86
+ return;
87
+ }
88
+ const userMessage = {
89
+ messageId: (0, peers_sdk_2.newid)(),
90
+ message: markdown,
91
+ userId: globals_1.me.userId,
92
+ channelId,
93
+ messageParentId: threadId,
94
+ createdAt: new Date(),
95
+ };
96
+ onMessageSubmit(userMessage);
97
+ }
98
+ return (react_1.default.createElement("div", { className: "border rounded border-dark-subtle", style: { overflowY: 'auto' } },
99
+ react_1.default.createElement(editor_1.MarkdownEditor, { value: contentObs, effects: mdEffects, autoFocus: !!threadId, maxHeight: '50vh' }),
100
+ react_1.default.createElement(BottomControls, { submitMessage: submitMessage, contentObs: contentObs, mdEffects: mdEffects }),
101
+ react_1.default.createElement("div", { ref: composeBottomRef })));
102
+ };
103
+ exports.MessageCompose = MessageCompose;
104
+ const BottomControls = (props) => {
105
+ const { submitMessage, contentObs } = props;
106
+ const [content] = (0, hooks_1.useObservable)(contentObs, [contentObs]);
107
+ const [submitOnEnter] = (0, react_1.useState)(() => (0, peers_sdk_1.deviceVar)(`messageCompose-submitOnEnter`, { defaultValue: true }));
108
+ (0, hooks_1.useObservable)(submitOnEnter);
109
+ if (isMobile()) {
110
+ submitOnEnter(false);
111
+ }
112
+ function onKeyDown(evt) {
113
+ if (evt.code === 'Enter' && !evt.ctrlKey && !evt.shiftKey && !evt.altKey && !evt.metaKey) {
114
+ if (submitOnEnter()) {
115
+ submitMessage();
116
+ evt.preventDefault();
117
+ return true;
118
+ }
119
+ }
120
+ else if (evt.code === 'Enter' && (evt.ctrlKey || evt.metaKey)) {
121
+ if (!submitOnEnter()) {
122
+ submitMessage();
123
+ evt.preventDefault();
124
+ return true;
125
+ }
126
+ }
127
+ }
128
+ props.mdEffects.onKeyDown = onKeyDown;
129
+ return (react_1.default.createElement("div", null,
130
+ react_1.default.createElement("div", { className: 'float-end small' },
131
+ react_1.default.createElement("span", { className: 'small', hidden: isMobile() },
132
+ react_1.default.createElement("input", { type: "checkbox", id: "sendOnEnter", checked: !!submitOnEnter(), onChange: evt => submitOnEnter(evt.target.checked) }),
133
+ " Send on Enter"),
134
+ "\u00A0\u00A0",
135
+ content.trim()?.length === 0
136
+ ? (react_1.default.createElement("button", { className: "btn btn-sm btn-outline", type: "button", disabled: true },
137
+ "Send \u00A0",
138
+ react_1.default.createElement("i", { className: "bi bi-send-fill" })))
139
+ : (react_1.default.createElement("button", { className: "btn btn-sm btn-success", type: "button", onClick: props.submitMessage },
140
+ "Send \u00A0",
141
+ react_1.default.createElement("i", { className: "bi bi-send-fill" }))))));
142
+ };
143
+ function isMobile() {
144
+ if (navigator?.userAgentData?.mobile) {
145
+ return true;
146
+ }
147
+ let check = false;
148
+ // @ts-ignore
149
+ (function (a) { if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)))
150
+ check = true; })(navigator.userAgent || navigator.vendor || window.opera);
151
+ return check;
152
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { IMessage } from "@peers-app/peers-sdk";
3
+ interface IProps {
4
+ message: IMessage;
5
+ messageAbove?: IMessage;
6
+ isThreadParent?: boolean;
7
+ index?: number;
8
+ }
9
+ export declare const MessageDisplay: (props: IProps) => React.JSX.Element;
10
+ export {};
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MessageDisplay = void 0;
40
+ const react_1 = __importStar(require("react"));
41
+ const avatar_1 = require("./avatar");
42
+ // import { FileListDisplay } from './file-list-display';
43
+ const peers_sdk_1 = require("@peers-app/peers-sdk");
44
+ const moment_1 = __importDefault(require("moment"));
45
+ const globals_1 = require("../../globals");
46
+ const hooks_1 = require("../../hooks");
47
+ const markdown_with_mentions_1 = require("../markdown-with-mentions");
48
+ const message_logs_1 = require("../message-logs/message-logs");
49
+ const MessageDisplay = (props) => {
50
+ const { message, messageAbove, isThreadParent } = props;
51
+ const [messageId, setMessageId] = (0, react_1.useState)(message.messageId);
52
+ (0, hooks_1.useSubscription)(globals_1.openThreads, () => {
53
+ });
54
+ const [user, setUser] = (0, react_1.useState)();
55
+ const [messageChangedTime, setMessageChangedTime] = (0, react_1.useState)(0);
56
+ const assistant = (0, hooks_1.usePromise)(async () => {
57
+ if (message.assistantId) {
58
+ return (0, peers_sdk_1.Assistants)().get(message.assistantId);
59
+ }
60
+ }, undefined, [message.assistantId]);
61
+ const countReplies = (0, hooks_1.usePromise)(() => (0, peers_sdk_1.Messages)().count({ messageParentId: messageId }), 1, [messageId, messageChangedTime]);
62
+ const [showMenu] = (0, react_1.useState)(() => (0, peers_sdk_1.observable)(false));
63
+ (0, react_1.useEffect)(() => {
64
+ setMessageId(message.messageId);
65
+ const sub = (0, peers_sdk_1.Messages)().dataChanged.subscribe((evt) => {
66
+ const changedMessage = evt.dataObject;
67
+ if (changedMessage.messageId === messageId || changedMessage.messageParentId === messageId) {
68
+ setMessageChangedTime(Date.now());
69
+ }
70
+ });
71
+ return () => {
72
+ sub.unsubscribe();
73
+ };
74
+ }, [message]);
75
+ // calculate short time string
76
+ const messageDate = new Date(message.createdAt);
77
+ let hour = messageDate.getHours();
78
+ const minute = messageDate.getMinutes().toString().padStart(2, '0');
79
+ let ampm = "AM";
80
+ if (hour > 11) {
81
+ ampm = "PM";
82
+ }
83
+ if (hour > 12) {
84
+ hour = hour - 12;
85
+ }
86
+ let timeStr = `${hour || 12}:${minute} ${ampm}`;
87
+ const showDateDivider = messageAbove
88
+ && messageDate.toDateString() !== (new Date(messageAbove.createdAt)).toDateString();
89
+ const showUserInfo = showDateDivider
90
+ || !messageAbove || !message
91
+ || messageAbove.userId !== message.userId
92
+ || messageAbove.assistantId !== message.assistantId
93
+ || messageDate.getHours() !== (new Date(messageAbove.createdAt)).getHours()
94
+ || countReplies > 0;
95
+ // // show time of this message if hour is different than last message
96
+ // const showTime = !showUserInfo
97
+ // && messageDate.getHours() !== (new Date(messageAbove.modified)).getHours();
98
+ const isThreadView = isThreadParent || message.messageParentId;
99
+ const dateTimeStr = (0, moment_1.default)(message.createdAt).calendar().split(' at ')[0] + ' ' + timeStr;
100
+ if (isThreadParent) {
101
+ timeStr = dateTimeStr;
102
+ }
103
+ let messageParsed = message.message.trim();
104
+ return (react_1.default.createElement("div", { className: isThreadParent ? '' : `peers-message-container`, onMouseEnter: () => showMenu(true), onMouseLeave: () => showMenu(false) },
105
+ react_1.default.createElement(MessageMenu, { message: message, showMenu: showMenu, isThreadView: !!isThreadView }),
106
+ showDateDivider && (react_1.default.createElement("div", { style: { marginTop: `20px` } },
107
+ react_1.default.createElement("hr", null),
108
+ react_1.default.createElement("div", { className: "d-flex justify-content-center" },
109
+ react_1.default.createElement("span", { className: 'message-display-list-date', style: {
110
+ position: 'relative',
111
+ top: '-29px',
112
+ paddingLeft: '11px',
113
+ paddingRight: '11px',
114
+ fontSize: '16px',
115
+ borderRadius: '20px',
116
+ } },
117
+ react_1.default.createElement("strong", null, (0, moment_1.default)(message.createdAt).calendar().split(' at ')[0].replace('Last', '')))))),
118
+ showUserInfo && (react_1.default.createElement("div", { style: { marginTop: '15px' } })),
119
+ react_1.default.createElement("div", { className: "d-flex" },
120
+ react_1.default.createElement("div", { className: "p-0 flex-shrink-0 justify-content-center align-items-center", style: {
121
+ width: '46px',
122
+ height: '20px',
123
+ overflow: 'visible',
124
+ // zIndex: message.modified,
125
+ position: 'relative',
126
+ top: '4px',
127
+ left: '3px',
128
+ } }, showUserInfo && react_1.default.createElement(avatar_1.Avatar, { userId: message.userId, assistantId: message.assistantId, setUser: setUser })),
129
+ react_1.default.createElement("div", { className: "p-1 flex-grow-1 justify-content-start text-break", style: {
130
+ maxWidth: 'calc(100% - 50px)',
131
+ } },
132
+ showUserInfo && (react_1.default.createElement("div", { className: "peers-message" },
133
+ react_1.default.createElement("span", { style: { fontSize: '9pt' } },
134
+ react_1.default.createElement("b", null, assistant?.name || message?.assistantId || user?.name || message.userId)),
135
+ react_1.default.createElement("span", { className: "text-muted sub-sup-font-size", style: { fontSize: '8pt' }, title: dateTimeStr },
136
+ "\u00A0\u00A0",
137
+ timeStr))),
138
+ messageParsed.length > 0 && (react_1.default.createElement("div", { className: "peers-message" },
139
+ react_1.default.createElement(markdown_with_mentions_1.MarkdownWithMentions, { content: messageParsed }))),
140
+ react_1.default.createElement(message_logs_1.MessageLogs, { key: messageId, messageId: messageId }),
141
+ !isThreadView && countReplies > 0 && (react_1.default.createElement("div", { className: "d-inline" },
142
+ "\u00A0",
143
+ react_1.default.createElement("button", { className: "btn btn-sm btn-link m-1", onClick: () => (0, globals_1.openThread)(message.messageParentId || messageId), tabIndex: props.index }, countReplies === 1 ? '1 reply' : countReplies + ' replies'))))),
144
+ message?.fileIds?.length && (react_1.default.createElement("div", { style: { marginLeft: '46px' } })) || undefined));
145
+ };
146
+ exports.MessageDisplay = MessageDisplay;
147
+ const MessageMenu = (props) => {
148
+ const { message, isThreadView, showMenu } = props;
149
+ (0, hooks_1.useObservable)(showMenu);
150
+ return (react_1.default.createElement(react_1.default.Fragment, null, showMenu() && !isThreadView && (react_1.default.createElement("div", { className: "message-hover-menu" },
151
+ react_1.default.createElement("button", { className: "btn btn-sm btn-link m-1", onClick: () => (0, globals_1.openThread)(message.messageParentId || message.messageId) }, "Reply")))));
152
+ };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { IMessage } from "@peers-app/peers-sdk";
3
+ interface IProps {
4
+ threadId: string;
5
+ effects?: {
6
+ pushMessage: (message: IMessage) => any;
7
+ };
8
+ scrollChanged?: (isBottomInView: boolean) => any;
9
+ }
10
+ export declare const ThreadMessageList: (props: IProps) => false | React.JSX.Element;
11
+ export {};