quikchat 1.0.2 → 1.0.3

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.
package/README.md CHANGED
@@ -6,9 +6,12 @@ quikchat is a simple vanilla (no dependancies) JavaScript chat control that can
6
6
  * Responsive design for various screen sizes.
7
7
  * Themeable with css
8
8
  * Hideable/Showable Title and Text Entry areas allows flexibility of usage
9
+ * Full history storage and retrieval
10
+ * History can be fed directly to OpenAI / Mistral / Ollama compatible API
9
11
 
10
12
  ## Demo
11
- [Example Code and Demo](https://deftio.github.io/quikchat/example.html)
13
+ [Example Code and Demo](../examples/index.html)
14
+
12
15
 
13
16
 
14
17
  ## Installation
@@ -23,6 +26,12 @@ html
23
26
  <link rel="stylesheet" href="./path/to/quikchat.css">
24
27
  ```
25
28
 
29
+ ### use quikchat Via CDN
30
+ ```html
31
+ <script src="https://unpkg.com/quikchat"></script>
32
+ <link rel="stylesheet" href="https://unpkg.com/quikchat/dist/quikchat.css" />
33
+ ```
34
+
26
35
  Create a container element in your HTML where you want the chat interface to appear:
27
36
  ```html
28
37
  <div id="chat-container"></div>
@@ -22,12 +22,41 @@ function _createClass(e, r, t) {
22
22
  writable: !1
23
23
  }), e;
24
24
  }
25
+ function _defineProperty(e, r, t) {
26
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
27
+ value: t,
28
+ enumerable: !0,
29
+ configurable: !0,
30
+ writable: !0
31
+ }) : e[r] = t, e;
32
+ }
25
33
  function _iterableToArray(r) {
26
34
  if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
27
35
  }
28
36
  function _nonIterableSpread() {
29
37
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
30
38
  }
39
+ function ownKeys(e, r) {
40
+ var t = Object.keys(e);
41
+ if (Object.getOwnPropertySymbols) {
42
+ var o = Object.getOwnPropertySymbols(e);
43
+ r && (o = o.filter(function (r) {
44
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
45
+ })), t.push.apply(t, o);
46
+ }
47
+ return t;
48
+ }
49
+ function _objectSpread2(e) {
50
+ for (var r = 1; r < arguments.length; r++) {
51
+ var t = null != arguments[r] ? arguments[r] : {};
52
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
53
+ _defineProperty(e, r, t[r]);
54
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
55
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
56
+ });
57
+ }
58
+ return e;
59
+ }
31
60
  function _toConsumableArray(r) {
32
61
  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
33
62
  }
@@ -45,15 +74,6 @@ function _toPropertyKey(t) {
45
74
  var i = _toPrimitive(t, "string");
46
75
  return "symbol" == typeof i ? i : i + "";
47
76
  }
