Changeset 3307254
- Timestamp:
- 06/05/2025 08:35:20 PM (9 months ago)
- Location:
- echoai
- Files:
-
- 158 added
- 18 deleted
- 7 edited
-
.claude (added)
-
.claude/settings.local.json (added)
-
echoai.zip (added)
-
tags/0.1.1/assets/screenshot-2.png (added)
-
tags/0.1.1/assets/screenshot-3.png (added)
-
tags/0.1.1/assets/screenshot-4.png (added)
-
tags/0.1.1/assets/screenshot-5.png (added)
-
tags/0.1.1/build/blocks/chat/index.js.map (deleted)
-
tags/0.1.1/echo-ai.php (deleted)
-
tags/0.1.1/echoai-admin (added)
-
tags/0.1.1/echoai-admin/.gitignore (added)
-
tags/0.1.1/echoai-admin/README.md (added)
-
tags/0.1.1/echoai-admin/dist (added)
-
tags/0.1.1/echoai-admin/dist/index.html (added)
-
tags/0.1.1/echoai-admin/dist/index.js (added)
-
tags/0.1.1/echoai-admin/dist/vite.svg (added)
-
tags/0.1.1/echoai-admin/eslint.config.js (added)
-
tags/0.1.1/echoai-admin/global.d.ts (added)
-
tags/0.1.1/echoai-admin/index.html (added)
-
tags/0.1.1/echoai-admin/package-lock.json (added)
-
tags/0.1.1/echoai-admin/package.json (added)
-
tags/0.1.1/echoai-admin/postcss.config.mjs (added)
-
tags/0.1.1/echoai-admin/public (added)
-
tags/0.1.1/echoai-admin/public/vite.svg (added)
-
tags/0.1.1/echoai-admin/src (added)
-
tags/0.1.1/echoai-admin/src/components (added)
-
tags/0.1.1/echoai-admin/src/components/SetupWelcome.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui (added)
-
tags/0.1.1/echoai-admin/src/components/ui/button.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui/checkbox.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui/form.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui/input.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui/label.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui/link.tsx (added)
-
tags/0.1.1/echoai-admin/src/components/ui/progress.tsx (added)
-
tags/0.1.1/echoai-admin/src/installer.tsx (added)
-
tags/0.1.1/echoai-admin/src/logo.svg (added)
-
tags/0.1.1/echoai-admin/src/main.tsx (added)
-
tags/0.1.1/echoai-admin/src/mini.tsx (added)
-
tags/0.1.1/echoai-admin/src/style.css (added)
-
tags/0.1.1/echoai-admin/src/utils.ts (added)
-
tags/0.1.1/echoai-admin/src/vite-env.d.ts (added)
-
tags/0.1.1/echoai-admin/tsconfig.app.json (added)
-
tags/0.1.1/echoai-admin/tsconfig.json (added)
-
tags/0.1.1/echoai-admin/tsconfig.node.json (added)
-
tags/0.1.1/echoai-admin/vite-env.d.ts (added)
-
tags/0.1.1/echoai-admin/vite.config.ts (added)
-
tags/0.1.1/echoai.php (added)
-
tags/0.1.1/installer (deleted)
-
tags/0.1.1/src/templates/page-setup-localhost.php (added)
-
tags/0.1.11/assets/screenshot-2.png (added)
-
tags/0.1.11/assets/screenshot-3.png (added)
-
tags/0.1.11/assets/screenshot-4.png (added)
-
tags/0.1.11/assets/screenshot-5.png (added)
-
tags/0.1.11/build/blocks/chat/index.js.map (deleted)
-
tags/0.1.11/echo-ai.php (deleted)
-
tags/0.1.11/echoai-admin (added)
-
tags/0.1.11/echoai-admin/.gitignore (added)
-
tags/0.1.11/echoai-admin/README.md (added)
-
tags/0.1.11/echoai-admin/dist (added)
-
tags/0.1.11/echoai-admin/dist/index.html (added)
-
tags/0.1.11/echoai-admin/dist/index.js (added)
-
tags/0.1.11/echoai-admin/dist/vite.svg (added)
-
tags/0.1.11/echoai-admin/eslint.config.js (added)
-
tags/0.1.11/echoai-admin/global.d.ts (added)
-
tags/0.1.11/echoai-admin/index.html (added)
-
tags/0.1.11/echoai-admin/package-lock.json (added)
-
tags/0.1.11/echoai-admin/package.json (added)
-
tags/0.1.11/echoai-admin/postcss.config.mjs (added)
-
tags/0.1.11/echoai-admin/public (added)
-
tags/0.1.11/echoai-admin/public/vite.svg (added)
-
tags/0.1.11/echoai-admin/src (added)
-
tags/0.1.11/echoai-admin/src/components (added)
-
tags/0.1.11/echoai-admin/src/components/SetupWelcome.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui (added)
-
tags/0.1.11/echoai-admin/src/components/ui/button.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui/checkbox.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui/form.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui/input.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui/label.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui/link.tsx (added)
-
tags/0.1.11/echoai-admin/src/components/ui/progress.tsx (added)
-
tags/0.1.11/echoai-admin/src/installer.tsx (added)
-
tags/0.1.11/echoai-admin/src/logo.svg (added)
-
tags/0.1.11/echoai-admin/src/main.tsx (added)
-
tags/0.1.11/echoai-admin/src/mini.tsx (added)
-
tags/0.1.11/echoai-admin/src/style.css (added)
-
tags/0.1.11/echoai-admin/src/utils.ts (added)
-
tags/0.1.11/echoai-admin/src/vite-env.d.ts (added)
-
tags/0.1.11/echoai-admin/tsconfig.app.json (added)
-
tags/0.1.11/echoai-admin/tsconfig.json (added)
-
tags/0.1.11/echoai-admin/tsconfig.node.json (added)
-
tags/0.1.11/echoai-admin/vite-env.d.ts (added)
-
tags/0.1.11/echoai-admin/vite.config.ts (added)
-
tags/0.1.11/installer (deleted)
-
tags/0.1.11/src/templates/page-setup-localhost.php (added)
-
tags/0.1.11/trunk/assets/screenshot-2.png (added)
-
tags/0.1.11/trunk/assets/screenshot-3.png (added)
-
tags/0.1.11/trunk/assets/screenshot-4.png (added)
-
tags/0.1.11/trunk/assets/screenshot-5.png (added)
-
tags/0.1.11/trunk/build/blocks/chat/index.js.map (deleted)
-
tags/0.1.11/trunk/echo-ai.php (deleted)
-
tags/0.1.11/trunk/installer (deleted)
-
tags/0.1.11/trunk/src/templates/page-setup-localhost.php (added)
-
tags/2.2.3 (added)
-
tags/2.2.3/assets (added)
-
tags/2.2.3/assets/banner-1544x500.jpg (added)
-
tags/2.2.3/assets/banner-772x250.jpg (added)
-
tags/2.2.3/assets/icon-128x128.png (added)
-
tags/2.2.3/assets/icon-256x256.png (added)
-
tags/2.2.3/assets/icon.svg (added)
-
tags/2.2.3/assets/screenshot-1.png (added)
-
tags/2.2.3/assets/screenshot-2.png (added)
-
tags/2.2.3/assets/screenshot-3.png (added)
-
tags/2.2.3/assets/screenshot-4.png (added)
-
tags/2.2.3/assets/screenshot-5.png (added)
-
tags/2.2.3/build (added)
-
tags/2.2.3/build/blocks (added)
-
tags/2.2.3/build/blocks/chat (added)
-
tags/2.2.3/build/blocks/chat/block.json (added)
-
tags/2.2.3/build/blocks/chat/index.asset.php (added)
-
tags/2.2.3/build/blocks/chat/index.js (added)
-
tags/2.2.3/echoai.php (added)
-
tags/2.2.3/images (added)
-
tags/2.2.3/images/icon.svg (added)
-
tags/2.2.3/images/logo.png (added)
-
tags/2.2.3/images/logo.svg (added)
-
tags/2.2.3/images/menu-icon.svg (added)
-
tags/2.2.3/languages (added)
-
tags/2.2.3/languages/echo-ai-de_DE.mo (added)
-
tags/2.2.3/languages/echo-ai-de_DE.po (added)
-
tags/2.2.3/languages/echo-ai-en_US.mo (added)
-
tags/2.2.3/languages/echo-ai-en_US.po (added)
-
tags/2.2.3/languages/echo-ai-hu_HU.mo (added)
-
tags/2.2.3/languages/echo-ai-hu_HU.po (added)
-
tags/2.2.3/languages/echo-ai.pot (added)
-
tags/2.2.3/lib (added)
-
tags/2.2.3/lib/admin-pages.php (added)
-
tags/2.2.3/lib/api.php (added)
-
tags/2.2.3/lib/blocks.php (added)
-
tags/2.2.3/lib/floating-button.php (added)
-
tags/2.2.3/lib/helpers.php (added)
-
tags/2.2.3/lib/shortcode.php (added)
-
tags/2.2.3/package.json (added)
-
tags/2.2.3/postcss.config.js (added)
-
tags/2.2.3/readme.txt (added)
-
tags/2.2.3/src (added)
-
tags/2.2.3/src/blocks (added)
-
tags/2.2.3/src/blocks/chat (added)
-
tags/2.2.3/src/blocks/chat/block.json (added)
-
tags/2.2.3/src/blocks/chat/edit.js (added)
-
tags/2.2.3/src/blocks/chat/index.js (added)
-
tags/2.2.3/src/js (added)
-
tags/2.2.3/src/js/admin-config.js (added)
-
tags/2.2.3/src/js/frontend.js (added)
-
tags/2.2.3/src/main.css (added)
-
tags/2.2.3/src/templates (added)
-
tags/2.2.3/src/templates/assistant-setup-form.php (added)
-
tags/2.2.3/src/templates/connection-form.php (added)
-
tags/2.2.3/src/templates/dashboard-content.php (added)
-
tags/2.2.3/src/templates/header.php (added)
-
tags/2.2.3/src/templates/page-config.php (added)
-
tags/2.2.3/src/templates/page-main.php (added)
-
tags/2.2.3/src/templates/page-network-error.php (added)
-
tags/2.2.3/src/templates/page-setup-localhost.php (added)
-
tags/2.2.3/src/templates/page-setup.php (added)
-
tags/2.2.3/stylesheet.css (added)
-
trunk/build/blocks/chat/index.asset.php (modified) (1 diff)
-
trunk/build/blocks/chat/index.js (modified) (1 diff)
-
trunk/build/blocks/chat/index.js.map (deleted)
-
trunk/echoai-admin (deleted)
-
trunk/echoai.php (modified) (1 diff)
-
trunk/lib/api.php (modified) (2 diffs)
-
trunk/lib/forms.php (deleted)
-
trunk/lib/helpers.php (modified) (4 diffs)
-
trunk/package-lock.json (deleted)
-
trunk/pnpm-lock.yaml (deleted)
-
trunk/readme.txt (modified) (5 diffs)
-
trunk/src/js/admin-settings.js (deleted)
-
trunk/src/templates/page-plan.php (deleted)
-
trunk/src/templates/page-settings.php (deleted)
-
trunk/stylesheet.css (modified) (9 diffs)
-
trunk/tailwind.config.js (deleted)
Legend:
- Unmodified
- Added
- Removed
-
echoai/trunk/build/blocks/chat/index.asset.php
r3303250 r3307254 1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => ' ef255670526f95e516e8');1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '82e7b6b6ad83155552a6'); -
echoai/trunk/build/blocks/chat/index.js
r3303250 r3307254 1 /******/ (() => { // webpackBootstrap 2 /******/ "use strict"; 3 /******/ var __webpack_modules__ = ({ 4 5 /***/ "./images/logo.svg": 6 /*!*************************!*\ 7 !*** ./images/logo.svg ***! 8 \*************************/ 9 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10 11 __webpack_require__.r(__webpack_exports__); 12 /* harmony export */ __webpack_require__.d(__webpack_exports__, { 13 /* harmony export */ ReactComponent: () => (/* binding */ SvgLogo), 14 /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 15 /* harmony export */ }); 16 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); 17 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 18 var _path, _path2, _path3, _path4, _path5, _path6; 19 function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } 20 21 var SvgLogo = function SvgLogo(props) { 22 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({ 23 xmlns: "http://www.w3.org/2000/svg", 24 width: 126, 25 height: 32, 26 fill: "none" 27 }, props), _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { 28 fill: "#BD4495", 29 fillRule: "evenodd", 30 d: "M14.738 29.71c8.139 0 14.737-6.65 14.737-14.855S22.877 0 14.738 0C6.598 0 0 6.65 0 14.855c0 2.066.418 4.033 1.174 5.82V32l6.845-3.92a14.6 14.6 0 0 0 6.719 1.63", 31 clipRule: "evenodd" 32 })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { 33 fill: "#fff", 34 d: "M13.12 14.376c1.296 0 2.45-1.617 2.45-2.895V9.277c0-1.607-1.336-2.916-2.975-2.916-1.425 0-2.618.984-2.907 2.293-1.782.28-3.144 1.799-3.144 3.615q0 .248.04.504a4.23 4.23 0 0 0-.81 2.493c0 .824.173 1.572.507 2.204.503-.877 1.336-1.558 2.253-1.745a.67.67 0 0 1 .788.52.67.67 0 0 1-.52.789c-.682.138-1.336.841-1.586 1.607l.005.005q-.089.366-.09.739c0 1.38.878 2.569 2.116 3.054a3.281 3.281 0 0 1 .436-1.928.668.668 0 0 1 1.153.677 1.9 1.9 0 0 0-.173 1.563v.009a2.59 2.59 0 0 0 2.315 1.411c1.43 0 2.591-1.14 2.591-2.538v-7.066c-.659.681-1.509 1.144-2.449 1.144a.667.667 0 1 1 0-1.335m-2.987-.46a.666.666 0 0 1-.784-.525c-.231-1.157.192-3.032 2.307-3.455a.667.667 0 1 1 .258 1.31c-1.527.307-1.287 1.723-1.256 1.887a.665.665 0 0 1-.525.784m3.197 7.045a.666.666 0 1 1-1.31-.258c.299-1.496-.658-1.844-.85-1.897a.673.673 0 0 1-.472-.815.664.664 0 0 1 .802-.48c.832.208 2.28 1.197 1.83 3.45M20.356 10.533l-1.79 1.79a2.4 2.4 0 0 1-1.66.712V11.7c.27-.014.525-.13.716-.321l1.79-1.79a.664.664 0 0 1 .944 0 .664.664 0 0 1 0 .944M21.229 14.598h-4.324v1.336h4.324z" 35 })), _path3 || (_path3 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { 36 fill: "#fff", 37 d: "M20.467 10.813a1.781 1.781 0 1 0 0-3.562 1.781 1.781 0 0 0 0 3.562M20.356 20.943a.65.65 0 0 1-.472.196.66.66 0 0 1-.472-.196l-1.79-1.79a1.1 1.1 0 0 0-.717-.32v-1.336a2.4 2.4 0 0 1 1.661.712l1.79 1.79a.664.664 0 0 1 0 .944" 38 })), _path4 || (_path4 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { 39 fill: "#fff", 40 d: "M20.467 23.28a1.781 1.781 0 1 0 0-3.561 1.781 1.781 0 0 0 0 3.562M22.248 17.047a1.781 1.781 0 1 0 0-3.562 1.781 1.781 0 0 0 0 3.562" 41 })), _path5 || (_path5 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { 42 fill: "#BD4495", 43 d: "M125.241 6.837V24.81h-4.88V6.837zM106.595 24.811h-5.266l5.933-17.974h6.67l5.933 17.974h-5.266l-3.932-13.024h-.14zm-.983-7.091h9.9v3.65h-9.9z" 44 })), _path6 || (_path6 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { 45 fill: "#072C59", 46 d: "M102.038 15.824q0 3.002-1.167 5.064-1.168 2.055-3.151 3.116-1.984 1.053-4.424 1.053-2.457 0-4.44-1.062-1.976-1.07-3.143-3.124-1.158-2.063-1.158-5.047 0-3.001 1.158-5.055 1.168-2.063 3.142-3.116Q90.84 6.59 93.296 6.59q2.44 0 4.424 1.062 1.983 1.053 3.151 3.116 1.167 2.053 1.167 5.055m-5.02 0q0-1.616-.43-2.72-.422-1.116-1.255-1.686-.826-.58-2.037-.58t-2.045.58q-.825.57-1.255 1.685-.42 1.106-.421 2.721 0 1.616.421 2.73.43 1.106 1.255 1.685.834.57 2.045.57 1.212 0 2.036-.57.834-.58 1.256-1.685.43-1.114.43-2.73M67.324 24.811V6.837h4.88v7.021h6.46V6.837h4.88V24.81h-4.88V17.79h-6.46v7.021zM66.346 13.577h-4.95a3.4 3.4 0 0 0-.281-1.114 2.5 2.5 0 0 0-.615-.86 2.6 2.6 0 0 0-.939-.562 3.6 3.6 0 0 0-1.255-.202q-1.228 0-2.08.597-.843.597-1.281 1.711-.43 1.115-.43 2.677 0 1.65.438 2.765.448 1.106 1.29 1.667.843.553 2.028.553.675 0 1.211-.167.535-.175.93-.5a2.6 2.6 0 0 0 .641-.781q.255-.465.343-1.044l4.95.035q-.088 1.14-.641 2.326a7.6 7.6 0 0 1-1.571 2.176q-1.01.992-2.501 1.598-1.492.605-3.467.605-2.475 0-4.441-1.062-1.957-1.062-3.099-3.124-1.131-2.063-1.132-5.047 0-3.001 1.159-5.055 1.158-2.063 3.124-3.116 1.966-1.062 4.389-1.062 1.703 0 3.133.465a7.5 7.5 0 0 1 2.51 1.36 6.7 6.7 0 0 1 1.738 2.186q.658 1.3.799 2.975M35.425 24.811V6.837H48.38v3.932h-8.075v3.089h7.408v3.932h-7.408v3.09h8.04v3.931z" 47 }))); 48 }; 49 50 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI2IiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTI2IDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE0LjczNzYgMjkuNzEwMUMyMi44NzcgMjkuNzEwMSAyOS40NzUyIDIzLjA1OTMgMjkuNDc1MiAxNC44NTVDMjkuNDc1MiA2LjY1MDgzIDIyLjg3NyAwIDE0LjczNzYgMEM2LjU5ODI1IDAgMCA2LjY1MDgzIDAgMTQuODU1QzAgMTYuOTIwOSAwLjQxODM1MSAxOC44ODgyIDEuMTc0MzIgMjAuNjc1N1YzMkw4LjAxOTIxIDI4LjA4MDNDMTAuMDMzOCAyOS4xMjIyIDEyLjMxNzYgMjkuNzEwMSAxNC43Mzc2IDI5LjcxMDFaIiBmaWxsPSIjQkQ0NDk1Ii8+CjxwYXRoIGQ9Ik0xMy4xMjA1IDE0LjM3NTVDMTQuNDE2MiAxNC4zNzU1IDE1LjU2OTQgMTIuNzU5MiAxNS41Njk0IDExLjQ4MTNWOS4yNzczQzE1LjU2OTQgNy42Njk5MSAxNC4yMzM2IDYuMzYwODUgMTIuNTk1MSA2LjM2MDg1QzExLjE3MDIgNi4zNjA4NSA5Ljk3Njk0IDcuMzQ0ODcgOS42ODc1MiA4LjY1Mzk0QzcuOTA2NDggOC45MzQ0NSA2LjU0Mzk4IDEwLjQ1MjggNi41NDM5OCAxMi4yNjk0QzYuNTQzOTggMTIuNDM0MiA2LjU1NzM0IDEyLjYwMzQgNi41ODQwNSAxMi43NzI2QzYuMDQ5NzQgMTMuNTE2MiA1Ljc3MzY4IDE0LjM3MTEgNS43NzM2OCAxNS4yNjZDNS43NzM2OCAxNi4wODk4IDUuOTQ3MzMgMTYuODM3OCA2LjI4MTI4IDE3LjQ3MDFDNi43ODQ0MiAxNi41OTI5IDcuNjE3MDYgMTUuOTExNyA4LjUzNDI5IDE1LjcyNDdDOC44OTQ5NSAxNS42NTM0IDkuMjUxMTYgMTUuODg1IDkuMzIyNCAxNi4yNDU2QzkuMzkzNjUgMTYuNjA2MyA5LjE2MjExIDE2Ljk2MjUgOC44MDE0NSAxNy4wMzM3QzguMTIwMiAxNy4xNzE4IDcuNDY1NjcgMTcuODc1MyA3LjIxNjMyIDE4LjY0MTFMNy4yMjA3OCAxOC42NDU2QzcuMTYyODkgMTguODkwNSA3LjEzMTcyIDE5LjEzNTQgNy4xMzE3MiAxOS4zODQ3QzcuMTMxNzIgMjAuNzY1IDguMDA4ODkgMjEuOTUzOCA5LjI0NjcxIDIyLjQzOTJDOS4yMzc4IDIyLjM1MDEgOS4yMzMzNSAyMi4yNTY2IDkuMjMzMzUgMjIuMTY3NkM5LjIzMzM1IDIxLjU4NDMgOS4zODkxOSAyMS4wMTQ0IDkuNjgzMDYgMjAuNTExMkM5Ljg3NDUzIDIwLjE5MDYgMTAuMjg0MiAyMC4wODgyIDEwLjYwMDMgMjAuMjc1MkMxMC45MTY0IDIwLjQ2MjIgMTEuMDIzMyAyMC44NzE5IDEwLjgzNjMgMjEuMTg4QzEwLjY1ODIgMjEuNDg2MyAxMC41NjkxIDIxLjgyNDcgMTAuNTY5MSAyMi4xNjc2QzEwLjU2OTEgMjIuMzcyNCAxMC42MDAzIDIyLjU2ODMgMTAuNjYyNiAyMi43NTA5QzEwLjY2MjYgMjIuNzU1MyAxMC42NjI2IDIyLjc1OTggMTAuNjYyNiAyMi43NTk4QzExLjA5MDEgMjMuNjA1OCAxMS45NzYyIDI0LjE3MTIgMTIuOTc4IDI0LjE3MTJDMTQuNDA3MyAyNC4xNzEyIDE1LjU2OTQgMjMuMDMxNCAxNS41Njk0IDIxLjYzMzNWMTQuNTY3QzE0LjkxMDQgMTUuMjQ4MiAxNC4wNiAxNS43MTEzIDEzLjEyMDUgMTUuNzExM0MxMi43NTA5IDE1LjcxMTMgMTIuNDUyNiAxNS40MTMgMTIuNDUyNiAxNS4wNDM0QzEyLjQ1MjYgMTQuNjczOCAxMi43NTA5IDE0LjM3NTUgMTMuMTIwNSAxNC4zNzU1Wk0xMC4xMzI4IDEzLjkxNjlDMTAuMDkyNyAxMy45MjU4IDEwLjA0ODIgMTMuOTMwMyAxMC4wMDM3IDEzLjkzMDNDOS42OTE5NyAxMy45MzAzIDkuNDExNDYgMTMuNzEyMSA5LjM0OTEyIDEzLjM5MTVDOS4xMTc1OCAxMi4yMzM4IDkuNTQwNTggMTAuMzU5MyAxMS42NTU2IDkuOTM2MjhDMTIuMDExOCA5Ljg2NTA0IDEyLjM2OCAxMC4wOTY2IDEyLjQzOTIgMTAuNDYxN0MxMi41MTA1IDEwLjgyMjQgMTIuMjc4OSAxMS4xNzQxIDExLjkxMzggMTEuMjQ1M0MxMC4zODY2IDExLjU1MjYgMTAuNjI3IDEyLjk2ODUgMTAuNjU4MiAxMy4xMzMzQzEwLjcyOTQgMTMuNDkzOSAxMC40OTc5IDEzLjg0NTcgMTAuMTMyOCAxMy45MTY5Wk0xMy4zMjk3IDIwLjk2MDlDMTMuMjY3NCAyMS4yODE1IDEyLjk4NjkgMjEuNDk5NyAxMi42NzUyIDIxLjQ5OTdDMTIuNjMwNyAyMS40OTk3IDEyLjU4NjIgMjEuNDk1MiAxMi41NDYxIDIxLjQ4NjNDMTIuMTgxIDIxLjQxNTEgMTEuOTQ5NCAyMS4wNjMzIDEyLjAyMDcgMjAuNzAyN0MxMi4zMTkgMTkuMjA2NiAxMS4zNjE3IDE4Ljg1OTMgMTEuMTcwMiAxOC44MDU5QzEwLjgxODUgMTguNzA3OSAxMC42MDQ4IDE4LjM0MjggMTAuNjk4MyAxNy45OTFDMTAuNzkxOCAxNy42MzkzIDExLjE0MzUgMTcuNDIxMSAxMS40OTk3IDE3LjUxMDJDMTIuMzMyNCAxNy43MTk0IDEzLjc3OTUgMTguNzA3OSAxMy4zMjk3IDIwLjk2MDlaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjAuMzU1OSAxMC41MzI5TDE4LjU2NiAxMi4zMjI5QzE4LjEyMDcgMTIuNzY4MSAxNy41MzMgMTMuMDIxOSAxNi45MDUyIDEzLjAzNTNWMTEuNjk5NUMxNy4xNzY4IDExLjY4NjIgMTcuNDMwNiAxMS41NzA0IDE3LjYyMiAxMS4zNzg5TDE5LjQxMiA5LjU4ODk4QzE5LjY3NDcgOS4zMjYyOCAyMC4wOTc3IDkuMzI2MjggMjAuMzU1OSA5LjU4ODk4QzIwLjYxODYgOS44NDcyMyAyMC42MTg2IDEwLjI3MDIgMjAuMzU1OSAxMC41MzI5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIxLjIyODYgMTQuNTk4MkgxNi45MDUyVjE1LjkzMzlIMjEuMjI4NlYxNC41OTgyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjQ2NzMgMTAuODEzNEMyMS40NTEgMTAuODEzNCAyMi4yNDg0IDEwLjAxNiAyMi4yNDg0IDkuMDMyNDFDMjIuMjQ4NCA4LjA0ODc2IDIxLjQ1MSA3LjI1MTM3IDIwLjQ2NzMgNy4yNTEzN0MxOS40ODM3IDcuMjUxMzcgMTguNjg2MyA4LjA0ODc2IDE4LjY4NjMgOS4wMzI0MUMxOC42ODYzIDEwLjAxNiAxOS40ODM3IDEwLjgxMzQgMjAuNDY3MyAxMC44MTM0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjM1NTkgMjAuOTQzMUMyMC4yMjY4IDIxLjA3NjcgMjAuMDU3NiAyMS4xMzkgMTkuODgzOSAyMS4xMzlDMTkuNzE0NyAyMS4xMzkgMTkuNTQ1NSAyMS4wNzY3IDE5LjQxMiAyMC45NDMxTDE3LjYyMiAxOS4xNTMyQzE3LjQzMDYgMTguOTYxNyAxNy4xNzY4IDE4Ljg0NTkgMTYuOTA1MiAxOC44MzI2VjE3LjQ5NjhDMTcuNTMzIDE3LjUxMDIgMTguMTIwNyAxNy43NjQgMTguNTY2IDE4LjIwOTJMMjAuMzU1OSAxOS45OTkyQzIwLjYxODYgMjAuMjYxOSAyMC42MTg2IDIwLjY4NDkgMjAuMzU1OSAyMC45NDMxWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjQ2NzMgMjMuMjgwN0MyMS40NTEgMjMuMjgwNyAyMi4yNDg0IDIyLjQ4MzMgMjIuMjQ4NCAyMS40OTk3QzIyLjI0ODQgMjAuNTE2IDIxLjQ1MSAxOS43MTg2IDIwLjQ2NzMgMTkuNzE4NkMxOS40ODM3IDE5LjcxODYgMTguNjg2MyAyMC41MTYgMTguNjg2MyAyMS40OTk3QzE4LjY4NjMgMjIuNDgzMyAxOS40ODM3IDIzLjI4MDcgMjAuNDY3MyAyMy4yODA3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIyLjI0ODMgMTcuMDQ3MUMyMy4yMzIgMTcuMDQ3MSAyNC4wMjk0IDE2LjI0OTcgMjQuMDI5NCAxNS4yNjZDMjQuMDI5NCAxNC4yODI0IDIzLjIzMiAxMy40ODUgMjIuMjQ4MyAxMy40ODVDMjEuMjY0NyAxMy40ODUgMjAuNDY3MyAxNC4yODI0IDIwLjQ2NzMgMTUuMjY2QzIwLjQ2NzMgMTYuMjQ5NyAyMS4yNjQ3IDE3LjA0NzEgMjIuMjQ4MyAxNy4wNDcxWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTEyNS4yNDEgNi44MzY1NFYyNC44MTE0SDEyMC4zNjFWNi44MzY1NEgxMjUuMjQxWiIgZmlsbD0iI0JENDQ5NSIvPgo8cGF0aCBkPSJNMTA2LjU5NSAyNC44MTE0SDEwMS4zMjlMMTA3LjI2MiA2LjgzNjU0SDExMy45MzJMMTE5Ljg2NSAyNC44MTE0SDExNC41OTlMMTEwLjY2NyAxMS43ODY3SDExMC41MjdMMTA2LjU5NSAyNC44MTE0Wk0xMDUuNjEyIDE3LjcxOThIMTE1LjUxMlYyMS4zNzA5SDEwNS42MTJWMTcuNzE5OFoiIGZpbGw9IiNCRDQ0OTUiLz4KPHBhdGggZD0iTTEwMi4wMzggMTUuODI0QzEwMi4wMzggMTcuODI1MSAxMDEuNjQ5IDE5LjUxMzIgMTAwLjg3MSAyMC44ODgyQzEwMC4wOTIgMjIuMjU3NCA5OS4wNDIxIDIzLjI5NiA5Ny43MTk4IDI0LjAwNEM5Ni4zOTc0IDI0LjcwNjEgOTQuOTIyOSAyNS4wNTcyIDkzLjI5NjMgMjUuMDU3MkM5MS42NTc5IDI1LjA1NzIgOTAuMTc3NiAyNC43MDMyIDg4Ljg1NTIgMjMuOTk1MkM4Ny41Mzg3IDIzLjI4MTMgODYuNDkxMyAyMi4yMzk4IDg1LjcxMzEgMjAuODcwNkM4NC45NDA3IDE5LjQ5NTYgODQuNTU0NiAxNy44MTM0IDg0LjU1NDYgMTUuODI0Qzg0LjU1NDYgMTMuODIyOSA4NC45NDA3IDEyLjEzNzcgODUuNzEzMSAxMC43Njg1Qzg2LjQ5MTMgOS4zOTM1MSA4Ny41Mzg3IDguMzU0OTMgODguODU1MiA3LjY1Mjc4QzkwLjE3NzYgNi45NDQ3OSA5MS42NTc5IDYuNTkwNzkgOTMuMjk2MyA2LjU5MDc5Qzk0LjkyMjkgNi41OTA3OSA5Ni4zOTc0IDYuOTQ0NzkgOTcuNzE5OCA3LjY1Mjc4Qzk5LjA0MjEgOC4zNTQ5MyAxMDAuMDkyIDkuMzkzNTEgMTAwLjg3MSAxMC43Njg1QzEwMS42NDkgMTIuMTM3NyAxMDIuMDM4IDEzLjgyMjkgMTAyLjAzOCAxNS44MjRaTTk3LjAxNzYgMTUuODI0Qzk3LjAxNzYgMTQuNzQ3NCA5Ni44NzQzIDEzLjg0MDQgOTYuNTg3NiAxMy4xMDMyQzk2LjMwNjcgMTIuMzYwMSA5NS44ODgzIDExLjc5ODQgOTUuMzMyNSAxMS40MThDOTQuNzgyNSAxMS4wMzE5IDk0LjEwMzcgMTAuODM4OCA5My4yOTYzIDEwLjgzODhDOTIuNDg4OCAxMC44Mzg4IDkxLjgwNzEgMTEuMDMxOSA5MS4yNTEzIDExLjQxOEM5MC43MDEzIDExLjc5ODQgOTAuMjgyOSAxMi4zNjAxIDg5Ljk5NjIgMTMuMTAzMkM4OS43MTUzIDEzLjg0MDQgODkuNTc0OSAxNC43NDc0IDg5LjU3NDkgMTUuODI0Qzg5LjU3NDkgMTYuOTAwNiA4OS43MTUzIDE3LjgxMDUgODkuOTk2MiAxOC41NTM2QzkwLjI4MjkgMTkuMjkwOCA5MC43MDEzIDE5Ljg1MjUgOTEuMjUxMyAyMC4yMzg3QzkxLjgwNzEgMjAuNjE5IDkyLjQ4ODggMjAuODA5MiA5My4yOTYzIDIwLjgwOTJDOTQuMTAzNyAyMC44MDkyIDk0Ljc4MjUgMjAuNjE5IDk1LjMzMjUgMjAuMjM4N0M5NS44ODgzIDE5Ljg1MjUgOTYuMzA2NyAxOS4yOTA4IDk2LjU4NzYgMTguNTUzNkM5Ni44NzQzIDE3LjgxMDUgOTcuMDE3NiAxNi45MDA2IDk3LjAxNzYgMTUuODI0WiIgZmlsbD0iIzA3MkM1OSIvPgo8cGF0aCBkPSJNNjcuMzIzOSAyNC44MTE0VjYuODM2NTRINzIuMjAzOFYxMy44NThINzguNjYzNVY2LjgzNjU0SDgzLjU0MzRWMjQuODExNEg3OC42NjM1VjE3Ljc5SDcyLjIwMzhWMjQuODExNEg2Ny4zMjM5WiIgZmlsbD0iIzA3MkM1OSIvPgo8cGF0aCBkPSJNNjYuMzQ1NyAxMy41NzcxSDYxLjM5NTZDNjEuMzYwNSAxMy4xNjc1IDYxLjI2NjkgMTIuNzk2IDYxLjExNDcgMTIuNDYyNUM2MC45Njg1IDEyLjEyOSA2MC43NjM3IDExLjg0MjIgNjAuNTAwNCAxMS42MDIzQzYwLjI0MjkgMTEuMzU2NiA1OS45Mjk5IDExLjE2OTQgNTkuNTYxMyAxMS4wNDA2QzU5LjE5MjYgMTAuOTA2IDU4Ljc3NDMgMTAuODM4OCA1OC4zMDYyIDEwLjgzODhDNTcuNDg3IDEwLjgzODggNTYuNzkzNiAxMS4wMzc3IDU2LjIyNjEgMTEuNDM1NkM1NS42NjQ0IDExLjgzMzUgNTUuMjM3MiAxMi40MDQgNTQuOTQ0NyAxMy4xNDcxQzU0LjY1NzkgMTMuODkwMiA1NC41MTQ2IDE0Ljc4MjUgNTQuNTE0NiAxNS44MjRDNTQuNTE0NiAxNi45MjQgNTQuNjYwOSAxNy44NDU2IDU0Ljk1MzQgMTguNTg4N0M1NS4yNTE4IDE5LjMyNTkgNTUuNjgxOSAxOS44ODE4IDU2LjI0MzYgMjAuMjU2M0M1Ni44MDUzIDIwLjYyNDkgNTcuNDgxMiAyMC44MDkyIDU4LjI3MTEgMjAuODA5MkM1OC43MjE2IDIwLjgwOTIgNTkuMTI1MyAyMC43NTM2IDU5LjQ4MjMgMjAuNjQyNEM1OS44MzkyIDIwLjUyNTQgNjAuMTQ5MyAyMC4zNTg3IDYwLjQxMjYgMjAuMTQyMkM2MC42NzU5IDE5LjkyNTcgNjAuODg5NSAxOS42NjUzIDYxLjA1MzMgMTkuMzYxQzYxLjIyMyAxOS4wNTA5IDYxLjMzNzEgMTguNzAyOCA2MS4zOTU2IDE4LjMxNjZMNjYuMzQ1NyAxOC4zNTE3QzY2LjI4NzIgMTkuMTEyNCA2Ni4wNzM2IDE5Ljg4NzYgNjUuNzA1IDIwLjY3NzZDNjUuMzM2NCAyMS40NjE2IDY0LjgxMjcgMjIuMTg3MiA2NC4xMzQgMjIuODU0MkM2My40NjExIDIzLjUxNTQgNjIuNjI3MyAyNC4wNDc4IDYxLjYzMjYgMjQuNDUxNkM2MC42Mzc5IDI0Ljg1NTMgNTkuNDgyMyAyNS4wNTcyIDU4LjE2NTcgMjUuMDU3MkM1Ni41MTU3IDI1LjA1NzIgNTUuMDM1MyAyNC43MDMyIDUzLjcyNDcgMjMuOTk1MkM1Mi40MTk5IDIzLjI4NzIgNTEuMzg3MSAyMi4yNDU3IDUwLjYyNjUgMjAuODcwNkM0OS44NzE3IDE5LjQ5NTYgNDkuNDk0MyAxNy44MTM0IDQ5LjQ5NDMgMTUuODI0QzQ5LjQ5NDMgMTMuODIyOSA0OS44ODA0IDEyLjEzNzcgNTAuNjUyOCAxMC43Njg1QzUxLjQyNTIgOS4zOTM1MSA1Mi40NjY3IDguMzU0OTMgNTMuNzc3MyA3LjY1Mjc4QzU1LjA4OCA2Ljk0NDc5IDU2LjU1MDggNi41OTA3OSA1OC4xNjU3IDYuNTkwNzlDNTkuMzAwOSA2LjU5MDc5IDYwLjM0NTMgNi43NDU4NSA2MS4yOTkxIDcuMDU1OTZDNjIuMjUyOCA3LjM2NjA3IDYzLjA4OTUgNy44MTk1NCA2My44MDkyIDguNDE2MzZDNjQuNTI4OSA5LjAwNzM0IDY1LjEwODIgOS43MzU4MSA2NS41NDcgMTAuNjAxOEM2NS45ODU5IDExLjQ2NzggNjYuMjUyMSAxMi40NTk1IDY2LjM0NTcgMTMuNTc3MVoiIGZpbGw9IiMwNzJDNTkiLz4KPHBhdGggZD0iTTM1LjQyNTQgMjQuODExNFYxMC43Njg1VjYuODM2NTRINDguMzhWMTAuNzY4NUg0MC4zMDUzVjEzLjg1OEg0Ny43MTI5VjE3Ljc5SDQwLjMwNTNWMjAuODc5NEg0OC4zNDQ5VjI0LjgxMTRIMzUuNDI1NFoiIGZpbGw9IiMwNzJDNTkiLz4KPC9zdmc+Cg=="); 51 52 /***/ }), 53 54 /***/ "./src/blocks/chat/block.json": 55 /*!************************************!*\ 56 !*** ./src/blocks/chat/block.json ***! 57 \************************************/ 58 /***/ ((module) => { 59 60 module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://json.schemastore.org/block.json","apiVersion":2,"name":"echoai/chat","title":"EchoAI Chat","category":"widgets","keywords":["ai","chat","echoai","echo","chatbot","bot","assistant"],"attributes":{"height":{"type":"number","default":450},"backgroundColor":{"type":"string","default":"#fafafa"},"assistantId":{"type":"string","default":""}},"example":{"attributes":{"height":"450"}},"editorScript":"file:./index.js"}'); 61 62 /***/ }), 63 64 /***/ "./src/blocks/chat/edit.js": 65 /*!*********************************!*\ 66 !*** ./src/blocks/chat/edit.js ***! 67 \*********************************/ 68 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 69 70 __webpack_require__.r(__webpack_exports__); 71 /* harmony export */ __webpack_require__.d(__webpack_exports__, { 72 /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) 73 /* harmony export */ }); 74 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); 75 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 76 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor"); 77 /* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__); 78 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components"); 79 /* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__); 80 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); 81 /* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__); 82 /* harmony import */ var _images_logo_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../images/logo.svg */ "./images/logo.svg"); 83 84 85 86 87 88 89 // Create a variable to hold the default assistant ID 90 // This will be updated with actual ID when the component mounts 91 let defaultAssistantId = ''; 92 const Edit = props => { 93 const { 94 attributes, 95 setAttributes 96 } = props; 97 const [defaultId, setDefaultId] = React.useState(''); 98 let height = attributes.height || '500'; 99 let backgroundColor = attributes.backgroundColor || '#fafafa'; 100 let assistantId = attributes.assistantId || ''; 101 102 // When component mounts, try to fetch the default assistant ID using wp.apiFetch 103 React.useEffect(() => { 104 if (wp && wp.apiFetch) { 105 wp.apiFetch({ 106 path: '/echoai/v1/config' 107 }).then(response => { 108 if (response && response.assistant_id) { 109 setDefaultId(response.assistant_id); 110 defaultAssistantId = response.assistant_id; 111 } 112 }).catch(error => { 113 console.error('Error fetching Echo AI config', error); 114 }); 115 } 116 }, []); 117 const handleHeightChange = newHeight => { 118 if (newHeight > 1000) newHeight = 1000; 119 if (newHeight < 200) newHeight = 200; 120 setAttributes({ 121 height: newHeight 122 }); 123 }; 124 const handleColorChange = newColor => { 125 setAttributes({ 126 backgroundColor: newColor 127 }); 128 }; 129 const handleAssistantIdChange = newAssistantId => { 130 setAttributes({ 131 assistantId: newAssistantId 132 }); 133 }; 134 const blockProps = (0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.useBlockProps)({ 135 style: { 136 height: height + 'px' 137 } 138 }); 139 return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.InspectorControls, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.PanelBody, { 140 title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Chat Settings', 'echoai') 141 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.__experimentalNumberControl, { 142 label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Height (px)', 'echoai'), 143 value: height, 144 onChange: handleHeightChange, 145 min: 200, 146 max: 1000 147 }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_components__WEBPACK_IMPORTED_MODULE_2__.TextControl, { 148 label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Assistant ID', 'echoai'), 149 help: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Optional. Leave empty to use the default assistant.', 'echoai'), 150 value: assistantId, 151 onChange: handleAssistantIdChange 152 })), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.PanelColorSettings, { 153 title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Color Settings', 'echoai'), 154 initialOpen: true, 155 colorSettings: [{ 156 value: backgroundColor, 157 onChange: handleColorChange, 158 label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Background Color', 'echoai') 159 }] 160 })), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 161 ...blockProps 162 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 163 className: "flex flex-col items-center justify-center h-full rounded-3xl", 164 style: { 165 backgroundColor: backgroundColor 166 } 167 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", { 168 src: _images_logo_svg__WEBPACK_IMPORTED_MODULE_4__["default"], 169 alt: "chat" 170 }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", { 171 className: "text-stone-500 font-semibold" 172 }, "Assistant Placeholder"), assistantId ? (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 173 className: "mt-2 bg-accent p-3 rounded-lg border border-accent-foreground/10 max-w-xs" 174 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 175 className: "flex flex-col gap-2" 176 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 177 className: "flex items-center" 178 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("strong", { 179 className: "mr-2 text-muted-foreground whitespace-nowrap text-xs" 180 }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Custom Assistant ID:', 'echoai')), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("code", { 181 className: "bg-input/50 p-1.5 rounded text-xs font-mono uppercase text-foreground border border-accent-foreground/10" 182 }, assistantId)), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", { 183 href: `${window.echoaiConfig?.platformUrl || 'http://localhost:3000'}/dashboard/assistant/${assistantId}/settings`, 184 className: "text-xs text-blue-600 hover:underline", 185 target: "_blank", 186 rel: "noopener noreferrer" 187 }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('AI Assistant settings', 'echoai')))) : defaultId ? (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 188 className: "mt-2 bg-accent p-3 rounded-lg border border-accent-foreground/10 max-w-xs" 189 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 190 className: "flex flex-col gap-2" 191 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { 192 className: "flex items-center" 193 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("strong", { 194 className: "mr-2 text-muted-foreground whitespace-nowrap text-xs" 195 }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Default Assistant ID:', 'echoai')), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("code", { 196 className: "bg-input/50 p-1.5 rounded text-xs font-mono uppercase text-foreground border border-accent-foreground/10" 197 }, defaultId)), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", { 198 href: `${window.echoaiConfig?.platformUrl || 'http://localhost:3000'}/dashboard/assistant/${defaultId}/settings`, 199 className: "text-xs text-blue-600 hover:underline", 200 target: "_blank", 201 rel: "noopener noreferrer" 202 }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('AI Assistant settings', 'echoai')))) : (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", { 203 className: "mt-1 text-xs text-stone-500 text-center max-w-xs leading-relaxed px-2" 204 }, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Loading default assistant...', 'echoai')), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", { 205 className: "mt-3 text-xs text-stone-500 text-center max-w-xs leading-relaxed px-2" 206 }, "You can customize this block by adjusting the height and background color in the settings panel on the right.")))); 207 }; 208 /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Edit); 209 210 /***/ }), 211 212 /***/ "@wordpress/block-editor": 213 /*!*************************************!*\ 214 !*** external ["wp","blockEditor"] ***! 215 \*************************************/ 216 /***/ ((module) => { 217 218 module.exports = window["wp"]["blockEditor"]; 219 220 /***/ }), 221 222 /***/ "@wordpress/blocks": 223 /*!********************************!*\ 224 !*** external ["wp","blocks"] ***! 225 \********************************/ 226 /***/ ((module) => { 227 228 module.exports = window["wp"]["blocks"]; 229 230 /***/ }), 231 232 /***/ "@wordpress/components": 233 /*!************************************!*\ 234 !*** external ["wp","components"] ***! 235 \************************************/ 236 /***/ ((module) => { 237 238 module.exports = window["wp"]["components"]; 239 240 /***/ }), 241 242 /***/ "@wordpress/i18n": 243 /*!******************************!*\ 244 !*** external ["wp","i18n"] ***! 245 \******************************/ 246 /***/ ((module) => { 247 248 module.exports = window["wp"]["i18n"]; 249 250 /***/ }), 251 252 /***/ "react": 253 /*!************************!*\ 254 !*** external "React" ***! 255 \************************/ 256 /***/ ((module) => { 257 258 module.exports = window["React"]; 259 260 /***/ }) 261 262 /******/ }); 263 /************************************************************************/ 264 /******/ // The module cache 265 /******/ var __webpack_module_cache__ = {}; 266 /******/ 267 /******/ // The require function 268 /******/ function __webpack_require__(moduleId) { 269 /******/ // Check if module is in cache 270 /******/ var cachedModule = __webpack_module_cache__[moduleId]; 271 /******/ if (cachedModule !== undefined) { 272 /******/ return cachedModule.exports; 273 /******/ } 274 /******/ // Create a new module (and put it into the cache) 275 /******/ var module = __webpack_module_cache__[moduleId] = { 276 /******/ // no module.id needed 277 /******/ // no module.loaded needed 278 /******/ exports: {} 279 /******/ }; 280 /******/ 281 /******/ // Execute the module function 282 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 283 /******/ 284 /******/ // Return the exports of the module 285 /******/ return module.exports; 286 /******/ } 287 /******/ 288 /************************************************************************/ 289 /******/ /* webpack/runtime/compat get default export */ 290 /******/ (() => { 291 /******/ // getDefaultExport function for compatibility with non-harmony modules 292 /******/ __webpack_require__.n = (module) => { 293 /******/ var getter = module && module.__esModule ? 294 /******/ () => (module['default']) : 295 /******/ () => (module); 296 /******/ __webpack_require__.d(getter, { a: getter }); 297 /******/ return getter; 298 /******/ }; 299 /******/ })(); 300 /******/ 301 /******/ /* webpack/runtime/define property getters */ 302 /******/ (() => { 303 /******/ // define getter functions for harmony exports 304 /******/ __webpack_require__.d = (exports, definition) => { 305 /******/ for(var key in definition) { 306 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 307 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 308 /******/ } 309 /******/ } 310 /******/ }; 311 /******/ })(); 312 /******/ 313 /******/ /* webpack/runtime/hasOwnProperty shorthand */ 314 /******/ (() => { 315 /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 316 /******/ })(); 317 /******/ 318 /******/ /* webpack/runtime/make namespace object */ 319 /******/ (() => { 320 /******/ // define __esModule on exports 321 /******/ __webpack_require__.r = (exports) => { 322 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 323 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 324 /******/ } 325 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 326 /******/ }; 327 /******/ })(); 328 /******/ 329 /************************************************************************/ 330 var __webpack_exports__ = {}; 331 // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. 332 (() => { 333 /*!**********************************!*\ 334 !*** ./src/blocks/chat/index.js ***! 335 \**********************************/ 336 __webpack_require__.r(__webpack_exports__); 337 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); 338 /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 339 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks"); 340 /* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__); 341 /* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block.json */ "./src/blocks/chat/block.json"); 342 /* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./edit */ "./src/blocks/chat/edit.js"); 343 344 /** 345 * WordPress dependencies 346 */ 347 348 349 /** 350 * Internal dependencies 351 */ 352 353 354 const { 355 name 356 } = _block_json__WEBPACK_IMPORTED_MODULE_2__; 357 (0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__.registerBlockType)(name, { 358 icon: { 359 src: (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("svg", { 360 fill: "none", 361 viewBox: "0 0 60000 60000" 362 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("g", { 363 "clip-path": "url(#a)" 364 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", { 365 d: "M29633 55706c15261 0 27633-12470 27633-27853C57266 12470 44894 0 29633 0S2000 12470 2000 27853c0 3873 784 7562 2202 10913V60000l12834-7350a27340 27340 0 00 12597 3056Z", 366 fill: "#BD4495", 367 "fill-rule": "evenodd", 368 "clip-rule": "evenodd" 369 }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", { 370 d: "M26600 26954c2430 0 4592-3030 4592-5426v-4133c0-3014-2505-5468-5577-5468-2672 0-4910 1845-5452 4300-3340 525-5894 3372-5894 6778 0 310 25 626 75 944a7936 7936 0 00-1520 4675c0 1544 326 2947 953 4133 943-1645 2504-2923 4224-3273 680-134 1347 300 1481 977 133 676-300 1344-977 1477-1278 260-2505 1578-2972 3014l8 9a6017 6017 0 00-167 1385c0 2588 1645 4818 3966 5728a5200 5200 0 01-25-510 6150 6150 0 01 843-3105 1256 1256 0 01 1720-443c592 350 793 1120 442 1712a3570 3570 0 00-500 1836c0 384 58 752 174 1094v17a4858 4858 0 00 4342 2646c2680 0 4860-2137 4860-4759V27313c-1237 1277-2830 2146-4593 2146a1250 1250 0 01-1252-1253c0-692 560-1252 1252-1252Zm-5602-860a1249 1249 0 01-1470-985c-433-2170 360-5685 4325-6478a1250 1250 0 11 484 2454c-2863 576-2412 3230-2354 3540 134 676-300 1336-985 1470Zm5994 13208a1250 1250 0 01-1470 985 1247 1247 0 01-984-1470c560-2805-1236-3456-1595-3556a1261 1261 0 01-885-1528 1244 1244 0 01 1503-900c1561 391 4274 2244 3431 6470Zm13174-19553-3356 3356a4518 4518 0 01-3114 1336v-2504c510-25 985-242 1344-602l3357-3356a1245 1245 0 01 1770 0 1245 1245 0 01 0 1770Zm1637 7623h-8107v2504h8107v-2504Z", 371 fill: "#fff" 372 }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", { 373 d: "M40375 20275a3340 3340 0 10 0-6679 3340 3340 0 00 0 6680Zm-209 18993c-242 250-559 368-884 368-318 0-635-117-885-368l-3357-3356a2042 2042 0 00-1344-600v-2505c1177 25 2280 500 3114 1335l3356 3356a1245 1245 0 01 0 1770Z", 374 fill: "#fff" 375 }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", { 376 d: "M40375 43651a3340 3340 0 10 0-6678 3340 3340 0 00 0 6678Zm3340-11688a3340 3340 0 10 0-6679 3340 3340 0 00 0 6680Z", 377 fill: "#fff" 378 })), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("defs", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("clipPath", { 379 id: "a" 380 }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("path", { 381 d: "M0 0h60000v60000H0", 382 fill: "#fff" 383 })))) 384 }, 385 edit: _edit__WEBPACK_IMPORTED_MODULE_3__["default"] 386 }); 387 })(); 388 389 /******/ })() 390 ; 391 //# sourceMappingURL=index.js.map 1 (()=>{"use strict";const M=window.React,N=window.wp.blocks,j=window.wp.blockEditor,D=window.wp.components,g=window.wp.i18n;let I="";const{UU:T}={UU:"echoai/chat"};(0,N.registerBlockType)(T,{icon:{src:(0,M.createElement)("svg",{fill:"none",viewBox:"0 0 60000 60000"},(0,M.createElement)("g",{"clip-path":"url(#a)"},(0,M.createElement)("path",{d:"M29633 55706c15261 0 27633-12470 27633-27853C57266 12470 44894 0 29633 0S2000 12470 2000 27853c0 3873 784 7562 2202 10913V60000l12834-7350a27340 27340 0 00 12597 3056Z",fill:"#BD4495","fill-rule":"evenodd","clip-rule":"evenodd"}),(0,M.createElement)("path",{d:"M26600 26954c2430 0 4592-3030 4592-5426v-4133c0-3014-2505-5468-5577-5468-2672 0-4910 1845-5452 4300-3340 525-5894 3372-5894 6778 0 310 25 626 75 944a7936 7936 0 00-1520 4675c0 1544 326 2947 953 4133 943-1645 2504-2923 4224-3273 680-134 1347 300 1481 977 133 676-300 1344-977 1477-1278 260-2505 1578-2972 3014l8 9a6017 6017 0 00-167 1385c0 2588 1645 4818 3966 5728a5200 5200 0 01-25-510 6150 6150 0 01 843-3105 1256 1256 0 01 1720-443c592 350 793 1120 442 1712a3570 3570 0 00-500 1836c0 384 58 752 174 1094v17a4858 4858 0 00 4342 2646c2680 0 4860-2137 4860-4759V27313c-1237 1277-2830 2146-4593 2146a1250 1250 0 01-1252-1253c0-692 560-1252 1252-1252Zm-5602-860a1249 1249 0 01-1470-985c-433-2170 360-5685 4325-6478a1250 1250 0 11 484 2454c-2863 576-2412 3230-2354 3540 134 676-300 1336-985 1470Zm5994 13208a1250 1250 0 01-1470 985 1247 1247 0 01-984-1470c560-2805-1236-3456-1595-3556a1261 1261 0 01-885-1528 1244 1244 0 01 1503-900c1561 391 4274 2244 3431 6470Zm13174-19553-3356 3356a4518 4518 0 01-3114 1336v-2504c510-25 985-242 1344-602l3357-3356a1245 1245 0 01 1770 0 1245 1245 0 01 0 1770Zm1637 7623h-8107v2504h8107v-2504Z",fill:"#fff"}),(0,M.createElement)("path",{d:"M40375 20275a3340 3340 0 10 0-6679 3340 3340 0 00 0 6680Zm-209 18993c-242 250-559 368-884 368-318 0-635-117-885-368l-3357-3356a2042 2042 0 00-1344-600v-2505c1177 25 2280 500 3114 1335l3356 3356a1245 1245 0 01 0 1770Z",fill:"#fff"}),(0,M.createElement)("path",{d:"M40375 43651a3340 3340 0 10 0-6678 3340 3340 0 00 0 6678Zm3340-11688a3340 3340 0 10 0-6679 3340 3340 0 00 0 6680Z",fill:"#fff"})),(0,M.createElement)("defs",null,(0,M.createElement)("clipPath",{id:"a"},(0,M.createElement)("path",{d:"M0 0h60000v60000H0",fill:"#fff"}))))},edit:N=>{const{attributes:T,setAttributes:z}=N,[e,A]=React.useState("");let x=T.height||"500",u=T.backgroundColor||"#fafafa",y=T.assistantId||"";React.useEffect((()=>{wp&&wp.apiFetch&&wp.apiFetch({path:"/echoai/v1/config"}).then((M=>{M&&M.assistant_id&&(A(M.assistant_id),I=M.assistant_id)})).catch((M=>{console.error("Error fetching Echo AI config",M)}))}),[]);const O=(0,j.useBlockProps)({style:{height:x+"px"}});return(0,M.createElement)("div",null,(0,M.createElement)(j.InspectorControls,null,(0,M.createElement)(D.PanelBody,{title:(0,g.__)("Chat Settings","echoai")},(0,M.createElement)(D.__experimentalNumberControl,{label:(0,g.__)("Height (px)","echoai"),value:x,onChange:M=>{M>1e3&&(M=1e3),M<200&&(M=200),z({height:M})},min:200,max:1e3}),(0,M.createElement)(D.TextControl,{label:(0,g.__)("Assistant ID","echoai"),help:(0,g.__)("Optional. Leave empty to use the default assistant.","echoai"),value:y,onChange:M=>{z({assistantId:M})}})),(0,M.createElement)(j.PanelColorSettings,{title:(0,g.__)("Color Settings","echoai"),initialOpen:!0,colorSettings:[{value:u,onChange:M=>{z({backgroundColor:M})},label:(0,g.__)("Background Color","echoai")}]})),(0,M.createElement)("div",{...O},(0,M.createElement)("div",{className:"flex flex-col items-center justify-center h-full rounded-3xl",style:{backgroundColor:u}},(0,M.createElement)("img",{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI2IiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTI2IDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE0LjczNzYgMjkuNzEwMUMyMi44NzcgMjkuNzEwMSAyOS40NzUyIDIzLjA1OTMgMjkuNDc1MiAxNC44NTVDMjkuNDc1MiA2LjY1MDgzIDIyLjg3NyAwIDE0LjczNzYgMEM2LjU5ODI1IDAgMCA2LjY1MDgzIDAgMTQuODU1QzAgMTYuOTIwOSAwLjQxODM1MSAxOC44ODgyIDEuMTc0MzIgMjAuNjc1N1YzMkw4LjAxOTIxIDI4LjA4MDNDMTAuMDMzOCAyOS4xMjIyIDEyLjMxNzYgMjkuNzEwMSAxNC43Mzc2IDI5LjcxMDFaIiBmaWxsPSIjQkQ0NDk1Ii8+CjxwYXRoIGQ9Ik0xMy4xMjA1IDE0LjM3NTVDMTQuNDE2MiAxNC4zNzU1IDE1LjU2OTQgMTIuNzU5MiAxNS41Njk0IDExLjQ4MTNWOS4yNzczQzE1LjU2OTQgNy42Njk5MSAxNC4yMzM2IDYuMzYwODUgMTIuNTk1MSA2LjM2MDg1QzExLjE3MDIgNi4zNjA4NSA5Ljk3Njk0IDcuMzQ0ODcgOS42ODc1MiA4LjY1Mzk0QzcuOTA2NDggOC45MzQ0NSA2LjU0Mzk4IDEwLjQ1MjggNi41NDM5OCAxMi4yNjk0QzYuNTQzOTggMTIuNDM0MiA2LjU1NzM0IDEyLjYwMzQgNi41ODQwNSAxMi43NzI2QzYuMDQ5NzQgMTMuNTE2MiA1Ljc3MzY4IDE0LjM3MTEgNS43NzM2OCAxNS4yNjZDNS43NzM2OCAxNi4wODk4IDUuOTQ3MzMgMTYuODM3OCA2LjI4MTI4IDE3LjQ3MDFDNi43ODQ0MiAxNi41OTI5IDcuNjE3MDYgMTUuOTExNyA4LjUzNDI5IDE1LjcyNDdDOC44OTQ5NSAxNS42NTM0IDkuMjUxMTYgMTUuODg1IDkuMzIyNCAxNi4yNDU2QzkuMzkzNjUgMTYuNjA2MyA5LjE2MjExIDE2Ljk2MjUgOC44MDE0NSAxNy4wMzM3QzguMTIwMiAxNy4xNzE4IDcuNDY1NjcgMTcuODc1MyA3LjIxNjMyIDE4LjY0MTFMNy4yMjA3OCAxOC42NDU2QzcuMTYyODkgMTguODkwNSA3LjEzMTcyIDE5LjEzNTQgNy4xMzE3MiAxOS4zODQ3QzcuMTMxNzIgMjAuNzY1IDguMDA4ODkgMjEuOTUzOCA5LjI0NjcxIDIyLjQzOTJDOS4yMzc4IDIyLjM1MDEgOS4yMzMzNSAyMi4yNTY2IDkuMjMzMzUgMjIuMTY3NkM5LjIzMzM1IDIxLjU4NDMgOS4zODkxOSAyMS4wMTQ0IDkuNjgzMDYgMjAuNTExMkM5Ljg3NDUzIDIwLjE5MDYgMTAuMjg0MiAyMC4wODgyIDEwLjYwMDMgMjAuMjc1MkMxMC45MTY0IDIwLjQ2MjIgMTEuMDIzMyAyMC44NzE5IDEwLjgzNjMgMjEuMTg4QzEwLjY1ODIgMjEuNDg2MyAxMC41NjkxIDIxLjgyNDcgMTAuNTY5MSAyMi4xNjc2QzEwLjU2OTEgMjIuMzcyNCAxMC42MDAzIDIyLjU2ODMgMTAuNjYyNiAyMi43NTA5QzEwLjY2MjYgMjIuNzU1MyAxMC42NjI2IDIyLjc1OTggMTAuNjYyNiAyMi43NTk4QzExLjA5MDEgMjMuNjA1OCAxMS45NzYyIDI0LjE3MTIgMTIuOTc4IDI0LjE3MTJDMTQuNDA3MyAyNC4xNzEyIDE1LjU2OTQgMjMuMDMxNCAxNS41Njk0IDIxLjYzMzNWMTQuNTY3QzE0LjkxMDQgMTUuMjQ4MiAxNC4wNiAxNS43MTEzIDEzLjEyMDUgMTUuNzExM0MxMi43NTA5IDE1LjcxMTMgMTIuNDUyNiAxNS40MTMgMTIuNDUyNiAxNS4wNDM0QzEyLjQ1MjYgMTQuNjczOCAxMi43NTA5IDE0LjM3NTUgMTMuMTIwNSAxNC4zNzU1Wk0xMC4xMzI4IDEzLjkxNjlDMTAuMDkyNyAxMy45MjU4IDEwLjA0ODIgMTMuOTMwMyAxMC4wMDM3IDEzLjkzMDNDOS42OTE5NyAxMy45MzAzIDkuNDExNDYgMTMuNzEyMSA5LjM0OTEyIDEzLjM5MTVDOS4xMTc1OCAxMi4yMzM4IDkuNTQwNTggMTAuMzU5MyAxMS42NTU2IDkuOTM2MjhDMTIuMDExOCA5Ljg2NTA0IDEyLjM2OCAxMC4wOTY2IDEyLjQzOTIgMTAuNDYxN0MxMi41MTA1IDEwLjgyMjQgMTIuMjc4OSAxMS4xNzQxIDExLjkxMzggMTEuMjQ1M0MxMC4zODY2IDExLjU1MjYgMTAuNjI3IDEyLjk2ODUgMTAuNjU4MiAxMy4xMzMzQzEwLjcyOTQgMTMuNDkzOSAxMC40OTc5IDEzLjg0NTcgMTAuMTMyOCAxMy45MTY5Wk0xMy4zMjk3IDIwLjk2MDlDMTMuMjY3NCAyMS4yODE1IDEyLjk4NjkgMjEuNDk5NyAxMi42NzUyIDIxLjQ5OTdDMTIuNjMwNyAyMS40OTk3IDEyLjU4NjIgMjEuNDk1MiAxMi41NDYxIDIxLjQ4NjNDMTIuMTgxIDIxLjQxNTEgMTEuOTQ5NCAyMS4wNjMzIDEyLjAyMDcgMjAuNzAyN0MxMi4zMTkgMTkuMjA2NiAxMS4zNjE3IDE4Ljg1OTMgMTEuMTcwMiAxOC44MDU5QzEwLjgxODUgMTguNzA3OSAxMC42MDQ4IDE4LjM0MjggMTAuNjk4MyAxNy45OTFDMTAuNzkxOCAxNy42MzkzIDExLjE0MzUgMTcuNDIxMSAxMS40OTk3IDE3LjUxMDJDMTIuMzMyNCAxNy43MTk0IDEzLjc3OTUgMTguNzA3OSAxMy4zMjk3IDIwLjk2MDlaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjAuMzU1OSAxMC41MzI5TDE4LjU2NiAxMi4zMjI5QzE4LjEyMDcgMTIuNzY4MSAxNy41MzMgMTMuMDIxOSAxNi45MDUyIDEzLjAzNTNWMTEuNjk5NUMxNy4xNzY4IDExLjY4NjIgMTcuNDMwNiAxMS41NzA0IDE3LjYyMiAxMS4zNzg5TDE5LjQxMiA5LjU4ODk4QzE5LjY3NDcgOS4zMjYyOCAyMC4wOTc3IDkuMzI2MjggMjAuMzU1OSA5LjU4ODk4QzIwLjYxODYgOS44NDcyMyAyMC42MTg2IDEwLjI3MDIgMjAuMzU1OSAxMC41MzI5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIxLjIyODYgMTQuNTk4MkgxNi45MDUyVjE1LjkzMzlIMjEuMjI4NlYxNC41OTgyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjQ2NzMgMTAuODEzNEMyMS40NTEgMTAuODEzNCAyMi4yNDg0IDEwLjAxNiAyMi4yNDg0IDkuMDMyNDFDMjIuMjQ4NCA4LjA0ODc2IDIxLjQ1MSA3LjI1MTM3IDIwLjQ2NzMgNy4yNTEzN0MxOS40ODM3IDcuMjUxMzcgMTguNjg2MyA4LjA0ODc2IDE4LjY4NjMgOS4wMzI0MUMxOC42ODYzIDEwLjAxNiAxOS40ODM3IDEwLjgxMzQgMjAuNDY3MyAxMC44MTM0WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjM1NTkgMjAuOTQzMUMyMC4yMjY4IDIxLjA3NjcgMjAuMDU3NiAyMS4xMzkgMTkuODgzOSAyMS4xMzlDMTkuNzE0NyAyMS4xMzkgMTkuNTQ1NSAyMS4wNzY3IDE5LjQxMiAyMC45NDMxTDE3LjYyMiAxOS4xNTMyQzE3LjQzMDYgMTguOTYxNyAxNy4xNzY4IDE4Ljg0NTkgMTYuOTA1MiAxOC44MzI2VjE3LjQ5NjhDMTcuNTMzIDE3LjUxMDIgMTguMTIwNyAxNy43NjQgMTguNTY2IDE4LjIwOTJMMjAuMzU1OSAxOS45OTkyQzIwLjYxODYgMjAuMjYxOSAyMC42MTg2IDIwLjY4NDkgMjAuMzU1OSAyMC45NDMxWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIwLjQ2NzMgMjMuMjgwN0MyMS40NTEgMjMuMjgwNyAyMi4yNDg0IDIyLjQ4MzMgMjIuMjQ4NCAyMS40OTk3QzIyLjI0ODQgMjAuNTE2IDIxLjQ1MSAxOS43MTg2IDIwLjQ2NzMgMTkuNzE4NkMxOS40ODM3IDE5LjcxODYgMTguNjg2MyAyMC41MTYgMTguNjg2MyAyMS40OTk3QzE4LjY4NjMgMjIuNDgzMyAxOS40ODM3IDIzLjI4MDcgMjAuNDY3MyAyMy4yODA3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTIyLjI0ODMgMTcuMDQ3MUMyMy4yMzIgMTcuMDQ3MSAyNC4wMjk0IDE2LjI0OTcgMjQuMDI5NCAxNS4yNjZDMjQuMDI5NCAxNC4yODI0IDIzLjIzMiAxMy40ODUgMjIuMjQ4MyAxMy40ODVDMjEuMjY0NyAxMy40ODUgMjAuNDY3MyAxNC4yODI0IDIwLjQ2NzMgMTUuMjY2QzIwLjQ2NzMgMTYuMjQ5NyAyMS4yNjQ3IDE3LjA0NzEgMjIuMjQ4MyAxNy4wNDcxWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTEyNS4yNDEgNi44MzY1NFYyNC44MTE0SDEyMC4zNjFWNi44MzY1NEgxMjUuMjQxWiIgZmlsbD0iI0JENDQ5NSIvPgo8cGF0aCBkPSJNMTA2LjU5NSAyNC44MTE0SDEwMS4zMjlMMTA3LjI2MiA2LjgzNjU0SDExMy45MzJMMTE5Ljg2NSAyNC44MTE0SDExNC41OTlMMTEwLjY2NyAxMS43ODY3SDExMC41MjdMMTA2LjU5NSAyNC44MTE0Wk0xMDUuNjEyIDE3LjcxOThIMTE1LjUxMlYyMS4zNzA5SDEwNS42MTJWMTcuNzE5OFoiIGZpbGw9IiNCRDQ0OTUiLz4KPHBhdGggZD0iTTEwMi4wMzggMTUuODI0QzEwMi4wMzggMTcuODI1MSAxMDEuNjQ5IDE5LjUxMzIgMTAwLjg3MSAyMC44ODgyQzEwMC4wOTIgMjIuMjU3NCA5OS4wNDIxIDIzLjI5NiA5Ny43MTk4IDI0LjAwNEM5Ni4zOTc0IDI0LjcwNjEgOTQuOTIyOSAyNS4wNTcyIDkzLjI5NjMgMjUuMDU3MkM5MS42NTc5IDI1LjA1NzIgOTAuMTc3NiAyNC43MDMyIDg4Ljg1NTIgMjMuOTk1MkM4Ny41Mzg3IDIzLjI4MTMgODYuNDkxMyAyMi4yMzk4IDg1LjcxMzEgMjAuODcwNkM4NC45NDA3IDE5LjQ5NTYgODQuNTU0NiAxNy44MTM0IDg0LjU1NDYgMTUuODI0Qzg0LjU1NDYgMTMuODIyOSA4NC45NDA3IDEyLjEzNzcgODUuNzEzMSAxMC43Njg1Qzg2LjQ5MTMgOS4zOTM1MSA4Ny41Mzg3IDguMzU0OTMgODguODU1MiA3LjY1Mjc4QzkwLjE3NzYgNi45NDQ3OSA5MS42NTc5IDYuNTkwNzkgOTMuMjk2MyA2LjU5MDc5Qzk0LjkyMjkgNi41OTA3OSA5Ni4zOTc0IDYuOTQ0NzkgOTcuNzE5OCA3LjY1Mjc4Qzk5LjA0MjEgOC4zNTQ5MyAxMDAuMDkyIDkuMzkzNTEgMTAwLjg3MSAxMC43Njg1QzEwMS42NDkgMTIuMTM3NyAxMDIuMDM4IDEzLjgyMjkgMTAyLjAzOCAxNS44MjRaTTk3LjAxNzYgMTUuODI0Qzk3LjAxNzYgMTQuNzQ3NCA5Ni44NzQzIDEzLjg0MDQgOTYuNTg3NiAxMy4xMDMyQzk2LjMwNjcgMTIuMzYwMSA5NS44ODgzIDExLjc5ODQgOTUuMzMyNSAxMS40MThDOTQuNzgyNSAxMS4wMzE5IDk0LjEwMzcgMTAuODM4OCA5My4yOTYzIDEwLjgzODhDOTIuNDg4OCAxMC44Mzg4IDkxLjgwNzEgMTEuMDMxOSA5MS4yNTEzIDExLjQxOEM5MC43MDEzIDExLjc5ODQgOTAuMjgyOSAxMi4zNjAxIDg5Ljk5NjIgMTMuMTAzMkM4OS43MTUzIDEzLjg0MDQgODkuNTc0OSAxNC43NDc0IDg5LjU3NDkgMTUuODI0Qzg5LjU3NDkgMTYuOTAwNiA4OS43MTUzIDE3LjgxMDUgODkuOTk2MiAxOC41NTM2QzkwLjI4MjkgMTkuMjkwOCA5MC43MDEzIDE5Ljg1MjUgOTEuMjUxMyAyMC4yMzg3QzkxLjgwNzEgMjAuNjE5IDkyLjQ4ODggMjAuODA5MiA5My4yOTYzIDIwLjgwOTJDOTQuMTAzNyAyMC44MDkyIDk0Ljc4MjUgMjAuNjE5IDk1LjMzMjUgMjAuMjM4N0M5NS44ODgzIDE5Ljg1MjUgOTYuMzA2NyAxOS4yOTA4IDk2LjU4NzYgMTguNTUzNkM5Ni44NzQzIDE3LjgxMDUgOTcuMDE3NiAxNi45MDA2IDk3LjAxNzYgMTUuODI0WiIgZmlsbD0iIzA3MkM1OSIvPgo8cGF0aCBkPSJNNjcuMzIzOSAyNC44MTE0VjYuODM2NTRINzIuMjAzOFYxMy44NThINzguNjYzNVY2LjgzNjU0SDgzLjU0MzRWMjQuODExNEg3OC42NjM1VjE3Ljc5SDcyLjIwMzhWMjQuODExNEg2Ny4zMjM5WiIgZmlsbD0iIzA3MkM1OSIvPgo8cGF0aCBkPSJNNjYuMzQ1NyAxMy41NzcxSDYxLjM5NTZDNjEuMzYwNSAxMy4xNjc1IDYxLjI2NjkgMTIuNzk2IDYxLjExNDcgMTIuNDYyNUM2MC45Njg1IDEyLjEyOSA2MC43NjM3IDExLjg0MjIgNjAuNTAwNCAxMS42MDIzQzYwLjI0MjkgMTEuMzU2NiA1OS45Mjk5IDExLjE2OTQgNTkuNTYxMyAxMS4wNDA2QzU5LjE5MjYgMTAuOTA2IDU4Ljc3NDMgMTAuODM4OCA1OC4zMDYyIDEwLjgzODhDNTcuNDg3IDEwLjgzODggNTYuNzkzNiAxMS4wMzc3IDU2LjIyNjEgMTEuNDM1NkM1NS42NjQ0IDExLjgzMzUgNTUuMjM3MiAxMi40MDQgNTQuOTQ0NyAxMy4xNDcxQzU0LjY1NzkgMTMuODkwMiA1NC41MTQ2IDE0Ljc4MjUgNTQuNTE0NiAxNS44MjRDNTQuNTE0NiAxNi45MjQgNTQuNjYwOSAxNy44NDU2IDU0Ljk1MzQgMTguNTg4N0M1NS4yNTE4IDE5LjMyNTkgNTUuNjgxOSAxOS44ODE4IDU2LjI0MzYgMjAuMjU2M0M1Ni44MDUzIDIwLjYyNDkgNTcuNDgxMiAyMC44MDkyIDU4LjI3MTEgMjAuODA5MkM1OC43MjE2IDIwLjgwOTIgNTkuMTI1MyAyMC43NTM2IDU5LjQ4MjMgMjAuNjQyNEM1OS44MzkyIDIwLjUyNTQgNjAuMTQ5MyAyMC4zNTg3IDYwLjQxMjYgMjAuMTQyMkM2MC42NzU5IDE5LjkyNTcgNjAuODg5NSAxOS42NjUzIDYxLjA1MzMgMTkuMzYxQzYxLjIyMyAxOS4wNTA5IDYxLjMzNzEgMTguNzAyOCA2MS4zOTU2IDE4LjMxNjZMNjYuMzQ1NyAxOC4zNTE3QzY2LjI4NzIgMTkuMTEyNCA2Ni4wNzM2IDE5Ljg4NzYgNjUuNzA1IDIwLjY3NzZDNjUuMzM2NCAyMS40NjE2IDY0LjgxMjcgMjIuMTg3MiA2NC4xMzQgMjIuODU0MkM2My40NjExIDIzLjUxNTQgNjIuNjI3MyAyNC4wNDc4IDYxLjYzMjYgMjQuNDUxNkM2MC42Mzc5IDI0Ljg1NTMgNTkuNDgyMyAyNS4wNTcyIDU4LjE2NTcgMjUuMDU3MkM1Ni41MTU3IDI1LjA1NzIgNTUuMDM1MyAyNC43MDMyIDUzLjcyNDcgMjMuOTk1MkM1Mi40MTk5IDIzLjI4NzIgNTEuMzg3MSAyMi4yNDU3IDUwLjYyNjUgMjAuODcwNkM0OS44NzE3IDE5LjQ5NTYgNDkuNDk0MyAxNy44MTM0IDQ5LjQ5NDMgMTUuODI0QzQ5LjQ5NDMgMTMuODIyOSA0OS44ODA0IDEyLjEzNzcgNTAuNjUyOCAxMC43Njg1QzUxLjQyNTIgOS4zOTM1MSA1Mi40NjY3IDguMzU0OTMgNTMuNzc3MyA3LjY1Mjc4QzU1LjA4OCA2Ljk0NDc5IDU2LjU1MDggNi41OTA3OSA1OC4xNjU3IDYuNTkwNzlDNTkuMzAwOSA2LjU5MDc5IDYwLjM0NTMgNi43NDU4NSA2MS4yOTkxIDcuMDU1OTZDNjIuMjUyOCA3LjM2NjA3IDYzLjA4OTUgNy44MTk1NCA2My44MDkyIDguNDE2MzZDNjQuNTI4OSA5LjAwNzM0IDY1LjEwODIgOS43MzU4MSA2NS41NDcgMTAuNjAxOEM2NS45ODU5IDExLjQ2NzggNjYuMjUyMSAxMi40NTk1IDY2LjM0NTcgMTMuNTc3MVoiIGZpbGw9IiMwNzJDNTkiLz4KPHBhdGggZD0iTTM1LjQyNTQgMjQuODExNFYxMC43Njg1VjYuODM2NTRINDguMzhWMTAuNzY4NUg0MC4zMDUzVjEzLjg1OEg0Ny43MTI5VjE3Ljc5SDQwLjMwNTNWMjAuODc5NEg0OC4zNDQ5VjI0LjgxMTRIMzUuNDI1NFoiIGZpbGw9IiMwNzJDNTkiLz4KPC9zdmc+Cg==",alt:"chat"}),(0,M.createElement)("p",{className:"text-stone-500 font-semibold"},"Assistant Placeholder"),y?(0,M.createElement)("div",{className:"mt-2 bg-accent p-3 rounded-lg border border-accent-foreground/10 max-w-xs"},(0,M.createElement)("div",{className:"flex flex-col gap-2"},(0,M.createElement)("div",{className:"flex items-center"},(0,M.createElement)("strong",{className:"mr-2 text-muted-foreground whitespace-nowrap text-xs"},(0,g.__)("Custom Assistant ID:","echoai")),(0,M.createElement)("code",{className:"bg-input/50 p-1.5 rounded text-xs font-mono uppercase text-foreground border border-accent-foreground/10"},y)),(0,M.createElement)("a",{href:`${window.echoaiConfig?.platformUrl||"http://localhost:3000"}/dashboard/assistant/${y}/settings`,className:"text-xs text-blue-600 hover:underline",target:"_blank",rel:"noopener noreferrer"},(0,g.__)("AI Assistant settings","echoai")))):e?(0,M.createElement)("div",{className:"mt-2 bg-accent p-3 rounded-lg border border-accent-foreground/10 max-w-xs"},(0,M.createElement)("div",{className:"flex flex-col gap-2"},(0,M.createElement)("div",{className:"flex items-center"},(0,M.createElement)("strong",{className:"mr-2 text-muted-foreground whitespace-nowrap text-xs"},(0,g.__)("Default Assistant ID:","echoai")),(0,M.createElement)("code",{className:"bg-input/50 p-1.5 rounded text-xs font-mono uppercase text-foreground border border-accent-foreground/10"},e)),(0,M.createElement)("a",{href:`${window.echoaiConfig?.platformUrl||"http://localhost:3000"}/dashboard/assistant/${e}/settings`,className:"text-xs text-blue-600 hover:underline",target:"_blank",rel:"noopener noreferrer"},(0,g.__)("AI Assistant settings","echoai")))):(0,M.createElement)("p",{className:"mt-1 text-xs text-stone-500 text-center max-w-xs leading-relaxed px-2"},(0,g.__)("Loading default assistant...","echoai")),(0,M.createElement)("p",{className:"mt-3 text-xs text-stone-500 text-center max-w-xs leading-relaxed px-2"},"You can customize this block by adjusting the height and background color in the settings panel on the right."))))}})})(); -
echoai/trunk/echoai.php
r3303253 r3307254 7 7 * Plugin Name: EchoAI 8 8 * Plugin URI: https://echowp.com/ 9 * Description: EchoAI for WordPress is an <strong>AI-driven chatbot</strong> plugin, leveraging OpenAI's advanced technology to provide intelligent and relevant responses to your website visitors. The plugin scans and indexes your published posts, enabling the AI assistant to interact with users based on your content. Perfect for any website looking to offer a cutting-edge, interactive experience.9 * Description: AI-driven chatbot plugin that provides intelligent responses based exclusively on your website's content. No hallucinations, just accurate information with source citations. Supports WordPress content, YouTube videos, PDFs, and more. 10 10 * Author: EchoAI 11 11 * Author URI: https://echowp.com/contact 12 12 * Text Domain: echoai 13 * Version: 0.2.213 * Version: 2.2.3 14 14 * Requires at least: 5.9 15 15 * Requires PHP: 7.4 -
echoai/trunk/lib/api.php
r3303250 r3307254 408 408 register_rest_field($post_type->name, 'featured_image_url', [ 409 409 'get_callback' => function ($post) { 410 // Get post ID safely 411 $post_id = is_array($post) && isset($post['id']) ? $post['id'] : (is_object($post) ? $post->ID : 0); 412 413 if (!$post_id) { 414 return null; 415 } 416 410 417 // First try to get the featured image 411 if (has_post_thumbnail($post ['id'])) {412 $featured_img_url = get_the_post_thumbnail_url($post ['id'], 'full');418 if (has_post_thumbnail($post_id)) { 419 $featured_img_url = get_the_post_thumbnail_url($post_id, 'full'); 413 420 return $featured_img_url; 414 421 } 415 422 416 423 // If no featured image, try to find first image in content 417 $post_content = get_post_field('post_content', $post ['id']);424 $post_content = get_post_field('post_content', $post_id); 418 425 $first_img = ''; 419 426 … … 488 495 register_rest_field($post_type->name, 'all_taxonomies', [ 489 496 'get_callback' => function ($post) { 490 $taxonomies = get_object_taxonomies($post['type'], 'objects'); 497 // Get post type and ID safely 498 $post_type = is_array($post) && isset($post['type']) ? $post['type'] : (is_object($post) ? $post->post_type : ''); 499 $post_id = is_array($post) && isset($post['id']) ? $post['id'] : (is_object($post) ? $post->ID : 0); 500 501 if (!$post_type || !$post_id) { 502 return []; 503 } 504 505 $taxonomies = get_object_taxonomies($post_type, 'objects'); 491 506 $result = []; 492 507 493 508 foreach ($taxonomies as $taxonomy) { 494 $terms = get_the_terms($post ['id'], $taxonomy->name);509 $terms = get_the_terms($post_id, $taxonomy->name); 495 510 496 511 if (!empty($terms) && !is_wp_error($terms)) { -
echoai/trunk/lib/helpers.php
r3303250 r3307254 15 15 * @return void 16 16 */ 17 function echoai_log($message) { 17 function echoai_log($message) 18 { 18 19 if (WP_DEBUG && WP_DEBUG_LOG) { 19 20 error_log('ECHO AI: ' . $message); … … 128 129 WHERE post_status = %s 129 130 AND post_type IN ($placeholders) 130 ORDER BY IDDESC131 ORDER BY post_date DESC 131 132 LIMIT %d", 132 133 array_merge(['publish'], $echoai_post_types, [$limit]) … … 165 166 return [ 166 167 "posts" => $posts, 167 "count" => (int) $count168 "count" => (int) $count 168 169 ]; 169 170 } … … 215 216 } 216 217 217 return (int) $count;218 } 218 return (int) $count; 219 } -
echoai/trunk/readme.txt
r3303253 r3307254 5 5 Requires at least: 5.9 6 6 Tested up to: 6.6 7 Stable tag: 0.2. 27 Stable tag: 0.2.3 8 8 Requires PHP: 7.4 9 9 License: GPLv2 or later 10 10 License URI: https://www.gnu.org/licenses/gpl-2.0.html 11 AI-driven chatbot plugin , leveraging OpenAI's technology to provide intelligent responses to your website visitors.11 AI-driven chatbot plugin that provides intelligent responses based exclusively on your website's content. No hallucinations, just accurate information with source citations. 12 12 13 13 == Description == 14 14 15 **EchoAI for WordPress is an AI-driven chatbot plugin designed to deliver intelligent, relevant, and accurate responses based exclusively on your website ’s content**.15 **EchoAI for WordPress is an AI-driven chatbot plugin designed to deliver intelligent, relevant, and accurate responses based exclusively on your website's content**. 16 16 17 17 By scanning and understanding your published content, EchoAI ensures that your users receive reliable information directly from your site, with no AI hallucinations or misinformation. 18 18 19 When responding, EchoAI provides **citations with links** to relevant sources, helping your users discover more of your website’s valuable content. With a friendly and helpful AI assistant, available 24/7, EchoAI offers an innovative way to engage your audience, guiding them to the right information. 19 When responding, EchoAI provides **citations with links** to relevant sources, helping your users discover more of your website's valuable content. With a friendly and helpful AI assistant, available 24/7, EchoAI offers an innovative way to engage your audience, guiding them to the right information. 20 21 = Beyond WordPress = 22 23 While this plugin is optimized for WordPress, EchoAI also supports: 24 - **YouTube Integration**: Automatically import transcripts from videos or entire channels 25 - **Framer Websites**: Full content synchronization for Framer-built sites 26 - **PDF Documents**: Upload and process PDF files up to 50 pages 27 - **Custom Content**: Add any text content manually through the dashboard 20 28 21 29 == Features == 22 30 23 - Simple integration with WordPress 24 - Supports built-in WordPress post types (posts, pages) and custom post types 25 - Easy setup: 26 - **Floating chat button** (customizable appearance) 27 - **Gutenberg block** 28 - **Shortcode** for classic editor: `[echo_ai]` 29 - Multilanguage support 30 - Real-time content updates within 1-2 minutes for deleted or modified posts 31 - Links to relevant content sources with accurate citations 32 - Powered by OpenAI’s **GPT-4o** model 33 - No AI hallucinations or misinformation 31 = Core WordPress Features = 32 - **Automatic Content Sync**: Real-time synchronization of all WordPress content 33 - **Custom Post Type Support**: Works with posts, pages, and any custom post types 34 - **Webhook Technology**: Updates reflected in 4-5 seconds 35 - **Metadata Sync**: Includes categories, tags, dates, and featured images 36 37 = Integration Options = 38 - **Floating Chat Button**: Customizable position and appearance 39 - **Gutenberg Block**: Native block editor integration with height and color settings 40 - **Shortcode**: `[echo_ai]` for classic editor and widgets 41 - **JavaScript SDK**: For developers and custom implementations 42 43 = Content Sources = 44 - **WordPress Content**: Automatic sync of all published content 45 - **YouTube Videos**: Import individual videos or entire channels with transcripts 46 - **PDF Documents**: Support for text-based PDFs up to 50 pages 47 - **Manual Content**: Add custom text directly through the dashboard 48 - **External Websites**: Import content from any URL 49 50 = AI Capabilities = 51 - **GPT-4o Powered**: Latest OpenAI technology 52 - **Zero Hallucinations**: Only answers from your actual content 53 - **Source Citations**: Every answer includes clickable source links 54 - **Multilingual Support**: Automatically detects and responds in visitor's language 55 - **Context Awareness**: Maintains conversation flow and understands follow-up questions 56 - **Time-Sensitive Responses**: Understands dates and temporal content 57 58 = Customization = 59 - **Multiple Assistants**: Create specialized assistants for different purposes 60 - **Custom Instructions**: Define personality, tone, and behavior 61 - **Greeting Messages**: Personalized welcome messages 62 - **Suggested Questions**: Guide visitors with predefined queries 63 - **Visual Customization**: Match your brand colors and style 34 64 35 65 == Demo == … … 50 80 2. Activate the plugin through the 'Plugins' screen in WordPress. 51 81 3. Use the Gutenberg block or the `[echo_ai]` shortcode to add the EchoAI Assistant to your pages or posts. 52 For more detailed installation ins 0uctions, please visit the [Website Owners Manual](https://docs.echowp.com/)82 For more detailed installation instructions, please visit the [Website Owners Manual](https://docs.echowp.com/) 53 83 54 84 == Frequently Asked Questions == … … 64 94 = What types of content does the plugin support? = 65 95 66 EchoAI supports all content types. You can choose the types of content you want to sync with EchoAI on the settings page. This includes titles, content, authors, tags, categories, and dates for each post, page, or custom post type. 96 EchoAI supports multiple content sources: 97 - **WordPress Content**: All post types (posts, pages, custom) 98 - **YouTube Videos**: Individual videos or entire channels with automatic transcript extraction 99 - **PDF Documents**: Text-based PDFs up to 50 pages 100 - **External Websites**: Any URL content 101 - **Manual Content**: Direct text input through the dashboard 102 103 For WordPress content, this includes titles, content, authors, tags, categories, and dates. 67 104 68 105 = What happens if I delete or update a post? = 69 106 70 If a post is deleted or updated, the assistant will process the changes and update its information within 1-2 minutes. This ensures that the AIprovides the most accurate and up-to-date responses based on your current content.107 With our webhook technology, changes are reflected in just 4-5 seconds! If a post is deleted, updated, or unpublished, the assistant immediately processes these changes. This ensures that the AI always provides the most accurate and up-to-date responses based on your current content. 71 108 72 = How can developers modify the plugin? =109 = Can I use EchoAI with other platforms besides WordPress? = 73 110 74 Yes, the source code of the EchoAI WordPress plugin is open-sourced. 75 Please note that the plugin requires the EchoAI JavaScript SDK to be loaded and relies on the EchoAI API for its functionality. 76 The plugin also contains an installer React app, which developers can modify as documented in the installer/README.md file. 111 Yes! While this plugin is for WordPress, EchoAI also offers: 112 - **Framer Integration**: Custom components for Framer websites 113 - **JavaScript SDK**: For any website or web application 114 - **Direct Assistant Links**: Share your assistant without any integration 115 116 = How can developers extend the plugin? = 117 118 The EchoAI WordPress plugin is open-source and can be customized by developers. The plugin includes: 119 - Full source code for the WordPress integration 120 - JavaScript SDK for custom implementations 121 - Extensive hooks and filters for WordPress developers 122 - Customizable React components for the admin interface 123 124 Please note that the plugin requires the EchoAI JavaScript SDK and relies on the EchoAI API for AI functionality. API credentials are required for the assistant to function. 77 125 78 126 = Third-Party Services = … … 81 129 82 130 - Data sent includes: published post content (title, content, author, tags, categories, date) for analysis. 83 - Data processed: visitor queries and corresponding responses from EchoAI’s AI servers. 84 - API Domain: https://api.echowp.com 85 - JavaScript SDK URL: https://cdn.echowp.com/echoai/echo-ai-latest.js 131 - Data processed: visitor queries and corresponding responses from EchoAI's AI servers. 132 - API Domain: https://api.echoaichat.com 133 - JavaScript SDK URL: https://cdn.echoaichat.com/sdk/echo-sdk.js 134 - Dashboard: https://app.echoaichat.com/ 86 135 87 136 For further information on how your data is handled, please review our terms of service: [https://echowp.com/terms](https://echowp.com/terms) 137 138 = Can I create multiple assistants? = 139 140 Yes! You can create specialized assistants for different purposes: 141 - Customer support assistant 142 - Sales assistant 143 - Technical support assistant 144 - Educational assistant 145 146 Each assistant can have its own personality, instructions, greeting message, and suggested questions. You can use different assistants on different pages of your website. 88 147 89 148 == Screenshots == … … 97 156 98 157 == Changelog == 158 159 = 0.2.3 = 160 - Enhanced API error handling and improved connection stability 161 - Fixed helper functions for better performance 162 - Updated integration specifications 163 - Added comprehensive user manual documentation 164 - General bug fixes and improvements 165 166 = 0.2.2 = 167 - General bugfixes and API modifications 168 169 = 0.2.1 = 170 - Support for the new dashboard 99 171 100 172 = 0.1.11 = -
echoai/trunk/stylesheet.css
r3303250 r3307254 6 6 --font-sans: "Inter", "Poppins", "Roboto", "Open Sans", "Lato", "Helvetica", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 7 7 --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 8 --color-blue-600: oklch(54.6% 0.245 262.881); 8 9 --color-stone-500: oklch(55.3% 0.013 58.071); 9 10 --color-white: #fff; … … 210 211 } 211 212 @layer utilities { 212 .visible {213 visibility: visible;214 }215 213 .static { 216 214 position: static; … … 240 238 margin-top: calc(var(--spacing) * 0); 241 239 } 240 .mt-1 { 241 margin-top: calc(var(--spacing) * 1); 242 } 242 243 .mt-2 { 243 244 margin-top: calc(var(--spacing) * 2); 244 245 } 246 .mt-3 { 247 margin-top: calc(var(--spacing) * 3); 248 } 245 249 .mt-4 { 246 250 margin-top: calc(var(--spacing) * 4); … … 353 357 .transform { 354 358 transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); 355 }356 .cursor-pointer {357 cursor: pointer;358 359 } 359 360 .resize { … … 631 632 } 632 633 } 634 .text-blue-600 { 635 color: var(--color-blue-600); 636 } 633 637 .text-destructive { 634 638 color: var(--color-destructive); … … 660 664 .text-warning-foreground { 661 665 color: var(--color-warning-foreground); 666 } 667 .uppercase { 668 text-transform: uppercase; 662 669 } 663 670 .no-underline { … … 678 685 --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); 679 686 box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); 680 }681 .backdrop-filter {682 -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);683 backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);684 }685 .transition {686 transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;687 transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));688 transition-duration: var(--tw-duration, var(--default-transition-duration));689 687 } 690 688 .transition-all { … … 887 885 inherits: false; 888 886 initial-value: 0 0 #0000; 889 }890 @property --tw-backdrop-blur {891 syntax: "*";892 inherits: false;893 }894 @property --tw-backdrop-brightness {895 syntax: "*";896 inherits: false;897 }898 @property --tw-backdrop-contrast {899 syntax: "*";900 inherits: false;901 }902 @property --tw-backdrop-grayscale {903 syntax: "*";904 inherits: false;905 }906 @property --tw-backdrop-hue-rotate {907 syntax: "*";908 inherits: false;909 }910 @property --tw-backdrop-invert {911 syntax: "*";912 inherits: false;913 }914 @property --tw-backdrop-opacity {915 syntax: "*";916 inherits: false;917 }918 @property --tw-backdrop-saturate {919 syntax: "*";920 inherits: false;921 }922 @property --tw-backdrop-sepia {923 syntax: "*";924 inherits: false;925 887 } 926 888 @layer properties { … … 950 912 --tw-ring-offset-color: #fff; 951 913 --tw-ring-offset-shadow: 0 0 #0000; 952 --tw-backdrop-blur: initial; 953 --tw-backdrop-brightness: initial; 954 --tw-backdrop-contrast: initial; 955 --tw-backdrop-grayscale: initial; 956 --tw-backdrop-hue-rotate: initial; 957 --tw-backdrop-invert: initial; 958 --tw-backdrop-opacity: initial; 959 --tw-backdrop-saturate: initial; 960 --tw-backdrop-sepia: initial; 961 } 962 } 963 } 914 } 915 } 916 }
Note: See TracChangeset
for help on using the changeset viewer.