Changeset 3378010
- Timestamp:
- 10/14/2025 10:07:49 AM (6 months ago)
- Location:
- chating
- Files:
-
- 1 added
- 10 deleted
- 20 edited
- 15 copied
-
tags/1.2.0 (added)
-
tags/1.2.0/backend (copied) (copied from chating/trunk/backend)
-
tags/1.2.0/backend/rest-api.php (modified) (1 diff)
-
tags/1.2.0/build (copied) (copied from chating/trunk/build)
-
tags/1.2.0/build/block.json (deleted)
-
tags/1.2.0/build/index-rtl.css (deleted)
-
tags/1.2.0/build/index.asset.php (deleted)
-
tags/1.2.0/build/index.css (deleted)
-
tags/1.2.0/build/index.js (deleted)
-
tags/1.2.0/build/inline-chatbot-block (copied) (copied from chating/trunk/build/inline-chatbot-block)
-
tags/1.2.0/build/inline-chatbot-block/index.asset.php (modified) (1 diff)
-
tags/1.2.0/build/inline-chatbot-block/index.js (modified) (1 diff)
-
tags/1.2.0/build/inline-chatbot-block/render.php (copied) (copied from chating/trunk/build/inline-chatbot-block/render.php)
-
tags/1.2.0/build/inline-chatbot-block/style-index-rtl.css (copied) (copied from chating/trunk/build/inline-chatbot-block/style-index-rtl.css) (1 diff)
-
tags/1.2.0/build/inline-chatbot-block/style-index.css (copied) (copied from chating/trunk/build/inline-chatbot-block/style-index.css) (1 diff)
-
tags/1.2.0/build/popup-chatbot-block (copied) (copied from chating/trunk/build/popup-chatbot-block)
-
tags/1.2.0/build/popup-chatbot-block/index.asset.php (modified) (1 diff)
-
tags/1.2.0/build/popup-chatbot-block/index.js (modified) (1 diff)
-
tags/1.2.0/build/popup-chatbot-block/render.php (copied) (copied from chating/trunk/build/popup-chatbot-block/render.php)
-
tags/1.2.0/build/popup-chatbot-block/style-index-rtl.css (copied) (copied from chating/trunk/build/popup-chatbot-block/style-index-rtl.css) (1 diff)
-
tags/1.2.0/build/popup-chatbot-block/style-index.css (copied) (copied from chating/trunk/build/popup-chatbot-block/style-index.css) (1 diff)
-
tags/1.2.0/build/render.php (deleted)
-
tags/1.2.0/build/style-index-rtl.css (deleted)
-
tags/1.2.0/build/style-index.css (deleted)
-
tags/1.2.0/build/view.asset.php (deleted)
-
tags/1.2.0/build/view.js (deleted)
-
tags/1.2.0/chating.php (copied) (copied from chating/trunk/chating.php) (1 diff)
-
tags/1.2.0/license.md (copied) (copied from chating/trunk/license.md)
-
tags/1.2.0/readme.txt (copied) (copied from chating/trunk/readme.txt) (2 diffs)
-
tags/1.2.0/settings (copied) (copied from chating/trunk/settings)
-
tags/1.2.0/src (copied) (copied from chating/trunk/src)
-
tags/1.2.0/src/inline-chatbot-block/view.js (modified) (3 diffs)
-
tags/1.2.0/src/popup-chatbot-block/view.js (modified) (3 diffs)
-
trunk/backend/rest-api.php (modified) (1 diff)
-
trunk/build/inline-chatbot-block/index.asset.php (modified) (1 diff)
-
trunk/build/inline-chatbot-block/index.js (modified) (1 diff)
-
trunk/build/inline-chatbot-block/style-index-rtl.css (modified) (1 diff)
-
trunk/build/inline-chatbot-block/style-index.css (modified) (1 diff)
-
trunk/build/popup-chatbot-block/index.asset.php (modified) (1 diff)
-
trunk/build/popup-chatbot-block/index.js (modified) (1 diff)
-
trunk/build/popup-chatbot-block/style-index-rtl.css (modified) (1 diff)
-
trunk/build/popup-chatbot-block/style-index.css (modified) (1 diff)
-
trunk/chating.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/src/inline-chatbot-block/view.js (modified) (3 diffs)
-
trunk/src/popup-chatbot-block/view.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
chating/tags/1.2.0/backend/rest-api.php
r3324314 r3378010 405 405 foreach ($content["text"] as $text) { 406 406 if (is_string($text)) { 407 echo "data: " . esc_html($text); 407 $data = array("message" => esc_html($text)); 408 echo "data: " . json_encode($data); 408 409 flush(); 409 410 continue; 410 411 } 411 412 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); 413 415 flush(); 414 416 } -
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 7 7 * Requires at least: 6.6 8 8 * Requires PHP: 7.2 9 * Version: 1. 1.19 * Version: 1.2.0 10 10 * Author: deepIng 11 11 * License: GPL-2.0-or-later -
chating/tags/1.2.0/readme.txt
r3354704 r3378010 5 5 Requires at least: 6.6 6 6 Tested up to: 6.8 7 Stable tag: 1. 1.17 Stable tag: 1.2.0 8 8 Requires PHP: 7.2 9 9 License: GPLv2 or later … … 44 44 == Changelog == 45 45 46 = 1.2 = 47 * Added support for markdown styles in chatbot answers 48 46 49 = 1.1.1 = 47 50 * Fixed settings for width of inline block -
chating/tags/1.2.0/src/inline-chatbot-block/view.js
r3324369 r3378010 127 127 try { 128 128 let data = e.data; 129 message = JSON.parse(data).message; 129 130 130 131 if (!botMessage.innerText) { … … 132 133 } 133 134 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; 136 141 history.scrollTop = history.scrollHeight; 137 } catch {142 } catch(error) { 138 143 if (e.data == "[DONE]") { 139 144 eventSource.close(); … … 161 166 } 162 167 168 function 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 194 function 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 226 function 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 163 272 164 273 function startLoadingAnimation(node) { -
chating/tags/1.2.0/src/popup-chatbot-block/view.js
r3324369 r3378010 139 139 try { 140 140 let data = e.data; 141 message = JSON.parse(data).message; 141 142 142 143 if (!botMessage.innerText) { … … 144 145 } 145 146 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; 148 153 history.scrollTop = history.scrollHeight; 149 } catch {154 } catch(error) { 150 155 if (e.data == "[DONE]") { 151 156 eventSource.close(); … … 174 179 175 180 181 function 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 207 function 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 239 function 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 176 286 function startLoadingAnimation(node) { 177 287 node.classList.add("loading"); -
chating/trunk/backend/rest-api.php
r3324314 r3378010 405 405 foreach ($content["text"] as $text) { 406 406 if (is_string($text)) { 407 echo "data: " . esc_html($text); 407 $data = array("message" => esc_html($text)); 408 echo "data: " . json_encode($data); 408 409 flush(); 409 410 continue; 410 411 } 411 412 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); 413 415 flush(); 414 416 } -
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 7 7 * Requires at least: 6.6 8 8 * Requires PHP: 7.2 9 * Version: 1. 1.19 * Version: 1.2.0 10 10 * Author: deepIng 11 11 * License: GPL-2.0-or-later -
chating/trunk/readme.txt
r3354704 r3378010 5 5 Requires at least: 6.6 6 6 Tested up to: 6.8 7 Stable tag: 1. 1.17 Stable tag: 1.2.0 8 8 Requires PHP: 7.2 9 9 License: GPLv2 or later … … 44 44 == Changelog == 45 45 46 = 1.2 = 47 * Added support for markdown styles in chatbot answers 48 46 49 = 1.1.1 = 47 50 * Fixed settings for width of inline block -
chating/trunk/src/inline-chatbot-block/view.js
r3324369 r3378010 127 127 try { 128 128 let data = e.data; 129 message = JSON.parse(data).message; 129 130 130 131 if (!botMessage.innerText) { … … 132 133 } 133 134 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; 136 141 history.scrollTop = history.scrollHeight; 137 } catch {142 } catch(error) { 138 143 if (e.data == "[DONE]") { 139 144 eventSource.close(); … … 161 166 } 162 167 168 function 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 194 function 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 226 function 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 163 272 164 273 function startLoadingAnimation(node) { -
chating/trunk/src/popup-chatbot-block/view.js
r3324369 r3378010 139 139 try { 140 140 let data = e.data; 141 message = JSON.parse(data).message; 141 142 142 143 if (!botMessage.innerText) { … … 144 145 } 145 146 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; 148 153 history.scrollTop = history.scrollHeight; 149 } catch {154 } catch(error) { 150 155 if (e.data == "[DONE]") { 151 156 eventSource.close(); … … 174 179 175 180 181 function 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 207 function 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 239 function 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 176 286 function startLoadingAnimation(node) { 177 287 node.classList.add("loading");
Note: See TracChangeset
for help on using the changeset viewer.