quikchat 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,304 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.quikchat = factory());
5
+ })(this, (function () { 'use strict';
6
+
7
+ function _arrayLikeToArray(r, a) {
8
+ (null == a || a > r.length) && (a = r.length);
9
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
10
+ return n;
11
+ }
12
+ function _arrayWithoutHoles(r) {
13
+ if (Array.isArray(r)) return _arrayLikeToArray(r);
14
+ }
15
+ function _classCallCheck(a, n) {
16
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
17
+ }
18
+ function _defineProperties(e, r) {
19
+ for (var t = 0; t < r.length; t++) {
20
+ var o = r[t];
21
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
22
+ }
23
+ }
24
+ function _createClass(e, r, t) {
25
+ return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
26
+ writable: !1
27
+ }), e;
28
+ }
29
+ function _iterableToArray(r) {
30
+ if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
31
+ }
32
+ function _nonIterableSpread() {
33
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
34
+ }
35
+ function _toConsumableArray(r) {
36
+ return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
37
+ }
38
+ function _toPrimitive(t, r) {
39
+ if ("object" != typeof t || !t) return t;
40
+ var e = t[Symbol.toPrimitive];
41
+ if (void 0 !== e) {
42
+ var i = e.call(t, r );
43
+ if ("object" != typeof i) return i;
44
+ throw new TypeError("@@toPrimitive must return a primitive value.");
45
+ }
46
+ return (String )(t);
47
+ }
48
+ function _toPropertyKey(t) {
49
+ var i = _toPrimitive(t, "string");
50
+ return "symbol" == typeof i ? i : i + "";
51
+ }
52
+ function _unsupportedIterableToArray(r, a) {
53
+ if (r) {
54
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
55
+ var t = {}.toString.call(r).slice(8, -1);
56
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
57
+ }
58
+ }
59
+
60
+ // quikchat.js
61
+ var quikchat = /*#__PURE__*/function () {
62
+ function quikchat(parentElement) {
63
+ var meta = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
64
+ theme: 'quikchat-theme-light',
65
+ onSend: function onSend() {}
66
+ };
67
+ _classCallCheck(this, quikchat);
68
+ this._parentElement = parentElement;
69
+ this._theme = meta.theme;
70
+ this._onSend = meta.onSend ? meta.onSend : function () {};
71
+ this._createWidget();
72
+ // title area
73
+ if (meta.titleArea) {
74
+ this.titleAreaSetContents(meta.titleArea.title, meta.titleArea.align);
75
+ if (meta.titleArea.show) {
76
+ this.titleAreaShow();
77
+ } else {
78
+ this.titleAreaHide();
79
+ }
80
+ }
81
+ this._attachEventListeners();
82
+ }
83
+ return _createClass(quikchat, [{
84
+ key: "_createWidget",
85
+ value: function _createWidget() {
86
+ var widgetHTML = "\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 ");
87
+ this._parentElement.innerHTML = widgetHTML;
88
+ this._chatWidget = this._parentElement.querySelector('.quikchat-base');
89
+ this._titleArea = this._chatWidget.querySelector('.quikchat-title-area');
90
+ this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');
91
+ this._inputArea = this._chatWidget.querySelector('.quikchat-input-area');
92
+ this._textEntry = this._inputArea.querySelector('.quikchat-input-textbox');
93
+ this._sendButton = this._inputArea.querySelector('.quikchat-input-send-btn');
94
+ this.msgid = 0;
95
+ }
96
+ }, {
97
+ key: "$",
98
+ value: function $() {}
99
+ }, {
100
+ key: "_attachEventListeners",
101
+ value: function _attachEventListeners() {
102
+ var _this = this;
103
+ this._sendButton.addEventListener('click', function () {
104
+ return _this._onSend(_this, _this._textEntry.value.trim());
105
+ });
106
+ window.addEventListener('resize', function () {
107
+ return _this._handleContainerResize();
108
+ });
109
+ this._chatWidget.addEventListener('resize', function () {
110
+ return _this._handleContainerResize();
111
+ });
112
+ this._textEntry.addEventListener('keydown', function (event) {
113
+ // Check if Shift + Enter is pressed
114
+ if (event.shiftKey && event.keyCode === 13) {
115
+ // Prevent default behavior (adding new line)
116
+ event.preventDefault();
117
+ _this._onSend(_this, _this._textEntry.value.trim());
118
+ }
119
+ });
120
+ }
121
+ }, {
122
+ key: "titleAreaToggle",
123
+ value: function titleAreaToggle() {
124
+ this._titleArea.style.display === 'none' ? this.titleAreaShow() : this.titleAreaHide();
125
+ }
126
+ }, {
127
+ key: "titleAreaShow",
128
+ value: function titleAreaShow() {
129
+ this._titleArea.style.display = '';
130
+ this._adjustMessagesAreaHeight();
131
+ }
132
+ }, {
133
+ key: "titleAreaHide",
134
+ value: function titleAreaHide() {
135
+ this._titleArea.style.display = 'none';
136
+ this._adjustMessagesAreaHeight();
137
+ }
138
+ }, {
139
+ key: "titleAreaSetContents",
140
+ value: function titleAreaSetContents(title) {
141
+ var align = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center';
142
+ this._titleArea.innerHTML = title;
143
+ this._titleArea.style.textAlign = align;
144
+ }
145
+ }, {
146
+ key: "titleAreaGetContents",
147
+ value: function titleAreaGetContents() {
148
+ return this._titleArea.innerHTML;
149
+ }
150
+ }, {
151
+ key: "inputAreaToggle",
152
+ value: function inputAreaToggle() {
153
+ this._inputArea.classList.toggle('hidden');
154
+ this._inputArea.style.display === 'none' ? this.inputAreaShow() : this.inputAreaHide();
155
+ }
156
+ }, {
157
+ key: "inputAreaShow",
158
+ value: function inputAreaShow() {
159
+ this._inputArea.style.display = '';
160
+ this._adjustMessagesAreaHeight();
161
+ }
162
+ }, {
163
+ key: "inputAreaHide",
164
+ value: function inputAreaHide() {
165
+ this._inputArea.style.display = 'none';
166
+ this._adjustMessagesAreaHeight();
167
+ }
168
+ }, {
169
+ key: "_adjustMessagesAreaHeight",
170
+ value: function _adjustMessagesAreaHeight() {
171
+ var hiddenElements = _toConsumableArray(this._chatWidget.children).filter(function (child) {
172
+ return child.classList.contains('hidden');
173
+ });
174
+ var totalHiddenHeight = hiddenElements.reduce(function (sum, child) {
175
+ return sum + child.offsetHeight;
176
+ }, 0);
177
+ var containerHeight = this._chatWidget.offsetHeight;
178
+ this._messagesArea.style.height = "calc(100% - ".concat(containerHeight - totalHiddenHeight, "px)");
179
+ }
180
+ }, {
181
+ key: "_handleContainerResize",
182
+ value: function _handleContainerResize() {
183
+ this._adjustMessagesAreaHeight();
184
+ this._adjustSendButtonWidth();
185
+ //console.log('Container resized');
186
+ }
187
+ }, {
188
+ key: "_adjustSendButtonWidth",
189
+ value: function _adjustSendButtonWidth() {
190
+ var sendButtonText = this._sendButton.textContent.trim();
191
+ var fontSize = parseFloat(getComputedStyle(this._sendButton).fontSize);
192
+ var minWidth = fontSize * sendButtonText.length + 16;
193
+ this._sendButton.style.minWidth = "".concat(minWidth, "px");
194
+ }
195
+ }, {
196
+ key: "messageAddNew",
197
+ value: function messageAddNew(message) {
198
+ var user = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "foo";
199
+ var align = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left';
200
+ var messageDiv = document.createElement('div');
201
+ var msgid = this.msgid;
202
+ var msgidClass = 'quikchat-msgid-' + String(msgid).padStart(10, '0');
203
+ messageDiv.classList.add('quikchat-message', msgidClass);
204
+ this.msgid++;
205
+ messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');
206
+ var userDiv = document.createElement('div');
207
+ userDiv.innerHTML = user;
208
+ userDiv.style = "width: 100%; text-align: ".concat(align, "; font-size: 1em; font-weight:700; color: #444;");
209
+ var contentDiv = document.createElement('div');
210
+ contentDiv.style = "width: 100%; text-align: ".concat(align, ";");
211
+ contentDiv.innerHTML = message;
212
+ messageDiv.appendChild(userDiv);
213
+ messageDiv.appendChild(contentDiv);
214
+ this._messagesArea.appendChild(messageDiv);
215
+ this._messagesArea.lastChild.scrollIntoView();
216
+ this._textEntry.value = '';
217
+ this._adjustMessagesAreaHeight();
218
+ return {
219
+ msgid: msgid
220
+ };
221
+ }
222
+ }, {
223
+ key: "messageRemove",
224
+ value: function messageRemove(n) {
225
+ // use css selector to remove the message
226
+ var sucess = false;
227
+ try {
228
+ this._messagesArea.removeChild(this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))));
229
+ sucess = true;
230
+ } catch (error) {
231
+ console.log("{String(n)} : Message ID not found");
232
+ }
233
+ return sucess;
234
+ }
235
+ /* returns the message html object from the DOM
236
+ */
237
+ }, {
238
+ key: "messageGetDOMObject",
239
+ value: function messageGetDOMObject(n) {
240
+ var msg = null;
241
+ // now use css selector to get the message
242
+ try {
243
+ msg = this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0')));
244
+ } catch (error) {
245
+ console.log("{String(n)} : Message ID not found");
246
+ }
247
+ return msg;
248
+ }
249
+ /* returns the message content only
250
+ */
251
+ }, {
252
+ key: "messageGetContent",
253
+ value: function messageGetContent(n) {
254
+ var content = "";
255
+ // now use css selector to get the message
256
+ try {
257
+ content = this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.textContent;
258
+ } catch (error) {
259
+ console.log("{String(n)} : Message ID not found");
260
+ }
261
+ return content;
262
+ }
263
+
264
+ /* append message to the message content
265
+ */
266
+ }, {
267
+ key: "messageAppendContent",
268
+ value: function messageAppendContent(n, content) {
269
+ var sucess = false;
270
+ try {
271
+ this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML += content;
272
+ sucess = true;
273
+ } catch (error) {
274
+ console.log("{String(n)} : Message ID not found");
275
+ }
276
+ }
277
+ /* replace message content
278
+ */
279
+ }, {
280
+ key: "messageReplaceContent",
281
+ value: function messageReplaceContent(n, content) {
282
+ var sucess = false;
283
+ try {
284
+ this._messagesArea.querySelector(".quikchat-msgid-".concat(String(n).padStart(10, '0'))).lastChild.innerHTML = content;
285
+ sucess = true;
286
+ } catch (error) {
287
+ console.log("{String(n)} : Message ID not found");
288
+ }
289
+ return sucess;
290
+ }
291
+ }, {
292
+ key: "changeTheme",
293
+ value: function changeTheme(newTheme) {
294
+ this._chatWidget.classList.remove(this._theme);
295
+ this._chatWidget.classList.add(newTheme);
296
+ this._theme = newTheme;
297
+ }
298
+ }]);
299
+ }();
300
+
301
+ return quikchat;
302
+
303
+ }));
304
+ //# sourceMappingURL=quikchat.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quikchat.umd.js","sources":["../src/quikchat.js"],"sourcesContent":["// quikchat.js\n\nclass quikchat {\n constructor(parentElement, meta = { theme: 'quikchat-theme-light', onSend: () => { } }) {\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 }\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, user = \"foo\", 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\n const userDiv = document.createElement('div');\n userDiv.innerHTML = user;\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 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 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\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","parentElement","meta","arguments","length","undefined","theme","onSend","_classCallCheck","_parentElement","_theme","_onSend","_createWidget","titleArea","titleAreaSetContents","title","align","show","titleAreaShow","titleAreaHide","_attachEventListeners","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","querySelector","_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","user","messageDiv","document","createElement","msgidClass","String","padStart","add","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","messageRemove","n","sucess","removeChild","error","console","log","messageGetDOMObject","msg","messageGetContent","content","messageAppendContent","messageReplaceContent","changeTheme","newTheme","remove"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).quikchat=e()}(this,(function(){"use strict";function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n<e;n++)i[n]=t[n];return i}function e(t,e,n){return e&&function(t,e){for(var n=0;n<e.length;n++){var a=e[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,i(a.key),a)}}(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function n(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,n){if(e){if("string"==typeof e)return t(e,n);var i={}.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):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 i(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"==typeof e?e:e+""}var a=function(){return e((function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{theme:"quikchat-theme-light",onSend:function(){}};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._parentElement=e,this._theme=n.theme,this._onSend=n.onSend?n.onSend:function(){},this._createWidget(),n.titleArea&&(this.titleAreaSetContents(n.titleArea.title,n.titleArea.align),n.titleArea.show?this.titleAreaShow():this.titleAreaHide()),this._attachEventListeners()}),[{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=n(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]:"foo",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"left",i=document.createElement("div"),a=this.msgid,s="quikchat-msgid-"+String(a).padStart(10,"0");i.classList.add("quikchat-message",s),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,r.style="width: 100%; text-align: ".concat(n,"; font-size: 1em; font-weight:700; color: #444;");var o=document.createElement("div");return o.style="width: 100%; text-align: ".concat(n,";"),o.innerHTML=t,i.appendChild(r),i.appendChild(o),this._messagesArea.appendChild(i),this._messagesArea.lastChild.scrollIntoView(),this._textEntry.value="",this._adjustMessagesAreaHeight(),{msgid:a}}},{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}},{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,!0}catch(t){console.log("{String(n)} : Message ID not found")}}},{key:"messageReplaceContent",value:function(t,e){var n=!1;try{this._messagesArea.querySelector(".quikchat-msgid-".concat(String(t).padStart(10,"0"))).lastChild.innerHTML=e,n=!0}catch(t){console.log("{String(n)} : Message ID not found")}return n}},{key:"changeTheme",value:function(t){this._chatWidget.classList.remove(this._theme),this._chatWidget.classList.add(t),this._theme=t}}])}();return a}));
2
+ //# sourceMappingURL=quikchat.umd.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quikchat.umd.min.js","sources":["../src/quikchat.js"],"sourcesContent":["// quikchat.js\n\nclass quikchat {\n constructor(parentElement, meta = { theme: 'quikchat-theme-light', onSend: () => { } }) {\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 }\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, user = \"foo\", 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\n const userDiv = document.createElement('div');\n userDiv.innerHTML = user;\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 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 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\n changeTheme(newTheme) {\n this._chatWidget.classList.remove(this._theme);\n this._chatWidget.classList.add(newTheme);\n this._theme = newTheme;\n }\n}\n\nexport default quikchat;\n"],"names":["quikchat","_createClass","parentElement","meta","arguments","length","undefined","theme","onSend","_classCallCheck","this","_parentElement","_theme","_onSend","_createWidget","titleArea","titleAreaSetContents","title","align","show","titleAreaShow","titleAreaHide","_attachEventListeners","key","value","widgetHTML","concat","innerHTML","_chatWidget","querySelector","_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","user","messageDiv","document","createElement","msgidClass","String","padStart","add","userDiv","contentDiv","appendChild","lastChild","scrollIntoView","n","sucess","removeChild","error","console","log","msg","content","newTheme","remove"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "quikchat",
3
+ "version": "1.0.0",
4
+ "description": "quikchat is a simple vanilla (no dependancies) JavaScript chat control for browsers ",
5
+ "main": "dist/quikchat.umd.min.js",
6
+ "module": "dist/quikchat.min.js",
7
+ "unpkg": "dist/quikchat.umd.min.js",
8
+ "browser": "dist/quikchat.umd.min.js",
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "author": "deftio",
13
+ "type": "module",
14
+ "directories": {
15
+ "example": "examples"
16
+ },
17
+ "scripts": {
18
+ "test": "echo \"Error: no test specified\" && exit 1",
19
+ "build": "rollup -c"
20
+ },
21
+ "keywords": [],
22
+ "license": "BSD-2-Clause",
23
+ "devDependencies": {
24
+ "@rollup/plugin-babel": "^6.0.4",
25
+ "@rollup/plugin-commonjs": "^26.0.1",
26
+ "@rollup/plugin-node-resolve": "^15.2.3",
27
+ "@rollup/plugin-terser": "^0.4.4",
28
+ "cssnano": "^7.0.4",
29
+ "rollup": "^4.18.1",
30
+ "rollup-plugin-css-only": "^4.5.2",
31
+ "rollup-plugin-postcss": "^4.0.2"
32
+ }
33
+ }