Plugin Directory

Changeset 3378010


Ignore:
Timestamp:
10/14/2025 10:07:49 AM (6 months ago)
Author:
deeping2019
Message:

New version 1.2.0 with markdown support

Location:
chating
Files:
1 added
10 deleted
20 edited
15 copied

Legend:

Unmodified
Added
Removed
  • chating/tags/1.2.0/backend/rest-api.php

    r3324314 r3378010  
    405405                        foreach ($content["text"] as $text) {
    406406                            if (is_string($text)) {
    407                                 echo "data: " . esc_html($text);
     407                                $data = array("message" => esc_html($text));
     408                                echo "data: " . json_encode($data);
    408409                                flush();
    409410                                continue;
    410411                            }
    411412                            if (array_key_exists("value", $text) && is_string($text["value"])) {
    412                                 echo "data: " . esc_html($text["value"]);
     413                                $data = array("message" => esc_html($text["value"]));
     414                                echo "data: " . json_encode($data);
    413415                                flush();
    414416                            }
  • chating/tags/1.2.0/build/inline-chatbot-block/index.asset.php

    r3324369 r3378010  
    1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '0397c213f70599745e0b');
     1<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '57181958f49fb4c3b345');
  • chating/tags/1.2.0/build/inline-chatbot-block/index.js

    r3324369 r3378010  
    1 (()=>{"use strict";var e,n={13:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,height:g,startMessage:p,placeholder:b,suggestions:x,assistant:v}=e,[j,C]=(0,r.useState)([]);return(0,r.useEffect)((()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then((e=>{if(!e.ok)throw new Error("Response not ok");return e.json()})).then((e=>{C([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")})).catch((e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")}))}),[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:g},children:[p.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:p}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:b,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")}]})})}),(0,s.jsx)(t.InspectorControls,{group:"dimensions",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(o.PanelBody,{title:"Höhe",children:(0,s.jsx)(o.RangeControl,{value:g,onChange:e=>{var n;return l({height:null!==(n=parseInt(e))&&void 0!==n?n:0})},min:50,max:2e3})})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:v,options:j.map((e=>({label:e.name,value:e.id}))),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:p,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:b,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every((e=>o.O[e](t[i])))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={267:0,555:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some((n=>0!==e[n]))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[555],(()=>o(13)));r=o.O(r)})();
     1(()=>{"use strict";var e,n={13:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,height:g,startMessage:p,placeholder:b,suggestions:x,assistant:v}=e,[j,C]=(0,r.useState)([]);return(0,r.useEffect)(()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then(e=>{if(!e.ok)throw new Error("Response not ok");return e.json()}).then(e=>{C([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")}).catch(e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")})},[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:g},children:[p.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:p}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:b,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")}]})})}),(0,s.jsx)(t.InspectorControls,{group:"dimensions",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(o.PanelBody,{title:"Höhe",children:(0,s.jsx)(o.RangeControl,{value:g,onChange:e=>{var n;return l({height:null!==(n=parseInt(e))&&void 0!==n?n:0})},min:50,max:2e3})})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:v,options:j.map(e=>({label:e.name,value:e.id})),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:p,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:b,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every(e=>o.O[e](t[i]))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={267:0,555:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some(n=>0!==e[n])){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[555],()=>o(13));r=o.O(r)})();
  • chating/tags/1.2.0/build/inline-chatbot-block/style-index-rtl.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
     1#chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
  • chating/tags/1.2.0/build/inline-chatbot-block/style-index.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
     1#chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
  • chating/tags/1.2.0/build/popup-chatbot-block/index.asset.php

    r3324369 r3378010  
    1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '77b9aeb2dd9d8b531633');
     1<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '47ae53747c3f10760c99');
  • chating/tags/1.2.0/build/popup-chatbot-block/index.js

    r3324369 r3378010  
    1 (()=>{"use strict";var e,n={430:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/popup-chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,buttonColor:g,buttonBackground:p,startMessage:b,placeholder:v,suggestions:x,assistant:C}=e,[j,w]=(0,r.useState)([]);return(0,r.useEffect)((()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then((e=>{if(!e.ok)throw new Error("Response not ok");return e.json()})).then((e=>{w([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")})).catch((e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")}))}),[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{class:"popup",children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:400},children:[b.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:b}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:v,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)("button",{type:"button",id:"open-dialog",disabled:!0,style:{color:g,background:p}})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")},{value:g,onChange:e=>l({buttonColor:e}),label:(0,n.__)("Vordergrund Button zum Öffnen")},{value:p,onChange:e=>l({buttonBackground:e}),label:(0,n.__)("Hintergrund Button zum Öffnen")}]})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:C,options:j.map((e=>({label:e.name,value:e.id}))),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:b,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:v,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every((e=>o.O[e](t[i])))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={24:0,752:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some((n=>0!==e[n]))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[752],(()=>o(430)));r=o.O(r)})();
     1(()=>{"use strict";var e,n={430:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/popup-chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,buttonColor:g,buttonBackground:p,startMessage:b,placeholder:v,suggestions:x,assistant:C}=e,[j,w]=(0,r.useState)([]);return(0,r.useEffect)(()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then(e=>{if(!e.ok)throw new Error("Response not ok");return e.json()}).then(e=>{w([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")}).catch(e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")})},[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{class:"popup",children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:400},children:[b.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:b}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:v,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)("button",{type:"button",id:"open-dialog",disabled:!0,style:{color:g,background:p}})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")},{value:g,onChange:e=>l({buttonColor:e}),label:(0,n.__)("Vordergrund Button zum Öffnen")},{value:p,onChange:e=>l({buttonBackground:e}),label:(0,n.__)("Hintergrund Button zum Öffnen")}]})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:C,options:j.map(e=>({label:e.name,value:e.id})),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:b,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:v,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every(e=>o.O[e](t[i]))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={24:0,752:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some(n=>0!==e[n])){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[752],()=>o(430));r=o.O(r)})();
  • chating/tags/1.2.0/build/popup-chatbot-block/style-index-rtl.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;left:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;left:10px;top:10px;width:40px;z-index:10}
     1#chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;left:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;left:10px;top:10px;width:40px;z-index:10}
  • chating/tags/1.2.0/build/popup-chatbot-block/style-index.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;right:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;right:10px;top:10px;width:40px;z-index:10}
     1#chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;right:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;right:10px;top:10px;width:40px;z-index:10}
  • chating/tags/1.2.0/chating.php

    r3354709 r3378010  
    77 * Requires at least: 6.6
    88 * Requires PHP:      7.2
    9  * Version:           1.1.1
     9 * Version:           1.2.0
    1010 * Author:            deepIng
    1111 * License:           GPL-2.0-or-later
  • chating/tags/1.2.0/readme.txt

    r3354704 r3378010  
    55Requires at least: 6.6
    66Tested up to: 6.8
    7 Stable tag: 1.1.1
     7Stable tag: 1.2.0
    88Requires PHP: 7.2
    99License: GPLv2 or later
     
    4444== Changelog ==
    4545
     46= 1.2 =
     47* Added support for markdown styles in chatbot answers
     48
    4649= 1.1.1 =
    4750* Fixed settings for width of inline block
  • chating/tags/1.2.0/src/inline-chatbot-block/view.js

    r3324369 r3378010  
    127127        try {
    128128            let data = e.data;
     129            message = JSON.parse(data).message;
    129130
    130131            if (!botMessage.innerText) {
     
    132133            }
    133134
    134             botString += data;
    135             botMessage.innerHTML = botString;
     135            if (message.length == 0) {
     136                message = "\n";
     137            }
     138
     139            botString += message;
     140            botMessage.innerHTML = markdownToHtml(botString).innerHTML;
    136141            history.scrollTop = history.scrollHeight;
    137         } catch {
     142        } catch(error) {
    138143            if (e.data == "[DONE]") {
    139144                eventSource.close();
     
    161166}
    162167
     168function listToDOM(list, wrapperTag="div") {
     169    let allowedTags = ["span", "li", "ul", "p", "strong", "em", "h1", "h2", "h3", "h4", "h5", "h6"];
     170    if (!allowedTags.includes(wrapperTag)) {
     171        wrapperTag = "div";
     172    }
     173    let wrapper = document.createElement(wrapperTag);
     174
     175    for (let item of list) {
     176        if (!allowedTags.includes(item.tag)) {
     177            continue;
     178        }
     179
     180        if (item.children && item.children.length > 0) {
     181            let elem = listToDOM(item.children, item.tag);
     182            wrapper.appendChild(elem);
     183            continue;
     184        }
     185
     186        let elem = document.createElement(item.tag);
     187        elem.innerText = item.text;
     188        wrapper.appendChild(elem);
     189    }
     190
     191    return wrapper;
     192}
     193
     194function markdownToHtml(markdown) {
     195    let lines = markdown.split("\n");
     196    let elements = [];
     197    for (let i = 0; i < lines.length; i++) {
     198        // Check beginning of lines for markdown syntax
     199        // Trim because list might be indented, TODO: different list levels
     200        text = lines[i].trim();
     201        if (text.startsWith("- ") || text.startsWith("* ")) {
     202            // List
     203            let ul = { tag: "ul", text: "", children: [] };
     204            while (i < lines.length && (lines[i].trim().startsWith("- ") || lines[i].trim().startsWith("* "))) {
     205                ul.children.push(annotate(lines[i].trim().substring(2), "li"));
     206                i++;
     207            }
     208            // Go back one line since the for loop will increment i again
     209            i--;
     210            elements.push(ul);
     211            continue;
     212        }
     213
     214        // Headings
     215        if (text.match(/^#{1,6} /)) {
     216            let level = text.match(/^#{1,6}/)[0].length;
     217            elements.push(annotate(lines[i].substring(level + 1), "h" + level));
     218            continue;
     219        }
     220
     221        elements.push(annotate(lines[i]));
     222    }
     223    return listToDOM(elements);
     224}
     225
     226function annotate(markdown, wrapperTag="p") {
     227    // Bold **text**
     228    let parts = markdown.split("**");
     229    let elements = [];
     230    for (let i = 0; i < parts.length; i++) {
     231        if (i % 2 == 1 && i < parts.length - 1) {
     232            if (parts[i].length == 0) {
     233                continue;
     234            }
     235            elements.push({ tag: "strong", text: parts[i], children: [] });
     236        } else {
     237            if (parts[i].length == 0) {
     238                continue;
     239            }
     240            elements.push({ tag: "span", text: parts[i], children: [] });
     241        }
     242    }
     243
     244    // Italic *text*
     245    for (let i = 0; i < elements.length; i++) {
     246        let child = elements[i];
     247        let text = child.text;
     248        let parts = text.split("*");
     249        if (parts.length == 1) {
     250            continue;
     251        }
     252
     253        child.text = "";
     254        for (let j = 0; j < parts.length; j++) {
     255            if (j % 2 == 1 && j < parts.length - 1) {
     256                if (parts[j].length == 0) {
     257                    continue;
     258                }
     259                child.children.push({ tag: "em", text: parts[j], children: [] });
     260            } else {
     261                if (parts[j].length == 0) {
     262                    continue;
     263                }
     264                child.children.push({ tag: "span", text: parts[j], children: [] });
     265            }
     266        }
     267    }
     268
     269    return { tag: wrapperTag, text: "", children: elements };
     270}
     271
    163272
    164273function startLoadingAnimation(node) {
  • chating/tags/1.2.0/src/popup-chatbot-block/view.js

    r3324369 r3378010  
    139139        try {
    140140            let data = e.data;
     141            message = JSON.parse(data).message;
    141142
    142143            if (!botMessage.innerText) {
     
    144145            }
    145146
    146             botString += data;
    147             botMessage.innerHTML = botString;
     147            if (message.length == 0) {
     148                message = "\n";
     149            }
     150
     151            botString += message;
     152            botMessage.innerHTML = markdownToHtml(botString).innerHTML;
    148153            history.scrollTop = history.scrollHeight;
    149         } catch {
     154        } catch(error) {
    150155            if (e.data == "[DONE]") {
    151156                eventSource.close();
     
    174179
    175180
     181function listToDOM(list, wrapperTag="div") {
     182    let allowedTags = ["span", "li", "ul", "p", "strong", "em", "h1", "h2", "h3", "h4", "h5", "h6"];
     183    if (!allowedTags.includes(wrapperTag)) {
     184        wrapperTag = "div";
     185    }
     186    let wrapper = document.createElement(wrapperTag);
     187
     188    for (let item of list) {
     189        if (!allowedTags.includes(item.tag)) {
     190            continue;
     191        }
     192
     193        if (item.children && item.children.length > 0) {
     194            let elem = listToDOM(item.children, item.tag);
     195            wrapper.appendChild(elem);
     196            continue;
     197        }
     198
     199        let elem = document.createElement(item.tag);
     200        elem.innerText = item.text;
     201        wrapper.appendChild(elem);
     202    }
     203
     204    return wrapper;
     205}
     206
     207function markdownToHtml(markdown) {
     208    let lines = markdown.split("\n");
     209    let elements = [];
     210    for (let i = 0; i < lines.length; i++) {
     211        // Check beginning of lines for markdown syntax
     212        // Trim because list might be indented, TODO: different list levels
     213        text = lines[i].trim();
     214        if (text.startsWith("- ") || text.startsWith("* ")) {
     215            // List
     216            let ul = { tag: "ul", text: "", children: [] };
     217            while (i < lines.length && (lines[i].trim().startsWith("- ") || lines[i].trim().startsWith("* "))) {
     218                ul.children.push(annotate(lines[i].trim().substring(2), "li"));
     219                i++;
     220            }
     221            // Go back one line since the for loop will increment i again
     222            i--;
     223            elements.push(ul);
     224            continue;
     225        }
     226
     227        // Headings
     228        if (text.match(/^#{1,6} /)) {
     229            let level = text.match(/^#{1,6}/)[0].length;
     230            elements.push(annotate(lines[i].substring(level + 1), "h" + level));
     231            continue;
     232        }
     233
     234        elements.push(annotate(lines[i]));
     235    }
     236    return listToDOM(elements);
     237}
     238
     239function annotate(markdown, wrapperTag="p") {
     240    // Bold **text**
     241    let parts = markdown.split("**");
     242    let elements = [];
     243    for (let i = 0; i < parts.length; i++) {
     244        if (i % 2 == 1 && i < parts.length - 1) {
     245            if (parts[i].length == 0) {
     246                continue;
     247            }
     248            elements.push({ tag: "strong", text: parts[i], children: [] });
     249        } else {
     250            if (parts[i].length == 0) {
     251                continue;
     252            }
     253            elements.push({ tag: "span", text: parts[i], children: [] });
     254        }
     255    }
     256
     257    // Italic *text*
     258    for (let i = 0; i < elements.length; i++) {
     259        let child = elements[i];
     260        let text = child.text;
     261        let parts = text.split("*");
     262        if (parts.length == 1) {
     263            continue;
     264        }
     265
     266        child.text = "";
     267        for (let j = 0; j < parts.length; j++) {
     268            if (j % 2 == 1 && j < parts.length - 1) {
     269                if (parts[j].length == 0) {
     270                    continue;
     271                }
     272                child.children.push({ tag: "em", text: parts[j], children: [] });
     273            } else {
     274                if (parts[j].length == 0) {
     275                    continue;
     276                }
     277                child.children.push({ tag: "span", text: parts[j], children: [] });
     278            }
     279        }
     280    }
     281
     282    return { tag: wrapperTag, text: "", children: elements };
     283}
     284
     285
    176286function startLoadingAnimation(node) {
    177287    node.classList.add("loading");
  • chating/trunk/backend/rest-api.php

    r3324314 r3378010  
    405405                        foreach ($content["text"] as $text) {
    406406                            if (is_string($text)) {
    407                                 echo "data: " . esc_html($text);
     407                                $data = array("message" => esc_html($text));
     408                                echo "data: " . json_encode($data);
    408409                                flush();
    409410                                continue;
    410411                            }
    411412                            if (array_key_exists("value", $text) && is_string($text["value"])) {
    412                                 echo "data: " . esc_html($text["value"]);
     413                                $data = array("message" => esc_html($text["value"]));
     414                                echo "data: " . json_encode($data);
    413415                                flush();
    414416                            }
  • chating/trunk/build/inline-chatbot-block/index.asset.php

    r3324369 r3378010  
    1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '0397c213f70599745e0b');
     1<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '57181958f49fb4c3b345');
  • chating/trunk/build/inline-chatbot-block/index.js

    r3324369 r3378010  
    1 (()=>{"use strict";var e,n={13:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,height:g,startMessage:p,placeholder:b,suggestions:x,assistant:v}=e,[j,C]=(0,r.useState)([]);return(0,r.useEffect)((()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then((e=>{if(!e.ok)throw new Error("Response not ok");return e.json()})).then((e=>{C([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")})).catch((e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")}))}),[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:g},children:[p.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:p}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:b,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")}]})})}),(0,s.jsx)(t.InspectorControls,{group:"dimensions",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(o.PanelBody,{title:"Höhe",children:(0,s.jsx)(o.RangeControl,{value:g,onChange:e=>{var n;return l({height:null!==(n=parseInt(e))&&void 0!==n?n:0})},min:50,max:2e3})})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:v,options:j.map((e=>({label:e.name,value:e.id}))),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:p,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:b,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every((e=>o.O[e](t[i])))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={267:0,555:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some((n=>0!==e[n]))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[555],(()=>o(13)));r=o.O(r)})();
     1(()=>{"use strict";var e,n={13:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,height:g,startMessage:p,placeholder:b,suggestions:x,assistant:v}=e,[j,C]=(0,r.useState)([]);return(0,r.useEffect)(()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then(e=>{if(!e.ok)throw new Error("Response not ok");return e.json()}).then(e=>{C([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")}).catch(e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")})},[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:g},children:[p.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:p}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:b,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")}]})})}),(0,s.jsx)(t.InspectorControls,{group:"dimensions",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(o.PanelBody,{title:"Höhe",children:(0,s.jsx)(o.RangeControl,{value:g,onChange:e=>{var n;return l({height:null!==(n=parseInt(e))&&void 0!==n?n:0})},min:50,max:2e3})})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:v,options:j.map(e=>({label:e.name,value:e.id})),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:p,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:b,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every(e=>o.O[e](t[i]))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={267:0,555:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some(n=>0!==e[n])){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[555],()=>o(13));r=o.O(r)})();
  • chating/trunk/build/inline-chatbot-block/style-index-rtl.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
     1#chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
  • chating/trunk/build/inline-chatbot-block/style-index.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
     1#chatbot{display:flex;flex-direction:column;position:relative;scroll-behavior:smooth}#chatbot #chat-history{overflow-y:scroll;padding-bottom:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}
  • chating/trunk/build/popup-chatbot-block/index.asset.php

    r3324369 r3378010  
    1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '77b9aeb2dd9d8b531633');
     1<?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '47ae53747c3f10760c99');
  • chating/trunk/build/popup-chatbot-block/index.js

    r3324369 r3378010  
    1 (()=>{"use strict";var e,n={430:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/popup-chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,buttonColor:g,buttonBackground:p,startMessage:b,placeholder:v,suggestions:x,assistant:C}=e,[j,w]=(0,r.useState)([]);return(0,r.useEffect)((()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then((e=>{if(!e.ok)throw new Error("Response not ok");return e.json()})).then((e=>{w([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")})).catch((e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")}))}),[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{class:"popup",children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:400},children:[b.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:b}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:v,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)("button",{type:"button",id:"open-dialog",disabled:!0,style:{color:g,background:p}})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")},{value:g,onChange:e=>l({buttonColor:e}),label:(0,n.__)("Vordergrund Button zum Öffnen")},{value:p,onChange:e=>l({buttonBackground:e}),label:(0,n.__)("Hintergrund Button zum Öffnen")}]})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:C,options:j.map((e=>({label:e.name,value:e.id}))),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:b,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:v,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every((e=>o.O[e](t[i])))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={24:0,752:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some((n=>0!==e[n]))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[752],(()=>o(430)));r=o.O(r)})();
     1(()=>{"use strict";var e,n={430:()=>{const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,o=window.wp.components,r=window.React,s=window.ReactJSXRuntime,l=JSON.parse('{"UU":"chating/popup-chatbot-block"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const{userColor:a,botColor:i,errorColor:c,userBackground:d,botBackground:h,errorBackground:u,buttonColor:g,buttonBackground:p,startMessage:b,placeholder:v,suggestions:x,assistant:C}=e,[j,w]=(0,r.useState)([]);return(0,r.useEffect)(()=>{fetch(wpApiSettings.root+"chating/v1/list_assistants",{method:"GET",headers:{"X-WP-Nonce":wpApiSettings.nonce}}).then(e=>{if(!e.ok)throw new Error("Response not ok");return e.json()}).then(e=>{w([{name:"Kein Assistant gewählt",id:""},...e.assistants]);let n=document.getElementById("chating-loading");n&&(n.style.display="none")}).catch(e=>{console.error(e);let n=document.getElementById("chating-loading");n&&(n.innerHTML="Fehler beim Laden, checke deinen API Schlüssel oder versuche es später noch einmal")})},[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{id:"chatbot",...(0,t.useBlockProps)(),children:[(0,s.jsxs)("div",{class:"popup",children:[(0,s.jsxs)("div",{id:"chat-history",style:{height:400},children:[b.length>0&&(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h,whiteSpace:"pre-line"},children:b}),(0,s.jsx)("p",{class:"user-message",style:{color:a,background:d},children:"So sieht eine Nutzernachricht aus."}),(0,s.jsx)("p",{class:"bot-response",style:{color:i,background:h},children:"Und so sieht es aus, wenn der Chatbot antwortet."}),(0,s.jsx)("p",{class:"bot-error",style:{color:c,background:u},children:"So sieht eine Fehlernachricht aus."})]}),(0,s.jsxs)("div",{class:"input-row",children:[(0,s.jsx)("input",{type:"text",id:"chat-input",placeholder:v,disabled:!0}),(0,s.jsx)("button",{type:"button",id:"chat-send",disabled:!0,style:{color:a,background:d,border:"1px solid",borderColor:d},children:(0,s.jsx)("span",{class:"dashicons dashicons-arrow-up-alt"})})]})]}),(0,s.jsx)("button",{type:"button",id:"open-dialog",disabled:!0,style:{color:g,background:p}})]}),(0,s.jsx)(t.InspectorControls,{group:"color",children:(0,s.jsx)("div",{style:{gridColumnStart:1,gridColumnEnd:-1},children:(0,s.jsx)(t.PanelColorSettings,{colorSettings:[{value:a,onChange:e=>l({userColor:e}),label:(0,n.__)("Nutzernachrichten")},{value:d,onChange:e=>l({userBackground:e}),label:(0,n.__)("Nutzernachrichten Hintergrund")},{value:i,onChange:e=>l({botColor:e}),label:(0,n.__)("Botnachrichten")},{value:h,onChange:e=>l({botBackground:e}),label:(0,n.__)("Botnachrichten Hintergrund")},{value:c,onChange:e=>l({errorColor:e}),label:(0,n.__)("Fehlernachrichten")},{value:u,onChange:e=>l({errorBackground:e}),label:(0,n.__)("Fehlernachrichten Hintergrund")},{value:g,onChange:e=>l({buttonColor:e}),label:(0,n.__)("Vordergrund Button zum Öffnen")},{value:p,onChange:e=>l({buttonBackground:e}),label:(0,n.__)("Hintergrund Button zum Öffnen")}]})})}),(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:"Assistant",children:[(0,s.jsxs)("div",{id:"chating-loading",children:[(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"}),(0,s.jsx)("div",{class:"loading-dot"})]}),(0,s.jsx)(o.SelectControl,{label:"Assistant wählen",value:C,options:j.map(e=>({label:e.name,value:e.id})),onChange:e=>l({assistant:e})})]}),(0,s.jsxs)(o.PanelBody,{title:"Startnachricht",children:[(0,s.jsx)("p",{children:"Du kannst hier eine Nachricht eingeben, mit der der Chatbot die Konversation beginnt"}),(0,s.jsx)(o.TextareaControl,{value:b,onChange:e=>l({startMessage:e})})]}),(0,s.jsx)(o.PanelBody,{title:"Platzhalter der Eingabe",children:(0,s.jsx)(o.TextControl,{value:v,onChange:e=>l({placeholder:e})})}),(0,s.jsxs)(o.PanelBody,{title:"Vorschläge",children:[(0,s.jsx)("p",{children:"Lege bis zu drei Vorschläge fest, die zum Start einer Konversation angezeigt werden."}),(0,s.jsx)(o.TextControl,{value:x[0],onChange:e=>l({suggestions:[null!=e?e:"",...x.slice(1)]})}),(0,s.jsx)(o.TextControl,{value:x[1],onChange:e=>l({suggestions:[x[0],null!=e?e:"",x[2]]})}),(0,s.jsx)(o.TextControl,{value:x[2],onChange:e=>l({suggestions:[...x.slice(0,2),null!=e?e:""]})})]})]})]})}})}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var s=t[e]={exports:{}};return n[e](s,s.exports,o),s.exports}o.m=n,e=[],o.O=(n,t,r,s)=>{if(!t){var l=1/0;for(d=0;d<e.length;d++){for(var[t,r,s]=e[d],a=!0,i=0;i<t.length;i++)(!1&s||l>=s)&&Object.keys(o.O).every(e=>o.O[e](t[i]))?t.splice(i--,1):(a=!1,s<l&&(l=s));if(a){e.splice(d--,1);var c=r();void 0!==c&&(n=c)}}return n}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[t,r,s]},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),(()=>{var e={24:0,752:0};o.O.j=n=>0===e[n];var n=(n,t)=>{var r,s,[l,a,i]=t,c=0;if(l.some(n=>0!==e[n])){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(i)var d=i(o)}for(n&&n(t);c<l.length;c++)s=l[c],o.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return o.O(d)},t=globalThis.webpackChunkchating=globalThis.webpackChunkchating||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))})();var r=o.O(void 0,[752],()=>o(430));r=o.O(r)})();
  • chating/trunk/build/popup-chatbot-block/style-index-rtl.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;left:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;left:10px;top:10px;width:40px;z-index:10}
     1#chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;left:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;left:10px;top:10px;width:40px;z-index:10}
  • chating/trunk/build/popup-chatbot-block/style-index.css

    r3354699 r3378010  
    1 #chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;right:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;right:10px;top:10px;width:40px;z-index:10}
     1#chatbot{display:flex;flex-direction:column;height:100%;position:relative;scroll-behavior:smooth}#chatbot #chat-history{flex-grow:100;overflow-y:scroll;padding-bottom:50px;padding-top:50px}#chatbot #chat-history:has(.suggestions){align-content:end}#chatbot .bot-error,#chatbot .bot-response,#chatbot .user-message{border-radius:20px;clear:both;margin-bottom:8px;max-width:80%;padding:8px 12px;word-wrap:break-word}#chatbot .bot-error p,#chatbot .bot-response p,#chatbot .user-message p{margin:0}#chatbot .user-message{border-radius:20px 20px 5px 20px;float:right;text-align:right}#chatbot .bot-error,#chatbot .bot-response{border-radius:20px 20px 20px 5px;float:left;text-align:left}#chatbot .suggestions{align-items:stretch;display:flex;gap:16px;justify-content:center}#chatbot .suggestions p{border-radius:8px;flex:1;max-width:200px;padding:16px;transition:transform .2s;transition-timing-function:ease}#chatbot .suggestions p:hover{transform:translateY(-10px)}#chatbot .input-row{align-items:center;display:flex;gap:10px;justify-content:center}#chatbot .input-row button{align-items:center;aspect-ratio:1;border-radius:50%;display:flex;height:40px;justify-content:center;transition:all .2s}#chatbot .input-row #chat-input,#chatbot .input-row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}#chatbot .input-row #chat-input{border:1px solid #ccc;border-radius:20px;box-sizing:border-box;font-size:1em;padding:8px 12px;width:100%}@media only print{#chatbot #chat-history{overflow:visible}#chatbot .input-row{display:none}}@keyframes load{0%{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}to{transform:translateY(0)}}#chatbot .loading{align-items:center;display:flex;gap:5px;justify-content:center}#chatbot .loading-dot{border-radius:50%;height:10px;width:10px}#chatbot .loading-dot:first-of-type{animation:load 1.7s ease-in-out 0s infinite forwards}#chatbot .loading-dot:nth-of-type(2){animation:load 1.7s ease-in-out .2s infinite forwards}#chatbot .loading-dot:nth-of-type(3){animation:load 1.7s ease-in-out .4s infinite forwards}dialog{border:none;border-radius:20px;box-shadow:0 5px 100px 10px rgba(0,0,0,.2);height:400px;margin:auto;max-height:80vh;max-width:80vw;position:fixed;top:50%;transform:translateY(-50%);width:800px}.chatbot-button{bottom:15px;gap:5px;min-height:60px;min-width:60px;position:fixed;right:15px;transition:all .2s;z-index:99999}.chatbot-button,.close-dialog{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:50%;display:flex;justify-content:center}.close-dialog{aspect-ratio:1;background-color:#000;color:#fff;height:40px;position:absolute;right:10px;top:10px;width:40px;z-index:10}
  • chating/trunk/chating.php

    r3354709 r3378010  
    77 * Requires at least: 6.6
    88 * Requires PHP:      7.2
    9  * Version:           1.1.1
     9 * Version:           1.2.0
    1010 * Author:            deepIng
    1111 * License:           GPL-2.0-or-later
  • chating/trunk/readme.txt

    r3354704 r3378010  
    55Requires at least: 6.6
    66Tested up to: 6.8
    7 Stable tag: 1.1.1
     7Stable tag: 1.2.0
    88Requires PHP: 7.2
    99License: GPLv2 or later
     
    4444== Changelog ==
    4545
     46= 1.2 =
     47* Added support for markdown styles in chatbot answers
     48
    4649= 1.1.1 =
    4750* Fixed settings for width of inline block
  • chating/trunk/src/inline-chatbot-block/view.js

    r3324369 r3378010  
    127127        try {
    128128            let data = e.data;
     129            message = JSON.parse(data).message;
    129130
    130131            if (!botMessage.innerText) {
     
    132133            }
    133134
    134             botString += data;
    135             botMessage.innerHTML = botString;
     135            if (message.length == 0) {
     136                message = "\n";
     137            }
     138
     139            botString += message;
     140            botMessage.innerHTML = markdownToHtml(botString).innerHTML;
    136141            history.scrollTop = history.scrollHeight;
    137         } catch {
     142        } catch(error) {
    138143            if (e.data == "[DONE]") {
    139144                eventSource.close();
     
    161166}
    162167
     168function listToDOM(list, wrapperTag="div") {
     169    let allowedTags = ["span", "li", "ul", "p", "strong", "em", "h1", "h2", "h3", "h4", "h5", "h6"];
     170    if (!allowedTags.includes(wrapperTag)) {
     171        wrapperTag = "div";
     172    }
     173    let wrapper = document.createElement(wrapperTag);
     174
     175    for (let item of list) {
     176        if (!allowedTags.includes(item.tag)) {
     177            continue;
     178        }
     179
     180        if (item.children && item.children.length > 0) {
     181            let elem = listToDOM(item.children, item.tag);
     182            wrapper.appendChild(elem);
     183            continue;
     184        }
     185
     186        let elem = document.createElement(item.tag);
     187        elem.innerText = item.text;
     188        wrapper.appendChild(elem);
     189    }
     190
     191    return wrapper;
     192}
     193
     194function markdownToHtml(markdown) {
     195    let lines = markdown.split("\n");
     196    let elements = [];
     197    for (let i = 0; i < lines.length; i++) {
     198        // Check beginning of lines for markdown syntax
     199        // Trim because list might be indented, TODO: different list levels
     200        text = lines[i].trim();
     201        if (text.startsWith("- ") || text.startsWith("* ")) {
     202            // List
     203            let ul = { tag: "ul", text: "", children: [] };
     204            while (i < lines.length && (lines[i].trim().startsWith("- ") || lines[i].trim().startsWith("* "))) {
     205                ul.children.push(annotate(lines[i].trim().substring(2), "li"));
     206                i++;
     207            }
     208            // Go back one line since the for loop will increment i again
     209            i--;
     210            elements.push(ul);
     211            continue;
     212        }
     213
     214        // Headings
     215        if (text.match(/^#{1,6} /)) {
     216            let level = text.match(/^#{1,6}/)[0].length;
     217            elements.push(annotate(lines[i].substring(level + 1), "h" + level));
     218            continue;
     219        }
     220
     221        elements.push(annotate(lines[i]));
     222    }
     223    return listToDOM(elements);
     224}
     225
     226function annotate(markdown, wrapperTag="p") {
     227    // Bold **text**
     228    let parts = markdown.split("**");
     229    let elements = [];
     230    for (let i = 0; i < parts.length; i++) {
     231        if (i % 2 == 1 && i < parts.length - 1) {
     232            if (parts[i].length == 0) {
     233                continue;
     234            }
     235            elements.push({ tag: "strong", text: parts[i], children: [] });
     236        } else {
     237            if (parts[i].length == 0) {
     238                continue;
     239            }
     240            elements.push({ tag: "span", text: parts[i], children: [] });
     241        }
     242    }
     243
     244    // Italic *text*
     245    for (let i = 0; i < elements.length; i++) {
     246        let child = elements[i];
     247        let text = child.text;
     248        let parts = text.split("*");
     249        if (parts.length == 1) {
     250            continue;
     251        }
     252
     253        child.text = "";
     254        for (let j = 0; j < parts.length; j++) {
     255            if (j % 2 == 1 && j < parts.length - 1) {
     256                if (parts[j].length == 0) {
     257                    continue;
     258                }
     259                child.children.push({ tag: "em", text: parts[j], children: [] });
     260            } else {
     261                if (parts[j].length == 0) {
     262                    continue;
     263                }
     264                child.children.push({ tag: "span", text: parts[j], children: [] });
     265            }
     266        }
     267    }
     268
     269    return { tag: wrapperTag, text: "", children: elements };
     270}
     271
    163272
    164273function startLoadingAnimation(node) {
  • chating/trunk/src/popup-chatbot-block/view.js

    r3324369 r3378010  
    139139        try {
    140140            let data = e.data;
     141            message = JSON.parse(data).message;
    141142
    142143            if (!botMessage.innerText) {
     
    144145            }
    145146
    146             botString += data;
    147             botMessage.innerHTML = botString;
     147            if (message.length == 0) {
     148                message = "\n";
     149            }
     150
     151            botString += message;
     152            botMessage.innerHTML = markdownToHtml(botString).innerHTML;
    148153            history.scrollTop = history.scrollHeight;
    149         } catch {
     154        } catch(error) {
    150155            if (e.data == "[DONE]") {
    151156                eventSource.close();
     
    174179
    175180
     181function listToDOM(list, wrapperTag="div") {
     182    let allowedTags = ["span", "li", "ul", "p", "strong", "em", "h1", "h2", "h3", "h4", "h5", "h6"];
     183    if (!allowedTags.includes(wrapperTag)) {
     184        wrapperTag = "div";
     185    }
     186    let wrapper = document.createElement(wrapperTag);
     187
     188    for (let item of list) {
     189        if (!allowedTags.includes(item.tag)) {
     190            continue;
     191        }
     192
     193        if (item.children && item.children.length > 0) {
     194            let elem = listToDOM(item.children, item.tag);
     195            wrapper.appendChild(elem);
     196            continue;
     197        }
     198
     199        let elem = document.createElement(item.tag);
     200        elem.innerText = item.text;
     201        wrapper.appendChild(elem);
     202    }
     203
     204    return wrapper;
     205}
     206
     207function markdownToHtml(markdown) {
     208    let lines = markdown.split("\n");
     209    let elements = [];
     210    for (let i = 0; i < lines.length; i++) {
     211        // Check beginning of lines for markdown syntax
     212        // Trim because list might be indented, TODO: different list levels
     213        text = lines[i].trim();
     214        if (text.startsWith("- ") || text.startsWith("* ")) {
     215            // List
     216            let ul = { tag: "ul", text: "", children: [] };
     217            while (i < lines.length && (lines[i].trim().startsWith("- ") || lines[i].trim().startsWith("* "))) {
     218                ul.children.push(annotate(lines[i].trim().substring(2), "li"));
     219                i++;
     220            }
     221            // Go back one line since the for loop will increment i again
     222            i--;
     223            elements.push(ul);
     224            continue;
     225        }
     226
     227        // Headings
     228        if (text.match(/^#{1,6} /)) {
     229            let level = text.match(/^#{1,6}/)[0].length;
     230            elements.push(annotate(lines[i].substring(level + 1), "h" + level));
     231            continue;
     232        }
     233
     234        elements.push(annotate(lines[i]));
     235    }
     236    return listToDOM(elements);
     237}
     238
     239function annotate(markdown, wrapperTag="p") {
     240    // Bold **text**
     241    let parts = markdown.split("**");
     242    let elements = [];
     243    for (let i = 0; i < parts.length; i++) {
     244        if (i % 2 == 1 && i < parts.length - 1) {
     245            if (parts[i].length == 0) {
     246                continue;
     247            }
     248            elements.push({ tag: "strong", text: parts[i], children: [] });
     249        } else {
     250            if (parts[i].length == 0) {
     251                continue;
     252            }
     253            elements.push({ tag: "span", text: parts[i], children: [] });
     254        }
     255    }
     256
     257    // Italic *text*
     258    for (let i = 0; i < elements.length; i++) {
     259        let child = elements[i];
     260        let text = child.text;
     261        let parts = text.split("*");
     262        if (parts.length == 1) {
     263            continue;
     264        }
     265
     266        child.text = "";
     267        for (let j = 0; j < parts.length; j++) {
     268            if (j % 2 == 1 && j < parts.length - 1) {
     269                if (parts[j].length == 0) {
     270                    continue;
     271                }
     272                child.children.push({ tag: "em", text: parts[j], children: [] });
     273            } else {
     274                if (parts[j].length == 0) {
     275                    continue;
     276                }
     277                child.children.push({ tag: "span", text: parts[j], children: [] });
     278            }
     279        }
     280    }
     281
     282    return { tag: wrapperTag, text: "", children: elements };
     283}
     284
     285
    176286function startLoadingAnimation(node) {
    177287    node.classList.add("loading");
Note: See TracChangeset for help on using the changeset viewer.