quikchat 1.0.4 → 1.1.1
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 +5 -5
- package/dist/quikchat.cjs.js +139 -20
- package/dist/quikchat.cjs.js.map +1 -1
- package/dist/quikchat.cjs.min.js +1 -1
- package/dist/quikchat.cjs.min.js.map +1 -1
- package/dist/quikchat.css +44 -18
- package/dist/quikchat.esm.js +139 -20
- package/dist/quikchat.esm.js.map +1 -1
- package/dist/quikchat.esm.min.js +1 -1
- package/dist/quikchat.esm.min.js.map +1 -1
- package/dist/quikchat.react.js +63 -0
- package/dist/quikchat.umd.js +139 -20
- package/dist/quikchat.umd.js.map +1 -1
- package/dist/quikchat.umd.min.js +1 -1
- package/dist/quikchat.umd.min.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -4,13 +4,13 @@ Quikchat is a vanilla (no dependancies) JavaScript chat control that can be easi
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
* Callback function for message events
|
|
8
|
-
* Responsive design for various screen sizes and resizes with parent container
|
|
9
7
|
* Themeable with CSS (examples for light and dark)
|
|
8
|
+
* Callback function for all message events (allows monitoring)
|
|
9
|
+
* Responsive design for various screen sizes and resizes with parent container
|
|
10
10
|
* Hideable/Showable Title and Text Entry areas allows flexibility of usage
|
|
11
|
-
* Full history storage and retrieval
|
|
11
|
+
* Full message history storage and retrieval
|
|
12
12
|
* History can be fed directly to OpenAI / Mistral / Ollama compatible APIs for context aware chats
|
|
13
|
-
* Available via NPM and CDN
|
|
13
|
+
* Available via NPM and CDN & github
|
|
14
14
|
* Provided in UMD and ESM formats
|
|
15
15
|
* Multiple separate instances can run on a single page
|
|
16
16
|
* Multiple users can be in a chat
|
|
@@ -20,7 +20,7 @@ Quikchat is a vanilla (no dependancies) JavaScript chat control that can be easi
|
|
|
20
20
|
## Demo & Examples
|
|
21
21
|
|
|
22
22
|
Examples are here
|
|
23
|
-
[Example Code and Demo](
|
|
23
|
+
[Example Code and Demo](./examples/index.html)
|
|
24
24
|
Example include using ESM, UMD modules, running multiple chats on the same page, and integration with LLM providers such as Ollama, LMStudio, OpenAI compatible providers.
|
|
25
25
|
|
|
26
26
|
## Installation
|
package/dist/quikchat.cjs.js
CHANGED
|
@@ -89,33 +89,45 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
89
89
|
* @param {*} meta
|
|
90
90
|
*/
|
|
91
91
|
function quikchat(parentElement) {
|
|
92
|
-
var
|
|
92
|
+
var onSend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
|
|
93
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
94
|
+
_classCallCheck(this, quikchat);
|
|
95
|
+
var defaultOpts = {
|
|
93
96
|
theme: 'quikchat-theme-light',
|
|
94
|
-
onSend: function onSend() {},
|
|
95
97
|
trackHistory: true,
|
|
96
98
|
titleArea: {
|
|
97
|
-
title: "
|
|
99
|
+
title: "Chat",
|
|
98
100
|
show: false,
|
|
99
101
|
align: "center"
|
|
102
|
+
},
|
|
103
|
+
messagesArea: {
|
|
104
|
+
alternating: true
|
|
100
105
|
}
|
|
101
106
|
};
|
|
102
|
-
|
|
107
|
+
var meta = _objectSpread2(_objectSpread2({}, defaultOpts), options); // merge options with defaults
|
|
108
|
+
|
|
103
109
|
if (typeof parentElement === 'string') {
|
|
104
110
|
parentElement = document.querySelector(parentElement);
|
|
105
111
|
}
|
|
112
|
+
//console.log(parentElement, meta);
|
|
106
113
|
this._parentElement = parentElement;
|
|
107
114
|
this._theme = meta.theme;
|
|
108
|
-
this._onSend =
|
|
115
|
+
this._onSend = onSend ? onSend : function () {}; // call back function for onSend
|
|
109
116
|
this._createWidget();
|
|
110
117
|
// title area
|
|
111
118
|
if (meta.titleArea) {
|
|
112
119
|
this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);
|
|
113
|
-
if (meta.titleArea.show
|
|
120
|
+
if (meta.titleArea.show === true) {
|
|
114
121
|
this.titleAreaShow();
|
|
115
122
|
} else {
|
|
116
123
|
this.titleAreaHide();
|
|
117
124
|
}
|
|
118
125
|
}
|
|
126
|
+
// messages area
|
|
127
|
+
if (meta.messagesArea) {
|
|
128
|
+
this.messagesAreaAlternateColors(meta.messagesArea.alternating);
|
|
129
|
+
}
|
|
130
|
+
// plumbing
|
|
119
131
|
this._attachEventListeners();
|
|
120
132
|
this.trackHistory = meta.trackHistory || true;
|
|
121
133
|
this._historyLimit = 10000000;
|
|
@@ -134,6 +146,10 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
134
146
|
this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');
|
|
135
147
|
this.msgid = 0;
|
|
136
148
|
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Attach event listeners to the widget
|
|
152
|
+
*/
|
|
137
153
|
}, {
|
|
138
154
|
key: "_attachEventListeners",
|
|
139
155
|
value: function _attachEventListeners() {
|
|
@@ -155,7 +171,15 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
155
171
|
_this._onSend(_this, _this._textEntry.value.trim());
|
|
156
172
|
}
|
|
157
173
|
});
|
|
174
|
+
this._messagesArea.addEventListener('scroll', function () {
|
|
175
|
+
var _this$_messagesArea = _this._messagesArea,
|
|
176
|
+
scrollTop = _this$_messagesArea.scrollTop,
|
|
177
|
+
scrollHeight = _this$_messagesArea.scrollHeight,
|
|
178
|
+
clientHeight = _this$_messagesArea.clientHeight;
|
|
179
|
+
_this.userScrolledUp = scrollTop + clientHeight < scrollHeight;
|
|
180
|
+
});
|
|
158
181
|
}
|
|
182
|
+
|
|
159
183
|
// set the onSend function callback.
|
|
160
184
|
}, {
|
|
161
185
|
key: "setCallbackOnSend",
|
|
@@ -244,6 +268,30 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
244
268
|
var minWidth = fontSize * sendButtonText.length + 16;
|
|
245
269
|
this._sendButton.style.minWidth = "".concat(minWidth, "px");
|
|
246
270
|
}
|
|
271
|
+
|
|
272
|
+
//messagesArea functions
|
|
273
|
+
}, {
|
|
274
|
+
key: "messagesAreaAlternateColors",
|
|
275
|
+
value: function messagesAreaAlternateColors() {
|
|
276
|
+
var alt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
277
|
+
if (alt) {
|
|
278
|
+
this._messagesArea.classList.add('quikchat-messages-area-alt');
|
|
279
|
+
} else {
|
|
280
|
+
this._messagesArea.classList.remove('quikchat-messages-area-alt');
|
|
281
|
+
}
|
|
282
|
+
return alt === true;
|
|
283
|
+
}
|
|
284
|
+
}, {
|
|
285
|
+
key: "messagesAreaAlternateColorsToggle",
|
|
286
|
+
value: function messagesAreaAlternateColorsToggle() {
|
|
287
|
+
this._messagesArea.classList.toggle('quikchat-messages-area-alt');
|
|
288
|
+
}
|
|
289
|
+
}, {
|
|
290
|
+
key: "messagesAreaAlternateColorsGet",
|
|
291
|
+
value: function messagesAreaAlternateColorsGet() {
|
|
292
|
+
return this._messagesArea.classList.contains('quikchat-messages-area-alt');
|
|
293
|
+
}
|
|
294
|
+
// message functions
|
|
247
295
|
}, {
|
|
248
296
|
key: "messageAddFull",
|
|
249
297
|
value: function messageAddFull() {
|
|
@@ -270,8 +318,11 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
270
318
|
messageDiv.appendChild(userDiv);
|
|
271
319
|
messageDiv.appendChild(contentDiv);
|
|
272
320
|
this._messagesArea.appendChild(messageDiv);
|
|
273
|
-
|
|
274
|
-
|
|
321
|
+
|
|
322
|
+
// Scroll to the last message only if the user is not actively scrolling up
|
|
323
|
+
if (!this.userScrolledUp) {
|
|
324
|
+
this._messagesArea.lastElementChild.scrollIntoView();
|
|
325
|
+
}
|
|
275
326
|
this._textEntry.value = '';
|
|
276
327
|
this._adjustMessagesAreaHeight();
|
|
277
328
|
var timestamp = new Date().toISOString();
|
|
@@ -367,7 +418,7 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
367
418
|
}, {
|
|
368
419
|
key: "messageAppendContent",
|
|
369
420
|
value: function messageAppendContent(n, content) {
|
|
370
|
-
var
|
|
421
|
+
var success = false;
|
|
371
422
|
try {
|
|
372
423
|
this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML += content;
|
|
373
424
|
// update history
|
|
@@ -376,31 +427,44 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
376
427
|
})[0];
|
|
377
428
|
item.content += content;
|
|
378
429
|
item.updatedtime = new Date().toISOString();
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
430
|
+
success = true;
|
|
431
|
+
|
|
432
|
+
// Scroll to the last message only if the user is not actively scrolling up
|
|
433
|
+
if (!this.userScrolledUp) {
|
|
434
|
+
this._messagesArea.lastElementChild.scrollIntoView();
|
|
435
|
+
}
|
|
382
436
|
} catch (error) {
|
|
383
|
-
console.log("
|
|
437
|
+
console.log("".concat(String(n), " : Message ID not found"));
|
|
384
438
|
}
|
|
439
|
+
return success;
|
|
385
440
|
}
|
|
441
|
+
|
|
386
442
|
/* replace message content
|
|
387
443
|
*/
|
|
388
444
|
}, {
|
|
389
445
|
key: "messageReplaceContent",
|
|
390
446
|
value: function messageReplaceContent(n, content) {
|
|
391
|
-
var
|
|
447
|
+
var success = false;
|
|
392
448
|
try {
|
|
393
449
|
this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML = content;
|
|
394
450
|
// update history
|
|
395
|
-
this._history.filter(function (item) {
|
|
451
|
+
var item = this._history.filter(function (item) {
|
|
396
452
|
return item.msgid === n;
|
|
397
|
-
})[0]
|
|
398
|
-
|
|
453
|
+
})[0];
|
|
454
|
+
item.content = content;
|
|
455
|
+
item.updatedtime = new Date().toISOString();
|
|
456
|
+
success = true;
|
|
457
|
+
|
|
458
|
+
// Scroll to the last message only if the user is not actively scrolling up
|
|
459
|
+
if (!this.userScrolledUp) {
|
|
460
|
+
this._messagesArea.lastElementChild.scrollIntoView();
|
|
461
|
+
}
|
|
399
462
|
} catch (error) {
|
|
400
|
-
console.log("
|
|
463
|
+
console.log("".concat(String(n), " : Message ID not found"));
|
|
401
464
|
}
|
|
402
|
-
return
|
|
465
|
+
return success;
|
|
403
466
|
}
|
|
467
|
+
|
|
404
468
|
// history functions
|
|
405
469
|
/**
|
|
406
470
|
*
|
|
@@ -463,11 +527,66 @@ var quikchat = /*#__PURE__*/function () {
|
|
|
463
527
|
key: "version",
|
|
464
528
|
value: function version() {
|
|
465
529
|
return {
|
|
466
|
-
"version": "1.
|
|
530
|
+
"version": "1.1.1",
|
|
467
531
|
"license": "BSD-2",
|
|
468
532
|
"url": "https://github/deftio/quikchat"
|
|
469
533
|
};
|
|
470
534
|
}
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.
|
|
538
|
+
* borrowed from github.com/deftio/bitwrench.js
|
|
539
|
+
* @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined).
|
|
540
|
+
* @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.
|
|
541
|
+
* @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.
|
|
542
|
+
*
|
|
543
|
+
* @returns {string} A string of Lorem Ipsum text.
|
|
544
|
+
*
|
|
545
|
+
* @example
|
|
546
|
+
* // Returns 200 characters of Lorem Ipsum starting from index 50
|
|
547
|
+
* loremIpsum(200, 50);
|
|
548
|
+
*
|
|
549
|
+
* @example
|
|
550
|
+
* //Returns a 200 Lorem Ipsum characters starting from a random index
|
|
551
|
+
* loremIpsum(200);
|
|
552
|
+
*/
|
|
553
|
+
}, {
|
|
554
|
+
key: "loremIpsum",
|
|
555
|
+
value: function loremIpsum(numChars) {
|
|
556
|
+
var startSpot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
557
|
+
var startWithCapitalLetter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
558
|
+
var loremText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ";
|
|
559
|
+
if (typeof numChars !== "number") {
|
|
560
|
+
numChars = Math.floor(Math.random() * 150) + 25;
|
|
561
|
+
}
|
|
562
|
+
if (startSpot === undefined) {
|
|
563
|
+
startSpot = Math.floor(Math.random() * loremText.length);
|
|
564
|
+
}
|
|
565
|
+
startSpot = startSpot % loremText.length;
|
|
566
|
+
|
|
567
|
+
// Move startSpot to the next non-whitespace and non-punctuation character
|
|
568
|
+
while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {
|
|
569
|
+
startSpot = (startSpot + 1) % loremText.length;
|
|
570
|
+
}
|
|
571
|
+
var l = loremText.substring(startSpot) + loremText.substring(0, startSpot);
|
|
572
|
+
if (typeof numChars !== "number") {
|
|
573
|
+
numChars = l.length;
|
|
574
|
+
}
|
|
575
|
+
var s = "";
|
|
576
|
+
while (numChars > 0) {
|
|
577
|
+
s += numChars < l.length ? l.substring(0, numChars) : l;
|
|
578
|
+
numChars -= l.length;
|
|
579
|
+
}
|
|
580
|
+
if (s[s.length - 1] === " ") {
|
|
581
|
+
s = s.substring(0, s.length - 1) + "."; // always end on non-whitespace. "." was chosen arbitrarily.
|
|
582
|
+
}
|
|
583
|
+
if (startWithCapitalLetter) {
|
|
584
|
+
var c = s[0].toUpperCase();
|
|
585
|
+
c = /[A-Z]/.test(c) ? c : "M";
|
|
586
|
+
s = c + s.substring(1);
|
|
587
|
+
}
|
|
588
|
+
return s;
|
|
589
|
+
}
|
|
471
590
|
}]);
|
|
472
591
|
}();
|
|
473
592
|
|
package/dist/quikchat.cjs.js.map
CHANGED
|
@@ -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 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;`;\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 this._messagesArea.lastElementChild.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 this._messagesArea.lastElementChild.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 version() {\n return {\"version\" : \"1.0.4\", \"license\" : \"BSD-2\", \"url\" :\"https://github/deftio/quikchat\"};\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","lastElementChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","_objectSpread","shift","messageAddNew","messageRemove","n","sucess","removeChild","error","console","log","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","messageAppendContent","lastChild","messageReplaceContent","historyGet","m","slice","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","message","changeTheme","newTheme","remove","get","version"],"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, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n //console.log(parentElement, meta);\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for 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 // messages area\n if (meta.messagesArea) {\n this.messagesAreaAlternateColors(meta.messagesArea.alternating);\n }\n // plumbing\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 /**\n * Attach event listeners to the widget\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 this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight;\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 //messagesArea functions\n messagesAreaAlternateColors(alt = true) {\n if (alt) {\n this._messagesArea.classList.add('quikchat-messages-area-alt');\n }\n else {\n this._messagesArea.classList.remove('quikchat-messages-area-alt');\n }\n return alt === true;\n }\n messagesAreaAlternateColorsToggle() {\n this._messagesArea.classList.toggle('quikchat-messages-area-alt');\n }\n messagesAreaAlternateColorsGet() {\n return this._messagesArea.classList.contains('quikchat-messages-area-alt');\n }\n // message functions\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;`;\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\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n\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\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n }\n\n return msgid;\n }\n\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 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 console.log(`{String(n)} : Message ID not found`);\n }\n return content;\n }\n\n /* append message to the message content\n */\n\n messageAppendContent(n, content) {\n let success = 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 success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(n)} : Message ID not found`);\n }\n return success;\n }\n \n /* replace message content\n */\n messageReplaceContent(n, content) {\n let success = 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 success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(n)} : Message ID not found`);\n }\n return success;\n }\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 version() {\n return { \"version\": \"1.1.1\", \"license\": \"BSD-2\", \"url\": \"https://github/deftio/quikchat\" };\n }\n\n /**\n * quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.\n * borrowed from github.com/deftio/bitwrench.js\n * @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined). \n * @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.\n * @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.\n * \n * @returns {string} A string of Lorem Ipsum text.\n * \n * @example \n * // Returns 200 characters of Lorem Ipsum starting from index 50\n * loremIpsum(200, 50);\n * \n * @example \n * //Returns a 200 Lorem Ipsum characters starting from a random index\n * loremIpsum(200);\n */\n\n static loremIpsum(numChars, startSpot = undefined, startWithCapitalLetter = true) {\n const loremText = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\n\n if (typeof numChars !== \"number\") {\n numChars = Math.floor(Math.random() * (150)) + 25;\n }\n\n if (startSpot === undefined) {\n startSpot = Math.floor(Math.random() * loremText.length);\n }\n\n startSpot = startSpot % loremText.length;\n\n // Move startSpot to the next non-whitespace and non-punctuation character\n while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {\n startSpot = (startSpot + 1) % loremText.length;\n }\n\n let l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n if (typeof numChars !== \"number\") {\n numChars = l.length;\n }\n\n let s = \"\";\n while (numChars > 0) {\n s += numChars < l.length ? l.substring(0, numChars) : l;\n numChars -= l.length;\n }\n\n if (s[s.length - 1] === \" \") {\n s = s.substring(0, s.length - 1) + \".\"; // always end on non-whitespace. \".\" was chosen arbitrarily.\n }\n\n if (startWithCapitalLetter) {\n let c = s[0].toUpperCase();\n c = /[A-Z]/.test(c) ? c : \"M\";\n s = c + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","defaultOpts","theme","trackHistory","titleArea","title","show","align","messagesArea","alternating","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","_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","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","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","alt","add","remove","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","content","userString","role","userID","messageDiv","createElement","msgidClass","String","padStart","userDiv","contentDiv","appendChild","lastElementChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","shift","messageAddNew","messageRemove","n","sucess","removeChild","error","console","log","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","messageAppendContent","success","lastChild","messageReplaceContent","historyGet","m","slice","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","message","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","Math","floor","random","test","l","substring","s","c","toUpperCase"],"mappings":"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"}
|
package/dist/quikchat.cjs.min.js
CHANGED
|
@@ -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 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;");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.lastElementChild.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.lastElementChild.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:"version",value:function(){return{version:"1.0.4",license:"BSD-2",url:"https://github/deftio/quikchat"}}}],i&&e(t.prototype,i),n&&e(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,i,n}();module.exports=o;
|
|
1
|
+
"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function t(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,a(n.key),n)}}function i(e,t,i){return(t=a(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function s(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?n(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):n(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function r(t){return function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(t,i){if(t){if("string"==typeof t)return e(t,i);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,i):void 0}}(t)||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(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}var o=function(){return e=function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var r=s(s({},{theme:"quikchat-theme-light",trackHistory:!0,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0}}),n);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=r.theme,this._onSend=i||function(){},this._createWidget(),r.titleArea&&(this.titleAreaSetContents(r.titleArea.title,r.titleArea.align),!0===r.titleArea.show?this.titleAreaShow():this.titleAreaHide()),r.messagesArea&&this.messagesAreaAlternateColors(r.messagesArea.alternating),this._attachEventListeners(),this.trackHistory=r.trackHistory||!0,this._historyLimit=1e7,this._history=[]},i=[{key:"_createWidget",value:function(){var e='\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=e,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 e=this;this._sendButton.addEventListener("click",(function(){return e._onSend(e,e._textEntry.value.trim())})),window.addEventListener("resize",(function(){return e._handleContainerResize()})),this._chatWidget.addEventListener("resize",(function(){return e._handleContainerResize()})),this._textEntry.addEventListener("keydown",(function(t){t.shiftKey&&13===t.keyCode&&(t.preventDefault(),e._onSend(e,e._textEntry.value.trim()))})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,i=t.scrollTop,n=t.scrollHeight,s=t.clientHeight;e.userScrolledUp=i+s<n}))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{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(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"center";this._titleArea.innerHTML=e,this._titleArea.style.textAlign=t}},{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 e=r(this._chatWidget.children).filter((function(e){return e.classList.contains("hidden")})).reduce((function(e,t){return e+t.offsetHeight}),0),t=this._chatWidget.offsetHeight;this._messagesArea.style.height="calc(100% - ".concat(t-e,"px)")}},{key:"_handleContainerResize",value:function(){this._adjustMessagesAreaHeight(),this._adjustSendButtonWidth()}},{key:"_adjustSendButtonWidth",value:function(){var e=this._sendButton.textContent.trim(),t=parseFloat(getComputedStyle(this._sendButton).fontSize)*e.length+16;this._sendButton.style.minWidth="".concat(t,"px")}},{key:"messagesAreaAlternateColors",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return e?this._messagesArea.classList.add("quikchat-messages-area-alt"):this._messagesArea.classList.remove("quikchat-messages-area-alt"),!0===e}},{key:"messagesAreaAlternateColorsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-messages-area-alt")}},{key:"messagesAreaAlternateColorsGet",value:function(){return this._messagesArea.classList.contains("quikchat-messages-area-alt")}},{key:"messageAddFull",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{content:"",userString:"user",align:"right",role:"user",userID:-1},t=this.msgid,i=document.createElement("div"),n="quikchat-msgid-"+String(t).padStart(10,"0");String(e.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 r=document.createElement("div");r.innerHTML=e.userString,r.style="width: 100%; text-align: ".concat(e.align,"; font-size: 1em; font-weight:700;");var a=document.createElement("div");a.style="width: 100%; text-align: ".concat(e.align,";"),a.innerHTML=e.content,i.appendChild(r),i.appendChild(a),this._messagesArea.appendChild(i),this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView(),this._textEntry.value="",this._adjustMessagesAreaHeight();var o=(new Date).toISOString(),l=o;return this.trackHistory&&(this._history.push(s(s({msgid:t},e),{},{timestamp:o,updatedtime:l,messageDiv:i})),this._history.length>this._historyLimit&&this._history.shift()),this._onMessageAdded&&this._onMessageAdded(this,t),t}},{key:"messageAddNew",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=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:e,userString:t,align:i,role:n})}},{key:"messageRemove",value:function(e){var t=!1;try{this._messagesArea.removeChild(this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))),t=!0}catch(e){console.log("{String(n)} : Message ID not found")}return t&&this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){console.log("{String(n)} : Message ID not found")}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){console.log("{String(n)} : Message ID not found")}return t}},{key:"messageAppendContent",value:function(e,t){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))).lastChild.innerHTML+=t;var n=this._history.filter((function(t){return t.msgid===e}))[0];n.content+=t,n.updatedtime=(new Date).toISOString(),i=!0,this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView()}catch(t){console.log("".concat(String(e)," : Message ID not found"))}return i}},{key:"messageReplaceContent",value:function(e,t){var i=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))).lastChild.innerHTML=t;var n=this._history.filter((function(t){return t.msgid===e}))[0];n.content=t,n.updatedtime=(new Date).toISOString(),i=!0,this.userScrolledUp||this._messagesArea.lastElementChild.scrollIntoView()}catch(t){console.log("".concat(String(e)," : Message ID not found"))}return i}},{key:"historyGet",value:function(e,t){return null==e&&(e=0,t=this._history.length),void 0===t&&(t=e<0?t:e+1),this._history.slice(e,t)}},{key:"historyClear",value:function(){this.msgid=0,this._history=[]}},{key:"historyGetLength",value:function(){return this._history.length}},{key:"historyGetMessage",value:function(e){return e>=0&&e<this._history.length&&this._history[e],{}}},{key:"historyGetMessageContent",value:function(e){return this._history[e].message}},{key:"changeTheme",value:function(e){this._chatWidget.classList.remove(this._theme),this._chatWidget.classList.add(e),this._theme=e}},{key:"theme",get:function(){return this._theme}}],n=[{key:"version",value:function(){return{version:"1.1.1",license:"BSD-2",url:"https://github/deftio/quikchat"}}},{key:"loremIpsum",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ";for("number"!=typeof e&&(e=Math.floor(150*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===n[t]||/[.,:;!?]/.test(n[t]);)t=(t+1)%446;var s=n.substring(t)+n.substring(0,t);"number"!=typeof e&&(e=s.length);for(var r="";e>0;)r+=e<s.length?s.substring(0,e):s,e-=s.length;if(" "===r[r.length-1]&&(r=r.substring(0,r.length-1)+"."),i){var a=r[0].toUpperCase();r=(a=/[A-Z]/.test(a)?a:"M")+r.substring(1)}return r}}],i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,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 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;`;\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 this._messagesArea.lastElementChild.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 this._messagesArea.lastElementChild.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 version() {\n return {\"version\" : \"1.0.4\", \"license\" : \"BSD-2\", \"url\" :\"https://github/deftio/quikchat\"};\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","lastElementChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","_objectSpread","shift","messageAddFull","n","sucess","removeChild","error","console","log","splice","findIndex","item","msg","lastChild","m","slice","message","newTheme","remove","get","version","license","url"],"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, onSend = () => { }, options = {}) {\n const defaultOpts = {\n theme: 'quikchat-theme-light',\n trackHistory: true,\n titleArea: { title: \"Chat\", show: false, align: \"center\" },\n messagesArea: { alternating: true },\n };\n const meta = { ...defaultOpts, ...options }; // merge options with defaults\n\n if (typeof parentElement === 'string') {\n parentElement = document.querySelector(parentElement);\n }\n //console.log(parentElement, meta);\n this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for 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 // messages area\n if (meta.messagesArea) {\n this.messagesAreaAlternateColors(meta.messagesArea.alternating);\n }\n // plumbing\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 /**\n * Attach event listeners to the widget\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 this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight;\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 //messagesArea functions\n messagesAreaAlternateColors(alt = true) {\n if (alt) {\n this._messagesArea.classList.add('quikchat-messages-area-alt');\n }\n else {\n this._messagesArea.classList.remove('quikchat-messages-area-alt');\n }\n return alt === true;\n }\n messagesAreaAlternateColorsToggle() {\n this._messagesArea.classList.toggle('quikchat-messages-area-alt');\n }\n messagesAreaAlternateColorsGet() {\n return this._messagesArea.classList.contains('quikchat-messages-area-alt');\n }\n // message functions\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;`;\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\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n\n this._textEntry.value = '';\n this._adjustMessagesAreaHeight();\n const timestamp = new Date().toISOString();\n const updatedtime = timestamp;\n\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\n if (this._onMessageAdded) {\n this._onMessageAdded(this, msgid);\n }\n\n return msgid;\n }\n\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 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 console.log(`{String(n)} : Message ID not found`);\n }\n return content;\n }\n\n /* append message to the message content\n */\n\n messageAppendContent(n, content) {\n let success = 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 success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(n)} : Message ID not found`);\n }\n return success;\n }\n \n /* replace message content\n */\n messageReplaceContent(n, content) {\n let success = 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 success = true;\n\n // Scroll to the last message only if the user is not actively scrolling up\n if (!this.userScrolledUp) {\n this._messagesArea.lastElementChild.scrollIntoView();\n }\n } catch (error) {\n console.log(`${String(n)} : Message ID not found`);\n }\n return success;\n }\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 version() {\n return { \"version\": \"1.1.1\", \"license\": \"BSD-2\", \"url\": \"https://github/deftio/quikchat\" };\n }\n\n /**\n * quikchat.loremIpsum() - Generate a simple string of Lorem Ipsum text (sample typographer's text) of numChars in length.\n * borrowed from github.com/deftio/bitwrench.js\n * @param {number} numChars - The number of characters to generate (random btw 25 and 150 if undefined). \n * @param {number} [startSpot=0] - The starting index in the Lorem Ipsum text. If undefined, a random startSpot will be generated.\n * @param {boolean} [startWithCapitalLetter=true] - If true, capitalize the first character or inject a capital letter if the first character isn't a capital letter.\n * \n * @returns {string} A string of Lorem Ipsum text.\n * \n * @example \n * // Returns 200 characters of Lorem Ipsum starting from index 50\n * loremIpsum(200, 50);\n * \n * @example \n * //Returns a 200 Lorem Ipsum characters starting from a random index\n * loremIpsum(200);\n */\n\n static loremIpsum(numChars, startSpot = undefined, startWithCapitalLetter = true) {\n const loremText = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \";\n\n if (typeof numChars !== \"number\") {\n numChars = Math.floor(Math.random() * (150)) + 25;\n }\n\n if (startSpot === undefined) {\n startSpot = Math.floor(Math.random() * loremText.length);\n }\n\n startSpot = startSpot % loremText.length;\n\n // Move startSpot to the next non-whitespace and non-punctuation character\n while (loremText[startSpot] === ' ' || /[.,:;!?]/.test(loremText[startSpot])) {\n startSpot = (startSpot + 1) % loremText.length;\n }\n\n let l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\n\n if (typeof numChars !== \"number\") {\n numChars = l.length;\n }\n\n let s = \"\";\n while (numChars > 0) {\n s += numChars < l.length ? l.substring(0, numChars) : l;\n numChars -= l.length;\n }\n\n if (s[s.length - 1] === \" \") {\n s = s.substring(0, s.length - 1) + \".\"; // always end on non-whitespace. \".\" was chosen arbitrarily.\n }\n\n if (startWithCapitalLetter) {\n let c = s[0].toUpperCase();\n c = /[A-Z]/.test(c) ? c : \"M\";\n s = c + s.substring(1);\n }\n\n return s;\n };\n\n\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","onSend","arguments","length","undefined","options","_classCallCheck","meta","_objectSpread","defaultOpts","theme","trackHistory","titleArea","title","show","align","messagesArea","alternating","document","querySelector","this","_parentElement","_theme","_onSend","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","_attachEventListeners","_historyLimit","_history","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesArea","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","trim","window","_handleContainerResize","event","shiftKey","keyCode","preventDefault","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","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","alt","add","remove","input","content","userString","role","userID","messageDiv","createElement","msgidClass","String","padStart","userDiv","contentDiv","appendChild","lastElementChild","scrollIntoView","timestamp","Date","toISOString","updatedtime","push","shift","messageAddFull","n","sucess","removeChild","error","console","log","splice","findIndex","item","msg","success","lastChild","m","slice","message","newTheme","get","version","license","url","numChars","startSpot","startWithCapitalLetter","loremText","Math","floor","random","test","l","substring","s","c","toUpperCase"],"mappings":"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"}
|