relay.app 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/public/js/relay.js CHANGED
@@ -1,6 +1,70 @@
1
1
  /******/ (() => { // webpackBootstrap
2
2
  /******/ var __webpack_modules__ = ({
3
3
 
4
+ /***/ "./js/draft.js"
5
+ /*!*********************!*\
6
+ !*** ./js/draft.js ***!
7
+ \*********************/
8
+ (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9
+
10
+ "use strict";
11
+ __webpack_require__.r(__webpack_exports__);
12
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
+ /* harmony export */ Draft: () => (/* binding */ Draft)
14
+ /* harmony export */ });
15
+ const Draft = () => {
16
+ const prefix = "relay:draft"
17
+
18
+ const composer = () => {
19
+ return document.getElementById("chat-composer")
20
+ }
21
+
22
+ const textarea = () => {
23
+ return composer()?.querySelector("textarea[name='message']")
24
+ }
25
+
26
+ const key = (form = composer()) => {
27
+ if (!form?.dataset.contextId)
28
+ return null
29
+ return [prefix, form.dataset.contextId].join(":")
30
+ }
31
+
32
+ const restore = () => {
33
+ const el = textarea()
34
+ const currentKey = key()
35
+ if (!el || !currentKey)
36
+ return
37
+ const value = localStorage.getItem(currentKey)
38
+ if (value === null)
39
+ return
40
+ el.value = value
41
+ }
42
+
43
+ const persist = (el) => {
44
+ const currentKey = key(el?.form)
45
+ if (!currentKey)
46
+ return
47
+ if (el.value.length === 0)
48
+ localStorage.removeItem(currentKey)
49
+ else
50
+ localStorage.setItem(currentKey, el.value)
51
+ }
52
+
53
+ const clear = (form = composer()) => {
54
+ const currentKey = key(form)
55
+ if (!currentKey)
56
+ return
57
+ localStorage.removeItem(currentKey)
58
+ }
59
+
60
+ return {clear, persist, restore}
61
+ }
62
+
63
+
64
+
65
+
66
+ /***/ },
67
+
4
68
  /***/ "./js/file_upload.js"
5
69
  /*!***************************!*\
6
70
  !*** ./js/file_upload.js ***!
@@ -237,11 +301,13 @@ __webpack_require__.r(__webpack_exports__);
237
301
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
238
302
  /* harmony export */ Relay: () => (/* binding */ Relay)
239
303
  /* harmony export */ });
240
- /* harmony import */ var _file_upload__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../file_upload */ "./js/file_upload.js");
241
- /* harmony import */ var _controllers_ActivityController__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controllers/ActivityController */ "./js/lib/controllers/ActivityController.js");
242
- /* harmony import */ var _controllers_ContentController__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controllers/ContentController */ "./js/lib/controllers/ContentController.js");
243
- /* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scroll */ "./js/scroll.js");
244
- /* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../timer */ "./js/timer.js");
304
+ /* harmony import */ var _draft__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../draft */ "./js/draft.js");
305
+ /* harmony import */ var _file_upload__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../file_upload */ "./js/file_upload.js");
306
+ /* harmony import */ var _controllers_ActivityController__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controllers/ActivityController */ "./js/lib/controllers/ActivityController.js");
307
+ /* harmony import */ var _controllers_ContentController__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controllers/ContentController */ "./js/lib/controllers/ContentController.js");
308
+ /* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scroll */ "./js/scroll.js");
309
+ /* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../timer */ "./js/timer.js");
310
+
245
311
 
246
312
 
247
313
 
@@ -250,23 +316,25 @@ __webpack_require__.r(__webpack_exports__);
250
316
 
251
317
  const Relay = () => {
252
318
  const target = document
253
- const timer = (0,_timer__WEBPACK_IMPORTED_MODULE_4__.Timer)(document.getElementById("chatbot-status"))
254
- const activity = (0,_controllers_ActivityController__WEBPACK_IMPORTED_MODULE_1__.ActivityController)({target})
255
- const content = (0,_controllers_ContentController__WEBPACK_IMPORTED_MODULE_2__.ContentController)({target})
319
+ const timer = (0,_timer__WEBPACK_IMPORTED_MODULE_5__.Timer)(document.getElementById("chatbot-status"))
320
+ const activity = (0,_controllers_ActivityController__WEBPACK_IMPORTED_MODULE_2__.ActivityController)({target})
321
+ const content = (0,_controllers_ContentController__WEBPACK_IMPORTED_MODULE_3__.ContentController)({target})
256
322
  const controllers = [activity, content]
257
- let scroll = (0,_scroll__WEBPACK_IMPORTED_MODULE_3__.Scroll)(document.getElementById("chatbot-stream"))
323
+ const draft = (0,_draft__WEBPACK_IMPORTED_MODULE_0__.Draft)()
324
+ let scroll = (0,_scroll__WEBPACK_IMPORTED_MODULE_4__.Scroll)(document.getElementById("chatbot-stream"))
258
325
 
259
326
  const refreshScroll = () => {
260
327
  const stream = document.getElementById("chatbot-stream")
261
328
  if (!stream)
262
329
  return
263
330
  if (!scroll || scroll.parentEl !== stream)
264
- scroll = (0,_scroll__WEBPACK_IMPORTED_MODULE_3__.Scroll)(stream)
331
+ scroll = (0,_scroll__WEBPACK_IMPORTED_MODULE_4__.Scroll)(stream)
265
332
  }
266
333
 
267
334
  const enhance = (root = document.body) => {
268
335
  refreshScroll()
269
336
  controllers.forEach((controller) => controller.enhance(root))
337
+ draft.restore()
270
338
  }
271
339
 
272
340
  const syncTimer = () => {
@@ -277,7 +345,7 @@ const Relay = () => {
277
345
  timer.handle(status)
278
346
  }
279
347
 
280
- const fileUpload = (0,_file_upload__WEBPACK_IMPORTED_MODULE_0__.FileUpload)({afterUpload: enhance})
348
+ const fileUpload = (0,_file_upload__WEBPACK_IMPORTED_MODULE_1__.FileUpload)({afterUpload: enhance})
281
349
 
282
350
  const handleOobSwap = (event) => {
283
351
  const elt = event.detail.elt || event.target
@@ -298,6 +366,7 @@ const Relay = () => {
298
366
  return
299
367
  if (fileUpload.blockSubmit(event))
300
368
  return
369
+ draft.clear(event.target)
301
370
  scroll?.force()
302
371
  }
303
372
 
@@ -310,6 +379,7 @@ const Relay = () => {
310
379
  const handleInput = (event) => {
311
380
  if (!event.target.matches("#chat-composer textarea"))
312
381
  return
382
+ draft.persist(event.target)
313
383
  scroll?.force()
314
384
  }
315
385