quikchat 1.2.4 → 1.2.6
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 +2 -2
- package/dist/build-manifest.json +73 -80
- package/dist/quikchat-md-full.cjs.js +536 -255
- package/dist/quikchat-md-full.cjs.js.map +1 -1
- package/dist/quikchat-md-full.cjs.min.js +3 -3
- package/dist/quikchat-md-full.cjs.min.js.map +1 -1
- package/dist/quikchat-md-full.esm.js +536 -255
- package/dist/quikchat-md-full.esm.js.map +1 -1
- package/dist/quikchat-md-full.esm.min.js +3 -3
- package/dist/quikchat-md-full.esm.min.js.map +1 -1
- package/dist/quikchat-md-full.umd.js +536 -255
- package/dist/quikchat-md-full.umd.js.map +1 -1
- package/dist/quikchat-md-full.umd.min.js +3 -3
- package/dist/quikchat-md-full.umd.min.js.map +1 -1
- package/dist/quikchat-md.cjs.js +520 -245
- package/dist/quikchat-md.cjs.js.map +1 -1
- package/dist/quikchat-md.cjs.min.js +3 -3
- package/dist/quikchat-md.cjs.min.js.map +1 -1
- package/dist/quikchat-md.esm.js +520 -245
- package/dist/quikchat-md.esm.js.map +1 -1
- package/dist/quikchat-md.esm.min.js +3 -3
- package/dist/quikchat-md.esm.min.js.map +1 -1
- package/dist/quikchat-md.umd.js +520 -245
- package/dist/quikchat-md.umd.js.map +1 -1
- package/dist/quikchat-md.umd.min.js +3 -3
- package/dist/quikchat-md.umd.min.js.map +1 -1
- package/dist/quikchat.cjs.js +2 -2
- 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 +351 -120
- package/dist/quikchat.esm.js +2 -2
- 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.min.css +1 -1
- package/dist/quikchat.umd.js +2 -2
- 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 +6 -5
package/dist/quikchat.min.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* QuikChat minified CSS */
|
|
2
|
-
.quikchat-base,.quikchat-base *,.quikchat-base ::after,.quikchat-base ::before{box-sizing:border-box}.quikchat-base{display:flex;flex-direction:column;height:100%;width:100%;min-width:min(200px,100%);min-height:min(200px,100%);overflow:hidden;font-size:14px;line-height:1.4}.quikchat-title-area{flex-shrink:0;padding:8px;margin-left:8px;margin-right:8px;font-weight:600;font-size:1.3em}.quikchat-messages-area{flex:1;min-height:0;padding:8px;overflow-y:auto;position:relative}.quikchat-message{padding:4px;white-space:pre-wrap;word-wrap:break-word}.quikchat-user-label{font-weight:700;font-size:1em}.quikchat-input-area{flex-shrink:0;display:flex;align-items:flex-end;padding:8px;min-height:48px}.quikchat-input-textbox{flex-grow:1;min-height:36px;min-width:0;resize:none;padding:6px 8px;height:auto;overflow-y:hidden;font-family:inherit;font-size:inherit;--quikchat-input-max-height:120px}.quikchat-input-send-btn{margin-left:8px;padding:8px;min-height:36px;min-width:5rem;cursor:pointer;white-space:nowrap;font-family:inherit;font-size:inherit;align-self:flex-end}.quikchat-rtl .quikchat-input-area{flex-direction:row-reverse}.quikchat-rtl .quikchat-input-send-btn{margin-left:0;margin-right:8px}.quikchat-input-send-btn:disabled,.quikchat-input-textbox:disabled{opacity:.5;cursor:not-allowed}.quikchat-typing .quikchat-message-content{min-height:1.4em}.quikchat-typing-dots span{display:inline-block;font-size:1.4em;line-height:1;animation:quikchat-dot-pulse 1.4s infinite}.quikchat-typing-dots span:nth-child(2){animation-delay:.2s}.quikchat-typing-dots span:nth-child(3){animation-delay:.4s}@keyframes quikchat-dot-pulse{0%,100%,80%{opacity:.2}40%{opacity:1}}.quikchat-messages-wrapper{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.quikchat-timestamp{display:none;font-size:.75em;opacity:.6;margin-top:2px}.quikchat-show-timestamps .quikchat-timestamp{display:block}.quikchat-scroll-bottom{display:none;position:absolute;bottom:8px;left:50%;transform:translateX(-50%);width:36px;height:36px;border-radius:50%;border:1px solid currentColor;background:inherit;color:inherit;cursor:pointer;opacity:.7;z-index:1;font-size:16px;line-height:1;padding:0}.quikchat-scroll-bottom::after{content:"\2193"}.quikchat-scroll-bottom:hover{opacity:1}.quikchat-scroll-bottom-visible{display:block}.quikchat-input-send-btn:focus-visible,.quikchat-input-textbox:focus{outline:2px solid currentColor;outline-offset:-2px}.quikchat-theme-debug{border:1px solid #000;border-radius:10px;background-color:#ba55d3}.quikchat-theme-debug .quikchat-title-area{background-color:#add8e6;color:#333}.quikchat-theme-debug .quikchat-messages-area{border-radius:1em;background-color:#ffa07a}.quikchat-theme-debug .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#20b2aa;color:#eee;border-radius:4px}.quikchat-theme-debug .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#ffb6c1;color:#444;border-radius:4px}.quikchat-theme-debug .quikchat-input-area{background-color:#90ee90;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-debug .quikchat-input-textbox{background-color:#eee;color:#333;border:1px solid #ccc;border-radius:4px}.quikchat-theme-debug .quikchat-input-send-btn{background-color:#4caf50;color:#fff;border:none;border-radius:4px}.quikchat-theme-debug .quikchat-input-send-btn:hover{background-color:#43a047}.quikchat-theme-dark{border:1px solid #555;border-radius:10px;background-color:#212121;box-shadow:0 2px 4px rgba(0,0,0,.5);color:#eceff1}.quikchat-theme-dark .quikchat-title-area{background-color:#212121;color:#eceff1;border-bottom:1px solid #37474f}.quikchat-theme-dark .quikchat-messages-area{background-color:#212121;color:#eceff1;border-radius:1em}.quikchat-theme-dark .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#404040e5;color:#eceff1;border-radius:4px}.quikchat-theme-dark .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#5a5a5a;color:#fbfbfb;border-radius:4px}.quikchat-theme-dark .quikchat-input-area{background-color:#263238;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-dark .quikchat-input-textbox{background-color:#424242;color:#eceff1;border:1px solid #555;border-radius:4px}.quikchat-theme-dark .quikchat-input-send-btn{background-color:#1b5e20;color:#fff;border:none;border-radius:4px}.quikchat-theme-dark .quikchat-input-send-btn:hover{background-color:#2e7d32}.quikchat-theme-light{border:1px solid #ccc;border-radius:10px;background-color:#f9f9f9}.quikchat-theme-light .quikchat-title-area{color:#333}.quikchat-theme-light .quikchat-messages-area{background-color:#ffffffe2;color:#333;border-radius:1em}.quikchat-theme-light .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#fff;color:#005662;border-radius:4px}.quikchat-theme-light .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#e8e8e8;color:#353535;border-radius:4px}.quikchat-theme-light .quikchat-input-area{background-color:#f9f9f9;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-light .quikchat-input-textbox{background-color:#fff;color:#333;border:1px solid #ccc;border-radius:4px}.quikchat-theme-light .quikchat-input-send-btn{background-color:#4caf50;color:#fff;border:none;border-radius:4px}.quikchat-theme-light .quikchat-input-send-btn:hover{background-color:#43a047}.quikchat-theme-blue{border:1px solid #b0c4d8;border-radius:10px;background-color:#eef3f8}.quikchat-theme-blue .quikchat-title-area{background-color:#3a6ea5;color:#fff;border-radius:9px 9px 0 0}.quikchat-theme-blue .quikchat-messages-area{background-color:#f5f8fb;color:#1a2a3a}.quikchat-theme-blue .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#f5f8fb;color:#1a2a3a;border-radius:4px}.quikchat-theme-blue .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#dde8f0;color:#1a2a3a;border-radius:4px}.quikchat-theme-blue .quikchat-input-area{background-color:#eef3f8;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-blue .quikchat-input-textbox{background-color:#fff;color:#1a2a3a;border:1px solid #b0c4d8;border-radius:4px}.quikchat-theme-blue .quikchat-input-send-btn{background-color:#3a6ea5;color:#fff;border:none;border-radius:4px}.quikchat-theme-blue .quikchat-input-send-btn:hover{background-color:#2d5a8a}.quikchat-theme-warm{border:1px solid #d4b896;border-radius:10px;background-color:#faf6f0}.quikchat-theme-warm .quikchat-title-area{background-color:#faf6f0;color:#5a3e28;border-bottom:1px solid #e0cdb8}.quikchat-theme-warm .quikchat-messages-area{background-color:#fdf9f4;color:#3a2a1a}.quikchat-theme-warm .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#fdf9f4;color:#3a2a1a;border-radius:4px}.quikchat-theme-warm .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#f0e6d8;color:#3a2a1a;border-radius:4px}.quikchat-theme-warm .quikchat-input-area{background-color:#faf6f0;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-warm .quikchat-input-textbox{background-color:#fff;color:#3a2a1a;border:1px solid #d4b896;border-radius:4px}.quikchat-theme-warm .quikchat-input-send-btn{background-color:#b5784a;color:#fff;border:none;border-radius:4px}.quikchat-theme-warm .quikchat-input-send-btn:hover{background-color:#9a6438}.quikchat-theme-midnight{border:1px solid #2a3a5c;border-radius:10px;background-color:#0f1626;color:#c8d0e0}.quikchat-theme-midnight .quikchat-title-area{background-color:#0f1626;color:#8eaadc;border-bottom:1px solid #1e2d4a}.quikchat-theme-midnight .quikchat-messages-area{background-color:#0a1020;color:#c8d0e0}.quikchat-theme-midnight .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#0f1830;color:#c8d0e0;border-radius:4px}.quikchat-theme-midnight .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#162040;color:#d0d8e8;border-radius:4px}.quikchat-theme-midnight .quikchat-input-area{background-color:#0f1626;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-midnight .quikchat-input-textbox{background-color:#1a2540;color:#c8d0e0;border:1px solid #2a3a5c;border-radius:4px}.quikchat-theme-midnight .quikchat-input-send-btn{background-color:#4a6fa5;color:#fff;border:none;border-radius:4px}.quikchat-theme-midnight .quikchat-input-send-btn:hover{background-color:#5a80b8}.quikchat-theme-ocean{border:1px solid #1a6b7a;border-radius:10px;background-color:#0d2b36;color:#d4edee}.quikchat-theme-ocean .quikchat-title-area{background-color:#0d2b36;color:#5ec4d4;border-bottom:1px solid #1a4a5a}.quikchat-theme-ocean .quikchat-messages-area{background-color:#0a2530;color:#d4edee}.quikchat-theme-ocean .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#0d3040;color:#d4edee;border-radius:4px}.quikchat-theme-ocean .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#11384a;color:#d4edee;border-radius:4px}.quikchat-theme-ocean .quikchat-input-area{background-color:#0d2b36;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-ocean .quikchat-input-textbox{background-color:#163a48;color:#d4edee;border:1px solid #1a5a6a;border-radius:4px}.quikchat-theme-ocean .quikchat-input-send-btn{background-color:#1a8a6a;color:#fff;border:none;border-radius:4px}.quikchat-theme-ocean .quikchat-input-send-btn:hover{background-color:#1fa07a}.quikchat-theme-modern{border:1px solid #e5e5e5;border-radius:12px;background-color:#fff}.quikchat-theme-modern .quikchat-title-area{background-color:#fff;color:#1a1a1a;border-bottom:1px solid #f0f0f0}.quikchat-theme-modern .quikchat-messages-area{background-color:#fff;color:#1a1a1a}.quikchat-theme-modern .quikchat-message{display:flex;flex-direction:column}.quikchat-theme-modern .quikchat-align-right{align-items:flex-end}.quikchat-theme-modern .quikchat-align-left{align-items:flex-start}.quikchat-theme-modern .quikchat-align-center{align-items:center}.quikchat-theme-modern .quikchat-message-content{max-width:80%;border-radius:16px}.quikchat-theme-modern .quikchat-align-right .quikchat-message-content{background-color:#0b93f6;color:#fff;border-bottom-right-radius:4px}.quikchat-theme-modern .quikchat-align-left .quikchat-message-content{background-color:#f0f0f0;color:#1a1a1a;border-bottom-left-radius:4px}.quikchat-theme-modern .quikchat-align-center .quikchat-message-content{background-color:transparent;color:#888}.quikchat-theme-modern .quikchat-user-label{color:#888}.quikchat-theme-modern .quikchat-input-area{background-color:#fff;border-top:1px solid #f0f0f0;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-modern .quikchat-input-textbox{background-color:#f5f5f5;color:#1a1a1a;border:1px solid #e0e0e0;border-radius:20px}.quikchat-theme-modern .quikchat-input-send-btn{background-color:#0b93f6;color:#fff;border:none;border-radius:20px}.quikchat-theme-modern .quikchat-input-send-btn:hover{background-color:#0a84de}.quikchat-theme-blue .quikdown-pre,.quikchat-theme-light .quikdown-pre,.quikchat-theme-warm .quikdown-pre{background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-blue .quikdown-code,.quikchat-theme-light .quikdown-code,.quikchat-theme-warm .quikdown-code{background:#f0f0f0;padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em}.quikchat-theme-blue .quikdown-blockquote,.quikchat-theme-light .quikdown-blockquote,.quikchat-theme-warm .quikdown-blockquote{border-left:4px solid #ddd;margin-left:0;padding-left:1em;color:#555}.quikchat-theme-blue .quikdown-a,.quikchat-theme-light .quikdown-a,.quikchat-theme-warm .quikdown-a{color:#06c}.quikchat-theme-blue .quikdown-th,.quikchat-theme-light .quikdown-th,.quikchat-theme-warm .quikdown-th{border:1px solid #ddd;padding:6px 8px;background-color:#f2f2f2;font-weight:700;text-align:left}.quikchat-theme-blue .quikdown-td,.quikchat-theme-light .quikdown-td,.quikchat-theme-warm .quikdown-td{border:1px solid #ddd;padding:6px 8px;text-align:left}.quikchat-theme-blue .quikdown-hr,.quikchat-theme-light .quikdown-hr,.quikchat-theme-warm .quikdown-hr{border:none;border-top:1px solid #ddd;margin:.5em 0}.quikchat-theme-dark .quikdown-pre,.quikchat-theme-midnight .quikdown-pre,.quikchat-theme-ocean .quikdown-pre{background:#2a2a2a;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-dark .quikdown-code,.quikchat-theme-midnight .quikdown-code,.quikchat-theme-ocean .quikdown-code{background:#2a2a2a;padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em;color:#e0e0e0}.quikchat-theme-dark .quikdown-blockquote,.quikchat-theme-midnight .quikdown-blockquote,.quikchat-theme-ocean .quikdown-blockquote{border-left:4px solid #3a3a3a;margin-left:0;padding-left:1em;color:#bbb}.quikchat-theme-dark .quikdown-a,.quikchat-theme-midnight .quikdown-a,.quikchat-theme-ocean .quikdown-a{color:#6db3f2}.quikchat-theme-dark .quikdown-th,.quikchat-theme-midnight .quikdown-th,.quikchat-theme-ocean .quikdown-th{border:1px solid #3a3a3a;padding:6px 8px;background-color:#2a2a2a;font-weight:700;text-align:left;color:#e0e0e0}.quikchat-theme-dark .quikdown-td,.quikchat-theme-midnight .quikdown-td,.quikchat-theme-ocean .quikdown-td{border:1px solid #3a3a3a;padding:6px 8px;text-align:left;color:#e0e0e0}.quikchat-theme-dark .quikdown-hr,.quikchat-theme-midnight .quikdown-hr,.quikchat-theme-ocean .quikdown-hr{border:none;border-top:1px solid #3a3a3a;margin:.5em 0}.quikchat-theme-dark .quikdown-h1,.quikchat-theme-dark .quikdown-h2,.quikchat-theme-dark .quikdown-h3,.quikchat-theme-dark .quikdown-h4,.quikchat-theme-dark .quikdown-li,.quikchat-theme-midnight .quikdown-h1,.quikchat-theme-midnight .quikdown-h2,.quikchat-theme-midnight .quikdown-h3,.quikchat-theme-midnight .quikdown-h4,.quikchat-theme-midnight .quikdown-li,.quikchat-theme-ocean .quikdown-h1,.quikchat-theme-ocean .quikdown-h2,.quikchat-theme-ocean .quikdown-h3,.quikchat-theme-ocean .quikdown-h4,.quikchat-theme-ocean .quikdown-li{color:#e0e0e0}.quikchat-theme-modern .quikdown-pre{background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-modern .quikdown-code{background:rgba(0,0,0,.06);padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em}.quikchat-theme-modern .quikchat-align-right .quikdown-pre{background:rgba(255,255,255,.15)}.quikchat-theme-modern .quikchat-align-right .quikdown-code{background:rgba(255,255,255,.2);color:#fff}.quikchat-theme-modern .quikchat-align-right .quikdown-a{color:#cce5ff}.quikchat-theme-modern .quikchat-align-left .quikdown-a{color:#06c}.quikchat-theme-modern .quikdown-blockquote{border-left:4px solid #ddd;margin-left:0;padding-left:1em;color:#666}.quikchat-theme-debug .quikdown-pre{background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-debug .quikdown-code{background:#e8e8e8;padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em}
|
|
2
|
+
.quikchat-base,.quikchat-base *,.quikchat-base ::after,.quikchat-base ::before{box-sizing:border-box}.quikchat-base{display:flex;flex-direction:column;height:100%;width:100%;min-width:min(200px,100%);min-height:min(200px,100%);overflow:hidden;font-size:14px;line-height:1.4}.quikchat-title-area{flex-shrink:0;padding:8px;margin-left:8px;margin-right:8px;font-weight:600;font-size:1.3em}.quikchat-messages-area{flex:1;min-height:0;padding:8px;overflow-y:auto;position:relative}.quikchat-message{padding:4px;white-space:pre-wrap;word-wrap:break-word}.quikchat-user-label{font-weight:700;font-size:1em}.quikchat-input-area{flex-shrink:0;display:flex;align-items:flex-end;padding:8px;min-height:48px}.quikchat-input-textbox{flex-grow:1;min-height:36px;min-width:0;resize:none;padding:6px 8px;height:auto;overflow-y:hidden;font-family:inherit;font-size:inherit}.quikchat-input-send-btn{margin-left:8px;padding:8px;min-height:36px;min-width:5rem;cursor:pointer;white-space:nowrap;font-family:inherit;font-size:inherit;align-self:flex-end}.quikchat-rtl .quikchat-input-area{flex-direction:row-reverse}.quikchat-rtl .quikchat-input-send-btn{margin-left:0;margin-right:8px}.quikchat-input-send-btn:disabled,.quikchat-input-textbox:disabled{opacity:.5;cursor:not-allowed}.quikchat-typing .quikchat-message-content{min-height:1.4em}.quikchat-typing-dots span{display:inline-block;font-size:1.4em;line-height:1;animation:quikchat-dot-pulse 1.4s infinite}.quikchat-typing-dots span:nth-child(2){animation-delay:.2s}.quikchat-typing-dots span:nth-child(3){animation-delay:.4s}@keyframes quikchat-dot-pulse{0%,100%,80%{opacity:.2}40%{opacity:1}}.quikchat-messages-wrapper{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.quikchat-timestamp{display:none;font-size:.75em;opacity:.6;margin-top:2px}.quikchat-show-timestamps .quikchat-timestamp{display:block}.quikchat-scroll-bottom{display:none;position:absolute;bottom:8px;left:50%;transform:translateX(-50%);width:36px;height:36px;border-radius:50%;border:1px solid currentColor;background:inherit;color:inherit;cursor:pointer;opacity:.7;z-index:1;font-size:16px;line-height:1;padding:0}.quikchat-scroll-bottom::after{content:"\2193"}.quikchat-scroll-bottom:hover{opacity:1}.quikchat-scroll-bottom-visible{display:block}.quikchat-input-send-btn:focus-visible,.quikchat-input-textbox:focus{outline:2px solid currentColor;outline-offset:-2px}.quikchat-theme-debug{border:1px solid #000;border-radius:10px;background-color:#ba55d3}.quikchat-theme-debug .quikchat-title-area{background-color:#add8e6;color:#333}.quikchat-theme-debug .quikchat-messages-area{border-radius:1em;background-color:#ffa07a}.quikchat-theme-debug .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#20b2aa;color:#eee;border-radius:4px}.quikchat-theme-debug .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#ffb6c1;color:#444;border-radius:4px}.quikchat-theme-debug .quikchat-input-area{background-color:#90ee90;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.quikchat-theme-debug .quikchat-input-textbox{background-color:#eee;color:#333;border:1px solid #ccc;border-radius:4px}.quikchat-theme-debug .quikchat-input-send-btn{background-color:#4caf50;color:#fff;border:none;border-radius:4px}.quikchat-theme-debug .quikchat-input-send-btn:hover{background-color:#43a047}.quikchat-theme-dark{border:1px solid #3a3a3a;border-radius:12px;background-color:#1a1a1a;box-shadow:0 2px 12px rgba(0,0,0,.4);color:#e8e8e8}.quikchat-theme-dark .quikchat-title-area{background-color:#1a1a1a;color:#f0f0f0;border-bottom:1px solid #2a2a2a}.quikchat-theme-dark .quikchat-messages-area{background-color:#1a1a1a;color:#e8e8e8}.quikchat-theme-dark .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#1e1e1e;color:#e8e8e8;border-radius:6px}.quikchat-theme-dark .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#262626;color:#f0f0f0;border-radius:6px}.quikchat-theme-dark .quikchat-input-area{background-color:#1e1e1e;border-top:1px solid #2a2a2a;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-dark .quikchat-input-textbox{background-color:#2a2a2a;color:#e8e8e8;border:1px solid #3a3a3a;border-radius:8px}.quikchat-theme-dark .quikchat-input-send-btn{background-color:#22c55e;color:#0a0a0a;border:none;border-radius:8px;font-weight:600}.quikchat-theme-dark .quikchat-input-send-btn:hover{background-color:#16a34a}.quikchat-theme-light{border:1px solid #e0e0e0;border-radius:12px;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,.06)}.quikchat-theme-light .quikchat-title-area{color:#1a1a1a;border-bottom:1px solid #f0f0f0}.quikchat-theme-light .quikchat-messages-area{background-color:#fff;color:#2d2d2d}.quikchat-theme-light .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#fff;color:#2d2d2d;border-radius:6px}.quikchat-theme-light .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#f7f7f8;color:#2d2d2d;border-radius:6px}.quikchat-theme-light .quikchat-input-area{background-color:#fafafa;border-top:1px solid #f0f0f0;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-light .quikchat-input-textbox{background-color:#fff;color:#2d2d2d;border:1px solid #d8d8d8;border-radius:8px}.quikchat-theme-light .quikchat-input-send-btn{background-color:#2563eb;color:#fff;border:none;border-radius:8px}.quikchat-theme-light .quikchat-input-send-btn:hover{background-color:#1d4ed8}.quikchat-theme-blue{border:1px solid #c0d4e8;border-radius:12px;background-color:#f0f5fa;box-shadow:0 2px 8px rgba(58,110,165,.08)}.quikchat-theme-blue .quikchat-title-area{background:linear-gradient(135deg,#3a6ea5,#2d5a8a);color:#fff;border-radius:11px 11px 0 0}.quikchat-theme-blue .quikchat-messages-area{background-color:#f8fafc;color:#1a2a3a}.quikchat-theme-blue .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#f8fafc;color:#1a2a3a;border-radius:6px}.quikchat-theme-blue .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#e8f0f8;color:#1a2a3a;border-radius:6px}.quikchat-theme-blue .quikchat-input-area{background-color:#eef3f8;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-blue .quikchat-input-textbox{background-color:#fff;color:#1a2a3a;border:1px solid #b8ccdf;border-radius:8px}.quikchat-theme-blue .quikchat-input-send-btn{background:linear-gradient(135deg,#3a6ea5,#2d5a8a);color:#fff;border:none;border-radius:8px}.quikchat-theme-blue .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#2d5a8a,#1e4a75)}.quikchat-theme-warm{border:1px solid #dcc8aa;border-radius:12px;background-color:#fdf8f2;box-shadow:0 1px 6px rgba(180,140,80,.08)}.quikchat-theme-warm .quikchat-title-area{background-color:#fdf8f2;color:#5a3e28;border-bottom:1px solid #eedcc8}.quikchat-theme-warm .quikchat-messages-area{background-color:#fefbf6;color:#3a2a1a}.quikchat-theme-warm .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#fefbf6;color:#3a2a1a;border-radius:6px}.quikchat-theme-warm .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#f5ebe0;color:#3a2a1a;border-radius:6px}.quikchat-theme-warm .quikchat-input-area{background-color:#faf5ee;border-top:1px solid #eedcc8;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-warm .quikchat-input-textbox{background-color:#fff;color:#3a2a1a;border:1px solid #dcc8aa;border-radius:8px}.quikchat-theme-warm .quikchat-input-send-btn{background:linear-gradient(135deg,#c17f4a,#a5683a);color:#fff;border:none;border-radius:8px}.quikchat-theme-warm .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#a5683a,#8a5530)}.quikchat-theme-midnight{border:1px solid #2a3a5c;border-radius:12px;background-color:#0f1626;box-shadow:0 4px 20px rgba(0,0,0,.5);color:#c8d0e0}.quikchat-theme-midnight .quikchat-title-area{background:linear-gradient(135deg,#1a2744,#0f1626);color:#8eaadc;border-bottom:1px solid #1e2d4a;border-radius:11px 11px 0 0}.quikchat-theme-midnight .quikchat-messages-area{background-color:#0a1020;color:#c8d0e0}.quikchat-theme-midnight .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#0f1830;color:#c8d0e0;border-radius:6px}.quikchat-theme-midnight .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#162040;color:#d0d8e8;border-radius:6px}.quikchat-theme-midnight .quikchat-input-area{background-color:#0f1626;border-top:1px solid #1e2d4a;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-midnight .quikchat-input-textbox{background-color:#1a2540;color:#c8d0e0;border:1px solid #2a3a5c;border-radius:8px}.quikchat-theme-midnight .quikchat-input-send-btn{background:linear-gradient(135deg,#4a6fa5,#3a5a8a);color:#fff;border:none;border-radius:8px;font-weight:600}.quikchat-theme-midnight .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#5a80b8,#4a6fa5)}.quikchat-theme-ocean{border:1px solid #1a6b7a;border-radius:12px;background-color:#0d2b36;box-shadow:0 4px 20px rgba(0,40,60,.4);color:#d4edee}.quikchat-theme-ocean .quikchat-title-area{background:linear-gradient(135deg,#0d3a4a,#0d2b36);color:#5ec4d4;border-bottom:1px solid #1a4a5a;border-radius:11px 11px 0 0}.quikchat-theme-ocean .quikchat-messages-area{background-color:#0a2530;color:#d4edee}.quikchat-theme-ocean .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#0d3040;color:#d4edee;border-radius:6px}.quikchat-theme-ocean .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#11384a;color:#d4edee;border-radius:6px}.quikchat-theme-ocean .quikchat-input-area{background-color:#0d2b36;border-top:1px solid #1a4a5a;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-ocean .quikchat-input-textbox{background-color:#163a48;color:#d4edee;border:1px solid #1a5a6a;border-radius:8px}.quikchat-theme-ocean .quikchat-input-send-btn{background:linear-gradient(135deg,#1a8a6a,#15705a);color:#fff;border:none;border-radius:8px;font-weight:600}.quikchat-theme-ocean .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#1fa07a,#1a8a6a)}.quikchat-theme-modern{border:1px solid #e5e5e5;border-radius:12px;background-color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.06)}.quikchat-theme-modern .quikchat-title-area{background-color:#fafafa;color:#1a1a1a;border-bottom:1px solid #f0f0f0;border-radius:11px 11px 0 0}.quikchat-theme-modern .quikchat-messages-area{background-color:#fff;color:#1a1a1a}.quikchat-theme-modern .quikchat-message{display:flex;flex-direction:column}.quikchat-theme-modern .quikchat-align-right{align-items:flex-end}.quikchat-theme-modern .quikchat-align-left{align-items:flex-start}.quikchat-theme-modern .quikchat-align-center{align-items:center}.quikchat-theme-modern .quikchat-message-content{max-width:80%;border-radius:18px;padding:2px 4px}.quikchat-theme-modern .quikchat-align-right .quikchat-message-content{background:linear-gradient(135deg,#0b93f6,#0078d4);color:#fff;border-bottom-right-radius:4px}.quikchat-theme-modern .quikchat-align-left .quikchat-message-content{background-color:#f0f0f0;color:#1a1a1a;border-bottom-left-radius:4px}.quikchat-theme-modern .quikchat-align-center .quikchat-message-content{background-color:transparent;color:#888}.quikchat-theme-modern .quikchat-user-label{color:#888;font-size:.85em}.quikchat-theme-modern .quikchat-input-area{background-color:#fafafa;border-top:1px solid #f0f0f0;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-modern .quikchat-input-textbox{background-color:#f5f5f5;color:#1a1a1a;border:1px solid #e0e0e0;border-radius:20px}.quikchat-theme-modern .quikchat-input-send-btn{background:linear-gradient(135deg,#0b93f6,#0078d4);color:#fff;border:none;border-radius:20px;font-weight:600}.quikchat-theme-modern .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#0a84de,#006abc)}.quikchat-theme-glass{border:1px solid rgba(255,255,255,.3);border-radius:16px;background:rgba(255,255,255,.15);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 8px 32px rgba(0,0,0,.1);color:#1a1a2e}.quikchat-theme-glass .quikchat-title-area{background:rgba(255,255,255,.2);color:#1a1a2e;border-bottom:1px solid rgba(255,255,255,.2);border-radius:15px 15px 0 0}.quikchat-theme-glass .quikchat-messages-area{background:rgba(255,255,255,.08);color:#1a1a2e}.quikchat-theme-glass .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background:rgba(255,255,255,.12);border-radius:8px}.quikchat-theme-glass .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background:rgba(255,255,255,.22);border-radius:8px}.quikchat-theme-glass .quikchat-input-area{background:rgba(255,255,255,.15);border-top:1px solid rgba(255,255,255,.15);border-bottom-left-radius:16px;border-bottom-right-radius:16px}.quikchat-theme-glass .quikchat-input-textbox{background:rgba(255,255,255,.3);color:#1a1a2e;border:1px solid rgba(255,255,255,.3);border-radius:8px}.quikchat-theme-glass .quikchat-input-textbox::placeholder{color:rgba(26,26,46,.5)}.quikchat-theme-glass .quikchat-input-send-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-weight:600;box-shadow:0 2px 8px rgba(102,126,234,.3)}.quikchat-theme-glass .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#5a6fd6,#6a4196)}.quikchat-theme-gradient{border:1px solid #e0d4f5;border-radius:12px;background-color:#fff;box-shadow:0 4px 20px rgba(100,60,180,.12)}.quikchat-theme-gradient .quikchat-title-area{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:11px 11px 0 0}.quikchat-theme-gradient .quikchat-messages-area{background-color:#fff;color:#2d2d3a}.quikchat-theme-gradient .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#fff;color:#2d2d3a;border-radius:6px}.quikchat-theme-gradient .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#f3effc;color:#2d2d3a;border-radius:6px}.quikchat-theme-gradient .quikchat-input-area{background-color:#faf8ff;border-top:1px solid #ece4f8;border-bottom-left-radius:12px;border-bottom-right-radius:12px}.quikchat-theme-gradient .quikchat-input-textbox{background-color:#fff;color:#2d2d3a;border:1px solid #d4c4ea;border-radius:8px}.quikchat-theme-gradient .quikchat-input-send-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-weight:600;box-shadow:0 2px 8px rgba(102,126,234,.25)}.quikchat-theme-gradient .quikchat-input-send-btn:hover{background:linear-gradient(135deg,#5a6fd6,#6a4196)}.quikchat-theme-minimal{border:1px solid #e0e0e0;border-radius:8px;background-color:#fff}.quikchat-theme-minimal .quikchat-title-area{background-color:#fff;color:#111;border-bottom:1px solid #e8e8e8;font-weight:700}.quikchat-theme-minimal .quikchat-messages-area{background-color:#fff;color:#222}.quikchat-theme-minimal .quikchat-messages-area-alt .quikchat-message:nth-child(odd){background-color:#fff;color:#222;border-radius:4px}.quikchat-theme-minimal .quikchat-messages-area-alt .quikchat-message:nth-child(2n){background-color:#f8f8f8;color:#222;border-radius:4px}.quikchat-theme-minimal .quikchat-input-area{background-color:#fff;border-top:1px solid #e8e8e8;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.quikchat-theme-minimal .quikchat-input-textbox{background-color:#fff;color:#222;border:1px solid #d0d0d0;border-radius:6px}.quikchat-theme-minimal .quikchat-input-send-btn{background-color:#111;color:#fff;border:none;border-radius:6px;font-weight:600}.quikchat-theme-minimal .quikchat-input-send-btn:hover{background-color:#333}.quikchat-theme-blue .quikdown-pre,.quikchat-theme-glass .quikdown-pre,.quikchat-theme-gradient .quikdown-pre,.quikchat-theme-light .quikdown-pre,.quikchat-theme-minimal .quikdown-pre,.quikchat-theme-warm .quikdown-pre{background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-blue .quikdown-code,.quikchat-theme-glass .quikdown-code,.quikchat-theme-gradient .quikdown-code,.quikchat-theme-light .quikdown-code,.quikchat-theme-minimal .quikdown-code,.quikchat-theme-warm .quikdown-code{background:#f0f0f0;padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em}.quikchat-theme-blue .quikdown-blockquote,.quikchat-theme-glass .quikdown-blockquote,.quikchat-theme-gradient .quikdown-blockquote,.quikchat-theme-light .quikdown-blockquote,.quikchat-theme-minimal .quikdown-blockquote,.quikchat-theme-warm .quikdown-blockquote{border-left:4px solid #ddd;margin-left:0;padding-left:1em;color:#555}.quikchat-theme-blue .quikdown-a,.quikchat-theme-glass .quikdown-a,.quikchat-theme-gradient .quikdown-a,.quikchat-theme-light .quikdown-a,.quikchat-theme-minimal .quikdown-a,.quikchat-theme-warm .quikdown-a{color:#06c}.quikchat-theme-blue .quikdown-th,.quikchat-theme-glass .quikdown-th,.quikchat-theme-gradient .quikdown-th,.quikchat-theme-light .quikdown-th,.quikchat-theme-minimal .quikdown-th,.quikchat-theme-warm .quikdown-th{border:1px solid #ddd;padding:6px 8px;background-color:#f2f2f2;font-weight:700;text-align:left}.quikchat-theme-blue .quikdown-td,.quikchat-theme-glass .quikdown-td,.quikchat-theme-gradient .quikdown-td,.quikchat-theme-light .quikdown-td,.quikchat-theme-minimal .quikdown-td,.quikchat-theme-warm .quikdown-td{border:1px solid #ddd;padding:6px 8px;text-align:left}.quikchat-theme-blue .quikdown-hr,.quikchat-theme-glass .quikdown-hr,.quikchat-theme-gradient .quikdown-hr,.quikchat-theme-light .quikdown-hr,.quikchat-theme-minimal .quikdown-hr,.quikchat-theme-warm .quikdown-hr{border:none;border-top:1px solid #ddd;margin:.5em 0}.quikchat-theme-dark .quikdown-pre,.quikchat-theme-midnight .quikdown-pre,.quikchat-theme-ocean .quikdown-pre{background:#2a2a2a;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-dark .quikdown-code,.quikchat-theme-midnight .quikdown-code,.quikchat-theme-ocean .quikdown-code{background:#2a2a2a;padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em;color:#e0e0e0}.quikchat-theme-dark .quikdown-blockquote,.quikchat-theme-midnight .quikdown-blockquote,.quikchat-theme-ocean .quikdown-blockquote{border-left:4px solid #3a3a3a;margin-left:0;padding-left:1em;color:#bbb}.quikchat-theme-dark .quikdown-a,.quikchat-theme-midnight .quikdown-a,.quikchat-theme-ocean .quikdown-a{color:#6db3f2}.quikchat-theme-dark .quikdown-th,.quikchat-theme-midnight .quikdown-th,.quikchat-theme-ocean .quikdown-th{border:1px solid #3a3a3a;padding:6px 8px;background-color:#2a2a2a;font-weight:700;text-align:left;color:#e0e0e0}.quikchat-theme-dark .quikdown-td,.quikchat-theme-midnight .quikdown-td,.quikchat-theme-ocean .quikdown-td{border:1px solid #3a3a3a;padding:6px 8px;text-align:left;color:#e0e0e0}.quikchat-theme-dark .quikdown-hr,.quikchat-theme-midnight .quikdown-hr,.quikchat-theme-ocean .quikdown-hr{border:none;border-top:1px solid #3a3a3a;margin:.5em 0}.quikchat-theme-dark .quikdown-h1,.quikchat-theme-dark .quikdown-h2,.quikchat-theme-dark .quikdown-h3,.quikchat-theme-dark .quikdown-h4,.quikchat-theme-dark .quikdown-li,.quikchat-theme-midnight .quikdown-h1,.quikchat-theme-midnight .quikdown-h2,.quikchat-theme-midnight .quikdown-h3,.quikchat-theme-midnight .quikdown-h4,.quikchat-theme-midnight .quikdown-li,.quikchat-theme-ocean .quikdown-h1,.quikchat-theme-ocean .quikdown-h2,.quikchat-theme-ocean .quikdown-h3,.quikchat-theme-ocean .quikdown-h4,.quikchat-theme-ocean .quikdown-li{color:#e0e0e0}.quikchat-theme-modern .quikdown-pre{background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-modern .quikdown-code{background:rgba(0,0,0,.06);padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em}.quikchat-theme-modern .quikchat-align-right .quikdown-pre{background:rgba(255,255,255,.15)}.quikchat-theme-modern .quikchat-align-right .quikdown-code{background:rgba(255,255,255,.2);color:#fff}.quikchat-theme-modern .quikchat-align-right .quikdown-a{color:#cce5ff}.quikchat-theme-modern .quikchat-align-left .quikdown-a{color:#06c}.quikchat-theme-modern .quikdown-blockquote{border-left:4px solid #ddd;margin-left:0;padding-left:1em;color:#666}.quikchat-theme-debug .quikdown-pre{background:#f4f4f4;padding:10px;border-radius:4px;overflow-x:auto;margin:.5em 0}.quikchat-theme-debug .quikdown-code{background:#e8e8e8;padding:2px 4px;border-radius:3px;font-family:monospace;font-size:.9em}
|
package/dist/quikchat.umd.js
CHANGED
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
value: function _autoGrowTextarea() {
|
|
395
395
|
var el = this._textEntry;
|
|
396
396
|
el.style.height = 'auto';
|
|
397
|
-
var maxHeight =
|
|
397
|
+
var maxHeight = 120;
|
|
398
398
|
el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';
|
|
399
399
|
el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';
|
|
400
400
|
}
|
|
@@ -862,7 +862,7 @@
|
|
|
862
862
|
key: "version",
|
|
863
863
|
value: function version() {
|
|
864
864
|
return {
|
|
865
|
-
"version": "1.2.
|
|
865
|
+
"version": "1.2.6",
|
|
866
866
|
"license": "BSD-2",
|
|
867
867
|
"url": "https://github/deftio/quikchat"
|
|
868
868
|
};
|
package/dist/quikchat.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quikchat.umd.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 showTimestamps: false,\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 this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\n this._messageFormatter = meta.messageFormatter || null;\n this._sanitize = meta.sanitize || false;\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 // timestamps\n if (meta.showTimestamps) {\n this.messagesAreaShowTimestamps(true);\n }\n // direction (ltr/rtl)\n if (meta.direction) {\n this.setDirection(meta.direction);\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory !== false;\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\"></div>\n <div class=\"quikchat-messages-wrapper\"><div class=\"quikchat-messages-area\" role=\"log\" aria-live=\"polite\" aria-label=\"Chat messages\"></div><button class=\"quikchat-scroll-bottom\" aria-label=\"Scroll to bottom\"></button></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\" rows=\"1\" aria-label=\"Type a message\"></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._messagesWrapper = this._chatWidget.querySelector('.quikchat-messages-wrapper');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._scrollBottomBtn = this._messagesWrapper.querySelector('.quikchat-scroll-bottom');\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', () => {\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n });\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n event.preventDefault();\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n }\n });\n\n // Auto-grow textarea\n this._textEntry.addEventListener('input', () => this._autoGrowTextarea());\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight - 1;\n this._updateScrollBottomBtn();\n });\n\n // Scroll-to-bottom button\n this._scrollBottomBtn.addEventListener('click', () => this.scrollToBottom());\n\n // Ctrl+End to scroll to bottom\n this._chatWidget.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.key === 'End') {\n event.preventDefault();\n this.scrollToBottom();\n }\n });\n\n // Use ResizeObserver to detect parent container resize\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => this._handleContainerResize());\n this._resizeObserver.observe(this._parentElement);\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 setCallbackonMessageAppend(callback) {\n this._onMessageAppend = callback;\n }\n setCallbackonMessageReplace(callback) {\n this._onMessageReplace = callback;\n }\n setCallbackonMessageDelete(callback) {\n this._onMessageDelete = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n if (this._titleArea.style.display === 'none') {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\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 if (this._inputArea.style.display === 'none') {\n this.inputAreaShow();\n } else {\n this.inputAreaHide();\n }\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n }\n\n inputAreaSetEnabled(enabled) {\n this._textEntry.disabled = !enabled;\n this._sendButton.disabled = !enabled;\n }\n\n inputAreaSetButtonText(text) {\n this._sendButton.textContent = text;\n }\n\n inputAreaGetButtonText() {\n return this._sendButton.textContent;\n }\n\n setDirection(dir) {\n const d = dir === 'rtl' ? 'rtl' : 'ltr';\n this._chatWidget.setAttribute('dir', d);\n if (d === 'rtl') {\n this._chatWidget.classList.add('quikchat-rtl');\n } else {\n this._chatWidget.classList.remove('quikchat-rtl');\n }\n }\n\n getDirection() {\n return this._chatWidget.getAttribute('dir') || 'ltr';\n }\n\n _handleContainerResize() {\n // Layout is handled by CSS flexbox — no JS height calculation needed.\n // This hook exists for future use or custom resize callbacks.\n }\n\n scrollToBottom() {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n this.userScrolledUp = false;\n this._updateScrollBottomBtn();\n }\n\n _updateScrollBottomBtn() {\n if (this.userScrolledUp) {\n this._scrollBottomBtn.classList.add('quikchat-scroll-bottom-visible');\n } else {\n this._scrollBottomBtn.classList.remove('quikchat-scroll-bottom-visible');\n }\n }\n\n _autoGrowTextarea() {\n const el = this._textEntry;\n el.style.height = 'auto';\n const maxHeight = parseInt(getComputedStyle(el).getPropertyValue('--quikchat-input-max-height')) || 120;\n el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }\n\n _formatTimestamp(isoString) {\n const d = new Date(isoString);\n const h = d.getHours();\n const m = String(d.getMinutes()).padStart(2, '0');\n const ampm = h >= 12 ? 'PM' : 'AM';\n const h12 = h % 12 || 12;\n return h12 + ':' + m + ' ' + ampm;\n }\n\n messagesAreaShowTimestamps(show) {\n if (show) {\n this._messagesArea.classList.add('quikchat-show-timestamps');\n } else {\n this._messagesArea.classList.remove('quikchat-show-timestamps');\n }\n }\n\n messagesAreaShowTimestampsGet() {\n return this._messagesArea.classList.contains('quikchat-show-timestamps');\n }\n\n messagesAreaShowTimestampsToggle() {\n this._messagesArea.classList.toggle('quikchat-show-timestamps');\n }\n\n _escapeHTML(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n _processContent(content) {\n if (this._sanitize === true) {\n content = this._escapeHTML(content);\n } else if (typeof this._sanitize === 'function') {\n content = this._sanitize(content);\n }\n if (this._messageFormatter) {\n content = this._messageFormatter(content);\n }\n return content;\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 messageDiv.classList.add('quikchat-message', msgidClass);\n messageDiv.classList.add('quikchat-role-' + (input.role || 'user'));\n messageDiv.classList.add('quikchat-align-' + (input.align || 'right'));\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n // Visibility: default true, hidden messages get display:none\n const visible = input.visible !== false;\n if (!visible) {\n messageDiv.style.display = 'none';\n }\n\n // Tags: array of strings for group-based visibility control\n const tags = Array.isArray(input.tags) ? input.tags.slice() : [];\n\n const userDiv = document.createElement('div');\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n userDiv.innerHTML = input.userString;\n\n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n contentDiv.style.textAlign = input.align;\n contentDiv.innerHTML = this._processContent(input.content);\n\n const timestamp = new Date().toISOString();\n const timestampSpan = document.createElement('span');\n timestampSpan.classList.add('quikchat-timestamp');\n timestampSpan.textContent = this._formatTimestamp(timestamp);\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n messageDiv.appendChild(timestampSpan);\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.scrollTop = this._messagesArea.scrollHeight;\n }\n\n this._textEntry.value = '';\n this._autoGrowTextarea();\n const updatedtime = timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, visible, tags, 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 let success = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n success = true;\n }\n catch (_error) {\n // Message ID not found\n }\n if (success) {\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n if (this._onMessageDelete) {\n this._onMessageDelete(this, n);\n }\n }\n return success;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (_error) {\n // Message ID not found\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\";\n try {\n content = this._history.filter((item) => item.msgid === n)[0].content;\n }\n catch (_error) {\n // Message ID not found\n }\n return content;\n }\n\n messageSetVisible(n, visible) {\n const msgEl = this.messageGetDOMObject(n);\n if (!msgEl) return false;\n msgEl.style.display = visible ? '' : 'none';\n const item = this._history.find((entry) => entry.msgid === n);\n if (item) item.visible = visible;\n return true;\n }\n\n messageGetVisible(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item ? item.visible !== false : false;\n }\n\n messageToggleVisible(n) {\n const current = this.messageGetVisible(n);\n return this.messageSetVisible(n, !current);\n }\n\n messageSetVisibleByTag(tag, visible) {\n let count = 0;\n for (const item of this._history) {\n if (item.tags && item.tags.includes(tag)) {\n this.messageSetVisible(item.msgid, visible);\n count++;\n }\n }\n return count;\n }\n\n messageGetTags(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item && item.tags ? item.tags.slice() : [];\n }\n\n messageSetTags(n, tags) {\n const item = this._history.find((entry) => entry.msgid === n);\n if (!item) return false;\n item.tags = Array.isArray(tags) ? tags.slice() : [];\n return true;\n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(item.content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageAppend) {\n this._onMessageAppend(this, n, content);\n }\n } catch (_error) {\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 const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageReplace) {\n this._onMessageReplace(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n messageAddTypingIndicator(userString = '', align = 'left') {\n const msgid = this.messageAddFull({\n content: '',\n userString: userString,\n align: align,\n role: 'assistant',\n });\n const msgEl = this.messageGetDOMObject(msgid);\n msgEl.classList.add('quikchat-typing');\n const contentDiv = msgEl.querySelector('.quikchat-message-content');\n contentDiv.innerHTML = '<span class=\"quikchat-typing-dots\"><span>.</span><span>.</span><span>.</span></span>';\n return msgid;\n }\n\n setMessageFormatter(formatter) {\n this._messageFormatter = formatter;\n }\n\n setSanitize(sanitize) {\n this._sanitize = sanitize;\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 if (n === undefined) {\n return this._history.slice();\n }\n if (m === undefined) {\n if (n < 0) {\n return this._history.slice(n);\n }\n return this._history.slice(n, n + 1);\n }\n return this._history.slice(n, m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n }\n\n historyGetLength() {\n return this._history.length;\n }\n\n historyGetMessage(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n];\n }\n return {};\n }\n\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n].content;\n }\n return \"\";\n }\n\n historyExport() {\n return this._history.map((item) => ({\n msgid: item.msgid,\n content: item.content,\n userString: item.userString,\n align: item.align,\n role: item.role,\n userID: item.userID,\n visible: item.visible,\n tags: item.tags ? item.tags.slice() : [],\n timestamp: item.timestamp,\n updatedtime: item.updatedtime,\n }));\n }\n\n historyImport(data) {\n // Clear existing messages from DOM and history\n this._messagesArea.innerHTML = '';\n this._history = [];\n this.msgid = 0;\n\n for (const entry of data) {\n this.messageAddFull({\n content: entry.content || '',\n userString: entry.userString || 'user',\n align: entry.align || 'right',\n role: entry.role || 'user',\n userID: entry.userID,\n visible: entry.visible,\n tags: entry.tags,\n });\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.2.4\", \"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() * 126) + 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 const l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\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 s = s[0].toUpperCase() + 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","showTimestamps","titleArea","title","show","align","messagesArea","alternating","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_messageFormatter","messageFormatter","_sanitize","sanitize","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","messagesAreaShowTimestamps","direction","setDirection","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesWrapper","_messagesArea","_scrollBottomBtn","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","text","trim","event","shiftKey","keyCode","preventDefault","_autoGrowTextarea","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","_updateScrollBottomBtn","scrollToBottom","ctrlKey","ResizeObserver","_resizeObserver","_handleContainerResize","observe","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","setCallbackonMessageAppend","_onMessageAppend","setCallbackonMessageReplace","_onMessageReplace","setCallbackonMessageDelete","_onMessageDelete","titleAreaToggle","style","display","textAlign","titleAreaGetContents","inputAreaToggle","inputAreaShow","inputAreaHide","inputAreaSetEnabled","enabled","disabled","inputAreaSetButtonText","textContent","inputAreaGetButtonText","dir","d","setAttribute","classList","add","remove","getDirection","getAttribute","el","height","maxHeight","parseInt","getComputedStyle","getPropertyValue","Math","min","overflowY","_formatTimestamp","isoString","Date","h","getHours","m","String","getMinutes","padStart","ampm","h12","messagesAreaShowTimestampsGet","contains","messagesAreaShowTimestampsToggle","toggle","_escapeHTML","str","div","createElement","_processContent","content","alt","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","userString","role","userID","messageDiv","msgidClass","children","visible","tags","Array","isArray","slice","userDiv","contentDiv","timestamp","toISOString","timestampSpan","appendChild","updatedtime","push","shift","messageAddNew","messageRemove","n","success","removeChild","_error","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","filter","messageSetVisible","msgEl","find","entry","messageGetVisible","messageToggleVisible","current","messageSetVisibleByTag","tag","count","_iterator","_createForOfIteratorHelper","_step","s","done","includes","err","e","f","messageGetTags","messageSetTags","messageAppendContent","messageReplaceContent","messageAddTypingIndicator","setMessageFormatter","formatter","setSanitize","historyGet","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","historyExport","map","historyImport","data","_iterator2","_step2","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","floor","random","test","l","substring","toUpperCase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quikchat.umd.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 showTimestamps: false,\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 this._parentElement = parentElement;\n this._theme = meta.theme;\n this._onSend = onSend ? onSend : () => { }; // call back function for onSend\n this._messageFormatter = meta.messageFormatter || null;\n this._sanitize = meta.sanitize || false;\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 // timestamps\n if (meta.showTimestamps) {\n this.messagesAreaShowTimestamps(true);\n }\n // direction (ltr/rtl)\n if (meta.direction) {\n this.setDirection(meta.direction);\n }\n // plumbing\n this._attachEventListeners();\n this.trackHistory = meta.trackHistory !== false;\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\"></div>\n <div class=\"quikchat-messages-wrapper\"><div class=\"quikchat-messages-area\" role=\"log\" aria-live=\"polite\" aria-label=\"Chat messages\"></div><button class=\"quikchat-scroll-bottom\" aria-label=\"Scroll to bottom\"></button></div>\n <div class=\"quikchat-input-area\">\n <textarea class=\"quikchat-input-textbox\" rows=\"1\" aria-label=\"Type a message\"></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._messagesWrapper = this._chatWidget.querySelector('.quikchat-messages-wrapper');\n this._messagesArea = this._chatWidget.querySelector('.quikchat-messages-area');\n this._scrollBottomBtn = this._messagesWrapper.querySelector('.quikchat-scroll-bottom');\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', () => {\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n });\n this._textEntry.addEventListener('keydown', (event) => {\n // Check if Shift + Enter is pressed\n if (event.shiftKey && event.keyCode === 13) {\n event.preventDefault();\n const text = this._textEntry.value.trim();\n if (text === '') return;\n this._onSend(this, text);\n }\n });\n\n // Auto-grow textarea\n this._textEntry.addEventListener('input', () => this._autoGrowTextarea());\n\n this._messagesArea.addEventListener('scroll', () => {\n const { scrollTop, scrollHeight, clientHeight } = this._messagesArea;\n this.userScrolledUp = scrollTop + clientHeight < scrollHeight - 1;\n this._updateScrollBottomBtn();\n });\n\n // Scroll-to-bottom button\n this._scrollBottomBtn.addEventListener('click', () => this.scrollToBottom());\n\n // Ctrl+End to scroll to bottom\n this._chatWidget.addEventListener('keydown', (event) => {\n if (event.ctrlKey && event.key === 'End') {\n event.preventDefault();\n this.scrollToBottom();\n }\n });\n\n // Use ResizeObserver to detect parent container resize\n if (typeof ResizeObserver !== 'undefined') {\n this._resizeObserver = new ResizeObserver(() => this._handleContainerResize());\n this._resizeObserver.observe(this._parentElement);\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 setCallbackonMessageAppend(callback) {\n this._onMessageAppend = callback;\n }\n setCallbackonMessageReplace(callback) {\n this._onMessageReplace = callback;\n }\n setCallbackonMessageDelete(callback) {\n this._onMessageDelete = callback;\n }\n\n // Public methods\n titleAreaToggle() {\n if (this._titleArea.style.display === 'none') {\n this.titleAreaShow();\n } else {\n this.titleAreaHide();\n }\n }\n\n titleAreaShow() {\n this._titleArea.style.display = '';\n }\n\n titleAreaHide() {\n this._titleArea.style.display = 'none';\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 if (this._inputArea.style.display === 'none') {\n this.inputAreaShow();\n } else {\n this.inputAreaHide();\n }\n }\n\n inputAreaShow() {\n this._inputArea.style.display = '';\n }\n\n inputAreaHide() {\n this._inputArea.style.display = 'none';\n }\n\n inputAreaSetEnabled(enabled) {\n this._textEntry.disabled = !enabled;\n this._sendButton.disabled = !enabled;\n }\n\n inputAreaSetButtonText(text) {\n this._sendButton.textContent = text;\n }\n\n inputAreaGetButtonText() {\n return this._sendButton.textContent;\n }\n\n setDirection(dir) {\n const d = dir === 'rtl' ? 'rtl' : 'ltr';\n this._chatWidget.setAttribute('dir', d);\n if (d === 'rtl') {\n this._chatWidget.classList.add('quikchat-rtl');\n } else {\n this._chatWidget.classList.remove('quikchat-rtl');\n }\n }\n\n getDirection() {\n return this._chatWidget.getAttribute('dir') || 'ltr';\n }\n\n _handleContainerResize() {\n // Layout is handled by CSS flexbox — no JS height calculation needed.\n // This hook exists for future use or custom resize callbacks.\n }\n\n scrollToBottom() {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n this.userScrolledUp = false;\n this._updateScrollBottomBtn();\n }\n\n _updateScrollBottomBtn() {\n if (this.userScrolledUp) {\n this._scrollBottomBtn.classList.add('quikchat-scroll-bottom-visible');\n } else {\n this._scrollBottomBtn.classList.remove('quikchat-scroll-bottom-visible');\n }\n }\n\n _autoGrowTextarea() {\n const el = this._textEntry;\n el.style.height = 'auto';\n const maxHeight = 120;\n el.style.height = Math.min(el.scrollHeight, maxHeight) + 'px';\n el.style.overflowY = el.scrollHeight > maxHeight ? 'auto' : 'hidden';\n }\n\n _formatTimestamp(isoString) {\n const d = new Date(isoString);\n const h = d.getHours();\n const m = String(d.getMinutes()).padStart(2, '0');\n const ampm = h >= 12 ? 'PM' : 'AM';\n const h12 = h % 12 || 12;\n return h12 + ':' + m + ' ' + ampm;\n }\n\n messagesAreaShowTimestamps(show) {\n if (show) {\n this._messagesArea.classList.add('quikchat-show-timestamps');\n } else {\n this._messagesArea.classList.remove('quikchat-show-timestamps');\n }\n }\n\n messagesAreaShowTimestampsGet() {\n return this._messagesArea.classList.contains('quikchat-show-timestamps');\n }\n\n messagesAreaShowTimestampsToggle() {\n this._messagesArea.classList.toggle('quikchat-show-timestamps');\n }\n\n _escapeHTML(str) {\n const div = document.createElement('div');\n div.textContent = str;\n return div.innerHTML;\n }\n\n _processContent(content) {\n if (this._sanitize === true) {\n content = this._escapeHTML(content);\n } else if (typeof this._sanitize === 'function') {\n content = this._sanitize(content);\n }\n if (this._messageFormatter) {\n content = this._messageFormatter(content);\n }\n return content;\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 messageDiv.classList.add('quikchat-message', msgidClass);\n messageDiv.classList.add('quikchat-role-' + (input.role || 'user'));\n messageDiv.classList.add('quikchat-align-' + (input.align || 'right'));\n this.msgid++;\n messageDiv.classList.add(this._messagesArea.children.length % 2 === 1 ? 'quikchat-message-1' : 'quikchat-message-2');\n\n // Visibility: default true, hidden messages get display:none\n const visible = input.visible !== false;\n if (!visible) {\n messageDiv.style.display = 'none';\n }\n\n // Tags: array of strings for group-based visibility control\n const tags = Array.isArray(input.tags) ? input.tags.slice() : [];\n\n const userDiv = document.createElement('div');\n userDiv.classList.add('quikchat-user-label');\n userDiv.style.textAlign = input.align;\n userDiv.innerHTML = input.userString;\n\n const contentDiv = document.createElement('div');\n contentDiv.classList.add('quikchat-message-content');\n contentDiv.style.textAlign = input.align;\n contentDiv.innerHTML = this._processContent(input.content);\n\n const timestamp = new Date().toISOString();\n const timestampSpan = document.createElement('span');\n timestampSpan.classList.add('quikchat-timestamp');\n timestampSpan.textContent = this._formatTimestamp(timestamp);\n\n messageDiv.appendChild(userDiv);\n messageDiv.appendChild(contentDiv);\n messageDiv.appendChild(timestampSpan);\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.scrollTop = this._messagesArea.scrollHeight;\n }\n\n this._textEntry.value = '';\n this._autoGrowTextarea();\n const updatedtime = timestamp;\n\n if (this.trackHistory) {\n this._history.push({ msgid, ...input, visible, tags, 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 let success = false;\n try {\n this._messagesArea.removeChild(this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`));\n success = true;\n }\n catch (_error) {\n // Message ID not found\n }\n if (success) {\n this._history.splice(this._history.findIndex((item) => item.msgid === n), 1);\n if (this._onMessageDelete) {\n this._onMessageDelete(this, n);\n }\n }\n return success;\n }\n /* returns the message html object from the DOM\n */\n messageGetDOMObject(n) {\n let msg = null;\n try {\n msg = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n }\n catch (_error) {\n // Message ID not found\n }\n return msg;\n }\n /* returns the message content only\n */\n messageGetContent(n) {\n let content = \"\";\n try {\n content = this._history.filter((item) => item.msgid === n)[0].content;\n }\n catch (_error) {\n // Message ID not found\n }\n return content;\n }\n\n messageSetVisible(n, visible) {\n const msgEl = this.messageGetDOMObject(n);\n if (!msgEl) return false;\n msgEl.style.display = visible ? '' : 'none';\n const item = this._history.find((entry) => entry.msgid === n);\n if (item) item.visible = visible;\n return true;\n }\n\n messageGetVisible(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item ? item.visible !== false : false;\n }\n\n messageToggleVisible(n) {\n const current = this.messageGetVisible(n);\n return this.messageSetVisible(n, !current);\n }\n\n messageSetVisibleByTag(tag, visible) {\n let count = 0;\n for (const item of this._history) {\n if (item.tags && item.tags.includes(tag)) {\n this.messageSetVisible(item.msgid, visible);\n count++;\n }\n }\n return count;\n }\n\n messageGetTags(n) {\n const item = this._history.find((entry) => entry.msgid === n);\n return item && item.tags ? item.tags.slice() : [];\n }\n\n messageSetTags(n, tags) {\n const item = this._history.find((entry) => entry.msgid === n);\n if (!item) return false;\n item.tags = Array.isArray(tags) ? tags.slice() : [];\n return true;\n }\n\n /* append message to the message content\n */\n messageAppendContent(n, content) {\n let success = false;\n try {\n const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content += content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(item.content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageAppend) {\n this._onMessageAppend(this, n, content);\n }\n } catch (_error) {\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 const msgEl = this._messagesArea.querySelector(`.quikchat-msgid-${String(n).padStart(10, '0')}`);\n const item = this._history.filter((entry) => entry.msgid === n)[0];\n item.content = content;\n item.updatedtime = new Date().toISOString();\n msgEl.querySelector('.quikchat-message-content').innerHTML = this._processContent(content);\n msgEl.classList.remove('quikchat-typing');\n success = true;\n\n if (!this.userScrolledUp) {\n this._messagesArea.scrollTop = this._messagesArea.scrollHeight;\n }\n if (this._onMessageReplace) {\n this._onMessageReplace(this, n, content);\n }\n } catch (_error) {\n // Message ID not found\n }\n return success;\n }\n\n messageAddTypingIndicator(userString = '', align = 'left') {\n const msgid = this.messageAddFull({\n content: '',\n userString: userString,\n align: align,\n role: 'assistant',\n });\n const msgEl = this.messageGetDOMObject(msgid);\n msgEl.classList.add('quikchat-typing');\n const contentDiv = msgEl.querySelector('.quikchat-message-content');\n contentDiv.innerHTML = '<span class=\"quikchat-typing-dots\"><span>.</span><span>.</span><span>.</span></span>';\n return msgid;\n }\n\n setMessageFormatter(formatter) {\n this._messageFormatter = formatter;\n }\n\n setSanitize(sanitize) {\n this._sanitize = sanitize;\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 if (n === undefined) {\n return this._history.slice();\n }\n if (m === undefined) {\n if (n < 0) {\n return this._history.slice(n);\n }\n return this._history.slice(n, n + 1);\n }\n return this._history.slice(n, m);\n }\n\n historyClear() {\n this.msgid = 0;\n this._history = [];\n }\n\n historyGetLength() {\n return this._history.length;\n }\n\n historyGetMessage(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n];\n }\n return {};\n }\n\n historyGetMessageContent(n) {\n if (n >= 0 && n < this._history.length) {\n return this._history[n].content;\n }\n return \"\";\n }\n\n historyExport() {\n return this._history.map((item) => ({\n msgid: item.msgid,\n content: item.content,\n userString: item.userString,\n align: item.align,\n role: item.role,\n userID: item.userID,\n visible: item.visible,\n tags: item.tags ? item.tags.slice() : [],\n timestamp: item.timestamp,\n updatedtime: item.updatedtime,\n }));\n }\n\n historyImport(data) {\n // Clear existing messages from DOM and history\n this._messagesArea.innerHTML = '';\n this._history = [];\n this.msgid = 0;\n\n for (const entry of data) {\n this.messageAddFull({\n content: entry.content || '',\n userString: entry.userString || 'user',\n align: entry.align || 'right',\n role: entry.role || 'user',\n userID: entry.userID,\n visible: entry.visible,\n tags: entry.tags,\n });\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.2.6\", \"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() * 126) + 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 const l = loremText.substring(startSpot) + loremText.substring(0, startSpot);\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 s = s[0].toUpperCase() + 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","showTimestamps","titleArea","title","show","align","messagesArea","alternating","meta","_objectSpread","document","querySelector","_parentElement","_theme","_onSend","_messageFormatter","messageFormatter","_sanitize","sanitize","_createWidget","titleAreaSetContents","titleAreaShow","titleAreaHide","messagesAreaAlternateColors","messagesAreaShowTimestamps","direction","setDirection","_attachEventListeners","_historyLimit","_history","_createClass","key","value","widgetHTML","concat","innerHTML","_chatWidget","_titleArea","_messagesWrapper","_messagesArea","_scrollBottomBtn","_inputArea","_textEntry","_sendButton","msgid","_this","addEventListener","text","trim","event","shiftKey","keyCode","preventDefault","_autoGrowTextarea","_this$_messagesArea","scrollTop","scrollHeight","clientHeight","userScrolledUp","_updateScrollBottomBtn","scrollToBottom","ctrlKey","ResizeObserver","_resizeObserver","_handleContainerResize","observe","setCallbackOnSend","callback","setCallbackonMessageAdded","_onMessageAdded","setCallbackonMessageAppend","_onMessageAppend","setCallbackonMessageReplace","_onMessageReplace","setCallbackonMessageDelete","_onMessageDelete","titleAreaToggle","style","display","textAlign","titleAreaGetContents","inputAreaToggle","inputAreaShow","inputAreaHide","inputAreaSetEnabled","enabled","disabled","inputAreaSetButtonText","textContent","inputAreaGetButtonText","dir","d","setAttribute","classList","add","remove","getDirection","getAttribute","el","height","maxHeight","Math","min","overflowY","_formatTimestamp","isoString","Date","h","getHours","m","String","getMinutes","padStart","ampm","h12","messagesAreaShowTimestampsGet","contains","messagesAreaShowTimestampsToggle","toggle","_escapeHTML","str","div","createElement","_processContent","content","alt","messagesAreaAlternateColorsToggle","messagesAreaAlternateColorsGet","messageAddFull","input","userString","role","userID","messageDiv","msgidClass","children","visible","tags","Array","isArray","slice","userDiv","contentDiv","timestamp","toISOString","timestampSpan","appendChild","updatedtime","push","shift","messageAddNew","messageRemove","n","success","removeChild","_error","splice","findIndex","item","messageGetDOMObject","msg","messageGetContent","filter","messageSetVisible","msgEl","find","entry","messageGetVisible","messageToggleVisible","current","messageSetVisibleByTag","tag","count","_iterator","_createForOfIteratorHelper","_step","s","done","includes","err","e","f","messageGetTags","messageSetTags","messageAppendContent","messageReplaceContent","messageAddTypingIndicator","setMessageFormatter","formatter","setSanitize","historyGet","historyClear","historyGetLength","historyGetMessage","historyGetMessageContent","historyExport","map","historyImport","data","_iterator2","_step2","changeTheme","newTheme","get","version","loremIpsum","numChars","startSpot","startWithCapitalLetter","loremText","floor","random","test","l","substring","toUpperCase"],"mappings":"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"}
|
package/dist/quikchat.umd.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).quikchat=t()}(this,(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,i=Array(t);s<t;s++)i[s]=e[s];return i}function t(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function s(t,s){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,s){if(t){if("string"==typeof t)return e(t,s);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,s):void 0}}(t))||s){i&&(t=i);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var e=i.next();return o=e.done,e},e:function(e){l=!0,r=e},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function i(e,t,s){return(t=r(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function n(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,i)}return s}function a(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(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,t);if("object"!=typeof i)return i;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 s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},i=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 n=a(a({},{theme:"quikchat-theme-light",trackHistory:!0,showTimestamps:!1,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0}}),i);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=n.theme,this._onSend=s||function(){},this._messageFormatter=n.messageFormatter||null,this._sanitize=n.sanitize||!1,this._createWidget(),n.titleArea&&(this.titleAreaSetContents(n.titleArea.title,n.titleArea.align),!0===n.titleArea.show?this.titleAreaShow():this.titleAreaHide()),n.messagesArea&&this.messagesAreaAlternateColors(n.messagesArea.alternating),n.showTimestamps&&this.messagesAreaShowTimestamps(!0),n.direction&&this.setDirection(n.direction),this._attachEventListeners(),this.trackHistory=!1!==n.trackHistory,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"></div>\n <div class="quikchat-messages-wrapper"><div class="quikchat-messages-area" role="log" aria-live="polite" aria-label="Chat messages"></div><button class="quikchat-scroll-bottom" aria-label="Scroll to bottom"></button></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox" rows="1" aria-label="Type a message"></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._messagesWrapper=this._chatWidget.querySelector(".quikchat-messages-wrapper"),this._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),this._scrollBottomBtn=this._messagesWrapper.querySelector(".quikchat-scroll-bottom"),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(){var t=e._textEntry.value.trim();""!==t&&e._onSend(e,t)})),this._textEntry.addEventListener("keydown",(function(t){if(t.shiftKey&&13===t.keyCode){t.preventDefault();var s=e._textEntry.value.trim();if(""===s)return;e._onSend(e,s)}})),this._textEntry.addEventListener("input",(function(){return e._autoGrowTextarea()})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,s=t.scrollTop,i=t.scrollHeight,n=t.clientHeight;e.userScrolledUp=s+n<i-1,e._updateScrollBottomBtn()})),this._scrollBottomBtn.addEventListener("click",(function(){return e.scrollToBottom()})),this._chatWidget.addEventListener("keydown",(function(t){t.ctrlKey&&"End"===t.key&&(t.preventDefault(),e.scrollToBottom())})),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver((function(){return e._handleContainerResize()})),this._resizeObserver.observe(this._parentElement))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{key:"setCallbackonMessageAppend",value:function(e){this._onMessageAppend=e}},{key:"setCallbackonMessageReplace",value:function(e){this._onMessageReplace=e}},{key:"setCallbackonMessageDelete",value:function(e){this._onMessageDelete=e}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display=""}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none"}},{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(){"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display=""}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none"}},{key:"inputAreaSetEnabled",value:function(e){this._textEntry.disabled=!e,this._sendButton.disabled=!e}},{key:"inputAreaSetButtonText",value:function(e){this._sendButton.textContent=e}},{key:"inputAreaGetButtonText",value:function(){return this._sendButton.textContent}},{key:"setDirection",value:function(e){var t="rtl"===e?"rtl":"ltr";this._chatWidget.setAttribute("dir",t),"rtl"===t?this._chatWidget.classList.add("quikchat-rtl"):this._chatWidget.classList.remove("quikchat-rtl")}},{key:"getDirection",value:function(){return this._chatWidget.getAttribute("dir")||"ltr"}},{key:"_handleContainerResize",value:function(){}},{key:"scrollToBottom",value:function(){this._messagesArea.scrollTop=this._messagesArea.scrollHeight,this.userScrolledUp=!1,this._updateScrollBottomBtn()}},{key:"_updateScrollBottomBtn",value:function(){this.userScrolledUp?this._scrollBottomBtn.classList.add("quikchat-scroll-bottom-visible"):this._scrollBottomBtn.classList.remove("quikchat-scroll-bottom-visible")}},{key:"_autoGrowTextarea",value:function(){var e=this._textEntry;e.style.height="auto";var t=parseInt(getComputedStyle(e).getPropertyValue("--quikchat-input-max-height"))||120;e.style.height=Math.min(e.scrollHeight,t)+"px",e.style.overflowY=e.scrollHeight>t?"auto":"hidden"}},{key:"_formatTimestamp",value:function(e){var t=new Date(e),s=t.getHours();return(s%12||12)+":"+String(t.getMinutes()).padStart(2,"0")+" "+(s>=12?"PM":"AM")}},{key:"messagesAreaShowTimestamps",value:function(e){e?this._messagesArea.classList.add("quikchat-show-timestamps"):this._messagesArea.classList.remove("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsGet",value:function(){return this._messagesArea.classList.contains("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-show-timestamps")}},{key:"_escapeHTML",value:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML}},{key:"_processContent",value:function(e){return!0===this._sanitize?e=this._escapeHTML(e):"function"==typeof this._sanitize&&(e=this._sanitize(e)),this._messageFormatter&&(e=this._messageFormatter(e)),e}},{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,s=document.createElement("div"),i="quikchat-msgid-"+String(t).padStart(10,"0");s.classList.add("quikchat-message",i),s.classList.add("quikchat-role-"+(e.role||"user")),s.classList.add("quikchat-align-"+(e.align||"right")),this.msgid++,s.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var n=!1!==e.visible;n||(s.style.display="none");var r=Array.isArray(e.tags)?e.tags.slice():[],o=document.createElement("div");o.classList.add("quikchat-user-label"),o.style.textAlign=e.align,o.innerHTML=e.userString;var l=document.createElement("div");l.classList.add("quikchat-message-content"),l.style.textAlign=e.align,l.innerHTML=this._processContent(e.content);var u=(new Date).toISOString(),c=document.createElement("span");c.classList.add("quikchat-timestamp"),c.textContent=this._formatTimestamp(u),s.appendChild(o),s.appendChild(l),s.appendChild(c),this._messagesArea.appendChild(s),this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._textEntry.value="",this._autoGrowTextarea();var h=u;return this.trackHistory&&(this._history.push(a(a({msgid:t},e),{},{visible:n,tags:r,timestamp:u,updatedtime:h,messageDiv:s})),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",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user";return this.messageAddFull({content:e,userString:t,align:s,role:i})}},{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){}return t&&(this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),this._onMessageDelete&&this._onMessageDelete(this,e)),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){}return t}},{key:"messageSetVisible",value:function(e,t){var s=this.messageGetDOMObject(e);if(!s)return!1;s.style.display=t?"":"none";var i=this._history.find((function(t){return t.msgid===e}));return i&&(i.visible=t),!0}},{key:"messageGetVisible",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return!!t&&!1!==t.visible}},{key:"messageToggleVisible",value:function(e){var t=this.messageGetVisible(e);return this.messageSetVisible(e,!t)}},{key:"messageSetVisibleByTag",value:function(e,t){var i,n=0,a=s(this._history);try{for(a.s();!(i=a.n()).done;){var r=i.value;r.tags&&r.tags.includes(e)&&(this.messageSetVisible(r.msgid,t),n++)}}catch(e){a.e(e)}finally{a.f()}return n}},{key:"messageGetTags",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return t&&t.tags?t.tags.slice():[]}},{key:"messageSetTags",value:function(e,t){var s=this._history.find((function(t){return t.msgid===e}));return!!s&&(s.tags=Array.isArray(t)?t.slice():[],!0)}},{key:"messageAppendContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),n=this._history.filter((function(t){return t.msgid===e}))[0];n.content+=t,n.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(n.content),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageAppend&&this._onMessageAppend(this,e,t)}catch(e){}return s}},{key:"messageReplaceContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),n=this._history.filter((function(t){return t.msgid===e}))[0];n.content=t,n.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(t),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageReplace&&this._onMessageReplace(this,e,t)}catch(e){}return s}},{key:"messageAddTypingIndicator",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"left",s=this.messageAddFull({content:"",userString:e,align:t,role:"assistant"}),i=this.messageGetDOMObject(s);return i.classList.add("quikchat-typing"),i.querySelector(".quikchat-message-content").innerHTML='<span class="quikchat-typing-dots"><span>.</span><span>.</span><span>.</span></span>',s}},{key:"setMessageFormatter",value:function(e){this._messageFormatter=e}},{key:"setSanitize",value:function(e){this._sanitize=e}},{key:"historyGet",value:function(e,t){return void 0===e?this._history.slice():void 0===t?e<0?this._history.slice(e):this._history.slice(e,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 e>=0&&e<this._history.length?this._history[e].content:""}},{key:"historyExport",value:function(){return this._history.map((function(e){return{msgid:e.msgid,content:e.content,userString:e.userString,align:e.align,role:e.role,userID:e.userID,visible:e.visible,tags:e.tags?e.tags.slice():[],timestamp:e.timestamp,updatedtime:e.updatedtime}}))}},{key:"historyImport",value:function(e){this._messagesArea.innerHTML="",this._history=[],this.msgid=0;var t,i=s(e);try{for(i.s();!(t=i.n()).done;){var n=t.value;this.messageAddFull({content:n.content||"",userString:n.userString||"user",align:n.align||"right",role:n.role||"user",userID:n.userID,visible:n.visible,tags:n.tags})}}catch(e){i.e(e)}finally{i.f()}}},{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.2.4",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,s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i="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(126*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===i[t]||/[.,:;!?]/.test(i[t]);)t=(t+1)%446;for(var n=i.substring(t)+i.substring(0,t),a="";e>0;)a+=e<n.length?n.substring(0,e):n,e-=n.length;return" "===a[a.length-1]&&(a=a.substring(0,a.length-1)+"."),s&&(a=a[0].toUpperCase()+a.substring(1)),a}}],i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,n}();return o}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).quikchat=t()}(this,(function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var s=0,i=Array(t);s<t;s++)i[s]=e[s];return i}function t(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}function s(t,s){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,s){if(t){if("string"==typeof t)return e(t,s);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,s):void 0}}(t))||s){i&&(t=i);var n=0,a=function(){};return{s:a,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var e=i.next();return o=e.done,e},e:function(e){l=!0,r=e},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw r}}}}function i(e,t,s){return(t=r(t))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function n(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,i)}return s}function a(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(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,t);if("object"!=typeof i)return i;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 s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},i=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 n=a(a({},{theme:"quikchat-theme-light",trackHistory:!0,showTimestamps:!1,titleArea:{title:"Chat",show:!1,align:"center"},messagesArea:{alternating:!0}}),i);"string"==typeof t&&(t=document.querySelector(t)),this._parentElement=t,this._theme=n.theme,this._onSend=s||function(){},this._messageFormatter=n.messageFormatter||null,this._sanitize=n.sanitize||!1,this._createWidget(),n.titleArea&&(this.titleAreaSetContents(n.titleArea.title,n.titleArea.align),!0===n.titleArea.show?this.titleAreaShow():this.titleAreaHide()),n.messagesArea&&this.messagesAreaAlternateColors(n.messagesArea.alternating),n.showTimestamps&&this.messagesAreaShowTimestamps(!0),n.direction&&this.setDirection(n.direction),this._attachEventListeners(),this.trackHistory=!1!==n.trackHistory,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"></div>\n <div class="quikchat-messages-wrapper"><div class="quikchat-messages-area" role="log" aria-live="polite" aria-label="Chat messages"></div><button class="quikchat-scroll-bottom" aria-label="Scroll to bottom"></button></div>\n <div class="quikchat-input-area">\n <textarea class="quikchat-input-textbox" rows="1" aria-label="Type a message"></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._messagesWrapper=this._chatWidget.querySelector(".quikchat-messages-wrapper"),this._messagesArea=this._chatWidget.querySelector(".quikchat-messages-area"),this._scrollBottomBtn=this._messagesWrapper.querySelector(".quikchat-scroll-bottom"),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(){var t=e._textEntry.value.trim();""!==t&&e._onSend(e,t)})),this._textEntry.addEventListener("keydown",(function(t){if(t.shiftKey&&13===t.keyCode){t.preventDefault();var s=e._textEntry.value.trim();if(""===s)return;e._onSend(e,s)}})),this._textEntry.addEventListener("input",(function(){return e._autoGrowTextarea()})),this._messagesArea.addEventListener("scroll",(function(){var t=e._messagesArea,s=t.scrollTop,i=t.scrollHeight,n=t.clientHeight;e.userScrolledUp=s+n<i-1,e._updateScrollBottomBtn()})),this._scrollBottomBtn.addEventListener("click",(function(){return e.scrollToBottom()})),this._chatWidget.addEventListener("keydown",(function(t){t.ctrlKey&&"End"===t.key&&(t.preventDefault(),e.scrollToBottom())})),"undefined"!=typeof ResizeObserver&&(this._resizeObserver=new ResizeObserver((function(){return e._handleContainerResize()})),this._resizeObserver.observe(this._parentElement))}},{key:"setCallbackOnSend",value:function(e){this._onSend=e}},{key:"setCallbackonMessageAdded",value:function(e){this._onMessageAdded=e}},{key:"setCallbackonMessageAppend",value:function(e){this._onMessageAppend=e}},{key:"setCallbackonMessageReplace",value:function(e){this._onMessageReplace=e}},{key:"setCallbackonMessageDelete",value:function(e){this._onMessageDelete=e}},{key:"titleAreaToggle",value:function(){"none"===this._titleArea.style.display?this.titleAreaShow():this.titleAreaHide()}},{key:"titleAreaShow",value:function(){this._titleArea.style.display=""}},{key:"titleAreaHide",value:function(){this._titleArea.style.display="none"}},{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(){"none"===this._inputArea.style.display?this.inputAreaShow():this.inputAreaHide()}},{key:"inputAreaShow",value:function(){this._inputArea.style.display=""}},{key:"inputAreaHide",value:function(){this._inputArea.style.display="none"}},{key:"inputAreaSetEnabled",value:function(e){this._textEntry.disabled=!e,this._sendButton.disabled=!e}},{key:"inputAreaSetButtonText",value:function(e){this._sendButton.textContent=e}},{key:"inputAreaGetButtonText",value:function(){return this._sendButton.textContent}},{key:"setDirection",value:function(e){var t="rtl"===e?"rtl":"ltr";this._chatWidget.setAttribute("dir",t),"rtl"===t?this._chatWidget.classList.add("quikchat-rtl"):this._chatWidget.classList.remove("quikchat-rtl")}},{key:"getDirection",value:function(){return this._chatWidget.getAttribute("dir")||"ltr"}},{key:"_handleContainerResize",value:function(){}},{key:"scrollToBottom",value:function(){this._messagesArea.scrollTop=this._messagesArea.scrollHeight,this.userScrolledUp=!1,this._updateScrollBottomBtn()}},{key:"_updateScrollBottomBtn",value:function(){this.userScrolledUp?this._scrollBottomBtn.classList.add("quikchat-scroll-bottom-visible"):this._scrollBottomBtn.classList.remove("quikchat-scroll-bottom-visible")}},{key:"_autoGrowTextarea",value:function(){var e=this._textEntry;e.style.height="auto",e.style.height=Math.min(e.scrollHeight,120)+"px",e.style.overflowY=e.scrollHeight>120?"auto":"hidden"}},{key:"_formatTimestamp",value:function(e){var t=new Date(e),s=t.getHours();return(s%12||12)+":"+String(t.getMinutes()).padStart(2,"0")+" "+(s>=12?"PM":"AM")}},{key:"messagesAreaShowTimestamps",value:function(e){e?this._messagesArea.classList.add("quikchat-show-timestamps"):this._messagesArea.classList.remove("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsGet",value:function(){return this._messagesArea.classList.contains("quikchat-show-timestamps")}},{key:"messagesAreaShowTimestampsToggle",value:function(){this._messagesArea.classList.toggle("quikchat-show-timestamps")}},{key:"_escapeHTML",value:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML}},{key:"_processContent",value:function(e){return!0===this._sanitize?e=this._escapeHTML(e):"function"==typeof this._sanitize&&(e=this._sanitize(e)),this._messageFormatter&&(e=this._messageFormatter(e)),e}},{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,s=document.createElement("div"),i="quikchat-msgid-"+String(t).padStart(10,"0");s.classList.add("quikchat-message",i),s.classList.add("quikchat-role-"+(e.role||"user")),s.classList.add("quikchat-align-"+(e.align||"right")),this.msgid++,s.classList.add(this._messagesArea.children.length%2==1?"quikchat-message-1":"quikchat-message-2");var n=!1!==e.visible;n||(s.style.display="none");var r=Array.isArray(e.tags)?e.tags.slice():[],o=document.createElement("div");o.classList.add("quikchat-user-label"),o.style.textAlign=e.align,o.innerHTML=e.userString;var l=document.createElement("div");l.classList.add("quikchat-message-content"),l.style.textAlign=e.align,l.innerHTML=this._processContent(e.content);var u=(new Date).toISOString(),c=document.createElement("span");c.classList.add("quikchat-timestamp"),c.textContent=this._formatTimestamp(u),s.appendChild(o),s.appendChild(l),s.appendChild(c),this._messagesArea.appendChild(s),this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._textEntry.value="",this._autoGrowTextarea();var h=u;return this.trackHistory&&(this._history.push(a(a({msgid:t},e),{},{visible:n,tags:r,timestamp:u,updatedtime:h,messageDiv:s})),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",s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"right",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"user";return this.messageAddFull({content:e,userString:t,align:s,role:i})}},{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){}return t&&(this._history.splice(this._history.findIndex((function(t){return t.msgid===e})),1),this._onMessageDelete&&this._onMessageDelete(this,e)),t}},{key:"messageGetDOMObject",value:function(e){var t=null;try{t=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0")))}catch(e){}return t}},{key:"messageGetContent",value:function(e){var t="";try{t=this._history.filter((function(t){return t.msgid===e}))[0].content}catch(e){}return t}},{key:"messageSetVisible",value:function(e,t){var s=this.messageGetDOMObject(e);if(!s)return!1;s.style.display=t?"":"none";var i=this._history.find((function(t){return t.msgid===e}));return i&&(i.visible=t),!0}},{key:"messageGetVisible",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return!!t&&!1!==t.visible}},{key:"messageToggleVisible",value:function(e){var t=this.messageGetVisible(e);return this.messageSetVisible(e,!t)}},{key:"messageSetVisibleByTag",value:function(e,t){var i,n=0,a=s(this._history);try{for(a.s();!(i=a.n()).done;){var r=i.value;r.tags&&r.tags.includes(e)&&(this.messageSetVisible(r.msgid,t),n++)}}catch(e){a.e(e)}finally{a.f()}return n}},{key:"messageGetTags",value:function(e){var t=this._history.find((function(t){return t.msgid===e}));return t&&t.tags?t.tags.slice():[]}},{key:"messageSetTags",value:function(e,t){var s=this._history.find((function(t){return t.msgid===e}));return!!s&&(s.tags=Array.isArray(t)?t.slice():[],!0)}},{key:"messageAppendContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),n=this._history.filter((function(t){return t.msgid===e}))[0];n.content+=t,n.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(n.content),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageAppend&&this._onMessageAppend(this,e,t)}catch(e){}return s}},{key:"messageReplaceContent",value:function(e,t){var s=!1;try{var i=this._messagesArea.querySelector(".quikchat-msgid-".concat(String(e).padStart(10,"0"))),n=this._history.filter((function(t){return t.msgid===e}))[0];n.content=t,n.updatedtime=(new Date).toISOString(),i.querySelector(".quikchat-message-content").innerHTML=this._processContent(t),i.classList.remove("quikchat-typing"),s=!0,this.userScrolledUp||(this._messagesArea.scrollTop=this._messagesArea.scrollHeight),this._onMessageReplace&&this._onMessageReplace(this,e,t)}catch(e){}return s}},{key:"messageAddTypingIndicator",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"left",s=this.messageAddFull({content:"",userString:e,align:t,role:"assistant"}),i=this.messageGetDOMObject(s);return i.classList.add("quikchat-typing"),i.querySelector(".quikchat-message-content").innerHTML='<span class="quikchat-typing-dots"><span>.</span><span>.</span><span>.</span></span>',s}},{key:"setMessageFormatter",value:function(e){this._messageFormatter=e}},{key:"setSanitize",value:function(e){this._sanitize=e}},{key:"historyGet",value:function(e,t){return void 0===e?this._history.slice():void 0===t?e<0?this._history.slice(e):this._history.slice(e,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 e>=0&&e<this._history.length?this._history[e].content:""}},{key:"historyExport",value:function(){return this._history.map((function(e){return{msgid:e.msgid,content:e.content,userString:e.userString,align:e.align,role:e.role,userID:e.userID,visible:e.visible,tags:e.tags?e.tags.slice():[],timestamp:e.timestamp,updatedtime:e.updatedtime}}))}},{key:"historyImport",value:function(e){this._messagesArea.innerHTML="",this._history=[],this.msgid=0;var t,i=s(e);try{for(i.s();!(t=i.n()).done;){var n=t.value;this.messageAddFull({content:n.content||"",userString:n.userString||"user",align:n.align||"right",role:n.role||"user",userID:n.userID,visible:n.visible,tags:n.tags})}}catch(e){i.e(e)}finally{i.f()}}},{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.2.6",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,s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i="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(126*Math.random())+25),void 0===t&&(t=Math.floor(446*Math.random())),t%=446;" "===i[t]||/[.,:;!?]/.test(i[t]);)t=(t+1)%446;for(var n=i.substring(t)+i.substring(0,t),a="";e>0;)a+=e<n.length?n.substring(0,e):n,e-=n.length;return" "===a[a.length-1]&&(a=a.substring(0,a.length-1)+"."),s&&(a=a[0].toUpperCase()+a.substring(1)),a}}],i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,n}();return o}));
|
|
2
2
|
//# sourceMappingURL=quikchat.umd.min.js.map
|