48
- function _typeof(o) {
49
- "@babel/helpers - typeof";
50
-
51
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
52
- return typeof o;
53
- } : function (o) {
54
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
55
- }, _typeof(o);
56
- }
57
77
  function _unsupportedIterableToArray(r, a) {
58
78
  if (r) {
59
79
  if ("string" == typeof r) return _arrayLikeToArray(r, a);
@@ -72,7 +92,12 @@ var quikchat = /*#__PURE__*/function () {
72
92
  var meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
73
93
  theme: 'quikchat-theme-light',
74
94
  onSend: function onSend() {},
75
- trackHistory: true
95
+ trackHistory: true,
96
+ titleArea: {
97
+ title: "Title Area",
98
+ show: false,
99
+ align: "center"
100
+ }
76
101
  };
77
102
  _classCallCheck(this, quikchat);
78
103
  if (typeof parentElement === 'string') {
@@ -85,7 +110,7 @@ var quikchat = /*#__PURE__*/function () {
85
110
  // title area
86
111
  if (meta.titleArea) {
87
112
  this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);
88
- if (meta.titleArea.show) {
113
+ if (meta.titleArea.show == true) {
89
114
  this.titleAreaShow();
90
115
  } else {
91
116
  this.titleAreaHide();
@@ -93,6 +118,7 @@ var quikchat = /*#__PURE__*/function () {
93
118
  }
94
119
  this._attachEventListeners();
95
120
  this.trackHistory = meta.trackHistory || true;
121
+ this._historyLimit = 10000000;
96
122
  this._history = [];
97
123
  }
98
124
  return _createClass(quikchat, [{
@@ -108,9 +134,6 @@ var quikchat = /*#__PURE__*/function () {
108
134
  this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');
109
135
  this.msgid = 0;
110
136
  }
111
- }, {
112
- key: "$",
113
- value: function $() {}
114
137
  }, {
115
138
  key: "_attachEventListeners",
116
139
  value: function _attachEventListeners() {
@@ -133,6 +156,20 @@ var quikchat = /*#__PURE__*/function () {
133
156
  }
134
157
  });
135
158
  }
159
+ // set the onSend function callback.
160
+ }, {
161
+ key: "setCallbackOnSend",
162
+ value: function setCallbackOnSend(callback) {
163
+ this._onSend = callback;
164
+ }
165
+ // set a callback for everytime a message is added (listener)
166
+ }, {
167
+ key: "setCallbackonMessageAdded",
168
+ value: function setCallbackonMessageAdded(callback) {
169
+ this._onMessageAdded = callback;
170
+ }
171
+
172
+ // Public methods
136
173
  }, {
137
174
  key: "titleAreaToggle",
138
175
  value: function titleAreaToggle() {
@@ -208,34 +245,28 @@ var quikchat = /*#__PURE__*/function () {
208
245
  this._sendButton.style.minWidth = "".concat(minWidth, "px");
209
246
  }
210
247
  }, {
211
- key: "messageAddNew",
212
- value: function messageAddNew(message) {
213
- var userObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "test";
214
- var align = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left';
215
- var messageDiv = document.createElement('div');
248
+ key: "messageAddFull",
249
+ value: function messageAddFull() {
250
+ var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
251
+ content: "",
252
+ userString: "user",
253
+ align: "right",
254
+ role: "user",
255
+ userID: -1
256
+ };
216
257
  var msgid = this.msgid;
258
+ var messageDiv = document.createElement('div');
217
259
  var msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');
260
+ 'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..
218
261
  messageDiv.classList.add('quikchat-message', msgidClass);
219
262
  this.msgid++;
220
263
  messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');
221
- var user = {
222
- name: "not-set",
223
- role: "user"
224
- };
225
- if (_typeof(userObject) === 'object') {
226
- for (var key in userObject) {
227
- user[key] = userObject[key];
228
- }
229
- } else {
230
- // if userObject is a string
231
- user["name"] = userObject;
232
- }
233
264
  var userDiv = document.createElement('div');
234
- userDiv.innerHTML = user.name;
235
- userDiv.style = "width: 100%; text-align: ".concat(align, "; font-size: 1em; font-weight:700; color: #444;");
265
+ userDiv.innerHTML = input.userString;
266
+ userDiv.style = "width: 100%; text-align: ".concat(input.align, "; font-size: 1em; font-weight:700; color: #444;");
236
267
  var contentDiv = document.createElement('div');
237
- contentDiv.style = "width: 100%; text-align: ".concat(align, ";");
238
- contentDiv.innerHTML = message;
268
+ contentDiv.style = "width: 100%; text-align: ".concat(input.align, ";");
269
+ contentDiv.innerHTML = input.content;
239
270
  messageDiv.appendChild(userDiv);
240
271
  messageDiv.appendChild(contentDiv);
241
272
  this._messagesArea.appendChild(messageDiv);
@@ -245,22 +276,35 @@ var quikchat = /*#__PURE__*/function () {
245
276
  var timestamp = new Date().toISOString();
246
277
  var updatedtime = timestamp;
247
278
  if (this.trackHistory) {
248
- this._history.push({
249
- msgid: msgid,
250
- user: user,
251
- message: message,
252
- align: align,
279
+ this._history.push(_objectSpread2(_objectSpread2({
280
+ msgid: msgid
281
+ }, input), {}, {
253
282
  timestamp: timestamp,
254
283
  updatedtime: updatedtime,
255
284
  messageDiv: messageDiv
256
- });
257
- if (this._history.length > 10000000) {
285
+ }));
286
+ if (this._history.length > this._historyLimit) {
258
287
  this._history.shift();
259
288
  }
260
289
  }
261
- return {
262
- msgid: msgid
263
- };
290
+ if (this._onMessageAdded) {
291
+ this._onMessageAdded(this, msgid);
292
+ }
293
+ return msgid;
294
+ }
295
+ }, {
296
+ key: "messageAddNew",
297
+ value: function messageAddNew() {
298
+ var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
299
+ var userString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "user";
300
+ var align = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "right";
301
+ var role = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "user";
302
+ return this.messageAddFull({
303
+ content: content,
304
+ userString: userString,
305
+ align: align,
306
+ role: role
307
+ });
264
308
  }
265
309
  }, {
266
310
  key: "messageRemove",
@@ -274,10 +318,13 @@ var quikchat = /*#__PURE__*/function () {
274
318
  console.log("{String(n)} : Message ID not found");
275
319
  }
276
320
  if (sucess) {
277
- // remove from history
278
- this._history = this._history.filter(function (item) {
279
- return item.msgid !== n;
280
- });
321
+ // slow way to remove from history
322
+ //this._history = this._history.filter((item) => item.msgid !== n); // todo make this more efficient
323
+
324
+ // better way to delete this from history
325
+ this._history.splice(this._history.findIndex(function (item) {
326
+ return item.msgid === n;
327
+ }), 1);
281
328
  }
282
329
  return sucess;
283
330
  }
@@ -303,7 +350,11 @@ var quikchat = /*#__PURE__*/function () {
303
350
  var content = "";
304
351
  // now use css selector to get the message
305
352
  try {
306
- content = this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.textContent;
353
+ // get from history..
354
+ content = this._history.filter(function (item) {
355
+ return item.msgid === n;
356
+ })[0].content;
357
+ //content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;
307
358
  } catch (error) {
308
359
  console.log("{String(n)} : Message ID not found");
309
360
  }
@@ -318,7 +369,14 @@ var quikchat = /*#__PURE__*/function () {
318
369
  var sucess = false;
319
370
  try {
320
371
  this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML += content;
372
+ // update history
373
+ var item = this._history.filter(function (item) {
374
+ return item.msgid === n;
375
+ })[0];
376
+ item.content += content;
377
+ item.updatedtime = new Date().toISOString();
321
378
  sucess = true;
379
+ this._messagesArea.lastChild.scrollIntoView();
322
380
  } catch (error) {
323
381
  console.log("{String(n)} : Message ID not found");
324
382
  }
@@ -331,6 +389,10 @@ var quikchat = /*#__PURE__*/function () {
331
389
  var sucess = false;
332
390
  try {
333
391
  this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML = content;
392
+ // update history
393
+ this._history.filter(function (item) {
394
+ return item.msgid === n;
395
+ })[0].content = content;
334
396
  sucess = true;
335
397
  } catch (error) {
336
398
  console.log("{String(n)} : Message ID not found");
@@ -354,6 +416,9 @@ var quikchat = /*#__PURE__*/function () {
354
416
  if (m === undefined) {
355
417
  m = n < 0 ? m : n + 1;
356
418
  }
419
+ // remember that entries could be deleted. TODO: So we need to return the actual history entries
420
+ // so now we need to find the array index that correspondes to messageIds n (start) and m (end)
421
+
357
422
  return this._history.slice(n, m);
358
423
  }
359
424
  }, {
@@ -396,7 +461,7 @@ var quikchat = /*#__PURE__*/function () {
396
461
  key: "getVersion",
397
462
  value: function getVersion() {
398
463
  return {
399
- "version": "1.0.2"
464
+ "version": "1.0.3"
400
465
  };
401
466
  }
402
467
  }]);
@@ -1 +1 @@
1
- {"version":3,"file":"quikchat.cjs.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n * \n * @param string or DOM element parentElement \n * @param {*} meta \n */\n constructor(parentElement, \n meta = { \n theme: 'quikchat-theme-light', \n onSend: () => { },\n trackHistory: true,\n }) {\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = meta.onSend ? meta.onSend : () => { };\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\">\n <span style=\"font-size: 1.5em; font-weight: 600;\">Title Area</span>\n </div>\n <div class=\"quikchat-messages-area\"></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n $() {\n }\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => this._onSend(this, this._textEntry.value.trim()));\n window.addEventListener('resize', () => this._handleContainerResize());\n this._chatWidget.addEventListener('resize', () => this._handleContainerResize());\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n // Prevent default behavior (adding new line)\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim())\n }\n });\n }\n\n titleAreaToggle() {\n this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n this._inputArea.classList.toggle('hidden');\n this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n _adjustMessagesAreaHeight() {\n const hiddenElements = [...this._chatWidget.children].filter(child => child.classList.contains('hidden'));\n const totalHiddenHeight = hiddenElements.reduce((sum, child) => sum + child.offsetHeight, 0);\n const containerHeight = this._chatWidget.offsetHeight;\n this._messagesArea.style.height = `calc(100% - ${containerHeight - totalHiddenHeight}px)`;\n }\n\n _handleContainerResize() {\n this._adjustMessagesAreaHeight();\n this._adjustSendButtonWidth();\n //console.log('Container resized');\n }\n\n _adjustSendButtonWidth() {\n const sendButtonText = this._sendButton.textContent.trim();\n const fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);\n const minWidth = fontSize * sendButtonText.length + 16;\n this._sendButton.style.minWidth = `${minWidth}px`;\n }\n\n messageAddNew(message, userObject = \"test\", align = 'left') {\n const messageDiv = document.createElement('div');\n const msgid = this.msgid;\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n messageDiv.classList.add('quikchat-message', msgidClass);\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n let user = {name: \"not-set\",role : \"user\"};\n if (typeof userObject === 'object') {\n for (const key in userObject) {\n user[key] = userObject[key];\n }\n }\n else { // if userObject is a string\n user[\"name\"] = userObject ;\n }\n const userDiv = document.createElement('div');\n userDiv.innerHTML = user.name;\n userDiv.style = `width: 100%; text-align: ${align}; font-size: 1em; font-weight:700; color: #444;`;\n\n const contentDiv = document.createElement('div');\n contentDiv.style = `width: 100%; text-align: ${align};`;\n contentDiv.innerHTML = message;\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n this._messagesArea.appendChild(messageDiv);\n this._messagesArea.lastChild.scrollIntoView();\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n if (this.trackHistory) {\n this._history.push({ msgid, user, message, align, timestamp, updatedtime, messageDiv});\n if (this._history.length > 10000000) {\n this._history.shift();\n }\n }\n return {msgid};\n }\n\n messageRemove(n) {\n // use css selector to remove the message\n let sucess = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n sucess = true;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n if (sucess) {\n // remove from history\n this._history = this._history.filter((item) => item.msgid !== n);\n }\n return sucess;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n // now use css selector to get the message \n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return msg; \n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\"\n // now use css selector to get the message \n try {\n content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content; \n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n } \n }\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return sucess;\n }\n // history functions\n /**\n * \n * @param {*} n \n * @param {*} m \n * @returns array of history messages\n */\n historyGet(n,m) {\n\n if (n == undefined) {\n n = 0;\n m= this._history.length;\n }\n if (m === undefined) {\n m = n < 0 ? m: n + 1;\n }\n return this._history.slice(n,m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n } \n\n historyGetLength() {\n return this._history.length;\n } \n\n historyGetMessage(n) {\n if ( n>=0 && n < this._history.length) {\n this._history[n];\n }\n return {};\n\n } \n\n historyGetMessageContent(n) {\n return this._history[n].message;\n }\n\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static getVersion() {\n return {\"version\" : \"1.0.2\"}\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","trackHistory","_classCallCheck","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleArea","titleAreaSetContents","title","align","show","titleAreaShow","titleAreaHide","_attachEventListeners","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","$","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","titleAreaToggle","style","display","_adjustMessagesAreaHeight","textAlign","titleAreaGetContents","inputAreaToggle","classList","toggle","inputAreaShow","inputAreaHide","hiddenElements","_toConsumableArray","children","filter","child","contains","totalHiddenHeight","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","fontSize","parseFloat","getComputedStyle","minWidth","messageAddNew","message","userObject","messageDiv","createElement","msgidClass","String","padStart","add","user","name","role","_typeof","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","shift","messageRemove","n","sucess","removeChild","error","console","log","item","messageGetDOMObject","msg","messageGetContent","content","messageAppendContent","messageReplaceContent","historyGet","m","slice","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","changeTheme","newTheme","remove","get","getVersion"],"mappings":"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"}
1
+ {"version":3,"file":"quikchat.cjs.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n * \n * @param string or DOM element parentElement \n * @param {*} meta \n */\n constructor(parentElement, \n meta = { \n theme: 'quikchat-theme-light', \n onSend: () => { }, \n trackHistory: true,\n titleArea: {title: \"Title Area\", show: false, align: \"center\"}\n }) \n {\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = meta.onSend ? meta.onSend : () => { };\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show == true) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\n this._historyLimit = 10000000;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\">\n <span style=\"font-size: 1.5em; font-weight: 600;\">Title Area</span>\n </div>\n <div class=\"quikchat-messages-area\"></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => this._onSend(this, this._textEntry.value.trim()));\n window.addEventListener('resize', () => this._handleContainerResize());\n this._chatWidget.addEventListener('resize', () => this._handleContainerResize());\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n // Prevent default behavior (adding new line)\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim())\n }\n });\n }\n // set the onSend function callback.\n setCallbackOnSend(callback) {\n this._onSend = callback;\n }\n // set a callback for everytime a message is added (listener)\n setCallbackonMessageAdded(callback) {\n this._onMessageAdded = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n this._inputArea.classList.toggle('hidden');\n this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n _adjustMessagesAreaHeight() {\n const hiddenElements = [...this._chatWidget.children].filter(child => child.classList.contains('hidden'));\n const totalHiddenHeight = hiddenElements.reduce((sum, child) => sum + child.offsetHeight, 0);\n const containerHeight = this._chatWidget.offsetHeight;\n this._messagesArea.style.height = `calc(100% - ${containerHeight - totalHiddenHeight}px)`;\n }\n\n _handleContainerResize() {\n this._adjustMessagesAreaHeight();\n this._adjustSendButtonWidth();\n //console.log('Container resized');\n }\n\n _adjustSendButtonWidth() {\n const sendButtonText = this._sendButton.textContent.trim();\n const fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);\n const minWidth = fontSize * sendButtonText.length + 16;\n this._sendButton.style.minWidth = `${minWidth}px`;\n }\n \n messageAddFull(input = {content: \"\", userString: \"user\", align : \"right\", role : \"user\", userID : -1}) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n const userIdClass = 'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..\n messageDiv.classList.add('quikchat-message', msgidClass);\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n \n const userDiv = document.createElement('div');\n userDiv.innerHTML = input.userString;\n userDiv.style = `width: 100%; text-align: ${input.align}; font-size: 1em; font-weight:700; color: #444;`;\n\n const contentDiv = document.createElement('div');\n contentDiv.style = `width: 100%; text-align: ${input.align};`;\n contentDiv.innerHTML = input.content;\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n this._messagesArea.appendChild(messageDiv);\n this._messagesArea.lastChild.scrollIntoView();\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, timestamp, updatedtime, messageDiv});\n if (this._history.length > this._historyLimit) {\n this._history.shift();\n }\n }\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n };\n return msgid;\n }\n messageAddNew(content=\"\", userString=\"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull( \n {content: content, userString: userString, align: align, role: role}\n );\n }\n messageRemove(n) {\n // use css selector to remove the message\n let sucess = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n sucess = true;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n if (sucess) {\n // slow way to remove from history\n //this._history = this._history.filter((item) => item.msgid !== n); // todo make this more efficient\n\n // better way to delete this from history\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n }\n return sucess;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n // now use css selector to get the message \n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return msg; \n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\"\n // now use css selector to get the message \n try {\n // get from history..\n content = this._history.filter((item) => item.msgid === n)[0].content;\n //content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content; \n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n // update history\n let item = this._history.filter((item) => item.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n sucess = true;\n this._messagesArea.lastChild.scrollIntoView();\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n } \n }\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n // update history\n this._history.filter((item) => item.msgid === n)[0].content = content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return sucess;\n }\n // history functions\n /**\n * \n * @param {*} n \n * @param {*} m \n * @returns array of history messages\n */\n historyGet(n,m) {\n\n if (n == undefined) {\n n = 0;\n m= this._history.length;\n }\n if (m === undefined) {\n m = n < 0 ? m: n + 1;\n }\n // remember that entries could be deleted. TODO: So we need to return the actual history entries\n // so now we need to find the array index that correspondes to messageIds n (start) and m (end)\n \n return this._history.slice(n,m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n } \n\n historyGetLength() {\n return this._history.length;\n } \n\n historyGetMessage(n) {\n if ( n>=0 && n < this._history.length) {\n this._history[n];\n }\n return {};\n\n } \n\n historyGetMessageContent(n) {\n return this._history[n].message;\n }\n\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static getVersion() {\n return {\"version\" : \"1.0.3\"}\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","trackHistory","titleArea","title","show","align","_classCallCheck","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","titleAreaToggle","style","display","_adjustMessagesAreaHeight","textAlign","titleAreaGetContents","inputAreaToggle","classList","toggle","inputAreaShow","inputAreaHide","hiddenElements","_toConsumableArray","children","filter","child","contains","totalHiddenHeight","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","fontSize","parseFloat","getComputedStyle","minWidth","messageAddFull","input","content","userString","role","userID","messageDiv","createElement","msgidClass","String","padStart","add","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","_objectSpread","shift","messageAddNew","messageRemove","n","sucess","removeChild","error","console","log","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","messageAppendContent","messageReplaceContent","historyGet","m","slice","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","message","changeTheme","newTheme","remove","get","getVersion"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=Array(e);i<e;i++)n[i]=t[i];return n}function e(t,e){for(var i=0;i<e.length;i++){var s=e[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,n(s.key),s)}}function i(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"==typeof e?e:e+""}function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}var r=function(){return t=function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{theme:"quikchat-theme-light",onSend:function(){},trackHistory:!0};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),"string"==typeof e&&(e=document.querySelector(e)),this._parentElement=e,this._theme=i.theme,this._onSend=i.onSend?i.onSend:function(){},this._createWidget(),i.titleArea&&(this.titleAreaSetContents(i.titleArea.title,i.titleArea.align),i.titleArea.show?this.titleAreaShow():this.titleAreaHide()),this._attachEventListeners(),this.trackHistory=i.trackHistory||!0,this._history=[]},n=[{key:"_createWidget",value:function(){var t='\n <div class="quikchat-base '.concat(this.theme,'">\n <div class="quikchat-title-area">\n <span style="font-size: 1.5em; font-weight: 600;">Title Area</span>\n </div>\n <div class="quikchat-messages-area"></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox"></textarea>\n <button class="quikchat-input-send-btn">Send</button>\n </div>\n </div>\n ');this._parentElement.innerHTML=t,this._chatWidget=this._parentElement.querySelector(".quikchat-base"),this._titleArea=this._chatWidget.querySelector(".quikchat-title-area"),this._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),this._inputArea=this._chatWidget.querySelector(".quikchat-input-area"),this._textEntry=this._inputArea.querySelector(".quikchat-input-textbox"),this._sendButton=this._inputArea.querySelector(".quikchat-input-send-btn"),this.msgid=0}},{key:"$",value:function(){}},{key:"_attachEventListeners",value:function(){var t=this;this._sendButton.addEventListener("click",(function(){return t._onSend(t,t._textEntry.value.trim())})),window.addEventListener("resize",(function(){return t._handleContainerResize()})),this._chatWidget.addEventListener("resize",(function(){return t._handleContainerResize()})),this._textEntry.addEventListener("keydown",(function(e){e.shiftKey&&13===e.keyCode&&(e.preventDefault(),t._onSend(t,t._textEntry.value.trim()))}))}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none",this._adjustMessagesAreaHeight()}},{key:"titleAreaSetContents",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"center";this._titleArea.innerHTML=t,this._titleArea.style.textAlign=e}},{key:"titleAreaGetContents",value:function(){return this._titleArea.innerHTML}},{key:"inputAreaToggle",value:function(){this._inputArea.classList.toggle("hidden"),"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none",this._adjustMessagesAreaHeight()}},{key:"_adjustMessagesAreaHeight",value:function(){var t=i(this._chatWidget.children).filter((function(t){return t.classList.contains("hidden")})).reduce((function(t,e){return t+e.offsetHeight}),0),e=this._chatWidget.offsetHeight;this._messagesArea.style.height="calc(100% - ".concat(e-t,"px)")}},{key:"_handleContainerResize",value:function(){this._adjustMessagesAreaHeight(),this._adjustSendButtonWidth()}},{key:"_adjustSendButtonWidth",value:function(){var t=this._sendButton.textContent.trim(),e=parseFloat(getComputedStyle(this._sendButton).fontSize)*t.length+16;this._sendButton.style.minWidth="".concat(e,"px")}},{key:"messageAddNew",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"test",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"left",n=document.createElement("div"),r=this.msgid,a="quikchat-msgid-"+String(r).padStart(10,"0");n.classList.add("quikchat-message",a),this.msgid++,n.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var o={name:"not-set",role:"user"};if("object"===s(e))for(var u in e)o[u]=e[u];else o.name=e;var h=document.createElement("div");h.innerHTML=o.name,h.style="width: 100%; text-align: ".concat(i,"; font-size: 1em; font-weight:700; color: #444;");var l=document.createElement("div");l.style="width: 100%; text-align: ".concat(i,";"),l.innerHTML=t,n.appendChild(h),n.appendChild(l),this._messagesArea.appendChild(n),this._messagesArea.lastChild.scrollIntoView(),this._textEntry.value="",this._adjustMessagesAreaHeight();var c=(new Date).toISOString(),d=c;return this.trackHistory&&(this._history.push({msgid:r,user:o,message:t,align:i,timestamp:c,updatedtime:d,messageDiv:n}),this._history.length>1e7&&this._history.shift()),{msgid:r}}},{key:"messageRemove",value:function(t){var e=!1;try{this._messagesArea.removeChild(this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0")))),e=!0}catch(t){console.log("{String(n)} : Message ID not found")}return e&&(this._history=this._history.filter((function(e){return e.msgid!==t}))),e}},{key:"messageGetDOMObject",value:function(t){var e=null;try{e=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0")))}catch(t){console.log("{String(n)} : Message ID not found")}return e}},{key:"messageGetContent",value:function(t){var e="";try{e=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0"))).lastChild.textContent}catch(t){console.log("{String(n)} : Message ID not found")}return e}},{key:"messageAppendContent",value:function(t,e){try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0"))).lastChild.innerHTML+=e}catch(t){console.log("{String(n)} : Message ID not found")}}},{key:"messageReplaceContent",value:function(t,e){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0"))).lastChild.innerHTML=e,i=!0}catch(t){console.log("{String(n)} : Message ID not found")}return i}},{key:"historyGet",value:function(t,e){return null==t&&(t=0,e=this._history.length),void 0===e&&(e=t<0?e:t+1),this._history.slice(t,e)}},{key:"historyClear",value:function(){this.msgid=0,this._history=[]}},{key:"historyGetLength",value:function(){return this._history.length}},{key:"historyGetMessage",value:function(t){return t>=0&&t<this._history.length&&this._history[t],{}}},{key:"historyGetMessageContent",value:function(t){return this._history[t].message}},{key:"changeTheme",value:function(t){this._chatWidget.classList.remove(this._theme),this._chatWidget.classList.add(t),this._theme=t}},{key:"theme",get:function(){return this._theme}}],r=[{key:"getVersion",value:function(){return{version:"1.0.2"}}}],n&&e(t.prototype,n),r&&e(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,n,r}();module.exports=r;
1
+ "use strict";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=Array(e);i<e;i++)n[i]=t[i];return n}function e(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,a(n.key),n)}}function i(t,e,i){return(e=a(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function n(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function r(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?n(Object(r),!0).forEach((function(e){i(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function s(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(e,i){if(e){if("string"==typeof e)return t(e,i);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,i):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"==typeof e?e:e+""}var o=function(){return t=function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{theme:"quikchat-theme-light",onSend:function(){},trackHistory:!0,titleArea:{title:"Title Area",show:!1,align:"center"}};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),"string"==typeof e&&(e=document.querySelector(e)),this._parentElement=e,this._theme=i.theme,this._onSend=i.onSend?i.onSend:function(){},this._createWidget(),i.titleArea&&(this.titleAreaSetContents(i.titleArea.title,i.titleArea.align),1==i.titleArea.show?this.titleAreaShow():this.titleAreaHide()),this._attachEventListeners(),this.trackHistory=i.trackHistory||!0,this._historyLimit=1e7,this._history=[]},i=[{key:"_createWidget",value:function(){var t='\n <div class="quikchat-base '.concat(this.theme,'">\n <div class="quikchat-title-area">\n <span style="font-size: 1.5em; font-weight: 600;">Title Area</span>\n </div>\n <div class="quikchat-messages-area"></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox"></textarea>\n <button class="quikchat-input-send-btn">Send</button>\n </div>\n </div>\n ');this._parentElement.innerHTML=t,this._chatWidget=this._parentElement.querySelector(".quikchat-base"),this._titleArea=this._chatWidget.querySelector(".quikchat-title-area"),this._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),this._inputArea=this._chatWidget.querySelector(".quikchat-input-area"),this._textEntry=this._inputArea.querySelector(".quikchat-input-textbox"),this._sendButton=this._inputArea.querySelector(".quikchat-input-send-btn"),this.msgid=0}},{key:"_attachEventListeners",value:function(){var t=this;this._sendButton.addEventListener("click",(function(){return t._onSend(t,t._textEntry.value.trim())})),window.addEventListener("resize",(function(){return t._handleContainerResize()})),this._chatWidget.addEventListener("resize",(function(){return t._handleContainerResize()})),this._textEntry.addEventListener("keydown",(function(e){e.shiftKey&&13===e.keyCode&&(e.preventDefault(),t._onSend(t,t._textEntry.value.trim()))}))}},{key:"setCallbackOnSend",value:function(t){this._onSend=t}},{key:"setCallbackonMessageAdded",value:function(t){this._onMessageAdded=t}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none",this._adjustMessagesAreaHeight()}},{key:"titleAreaSetContents",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"center";this._titleArea.innerHTML=t,this._titleArea.style.textAlign=e}},{key:"titleAreaGetContents",value:function(){return this._titleArea.innerHTML}},{key:"inputAreaToggle",value:function(){this._inputArea.classList.toggle("hidden"),"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display="",this._adjustMessagesAreaHeight()}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none",this._adjustMessagesAreaHeight()}},{key:"_adjustMessagesAreaHeight",value:function(){var t=s(this._chatWidget.children).filter((function(t){return t.classList.contains("hidden")})).reduce((function(t,e){return t+e.offsetHeight}),0),e=this._chatWidget.offsetHeight;this._messagesArea.style.height="calc(100% - ".concat(e-t,"px)")}},{key:"_handleContainerResize",value:function(){this._adjustMessagesAreaHeight(),this._adjustSendButtonWidth()}},{key:"_adjustSendButtonWidth",value:function(){var t=this._sendButton.textContent.trim(),e=parseFloat(getComputedStyle(this._sendButton).fontSize)*t.length+16;this._sendButton.style.minWidth="".concat(e,"px")}},{key:"messageAddFull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{content:"",userString:"user",align:"right",role:"user",userID:-1},e=this.msgid,i=document.createElement("div"),n="quikchat-msgid-"+String(e).padStart(10,"0");String(t.userString).padStart(10,"0"),i.classList.add("quikchat-message",n),this.msgid++,i.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var s=document.createElement("div");s.innerHTML=t.userString,s.style="width: 100%; text-align: ".concat(t.align,"; font-size: 1em; font-weight:700; color: #444;");var a=document.createElement("div");a.style="width: 100%; text-align: ".concat(t.align,";"),a.innerHTML=t.content,i.appendChild(s),i.appendChild(a),this._messagesArea.appendChild(i),this._messagesArea.lastChild.scrollIntoView(),this._textEntry.value="",this._adjustMessagesAreaHeight();var o=(new Date).toISOString(),u=o;return this.trackHistory&&(this._history.push(r(r({msgid:e},t),{},{timestamp:o,updatedtime:u,messageDiv:i})),this._history.length>this._historyLimit&&this._history.shift()),this._onMessageAdded&&this._onMessageAdded(this,e),e}},{key:"messageAddNew",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user";return this.messageAddFull({content:t,userString:e,align:i,role:n})}},{key:"messageRemove",value:function(t){var e=!1;try{this._messagesArea.removeChild(this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0")))),e=!0}catch(t){console.log("{String(n)} : Message ID not found")}return e&&this._history.splice(this._history.findIndex((function(e){return e.msgid===t})),1),e}},{key:"messageGetDOMObject",value:function(t){var e=null;try{e=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0")))}catch(t){console.log("{String(n)} : Message ID not found")}return e}},{key:"messageGetContent",value:function(t){var e="";try{e=this._history.filter((function(e){return e.msgid===t}))[0].content}catch(t){console.log("{String(n)} : Message ID not found")}return e}},{key:"messageAppendContent",value:function(t,e){try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0"))).lastChild.innerHTML+=e;var i=this._history.filter((function(e){return e.msgid===t}))[0];i.content+=e,i.updatedtime=(new Date).toISOString(),this._messagesArea.lastChild.scrollIntoView()}catch(t){console.log("{String(n)} : Message ID not found")}}},{key:"messageReplaceContent",value:function(t,e){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0"))).lastChild.innerHTML=e,this._history.filter((function(e){return e.msgid===t}))[0].content=e,i=!0}catch(t){console.log("{String(n)} : Message ID not found")}return i}},{key:"historyGet",value:function(t,e){return null==t&&(t=0,e=this._history.length),void 0===e&&(e=t<0?e:t+1),this._history.slice(t,e)}},{key:"historyClear",value:function(){this.msgid=0,this._history=[]}},{key:"historyGetLength",value:function(){return this._history.length}},{key:"historyGetMessage",value:function(t){return t>=0&&t<this._history.length&&this._history[t],{}}},{key:"historyGetMessageContent",value:function(t){return this._history[t].message}},{key:"changeTheme",value:function(t){this._chatWidget.classList.remove(this._theme),this._chatWidget.classList.add(t),this._theme=t}},{key:"theme",get:function(){return this._theme}}],n=[{key:"getVersion",value:function(){return{version:"1.0.3"}}}],i&&e(t.prototype,i),n&&e(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,i,n}();module.exports=o;
2
2
  //# sourceMappingURL=quikchat.cjs.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quikchat.cjs.min.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n * \n * @param string or DOM element parentElement \n * @param {*} meta \n */\n constructor(parentElement, \n meta = { \n theme: 'quikchat-theme-light', \n onSend: () => { },\n trackHistory: true,\n }) {\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = meta.onSend ? meta.onSend : () => { };\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\">\n <span style=\"font-size: 1.5em; font-weight: 600;\">Title Area</span>\n </div>\n <div class=\"quikchat-messages-area\"></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n $() {\n }\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => this._onSend(this, this._textEntry.value.trim()));\n window.addEventListener('resize', () => this._handleContainerResize());\n this._chatWidget.addEventListener('resize', () => this._handleContainerResize());\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n // Prevent default behavior (adding new line)\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim())\n }\n });\n }\n\n titleAreaToggle() {\n this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n this._inputArea.classList.toggle('hidden');\n this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n _adjustMessagesAreaHeight() {\n const hiddenElements = [...this._chatWidget.children].filter(child => child.classList.contains('hidden'));\n const totalHiddenHeight = hiddenElements.reduce((sum, child) => sum + child.offsetHeight, 0);\n const containerHeight = this._chatWidget.offsetHeight;\n this._messagesArea.style.height = `calc(100% - ${containerHeight - totalHiddenHeight}px)`;\n }\n\n _handleContainerResize() {\n this._adjustMessagesAreaHeight();\n this._adjustSendButtonWidth();\n //console.log('Container resized');\n }\n\n _adjustSendButtonWidth() {\n const sendButtonText = this._sendButton.textContent.trim();\n const fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);\n const minWidth = fontSize * sendButtonText.length + 16;\n this._sendButton.style.minWidth = `${minWidth}px`;\n }\n\n messageAddNew(message, userObject = \"test\", align = 'left') {\n const messageDiv = document.createElement('div');\n const msgid = this.msgid;\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n messageDiv.classList.add('quikchat-message', msgidClass);\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n let user = {name: \"not-set\",role : \"user\"};\n if (typeof userObject === 'object') {\n for (const key in userObject) {\n user[key] = userObject[key];\n }\n }\n else { // if userObject is a string\n user[\"name\"] = userObject ;\n }\n const userDiv = document.createElement('div');\n userDiv.innerHTML = user.name;\n userDiv.style = `width: 100%; text-align: ${align}; font-size: 1em; font-weight:700; color: #444;`;\n\n const contentDiv = document.createElement('div');\n contentDiv.style = `width: 100%; text-align: ${align};`;\n contentDiv.innerHTML = message;\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n this._messagesArea.appendChild(messageDiv);\n this._messagesArea.lastChild.scrollIntoView();\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n if (this.trackHistory) {\n this._history.push({ msgid, user, message, align, timestamp, updatedtime, messageDiv});\n if (this._history.length > 10000000) {\n this._history.shift();\n }\n }\n return {msgid};\n }\n\n messageRemove(n) {\n // use css selector to remove the message\n let sucess = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n sucess = true;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n if (sucess) {\n // remove from history\n this._history = this._history.filter((item) => item.msgid !== n);\n }\n return sucess;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n // now use css selector to get the message \n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return msg; \n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\"\n // now use css selector to get the message \n try {\n content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content; \n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n } \n }\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return sucess;\n }\n // history functions\n /**\n * \n * @param {*} n \n * @param {*} m \n * @returns array of history messages\n */\n historyGet(n,m) {\n\n if (n == undefined) {\n n = 0;\n m= this._history.length;\n }\n if (m === undefined) {\n m = n < 0 ? m: n + 1;\n }\n return this._history.slice(n,m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n } \n\n historyGetLength() {\n return this._history.length;\n } \n\n historyGetMessage(n) {\n if ( n>=0 && n < this._history.length) {\n this._history[n];\n }\n return {};\n\n } \n\n historyGetMessageContent(n) {\n return this._history[n].message;\n }\n\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static getVersion() {\n return {\"version\" : \"1.0.2\"}\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","trackHistory","_classCallCheck","document","querySelector","this","_parentElement","_theme","_onSend","_createWidget","titleArea","titleAreaSetContents","title","align","show","titleAreaShow","titleAreaHide","_attachEventListeners","_history","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","style","display","_adjustMessagesAreaHeight","textAlign","classList","toggle","inputAreaShow","inputAreaHide","totalHiddenHeight","_toConsumableArray","children","filter","child","contains","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","minWidth","parseFloat","getComputedStyle","fontSize","message","userObject","messageDiv","createElement","msgidClass","String","padStart","add","user","name","role","_typeof","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","shift","n","sucess","removeChild","error","console","log","item","msg","content","m","slice","newTheme","remove","get","version"],"mappings":"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"}
1
+ {"version":3,"file":"quikchat.cjs.min.js","sources":["../src/quikchat.js"],"sourcesContent":["\nclass quikchat {\n /**\n * \n * @param string or DOM element parentElement \n * @param {*} meta \n */\n constructor(parentElement, \n meta = { \n theme: 'quikchat-theme-light', \n onSend: () => { }, \n trackHistory: true,\n titleArea: {title: \"Title Area\", show: false, align: \"center\"}\n }) \n {\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = meta.onSend ? meta.onSend : () => { };\n this._createWidget();\n // title area\n if (meta.titleArea) {\n this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);\n if (meta.titleArea.show == true) {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory || true;\n this._historyLimit = 10000000;\n this._history = [];\n }\n\n _createWidget() {\n const widgetHTML =\n `\n <div class=\"quikchat-base ${this.theme}\">\n <div class=\"quikchat-title-area\">\n <span style=\"font-size: 1.5em; font-weight: 600;\">Title Area</span>\n </div>\n <div class=\"quikchat-messages-area\"></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\"></textarea>\n <button class=\"quikchat-input-send-btn\">Send</button>\n </div>\n </div>\n `;\n\n this._parentElement.innerHTML = widgetHTML;\n this._chatWidget = this._parentElement.querySelector('.quikchat-base');\n this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');\n this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');\n this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');\n this.msgid = 0;\n }\n\n _attachEventListeners() {\n this._sendButton.addEventListener('click', () => this._onSend(this, this._textEntry.value.trim()));\n window.addEventListener('resize', () => this._handleContainerResize());\n this._chatWidget.addEventListener('resize', () => this._handleContainerResize());\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n // Prevent default behavior (adding new line)\n event.preventDefault();\n this._onSend(this, this._textEntry.value.trim())\n }\n });\n }\n // set the onSend function callback.\n setCallbackOnSend(callback) {\n this._onSend = callback;\n }\n // set a callback for everytime a message is added (listener)\n setCallbackonMessageAdded(callback) {\n this._onMessageAdded = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n titleAreaSetContents(title, align = 'center') {\n this._titleArea.innerHTML = title;\n this._titleArea.style.textAlign = align;\n }\n\n titleAreaGetContents() {\n return this._titleArea.innerHTML;\n }\n\n inputAreaToggle() {\n this._inputArea.classList.toggle('hidden');\n this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n this._adjustMessagesAreaHeight();\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n this._adjustMessagesAreaHeight();\n }\n\n _adjustMessagesAreaHeight() {\n const hiddenElements = [...this._chatWidget.children].filter(child => child.classList.contains('hidden'));\n const totalHiddenHeight = hiddenElements.reduce((sum, child) => sum + child.offsetHeight, 0);\n const containerHeight = this._chatWidget.offsetHeight;\n this._messagesArea.style.height = `calc(100% - ${containerHeight - totalHiddenHeight}px)`;\n }\n\n _handleContainerResize() {\n this._adjustMessagesAreaHeight();\n this._adjustSendButtonWidth();\n //console.log('Container resized');\n }\n\n _adjustSendButtonWidth() {\n const sendButtonText = this._sendButton.textContent.trim();\n const fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);\n const minWidth = fontSize * sendButtonText.length + 16;\n this._sendButton.style.minWidth = `${minWidth}px`;\n }\n \n messageAddFull(input = {content: \"\", userString: \"user\", align : \"right\", role : \"user\", userID : -1}) {\n const msgid = this.msgid;\n const messageDiv = document.createElement('div');\n const msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');\n const userIdClass = 'quikchat-userid-' + String(input.userString).padStart(10, '0'); // hash this..\n messageDiv.classList.add('quikchat-message', msgidClass);\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n \n const userDiv = document.createElement('div');\n userDiv.innerHTML = input.userString;\n userDiv.style = `width: 100%; text-align: ${input.align}; font-size: 1em; font-weight:700; color: #444;`;\n\n const contentDiv = document.createElement('div');\n contentDiv.style = `width: 100%; text-align: ${input.align};`;\n contentDiv.innerHTML = input.content;\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n this._messagesArea.appendChild(messageDiv);\n this._messagesArea.lastChild.scrollIntoView();\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, timestamp, updatedtime, messageDiv});\n if (this._history.length > this._historyLimit) {\n this._history.shift();\n }\n }\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n };\n return msgid;\n }\n messageAddNew(content=\"\", userString=\"user\", align = \"right\", role = \"user\") {\n return this.messageAddFull( \n {content: content, userString: userString, align: align, role: role}\n );\n }\n messageRemove(n) {\n // use css selector to remove the message\n let sucess = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n sucess = true;\n }\n catch (error) {\n console.log(`{String(n)} : Message ID not found`);\n }\n if (sucess) {\n // slow way to remove from history\n //this._history = this._history.filter((item) => item.msgid !== n); // todo make this more efficient\n\n // better way to delete this from history\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n }\n return sucess;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n // now use css selector to get the message \n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return msg; \n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\"\n // now use css selector to get the message \n try {\n // get from history..\n content = this._history.filter((item) => item.msgid === n)[0].content;\n //content = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.textContent;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return content; \n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML += content;\n // update history\n let item = this._history.filter((item) => item.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n sucess = true;\n this._messagesArea.lastChild.scrollIntoView();\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n } \n }\n /* replace message content\n */\n messageReplaceContent(n, content) {\n let sucess = false;\n try {\n this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`).lastChild.innerHTML = content;\n // update history\n this._history.filter((item) => item.msgid === n)[0].content = content;\n sucess = true;\n } \n catch (error) \n {\n console.log(`{String(n)} : Message ID not found`);\n }\n return sucess;\n }\n // history functions\n /**\n * \n * @param {*} n \n * @param {*} m \n * @returns array of history messages\n */\n historyGet(n,m) {\n\n if (n == undefined) {\n n = 0;\n m= this._history.length;\n }\n if (m === undefined) {\n m = n < 0 ? m: n + 1;\n }\n // remember that entries could be deleted. TODO: So we need to return the actual history entries\n // so now we need to find the array index that correspondes to messageIds n (start) and m (end)\n \n return this._history.slice(n,m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n } \n\n historyGetLength() {\n return this._history.length;\n } \n\n historyGetMessage(n) {\n if ( n>=0 && n < this._history.length) {\n this._history[n];\n }\n return {};\n\n } \n\n historyGetMessageContent(n) {\n return this._history[n].message;\n }\n\n\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n\n get theme() {\n return this._theme;\n }\n\n static getVersion() {\n return {\"version\" : \"1.0.3\"}\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","trackHistory","titleArea","title","show","align","_classCallCheck","document","querySelector","this","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","_attachEventListeners","_historyLimit","_history","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","callback","_onMessageAdded","style","display","_adjustMessagesAreaHeight","textAlign","classList","toggle","inputAreaShow","inputAreaHide","totalHiddenHeight","_toConsumableArray","children","filter","child","contains","reduce","sum","offsetHeight","containerHeight","height","_adjustSendButtonWidth","sendButtonText","textContent","minWidth","parseFloat","getComputedStyle","fontSize","input","content","userString","role","userID","messageDiv","createElement","msgidClass","String","padStart","add","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","_objectSpread","shift","messageAddFull","n","sucess","removeChild","error","console","log","splice","findIndex","item","msg","m","slice","message","newTheme","remove","get","version"],"mappings":"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"}