mirror of
https://github.com/crowetic/nc-talk-ai.git
synced 2026-09-07 15:42:31 +00:00
56 lines
72 KiB
JavaScript
56 lines
72 KiB
JavaScript
(function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode('.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}#skip-actions.vue-skip-actions:focus-within{top:0!important;left:0!important;width:100vw;height:100vh;padding:var(--body-container-margin)!important;-webkit-backdrop-filter:brightness(50%);backdrop-filter:brightness(50%)}@media only screen and (min-width:1024px){.content:not(.content--legacy) .app-navigation:not(.app-navigation--close)~.app-content{border-inline-start:1px solid var(--color-border);border-start-start-radius:var(--body-container-radius);border-end-start-radius:var(--body-container-radius)}}.material-design-icon[data-v-ffbd7561]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-skip-actions__container[data-v-ffbd7561]{background-color:var(--color-main-background);border-radius:var(--border-radius-large);padding:22px}.vue-skip-actions__headline[data-v-ffbd7561]{font-weight:700;font-size:20px;line-height:30px;margin-bottom:12px}.vue-skip-actions__buttons[data-v-ffbd7561]{display:flex;flex-wrap:wrap;gap:12px}.vue-skip-actions__buttons>*[data-v-ffbd7561]{flex:1 0 fit-content}.vue-skip-actions__image[data-v-ffbd7561]{margin-top:12px}.vue-skip-actions__image[data-v-ffbd7561]:dir(rtl){transform:rotateY(180deg)}.content[data-v-ffbd7561]{box-sizing:border-box;margin:var(--body-container-margin);margin-top:var(--header-height);display:flex;width:calc(100% - var(--body-container-margin) * 2);border-radius:var(--body-container-radius);height:var(--body-height);overflow:hidden;padding:0}.content[data-v-ffbd7561]:not(.content--legacy){background-color:var(--color-main-background-blur, var(--color-main-background));backdrop-filter:var(--filter-background-blur, none);-webkit-backdrop-filter:var(--filter-background-blur, none)}.content[data-v-ffbd7561]:not(.with-sidebar--full){position:fixed}.content[data-v-ffbd7561] *{box-sizing:border-box}.material-design-icon[data-v-d0b1a8bc]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-details-toggle[data-v-d0b1a8bc]{position:sticky;width:var(--default-clickable-area);height:var(--default-clickable-area);padding:calc((var(--default-clickable-area) - 16px) / 2);cursor:pointer;opacity:.6;transform:rotate(180deg);background-color:var(--color-main-background);z-index:2000;top:var(--app-navigation-padding);inset-inline-start:calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2)}.app-details-toggle--mobile[data-v-d0b1a8bc]{inset-inline-start:var(--app-navigation-padding)}.app-details-toggle[data-v-d0b1a8bc]:active,.app-details-toggle[data-v-d0b1a8bc]:hover,.app-details-toggle[data-v-d0b1a8bc]:focus{opacity:1}.material-design-icon[data-v-342489c9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-content[data-v-342489c9]{position:initial;z-index:1000;flex-basis:100vw;height:100%;margin:0!important;background-color:var(--color-main-background);min-width:0}.app-content[data-v-342489c9]:not(.app-content--has-list){overflow:auto}.app-content-wrapper[data-v-342489c9]{position:relative;width:100%;height:100%}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-342489c9] .app-content-list{display:flex}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-342489c9] .app-content-details,.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-342489c9] .app-content-list{display:none}.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-342489c9] .app-content-details{display:block}[data-v-342489c9] .splitpanes.default-theme .app-content-list{max-width:none;scrollbar-width:auto}[data-v-342489c9] .splitpanes.default-theme .splitpanes__pane{background-color:transparent;transition:none}[data-v-342489c9] .splitpanes.default-theme .splitpanes__pane-list{min-width:300px;position:sticky}@media only screen and not (min-width:1024px){[data-v-342489c9] .splitpanes.default-theme .splitpanes__pane-list{display:none}}[data-v-342489c9] .splitpanes.default-theme .splitpanes__pane-details{overflow-y:auto}@media only screen and not (min-width:1024px){[data-v-342489c9] .splitpanes.default-theme .splitpanes__pane-details{min-width:100%}}[data-v-342489c9] .splitpanes.default-theme .splitpanes__splitter{background-color:var(--color-main-background)}[data-v-342489c9] .splitpanes.default-theme .splitpanes__splitter:before,[data-v-342489c9] .splitpanes.default-theme .splitpanes__splitter:after{background-color:var(--color-border)}[data-v-342489c9] .splitpanes.default-theme.splitpanes--vertical .splitpanes__splitter{border-left:1px solid var(--color-border)}[data-v-342489c9] .splitpanes.default-theme.splitpanes--horizontal .splitpanes__splitter{border-top:1px solid var(--color-border)}.app-content-wrapper--show-list[data-v-342489c9] .app-content-list{max-width:none}.app-content-wrapper__list[data-v-342489c9]{height:100%}.splitpanes{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}.splitpanes--vertical{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.splitpanes--horizontal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{-webkit-transition:width .2s ease-out;-o-transition:width .2s ease-out;transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{-webkit-transition:height .2s ease-out;-o-transition:height .2s ease-out;transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{-webkit-transition:none;-o-transition:none;transition:none}.splitpanes__splitter{-ms-touch-action:none;touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;-ms-flex-negative:0;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.public-bot-card[data-v-27cc5089]{background:var(--color-main-background);border:1px solid var(--color-border);border-radius:12px;padding:20px;position:relative;transition:box-shadow .2s,transform .2s;display:flex;flex-direction:column;gap:16px}.public-bot-card[data-v-27cc5089]:hover{box-shadow:0 4px 16px #0000001f;transform:translateY(-2px)}.public-bot-card.inactive[data-v-27cc5089]{opacity:.6}.card-header[data-v-27cc5089]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.bot-identity[data-v-27cc5089]{display:flex;flex-direction:column;gap:8px}.bot-name[data-v-27cc5089]{margin:0;font-size:18px;font-weight:600;color:var(--color-main-text)}.mention-row[data-v-27cc5089]{display:flex;align-items:center;gap:6px;width:fit-content}.mention-badge[data-v-27cc5089]{display:inline-block;background:var(--color-primary-element);color:#fff;padding:4px 12px;border-radius:16px;font-size:13px;font-weight:600;width:fit-content}.copy-handle-button[data-v-27cc5089]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--color-text-lighter);cursor:pointer;transition:background .2s,color .2s,border-color .2s}.copy-handle-button[data-v-27cc5089]:hover,.copy-handle-button[data-v-27cc5089]:focus-visible{background:var(--color-background-hover);border-color:var(--color-border);color:var(--color-main-text)}.visibility-badge[data-v-27cc5089]{padding:4px 12px;border-radius:16px;font-size:12px;font-weight:600;text-transform:uppercase;white-space:nowrap}.visibility-badge.global[data-v-27cc5089]{background:var(--color-success);color:#000}.visibility-badge.personal[data-v-27cc5089]{background:var(--color-primary-element-light);color:var(--color-primary-element-dark)}.visibility-badge.teams[data-v-27cc5089]{background:var(--color-primary-element);color:#fff}.visibility-badge.groups[data-v-27cc5089]{background:var(--color-warning);color:#000}.bot-description[data-v-27cc5089]{flex:1;min-height:48px}.bot-description p[data-v-27cc5089]{margin:0;font-size:14px;line-height:1.5;color:var(--color-text-lighter)}.bot-description .no-description[data-v-27cc5089]{font-style:italic;opacity:.7}.access-reason[data-v-27cc5089]{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-background-dark);border-radius:8px;font-size:13px}.access-icon[data-v-27cc5089]{font-size:14px}.access-text[data-v-27cc5089]{color:var(--color-text-lighter)}.bot-meta[data-v-27cc5089]{display:flex;flex-direction:column;gap:6px;padding-top:12px;border-top:1px solid var(--color-border)}.meta-row[data-v-27cc5089]{display:flex;gap:8px;font-size:13px}.meta-label[data-v-27cc5089]{color:var(--color-text-lighter)}.meta-value[data-v-27cc5089]{color:var(--color-main-text);font-weight:500}.card-actions[data-v-27cc5089]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.button[data-v-27cc5089]{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:20px;cursor:pointer;font-size:14px;font-weight:500;transition:background .2s,border-color .2s}.primary-button[data-v-27cc5089]{background:var(--color-primary-element);color:#fff;border:1px solid var(--color-primary-element)}.primary-button[data-v-27cc5089]:hover{background:var(--color-primary-element-light)}.secondary-button[data-v-27cc5089]{background:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border)}.secondary-button[data-v-27cc5089]:hover{background:var(--color-background-hover)}.inactive-badge[data-v-27cc5089]{position:absolute;top:12px;right:12px;background:var(--color-error);color:#fff;padding:4px 10px;border-radius:12px;font-size:11px;display:flex;align-items:center;gap:4px}.modal-overlay[data-v-2318f839]{position:fixed;z-index:9999;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-container[data-v-2318f839]{background:var(--color-main-background);border-radius:12px;box-shadow:0 8px 32px #0000003d;max-width:700px;width:90%;max-height:85vh;display:flex;flex-direction:column}.modal-header[data-v-2318f839]{padding:20px 24px;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.header-content[data-v-2318f839]{display:flex;align-items:center;gap:16px}.header-content h2[data-v-2318f839]{margin:0;font-size:22px;font-weight:600}.mention-badge[data-v-2318f839]{background:var(--color-primary-element);color:#fff;padding:4px 12px;border-radius:16px;font-size:14px;font-weight:600}.close-button[data-v-2318f839]{background:none;border:none;cursor:pointer;padding:8px;font-size:20px;opacity:.7;border-radius:50%;transition:opacity .2s,background .2s}.close-button[data-v-2318f839]:hover{opacity:1;background:var(--color-background-hover)}.modal-loading[data-v-2318f839]{padding:60px 20px;text-align:center}.modal-loading .icon-loading[data-v-2318f839]{font-size:32px;display:block;margin-bottom:16px}.modal-body[data-v-2318f839]{padding:24px;overflow-y:auto;flex:1}.detail-section[data-v-2318f839]{margin-bottom:28px}.detail-section[data-v-2318f839]:last-child{margin-bottom:0}.detail-section h3[data-v-2318f839]{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--color-text-lighter);text-transform:uppercase;letter-spacing:.5px}.description-text[data-v-2318f839]{margin:0;font-size:15px;line-height:1.6;color:var(--color-main-text)}.no-content[data-v-2318f839]{margin:0;font-style:italic;color:var(--color-text-lighter)}.visibility-info[data-v-2318f839]{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.visibility-badge[data-v-2318f839]{padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600}.visibility-badge.global[data-v-2318f839]{background:var(--color-success);color:#000}.visibility-badge.personal[data-v-2318f839]{background:var(--color-primary-element-light);color:var(--color-primary-element-dark)}.visibility-badge.teams[data-v-2318f839]{background:var(--color-primary-element);color:#fff}.visibility-badge.groups[data-v-2318f839]{background:var(--color-warning);color:#000}.access-reason[data-v-2318f839]{font-size:13px;color:var(--color-text-lighter);padding:6px 12px;background:var(--color-background-dark);border-radius:8px}.creator-info[data-v-2318f839]{display:flex;flex-direction:column;gap:4px}.creator-name[data-v-2318f839]{font-size:15px;font-weight:500;color:var(--color-main-text)}.creation-date[data-v-2318f839]{font-size:13px;color:var(--color-text-lighter)}.system-prompt-container[data-v-2318f839]{background:var(--color-background-dark);border-radius:8px;padding:16px;max-height:250px;overflow-y:auto}.system-prompt[data-v-2318f839]{margin:0;font-family:Menlo,Monaco,Consolas,monospace;font-size:13px;line-height:1.6;white-space:pre-wrap;word-wrap:break-word;color:var(--color-main-text)}.tools-list[data-v-2318f839]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.tool-item[data-v-2318f839]{padding:12px 16px;background:var(--color-background-dark);border-radius:8px}.tool-header[data-v-2318f839]{display:flex;align-items:center;gap:10px;margin-bottom:4px}.tool-name[data-v-2318f839]{font-weight:600;font-size:14px}.tool-badge[data-v-2318f839]{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;text-transform:uppercase}.tool-badge.builtin[data-v-2318f839]{background:var(--color-primary-element-light);color:var(--color-primary-element-dark)}.tool-description[data-v-2318f839]{margin:0;font-size:13px;color:var(--color-text-lighter);line-height:1.4}.rag-status[data-v-2318f839]{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--color-background-dark);border-radius:8px;font-size:14px}.rag-icon[data-v-2318f839]{font-size:20px}.modal-footer[data-v-2318f839]{padding:16px 24px;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end}.button[data-v-2318f839]{padding:10px 20px;border:1px solid var(--color-border);background:var(--color-main-background);border-radius:20px;cursor:pointer;font-size:14px;transition:background .2s}.button[data-v-2318f839]:hover{background:var(--color-background-hover)}.talk-start-overlay[data-v-1bd149f6]{position:fixed;z-index:10000;top:0;left:0;width:100%;height:100%;background:#0009;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.talk-start-modal[data-v-1bd149f6]{background:var(--color-main-background);border-radius:12px;box-shadow:0 8px 32px #0000003d;max-width:720px;width:92%;max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.modal-header[data-v-1bd149f6]{padding:20px 24px;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;gap:16px}.header-content[data-v-1bd149f6]{min-width:0}.header-content h2[data-v-1bd149f6]{margin:0 0 8px;font-size:22px;font-weight:600;line-height:1.25}.mention-badge[data-v-1bd149f6]{display:inline-block;background:var(--color-primary-element);color:#fff;padding:4px 12px;border-radius:16px;font-size:14px;font-weight:600}.close-button[data-v-1bd149f6]{background:none;border:none;cursor:pointer;padding:8px;font-size:20px;opacity:.7;border-radius:50%;transition:opacity .2s,background .2s}.close-button[data-v-1bd149f6]:hover{opacity:1;background:var(--color-background-hover)}.modal-body[data-v-1bd149f6]{padding:24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:20px}.modal-tabs[data-v-1bd149f6]{padding:24px 24px 0;flex:0 0 auto}.mode-tabs[data-v-1bd149f6]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--color-border);border-radius:8px;overflow:hidden}.mode-tab[data-v-1bd149f6]{border:0;background:var(--color-main-background);color:var(--color-main-text);padding:11px 14px;font-weight:600;cursor:pointer}.mode-tab+.mode-tab[data-v-1bd149f6]{border-left:1px solid var(--color-border)}.mode-tab.active[data-v-1bd149f6]{background:var(--color-primary-element);color:#fff}.form-section[data-v-1bd149f6]{display:flex;flex-direction:column;gap:8px}.section-header[data-v-1bd149f6]{display:flex;justify-content:space-between;align-items:center;gap:12px}label[data-v-1bd149f6],.section-header label[data-v-1bd149f6]{font-size:13px;font-weight:600;color:var(--color-text-lighter);text-transform:uppercase}input[type=text][data-v-1bd149f6],textarea[data-v-1bd149f6]{width:100%;box-sizing:border-box;border:1px solid var(--color-border);border-radius:8px;background:var(--color-main-background);color:var(--color-main-text);font-size:14px;padding:10px 12px}textarea[data-v-1bd149f6]{resize:vertical;min-height:96px;line-height:1.5}.refresh-button[data-v-1bd149f6]{border:1px solid var(--color-border);background:var(--color-main-background);border-radius:16px;padding:5px 12px;cursor:pointer;color:var(--color-main-text)}.refresh-button[data-v-1bd149f6]:disabled{cursor:default;opacity:.6}.room-state[data-v-1bd149f6],.error-state[data-v-1bd149f6],.warning-state[data-v-1bd149f6]{padding:12px 14px;border-radius:8px;font-size:14px;line-height:1.4}.room-state[data-v-1bd149f6]{background:var(--color-background-dark);color:var(--color-text-lighter);display:flex;align-items:center;gap:8px}.error-state[data-v-1bd149f6]{background:var(--color-error-hover);color:var(--color-error-text);border:1px solid var(--color-error)}.warning-state[data-v-1bd149f6]{background:var(--color-warning);color:#000}.room-list[data-v-1bd149f6]{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow-y:auto}.room-option[data-v-1bd149f6]{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-main-background);cursor:pointer;text-transform:none;color:var(--color-main-text)}.room-option.selected[data-v-1bd149f6]{border-color:var(--color-primary-element);box-shadow:0 0 0 1px var(--color-primary-element)}.room-option input[data-v-1bd149f6]{margin-top:3px;flex:0 0 auto}.room-copy[data-v-1bd149f6]{min-width:0;display:flex;flex-direction:column;gap:4px}.room-title[data-v-1bd149f6]{font-size:14px;font-weight:600;color:var(--color-main-text);overflow-wrap:anywhere}.room-meta[data-v-1bd149f6]{font-size:12px;font-weight:400;color:var(--color-text-lighter)}.send-option[data-v-1bd149f6]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;background:var(--color-background-dark);border-radius:8px;text-transform:none;color:var(--color-main-text)}.send-option input[data-v-1bd149f6]{margin-top:2px}.send-option span[data-v-1bd149f6]{display:flex;flex-direction:column;gap:4px}.send-option small[data-v-1bd149f6]{color:var(--color-text-lighter);font-weight:400;line-height:1.35}.modal-footer[data-v-1bd149f6]{padding:16px 24px;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:10px}.button[data-v-1bd149f6]{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border:1px solid var(--color-border);background:var(--color-main-background);border-radius:20px;cursor:pointer;font-size:14px;font-weight:600;color:var(--color-main-text);transition:background .2s,opacity .2s}.button[data-v-1bd149f6]:hover:not(:disabled){background:var(--color-background-hover)}.button.primary[data-v-1bd149f6]{background:var(--color-primary-element);border-color:var(--color-primary-element);color:#fff}.button.primary[data-v-1bd149f6]:hover:not(:disabled){background:var(--color-primary-element-light)}.button[data-v-1bd149f6]:disabled{cursor:default;opacity:.6}@media(max-width:600px){.talk-start-modal[data-v-1bd149f6]{width:100%;height:100%;max-height:none;border-radius:0}.modal-footer[data-v-1bd149f6]{flex-direction:column-reverse}.button[data-v-1bd149f6]{width:100%}}.public-bot-list[data-v-295e9ac6]{padding:24px;max-width:1400px;margin:0 auto}.header[data-v-295e9ac6]{margin-bottom:32px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.header-content[data-v-295e9ac6]{flex:1}.header h2[data-v-295e9ac6]{margin:0 0 8px;font-size:28px;font-weight:700;color:var(--color-main-text)}.subtitle[data-v-295e9ac6]{margin:0;font-size:15px;color:var(--color-text-lighter)}.create-bots-button[data-v-295e9ac6]{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background:var(--color-main-background);border:2px solid var(--color-main-text);border-radius:8px;color:var(--color-main-text);font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;transition:all .15s ease;white-space:nowrap}.create-bots-button[data-v-295e9ac6]:hover{background:var(--color-main-text);color:var(--color-main-background)}.create-bots-button .icon[data-v-295e9ac6]{font-size:16px}.bot-grid[data-v-295e9ac6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px}.empty-state[data-v-295e9ac6]{text-align:center;padding:80px 20px;background:var(--color-background-dark);border-radius:12px}.empty-icon[data-v-295e9ac6]{font-size:64px;margin-bottom:16px}.empty-state h3[data-v-295e9ac6]{margin:0 0 8px;font-size:20px;font-weight:600}.empty-state p[data-v-295e9ac6]{margin:0;color:var(--color-text-lighter);font-size:15px}.loading-state[data-v-295e9ac6]{text-align:center;padding:60px 20px}.loading-state .icon-loading[data-v-295e9ac6]{display:inline-block;font-size:32px;margin-bottom:16px}.loading-state p[data-v-295e9ac6]{margin:0;color:var(--color-text-lighter)}')),document.head.appendChild(a)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
||
import{s as W}from"./appIconRuntime-ltIyK5iP.chunk.mjs";import{V as h,v as A,g as f,a2 as G,t as $,j as Y,k as R,a3 as C,a4 as K,l as g,a5 as X,a6 as J,a7 as Q,a8 as tt,a9 as et,n as u,s as z,b as S,c as y,a as v,A as k}from"./branding-cqWE0Otc.chunk.mjs";import{u as P,l as it,g as st}from"./index-DSodDqU0.chunk.mjs";const q="educai",Z="2.39.5";let at="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",nt=(e=21)=>{let i="",s=e|0;for(;s--;)i+=at[Math.random()*64|0];return i};function b(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?b=function(i){return typeof i}:b=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},b(e)}var B={selector:"vue-portal-target-".concat(nt())},ot=function(e){return B.selector=e},w=typeof window<"u"&&(typeof document>"u"?"undefined":b(document))!==void 0,lt=h.extend({abstract:!0,name:"PortalOutlet",props:["nodes","tag"],data:function(e){return{updatedNodes:e.nodes}},render:function(e){var i=this.updatedNodes&&this.updatedNodes();return i?i.length===1&&!i[0].text?i:e(this.tag||"DIV",i):e()},destroyed:function(){var e=this.$el;e&&e.parentNode.removeChild(e)}}),L=h.extend({name:"VueSimplePortal",props:{disabled:{type:Boolean},prepend:{type:Boolean},selector:{type:String,default:function(){return"#".concat(B.selector)}},tag:{type:String,default:"DIV"}},render:function(e){if(this.disabled){var i=this.$scopedSlots&&this.$scopedSlots.default();return i?i.length<2&&!i[0].text?i:e(this.tag,i):e()}return e()},created:function(){this.getTargetEl()||this.insertTargetEl()},updated:function(){var e=this;this.$nextTick(function(){!e.disabled&&e.slotFn!==e.$scopedSlots.default&&(e.container.updatedNodes=e.$scopedSlots.default),e.slotFn=e.$scopedSlots.default})},beforeDestroy:function(){this.unmount()},watch:{disabled:{immediate:!0,handler:function(e){e?this.unmount():this.$nextTick(this.mount)}}},methods:{getTargetEl:function(){if(w)return document.querySelector(this.selector)},insertTargetEl:function(){if(w){var e=document.querySelector("body"),i=document.createElement(this.tag);i.id=this.selector.substring(1),e.appendChild(i)}},mount:function(){if(w){var e=this.getTargetEl(),i=document.createElement("DIV");this.prepend&&e.firstChild?e.insertBefore(i,e.firstChild):e.appendChild(i),this.container=new lt({el:i,parent:this,propsData:{tag:this.tag,nodes:this.$scopedSlots.default}})}},unmount:function(){this.container&&(this.container.$destroy(),delete this.container)}}});function rt(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.component(i.name||"portal",L),i.defaultSelector&&ot(i.defaultSelector)}typeof window<"u"&&window.Vue&&window.Vue===h&&h.use(rt),A(G);const ct=`<!--
|
||
- SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
||
- SPDX-License-Identifier: AGPL-3.0-or-later
|
||
-->
|
||
<svg width="395" height="314" viewBox="0 0 395 314" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<rect width="395" height="314" rx="11" fill="#439DCD"/>
|
||
<rect x="13" y="51" width="366" height="248" rx="8" fill="white"/>
|
||
<rect x="22" y="111" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="127" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="63" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="191" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="143" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="79" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="159" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="95" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="175" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<path d="M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z" fill="#DEDEDE"/>
|
||
<path d="M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z" fill="white"/>
|
||
<rect x="79" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="99" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="119" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="139" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="159" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="179" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM140 44C132.268 44 126 50.268 126 58V292C126 299.732 132.268 306 140 306H372C379.732 306 386 299.732 386 292V58C386 50.268 379.732 44 372 44H140Z" fill="black" fill-opacity="0.35"/>
|
||
</svg>
|
||
`,dt=`<!--
|
||
- SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
|
||
- SPDX-License-Identifier: AGPL-3.0-or-later
|
||
-->
|
||
<svg width="395" height="314" viewBox="0 0 395 314" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||
<rect width="395" height="314" rx="11" fill="#439DCD"/>
|
||
<rect x="13" y="51" width="366" height="248" rx="8" fill="white"/>
|
||
<rect x="22" y="111" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="127" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="63" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="191" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="143" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="79" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="159" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="95" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<rect x="22" y="175" width="92" height="12" rx="6" fill="#DEDEDE"/>
|
||
<path d="M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z" fill="#DEDEDE"/>
|
||
<path d="M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z" fill="white"/>
|
||
<rect x="79" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="99" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="119" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="139" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="159" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<rect x="179" y="20" width="8" height="8" rx="4" fill="white"/>
|
||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM112 44C119.732 44 126 50.268 126 58V292C126 299.732 119.732 306 112 306H20C12.268 306 6 299.732 6 292V58C6 50.268 12.268 44 20 44H112Z" fill="black" fill-opacity="0.35"/>
|
||
</svg>
|
||
`,pt={name:"NcContent",components:{NcButton:R,NcIconSvgWrapper:Y,Teleport:L},provide(){return{appName:this.appName,"NcContent:setHasAppNavigation":this.setAppNavigation,"NcContent:selector":"#content-vue"}},props:{appName:{type:String,required:!0}},setup(){return{isMobile:P(),isLegacy34:K}},data(){return{hasAppNavigation:!1,currentFocus:""}},computed:{currentImage(){return this.currentFocus==="navigation"?dt:ct}},beforeMount(){const e=document.getElementById("skip-actions");e&&(e.innerHTML="",e.classList.add("vue-skip-actions"))},methods:{t:$,openAppNavigation(){C("toggle-navigation",{open:!0}),this.$nextTick(()=>{window.location.hash="app-navigation-vue",document.getElementById("app-navigation-vue").focus()})},setAppNavigation(e){this.hasAppNavigation=e,this.currentFocus===""&&(this.currentFocus="navigation")}}};var ht=function(){var e=this,i=e._self._c;return i("div",{staticClass:"content",class:[`app-${e.appName.toLowerCase()}`,{"content--legacy":e.isLegacy34}],attrs:{id:"content-vue"}},[i("Teleport",{attrs:{selector:"#skip-actions"}},[i("div",{staticClass:"vue-skip-actions__container"},[i("div",{staticClass:"vue-skip-actions__headline"},[e._v(" "+e._s(e.t("Keyboard navigation help"))+" ")]),i("div",{staticClass:"vue-skip-actions__buttons"},[i("NcButton",{directives:[{name:"show",rawName:"v-show",value:e.hasAppNavigation,expression:"hasAppNavigation"}],attrs:{href:"#app-navigation-vue",variant:"tertiary"},on:{click:function(s){return s.preventDefault(),e.openAppNavigation.apply(null,arguments)},focusin:function(s){e.currentFocus="navigation"},mouseover:function(s){e.currentFocus="navigation"}}},[e._v(" "+e._s(e.t("Skip to app navigation"))+" ")]),i("NcButton",{attrs:{href:"#app-content-vue",variant:"tertiary"},on:{focusin:function(s){e.currentFocus="content"},mouseover:function(s){e.currentFocus="content"}}},[e._v(" "+e._s(e.t("Skip to main content"))+" ")])],1),i("NcIconSvgWrapper",{directives:[{name:"show",rawName:"v-show",value:!e.isMobile,expression:"!isMobile"}],staticClass:"vue-skip-actions__image",attrs:{svg:e.currentImage,size:"auto"}})],1),e._v(" ")]),e._t("default")],2)},ut=[],mt=f(pt,ht,ut,!1,null,"ffbd7561");const gt=mt.exports;var vt=Object.defineProperty,ft=Object.defineProperties,bt=Object.getOwnPropertyDescriptors,_=Object.getOwnPropertySymbols,F=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable,M=(e,i,s)=>i in e?vt(e,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[i]=s,Ct=(e,i)=>{for(var s in i||(i={}))F.call(i,s)&&M(e,s,i[s]);if(_)for(var s of _(i))H.call(i,s)&&M(e,s,i[s]);return e},yt=(e,i)=>ft(e,bt(i)),_t=(e,i)=>{var s={};for(var a in e)F.call(e,a)&&i.indexOf(a)<0&&(s[a]=e[a]);if(e!=null&&_)for(var a of _(e))i.indexOf(a)<0&&H.call(e,a)&&(s[a]=e[a]);return s};function I(e,i,s,a,o,l,r,d){var c=typeof e=="function"?e.options:e;i&&(c.render=i,c.staticRenderFns=s,c._compiled=!0);var p;if(o&&(p=o),p)if(c.functional){c._injectStyles=p;var x=c.render;c.render=function(j,D){return p.call(D),x(j,D)}}else{var m=c.beforeCreate;c.beforeCreate=m?[].concat(m,p):[p]}return{exports:e,options:c}}const xt={name:"splitpanes",props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:()=>({container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}),computed:{panesCount(){return this.panes.length},indexedPanes(){return this.panes.reduce((e,i)=>(e[i.id]=i)&&e,{})}},methods:{updatePaneComponents(){this.panes.forEach(e=>{e.update&&e.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[e.id].size}%`})})},bindEvents(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown(e,i){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=i},onMouseMove(e){this.touch.mouseDown&&(e.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(e)),this.$emit("resize",this.panes.map(i=>({min:i.min,max:i.max,size:i.size}))))},onMouseUp(){this.touch.dragging&&this.$emit("resized",this.panes.map(e=>({min:e.min,max:e.max,size:e.size}))),this.touch.mouseDown=!1,setTimeout(()=>{this.touch.dragging=!1,this.unbindEvents()},100)},onSplitterClick(e,i){"ontouchstart"in window&&(e.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===i?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(e,i),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=i,this.splitterTaps.timeoutId=setTimeout(()=>{this.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[i])},onSplitterDblClick(e,i){let s=0;this.panes=this.panes.map((a,o)=>(a.size=o===i?a.max:a.min,o!==i&&(s+=a.min),a)),this.panes[i].size-=s,this.$emit("pane-maximize",this.panes[i])},onPaneClick(e,i){this.$emit("pane-click",this.indexedPanes[i])},getCurrentMouseDrag(e){const i=this.container.getBoundingClientRect(),{clientX:s,clientY:a}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:s-i.left,y:a-i.top}},getCurrentDragPercentage(e){e=e[this.horizontal?"y":"x"];const i=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(e=i-e),e*100/i},calculatePanesSize(e){const i=this.touch.activeSplitter;let s={prevPanesSize:this.sumPrevPanesSize(i),nextPanesSize:this.sumNextPanesSize(i),prevReachedMinPanes:0,nextReachedMinPanes:0};const a=0+(this.pushOtherPanes?0:s.prevPanesSize),o=100-(this.pushOtherPanes?0:s.nextPanesSize),l=Math.max(Math.min(this.getCurrentDragPercentage(e),o),a);let r=[i,i+1],d=this.panes[r[0]]||null,c=this.panes[r[1]]||null;const p=d.max<100&&l>=d.max+s.prevPanesSize,x=c.max<100&&l<=100-(c.max+this.sumNextPanesSize(i+1));if(p||x){p?(d.size=d.max,c.size=Math.max(100-d.max-s.prevPanesSize-s.nextPanesSize,0)):(d.size=Math.max(100-c.max-s.prevPanesSize-this.sumNextPanesSize(i+1),0),c.size=c.max);return}if(this.pushOtherPanes){const m=this.doPushOtherPanes(s,l);if(!m)return;({sums:s,panesToResize:r}=m),d=this.panes[r[0]]||null,c=this.panes[r[1]]||null}d!==null&&(d.size=Math.min(Math.max(l-s.prevPanesSize-s.prevReachedMinPanes,d.min),d.max)),c!==null&&(c.size=Math.min(Math.max(100-l-s.nextPanesSize-s.nextReachedMinPanes,c.min),c.max))},doPushOtherPanes(e,i){const s=this.touch.activeSplitter,a=[s,s+1];return i<e.prevPanesSize+this.panes[a[0]].min&&(a[0]=this.findPrevExpandedPane(s).index,e.prevReachedMinPanes=0,a[0]<s&&this.panes.forEach((o,l)=>{l>a[0]&&l<=s&&(o.size=o.min,e.prevReachedMinPanes+=o.min)}),e.prevPanesSize=this.sumPrevPanesSize(a[0]),a[0]===void 0)?(e.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach((o,l)=>{l>0&&l<=s&&(o.size=o.min,e.prevReachedMinPanes+=o.min)}),this.panes[a[1]].size=100-e.prevReachedMinPanes-this.panes[0].min-e.prevPanesSize-e.nextPanesSize,null):i>100-e.nextPanesSize-this.panes[a[1]].min&&(a[1]=this.findNextExpandedPane(s).index,e.nextReachedMinPanes=0,a[1]>s+1&&this.panes.forEach((o,l)=>{l>s&&l<a[1]&&(o.size=o.min,e.nextReachedMinPanes+=o.min)}),e.nextPanesSize=this.sumNextPanesSize(a[1]-1),a[1]===void 0)?(e.nextReachedMinPanes=0,this.panes[this.panesCount-1].size=this.panes[this.panesCount-1].min,this.panes.forEach((o,l)=>{l<this.panesCount-1&&l>=s+1&&(o.size=o.min,e.nextReachedMinPanes+=o.min)}),this.panes[a[0]].size=100-e.prevPanesSize-e.nextReachedMinPanes-this.panes[this.panesCount-1].min-e.nextPanesSize,null):{sums:e,panesToResize:a}},sumPrevPanesSize(e){return this.panes.reduce((i,s,a)=>i+(a<e?s.size:0),0)},sumNextPanesSize(e){return this.panes.reduce((i,s,a)=>i+(a>e+1?s.size:0),0)},findPrevExpandedPane(e){return[...this.panes].reverse().find(i=>i.index<e&&i.size>i.min)||{}},findNextExpandedPane(e){return this.panes.find(i=>i.index>e+1&&i.size>i.min)||{}},checkSplitpanesNodes(){Array.from(this.container.children).forEach(e=>{const i=e.classList.contains("splitpanes__pane"),s=e.classList.contains("splitpanes__splitter");if(!i&&!s){e.parentNode.removeChild(e),console.warn("Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed.");return}})},addSplitter(e,i,s=!1){const a=e-1,o=document.createElement("div");o.classList.add("splitpanes__splitter"),s||(o.onmousedown=l=>this.onMouseDown(l,a),typeof window<"u"&&"ontouchstart"in window&&(o.ontouchstart=l=>this.onMouseDown(l,a)),o.onclick=l=>this.onSplitterClick(l,a+1)),this.dblClickSplitter&&(o.ondblclick=l=>this.onSplitterDblClick(l,a+1)),i.parentNode.insertBefore(o,i)},removeSplitter(e){e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.parentNode.removeChild(e)},redoSplitters(){const e=Array.from(this.container.children);e.forEach(s=>{s.className.includes("splitpanes__splitter")&&this.removeSplitter(s)});let i=0;e.forEach(s=>{s.className.includes("splitpanes__pane")&&(!i&&this.firstSplitter?this.addSplitter(i,s,!0):i&&this.addSplitter(i,s),i++)})},requestUpdate(e){var i=e,{target:s}=i,a=_t(i,["target"]);const o=this.indexedPanes[s._uid];Object.entries(a).forEach(([l,r])=>o[l]=r)},onPaneAdd(e){let i=-1;Array.from(e.$el.parentNode.children).some(o=>(o.className.includes("splitpanes__pane")&&i++,o===e.$el));const s=parseFloat(e.minSize),a=parseFloat(e.maxSize);this.panes.splice(i,0,{id:e._uid,index:i,min:isNaN(s)?0:s,max:isNaN(a)?100:a,size:e.size===null?null:parseFloat(e.size),givenSize:e.size,update:e.update}),this.panes.forEach((o,l)=>o.index=l),this.ready&&this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({addedPane:this.panes[i]}),this.$emit("pane-add",{index:i,panes:this.panes.map(o=>({min:o.min,max:o.max,size:o.size}))})})},onPaneRemove(e){const i=this.panes.findIndex(a=>a.id===e._uid),s=this.panes.splice(i,1)[0];this.panes.forEach((a,o)=>a.index=o),this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({removedPane:yt(Ct({},s),{index:i})}),this.$emit("pane-remove",{removed:s,panes:this.panes.map(a=>({min:a.min,max:a.max,size:a.size}))})})},resetPaneSizes(e={}){!e.addedPane&&!e.removedPane?this.initialPanesSizing():this.panes.some(i=>i.givenSize!==null||i.min||i.max<100)?this.equalizeAfterAddOrRemove(e):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(i=>({min:i.min,max:i.max,size:i.size})))},equalize(){const e=100/this.panesCount;let i=0,s=[],a=[];this.panes.forEach(o=>{o.size=Math.max(Math.min(e,o.max),o.min),i-=o.size,o.size>=o.max&&s.push(o.id),o.size<=o.min&&a.push(o.id)}),i>.1&&this.readjustSizes(i,s,a)},initialPanesSizing(){100/this.panesCount;let e=100,i=[],s=[],a=0;this.panes.forEach(l=>{e-=l.size,l.size!==null&&a++,l.size>=l.max&&i.push(l.id),l.size<=l.min&&s.push(l.id)});let o=100;e>.1&&(this.panes.forEach(l=>{l.size===null&&(l.size=Math.max(Math.min(e/(this.panesCount-a),l.max),l.min)),o-=l.size}),o>.1&&this.readjustSizes(e,i,s))},equalizeAfterAddOrRemove({addedPane:e,removedPane:i}={}){let s=100/this.panesCount,a=0,o=[],l=[];e&&e.givenSize!==null&&(s=(100-e.givenSize)/(this.panesCount-1)),this.panes.forEach(r=>{a-=r.size,r.size>=r.max&&o.push(r.id),r.size<=r.min&&l.push(r.id)}),!(Math.abs(a)<.1)&&(this.panes.forEach(r=>{e&&e.givenSize!==null&&e.id===r.id||(r.size=Math.max(Math.min(s,r.max),r.min)),a-=r.size,r.size>=r.max&&o.push(r.id),r.size<=r.min&&l.push(r.id)}),a>.1&&this.readjustSizes(a,o,l))},readjustSizes(e,i,s){let a;e>0?a=e/(this.panesCount-i.length):a=e/(this.panesCount-s.length),this.panes.forEach((o,l)=>{if(e>0&&!i.includes(o.id)){const r=Math.max(Math.min(o.size+a,o.max),o.min),d=r-o.size;e-=d,o.size=r}else if(!s.includes(o.id)){const r=Math.max(Math.min(o.size+a,o.max),o.min),d=r-o.size;e-=d,o.size=r}o.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[o.id].size}%`})}),Math.abs(e)>.1&&this.$nextTick(()=>{this.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler(){this.updatePaneComponents()}},horizontal(){this.updatePaneComponents()},firstSplitter(){this.redoSplitters()},dblClickSplitter(e){[...this.container.querySelectorAll(".splitpanes__splitter")].forEach((i,s)=>{i.ondblclick=e?a=>this.onSplitterDblClick(a,s):void 0})}},beforeDestroy(){this.ready=!1},mounted(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render(e){return e("div",{ref:"container",class:["splitpanes",`splitpanes--${this.horizontal?"horizontal":"vertical"}`,{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default)}};let wt,zt;const E={};var St=I(xt,wt,zt,!1,Pt);function Pt(e){for(let i in E)this[i]=E[i]}var Dt=(function(){return St.exports})(),kt=function(){var e=this,i=e.$createElement,s=e._self._c||i;return s("div",{staticClass:"splitpanes__pane",style:e.style,on:{click:function(a){return e.onPaneClick(a,e._uid)}}},[e._t("default")],2)},Mt=[];const Et={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:()=>({style:{}}),mounted(){this.onPaneAdd(this)},beforeDestroy(){this.onPaneRemove(this)},methods:{update(e){this.style=e}},computed:{sizeNumber(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber(){return parseFloat(this.minSize)},maxSizeNumber(){return parseFloat(this.maxSize)}},watch:{sizeNumber(e){this.requestUpdate({target:this,size:e})},minSizeNumber(e){this.requestUpdate({target:this,min:e})},maxSizeNumber(e){this.requestUpdate({target:this,max:e})}}},N={};var Nt=I(Et,kt,Mt,!1,Tt);function Tt(e){for(let i in N)this[i]=N[i]}var At=(function(){return Nt.exports})();const $t={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Rt=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(s){return e.$emit("click",s)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},Bt=[],Lt=f($t,Rt,Bt,!1,null,null);const Ft=Lt.exports,Ht={name:"ArrowRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var It=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon arrow-right-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(s){return e.$emit("click",s)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},Vt=[],Ot=f(Ht,It,Vt,!1,null,null);const Ut=Ot.exports;function jt(e){let i=!1,s;return(...a)=>(i||(i=!0,s=e(...a)),s)}let V="missing-app-name";try{V=q}catch{g.error("The `@nextcloud/vue` library was used without setting / replacing the `appName`.")}const qt=V;let Zt="";try{Zt=Z}catch{g.error("The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.")}function O(){return X("appName",qt)}const Wt=jt(()=>{const e=it("core","apps",[]),i=O();return e.find(({id:s})=>s===i)?.name??i});A(J);const U=et(),Gt={name:"NcAppContentDetailsToggle",components:{ArrowRight:Ut,ArrowLeft:Ft,NcButton:R},setup(){return{isRtl:U,isMobile:P()}},computed:{title(){return $("Go back to the list")}},watch:{isMobile:function(){this.toggleAppNavigationButton(this.isMobile)}},mounted(){this.toggleAppNavigationButton(this.isMobile)},beforeDestroy(){this.isMobile&&this.toggleAppNavigationButton(!1)},methods:{toggleAppNavigationButton(e=!0){const i=document.querySelector(".app-navigation .app-navigation-toggle");i&&(i.style.display=e?"none":null,e===!0&&C("toggle-navigation",{open:!1}))}}};var Yt=function(){var e=this,i=e._self._c;return i("NcButton",{staticClass:"app-details-toggle",class:{"app-details-toggle--mobile":e.isMobile},attrs:{"aria-label":e.title,title:e.title,variant:"tertiary"},scopedSlots:e._u([{key:"icon",fn:function(){return[e.isRtl?i("ArrowLeft",{attrs:{size:20}}):i("ArrowRight",{attrs:{size:20}})]},proxy:!0}])})},Kt=[],Xt=f(Gt,Yt,Kt,!1,null,"d0b1a8bc");const Jt=Xt.exports,T=Q("nextcloud").persist().build(),Qt=st().theming?.name??"Nextcloud",te={name:"NcAppContent",components:{NcAppContentDetailsToggle:Jt,Pane:At,Splitpanes:Dt},props:{allowSwipeNavigation:{type:Boolean,default:!0},disableSwipe:{type:Boolean,default:!1},listSize:{type:Number,default:20},listMinWidth:{type:Number,default:15},listMaxWidth:{type:Number,default:40},paneConfigKey:{type:String,default:""},showDetails:{type:Boolean,default:!0},layout:{type:String,default:"vertical-split",validator(e){return["no-split","vertical-split","horizontal-split"].includes(e)}},pageHeading:{type:String,default:null},pageTitle:{type:String,default:null}},emits:["update:showDetails","resize-list","resize:list"],setup(){return{appName:O(),localizedAppName:Wt(),isMobile:P(),isRtl:U}},data(){return{contentHeight:0,swiping:{},listPaneSize:this.restorePaneConfig()}},computed:{paneConfigID(){if(this.paneConfigKey!=="")return`pane-list-size-${this.paneConfigKey}`;try{return`pane-list-size-${this.appName}`}catch{return g.info("[NcAppContent]: falling back to global nextcloud pane config"),"pane-list-size-nextcloud"}},detailsPaneSize(){return this.listPaneSize?100-this.listPaneSize:this.paneDefaults.details.size},paneDefaults(){return{list:{size:this.listSize,min:this.listMinWidth,max:this.listMaxWidth},details:{size:100-this.listSize,min:100-this.listMaxWidth,max:100-this.listMinWidth}}},realPageTitle(){const e=new Set;if(this.pageTitle)for(const i of this.pageTitle.split(" - "))e.add(i);else if(this.pageHeading){for(const i of this.pageHeading.split(" - "))e.add(i);e.size>0&&e.add(this.localizedAppName)}else return null;return e.add(Qt),[...e.values()].join(" - ")}},watch:{realPageTitle:{immediate:!0,handler(){this.realPageTitle!==null&&(document.title=this.realPageTitle)}},paneConfigKey:{immediate:!0,handler(){this.restorePaneConfig()}}},mounted(){this.allowSwipeNavigation&&!this.disableSwipe&&(this.swiping=tt(this.$el,{onSwipeEnd:this.handleSwipe})),this.restorePaneConfig()},methods:{handleSwipe(e,i){Math.abs(this.swiping.lengthX)>70&&(this.swiping.coordsStart.x<300/2&&i==="right"?C("toggle-navigation",{open:!0}):this.swiping.coordsStart.x<300*1.5&&i==="left"&&C("toggle-navigation",{open:!1}))},handlePaneResize(e){const i=parseInt(e[0].size,10);T.setItem(this.paneConfigID,JSON.stringify(i)),this.listPaneSize=i,this.$emit("resize:list",{size:i}),this.$emit("resize-list",{size:i}),g.debug("AppContent pane config",{size:i})},restorePaneConfig(){const e=parseInt(T.getItem(this.paneConfigID),10);if(!isNaN(e)&&e!==this.listPaneSize)return g.debug("AppContent pane config",e),this.listPaneSize=e,e},hideDetails(){this.$emit("update:showDetails",!1)}}};var ee=function(){var e=this,i=e._self._c;return i("main",{staticClass:"app-content no-snapper",class:{"app-content--has-list":!!e.$scopedSlots.list},attrs:{id:"app-content-vue"}},[e.pageHeading?i("h1",{staticClass:"hidden-visually"},[e._v(" "+e._s(e.pageHeading)+" ")]):e._e(),e.$scopedSlots.list?[e.isMobile||e.layout==="no-split"?i("div",{staticClass:"app-content-wrapper app-content-wrapper--no-split",class:{"app-content-wrapper--show-details":e.showDetails,"app-content-wrapper--show-list":!e.showDetails,"app-content-wrapper--mobile":e.isMobile}},[e.showDetails?i("NcAppContentDetailsToggle",{nativeOn:{click:function(s){return s.stopPropagation(),s.preventDefault(),e.hideDetails.apply(null,arguments)}}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:!e.showDetails,expression:"!showDetails"}],staticClass:"app-content-wrapper__list"},[e._t("list")],2),e.showDetails?e._t("default"):e._e()],2):e.layout==="vertical-split"||e.layout==="horizontal-split"?i("div",{staticClass:"app-content-wrapper"},[i("Splitpanes",{staticClass:"default-theme",class:{"splitpanes--horizontal":e.layout==="horizontal-split","splitpanes--vertical":e.layout==="vertical-split"},attrs:{horizontal:e.layout==="horizontal-split",rtl:e.isRtl},on:{resized:e.handlePaneResize}},[i("Pane",{staticClass:"splitpanes__pane-list",attrs:{size:e.listPaneSize||e.paneDefaults.list.size,"min-size":e.paneDefaults.list.min,"max-size":e.paneDefaults.list.max}},[e._t("list")],2),i("Pane",{staticClass:"splitpanes__pane-details",attrs:{size:e.detailsPaneSize,"min-size":e.paneDefaults.details.min,"max-size":e.paneDefaults.details.max}},[e._t("default")],2)],1)],1):e._e()]:e._e(),e.$scopedSlots.list?e._e():e._t("default")],2)},ie=[],se=f(te,ee,ie,!1,null,"342489c9");const ae=se.exports,ne={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var oe=function(){var e=this,i=e._self._c;return i("span",e._b({staticClass:"material-design-icon content-copy-icon",attrs:{"aria-hidden":e.title?null:"true","aria-label":e.title,role:"img"},on:{click:function(s){return e.$emit("click",s)}}},"span",e.$attrs,!1),[i("svg",{staticClass:"material-design-icon__svg",attrs:{fill:e.fillColor,width:e.size,height:e.size,viewBox:"0 0 24 24"}},[i("path",{attrs:{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}},[e.title?i("title",[e._v(e._s(e.title))]):e._e()])])])},le=[],re=u(ne,oe,le,!1,null,null);const ce=re.exports,de={name:"PublicBotCard",components:{IconContentCopy:ce},props:{bot:{type:Object,required:!0}},computed:{truncatedDescription(){const e=this.bot.description||"";return e.length>200?e.substring(0,200)+"...":e},visibilityLabel(){const e=this.bot.visibility||(this.bot.is_public?"global":"groups");return e==="personal"?"Personal":e==="global"?"Global":e==="teams"?"Team access":"Group access"},visibilityClass(){const e=this.bot.visibility||(this.bot.is_public?"global":"groups");return e==="personal"?"personal":e==="global"?"global":e==="teams"?"teams":"groups"},accessReasonText(){const e=this.bot.access_reason;return!e||e.type==="global"?null:e.type==="owner"?"You are the owner of this bot":e.type==="group"&&e.names?.length>0?`Access via group: ${e.names.join(", ")}`:e.type==="team"&&e.names?.length>0?`Access via team: ${e.names.join(", ")}`:null}},methods:{formatMention(e){return`@${e.startsWith("@")?e.substring(1):e}`},async copyHandle(){const e=this.formatMention(this.bot.mention_name);try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(e);else{const i=document.createElement("textarea");i.value=e,i.setAttribute("readonly",""),i.style.position="fixed",i.style.opacity="0",document.body.appendChild(i),i.select(),document.execCommand("copy"),document.body.removeChild(i)}z(`Copied ${e}`)}catch(i){console.error("Failed to copy bot handle:",i),S("Failed to copy bot handle")}},formatDate(e){return e?new Date(e*1e3).toLocaleDateString(void 0,{day:"numeric",month:"long",year:"numeric"}):"Unknown"}}};var pe=function(){var e=this,i=e._self._c;return i("div",{staticClass:"public-bot-card",class:{inactive:!e.bot.is_active}},[i("div",{staticClass:"card-header"},[i("div",{staticClass:"bot-identity"},[i("h3",{staticClass:"bot-name"},[e._v(e._s(e.bot.bot_name))]),i("div",{staticClass:"mention-row"},[i("span",{staticClass:"mention-badge"},[e._v(e._s(e.bot.mention_name))]),i("button",{staticClass:"copy-handle-button",attrs:{type:"button","aria-label":`Copy ${e.formatMention(e.bot.mention_name)} handle`,title:`Copy ${e.formatMention(e.bot.mention_name)} handle`},on:{click:e.copyHandle}},[i("IconContentCopy",{attrs:{size:16}})],1)])]),i("span",{staticClass:"visibility-badge",class:e.visibilityClass},[e._v(e._s(e.visibilityLabel))])]),i("div",{staticClass:"bot-description"},[e.bot.description?i("p",[e._v(e._s(e.truncatedDescription))]):i("p",{staticClass:"no-description"},[e._v("No description provided")])]),e.accessReasonText?i("div",{staticClass:"access-reason"},[i("span",{staticClass:"access-icon"},[e._v("🔑")]),i("span",{staticClass:"access-text"},[e._v(e._s(e.accessReasonText))])]):e._e(),i("div",{staticClass:"bot-meta"},[i("div",{staticClass:"meta-row"},[i("span",{staticClass:"meta-label"},[e._v("Created by:")]),i("span",{staticClass:"meta-value"},[e._v(e._s(e.bot.owner_display_name||"Unknown"))])]),i("div",{staticClass:"meta-row"},[i("span",{staticClass:"meta-label"},[e._v("Created:")]),i("span",{staticClass:"meta-value"},[e._v(e._s(e.formatDate(e.bot.created_at)))])])]),i("div",{staticClass:"card-actions"},[i("button",{staticClass:"button primary-button",on:{click:function(s){return e.$emit("speak-in-talk",e.bot)}}},[e._v(" Use Bot ")]),i("button",{staticClass:"button secondary-button",on:{click:function(s){return e.$emit("show-details",e.bot)}}},[e._v(" Details ")])]),e.bot.is_active?e._e():i("div",{staticClass:"inactive-badge"},[i("span",{staticClass:"icon-close"}),e._v(" Inactive ")])])},he=[],ue=u(de,pe,he,!1,null,"27cc5089");const me=ue.exports,ge={name:"BotDetailModal",props:{bot:{type:Object,required:!0}},data(){return{loading:!0,details:{}}},computed:{visibilityLabel(){const e=this.details.visibility||(this.details.is_public?"global":"groups");return e==="personal"?"Personal":e==="global"?"Global (available to all users)":e==="teams"?"Team access":"Group access"},visibilityClass(){const e=this.details.visibility||(this.details.is_public?"global":"groups");return e==="personal"?"personal":e==="global"?"global":e==="teams"?"teams":"groups"},accessReasonText(){const e=this.details.access_reason;return!e||e.type==="global"?null:e.type==="owner"?"You are the owner of this bot":e.type==="group"&&e.names?.length>0?`Access via group: ${e.names.join(", ")}`:e.type==="team"&&e.names?.length>0?`Access via team: ${e.names.join(", ")}`:null}},mounted(){this.loadDetails()},methods:{async loadDetails(){this.loading=!0;try{const e=await y.get(v.generateUrl(`/apps/educai/api/v1/public-bots/${this.bot.id}`));this.details=e.data}catch(e){console.error("Failed to load bot details:",e),S("Failed to load bot details"),this.details=this.bot}finally{this.loading=!1}},formatDate(e){return e?new Date(e*1e3).toLocaleDateString(void 0,{day:"numeric",month:"long",year:"numeric",hour:"2-digit",minute:"2-digit"}):"Unknown"}}};var ve=function(){var e=this,i=e._self._c;return i("div",{staticClass:"modal-overlay",on:{click:function(s){return s.target!==s.currentTarget?null:e.$emit("close")}}},[i("div",{staticClass:"modal-container"},[i("div",{staticClass:"modal-header"},[i("div",{staticClass:"header-content"},[i("h2",[e._v(e._s(e.bot.bot_name))]),i("span",{staticClass:"mention-badge"},[e._v(e._s(e.bot.mention_name))])]),i("button",{staticClass:"close-button",on:{click:function(s){return e.$emit("close")}}},[i("span",{staticClass:"icon-close"})])]),e.loading?i("div",{staticClass:"modal-loading"},[i("span",{staticClass:"icon-loading"}),i("p",[e._v("Loading bot details...")])]):i("div",{staticClass:"modal-body"},[i("section",{staticClass:"detail-section"},[i("h3",[e._v("Description")]),e.details.description?i("p",{staticClass:"description-text"},[e._v(e._s(e.details.description))]):i("p",{staticClass:"no-content"},[e._v("No description provided")])]),i("section",{staticClass:"detail-section"},[i("h3",[e._v("Visibility")]),i("div",{staticClass:"visibility-info"},[i("span",{staticClass:"visibility-badge",class:e.visibilityClass},[e._v(e._s(e.visibilityLabel))]),e.accessReasonText?i("span",{staticClass:"access-reason"},[e._v(e._s(e.accessReasonText))]):e._e()])]),i("section",{staticClass:"detail-section"},[i("h3",[e._v("Created By")]),i("div",{staticClass:"creator-info"},[i("span",{staticClass:"creator-name"},[e._v(e._s(e.details.owner_display_name||"Unknown"))]),i("span",{staticClass:"creation-date"},[e._v(e._s(e.formatDate(e.details.created_at)))])])]),i("section",{staticClass:"detail-section"},[i("h3",[e._v("System Prompt")]),i("div",{staticClass:"system-prompt-container"},[i("pre",{staticClass:"system-prompt"},[e._v(e._s(e.details.system_prompt))])])]),e.details.tools&&e.details.tools.length>0?i("section",{staticClass:"detail-section"},[i("h3",[e._v("Enabled Tools")]),i("ul",{staticClass:"tools-list"},e._l(e.details.tools,function(s,a){return i("li",{key:a,staticClass:"tool-item"},[i("div",{staticClass:"tool-header"},[i("span",{staticClass:"tool-name"},[e._v(e._s(s.name))]),s.is_builtin?i("span",{staticClass:"tool-badge builtin"},[e._v("Built-in")]):e._e()]),s.description?i("p",{staticClass:"tool-description"},[e._v(e._s(s.description))]):e._e()])}),0)]):e._e(),e.details.rag_enabled?i("section",{staticClass:"detail-section"},[i("h3",[e._v("Knowledge Base")]),i("div",{staticClass:"rag-status"},[i("span",{staticClass:"rag-icon"},[e._v("📚")]),e.details.rag_source_count>0?i("span",[e._v(" This bot has access to "+e._s(e.details.rag_source_count)+" knowledge source"+e._s(e.details.rag_source_count!==1?"s":"")+" ")]):i("span",[e._v(" Knowledge base enabled but no sources attached yet ")])])]):e._e()]),i("div",{staticClass:"modal-footer"},[i("button",{staticClass:"button",on:{click:function(s){return e.$emit("close")}}},[e._v("Close")])])])])},fe=[],be=u(ge,ve,fe,!1,null,"2318f839");const Ce=be.exports,ye={name:"BotTalkStartModal",props:{bot:{type:Object,required:!0}},data(){return{APP_DISPLAY_NAME:k,mode:"new",rooms:[],selectedRoomToken:null,roomName:`Chat with ${this.bot.bot_name}`,message:`${this.formatMention(this.bot.mention_name)} What can you help me with?`,sendMessage:!0,loadingRooms:!1,roomsLoaded:!1,roomsError:null,submitting:!1,error:null}},computed:{mention(){return this.formatMention(this.bot.mention_name)},selectedRoom(){return this.rooms.find(e=>e.token===this.selectedRoomToken)||null},submitDisabled(){return this.submitting?!0:this.mode==="existing"?this.loadingRooms||!this.selectedRoomToken:!this.roomName.trim()},submitLabel(){return this.submitting?"Opening Talk...":this.mode==="new"?this.sendMessage?"Create chat, send message and open Talk":"Create chat and open Talk":this.sendMessage?"Activate, send message and open Talk":"Activate and open Talk"}},methods:{formatMention(e){return`@${(e||"").startsWith("@")?e.substring(1):e}`},setMode(e){this.mode=e,this.error=null,e==="existing"&&!this.roomsLoaded&&this.loadRooms()},async loadRooms(){this.loadingRooms=!0,this.roomsError=null;try{const e=await y.get(v.generateUrl("/apps/educai/api/v1/talk/rooms"));if(this.rooms=e.data?.rooms||[],this.roomsLoaded=!0,!this.selectedRoomToken&&this.rooms.length>0){const i=this.rooms.find(s=>s.isModerator);this.selectedRoomToken=(i||this.rooms[0]).token}}catch(e){console.error("Failed to load Talk conversations:",e),this.roomsError=this.errorFromResponse(e,"Failed to load Talk conversations"),this.roomsLoaded=!0}finally{this.loadingRooms=!1}},async submit(){if(this.error=null,this.mode==="existing"&&!this.selectedRoomToken){this.error="Please select a Talk conversation.";return}this.submitting=!0;try{const e=await y.post(v.generateUrl("/apps/educai/api/v1/talk/start-bot-chat"),{botId:this.bot.id,mode:this.mode,roomToken:this.mode==="existing"?this.selectedRoomToken:null,roomName:this.mode==="new"?this.roomName.trim():null,message:this.message.trim(),sendMessage:this.sendMessage}),i=e.data?.talkUrl;if(!i)throw new Error("Talk did not return a room URL");e.data?.messageSent?z("Message sent. Opening Talk..."):z(`${k} is ready in Talk. Mention ${this.mention} to start.`),window.location.href=i}catch(e){console.error("Failed to start Talk chat:",e),this.error=this.errorFromResponse(e,"Failed to start Talk chat"),S(this.error)}finally{this.submitting=!1}},errorFromResponse(e,i){return e?.response?.data?.error||e?.message||i}}};var _e=function(){var e=this,i=e._self._c;return i("div",{staticClass:"talk-start-overlay",on:{click:function(s){return s.target!==s.currentTarget?null:e.$emit("close")}}},[i("div",{staticClass:"talk-start-modal"},[i("div",{staticClass:"modal-header"},[i("div",{staticClass:"header-content"},[i("h2",[e._v("Start using "+e._s(e.bot.bot_name)+" in Talk")]),i("span",{staticClass:"mention-badge"},[e._v(e._s(e.mention))])]),i("button",{staticClass:"close-button",on:{click:function(s){return e.$emit("close")}}},[i("span",{staticClass:"icon-close"})])]),i("div",{staticClass:"modal-tabs"},[i("div",{staticClass:"mode-tabs",attrs:{role:"tablist","aria-label":"Talk start mode"}},[i("button",{staticClass:"mode-tab",class:{active:e.mode==="new"},attrs:{type:"button","aria-selected":String(e.mode==="new")},on:{click:function(s){return e.setMode("new")}}},[e._v(" New chat ")]),i("button",{staticClass:"mode-tab",class:{active:e.mode==="existing"},attrs:{type:"button","aria-selected":String(e.mode==="existing")},on:{click:function(s){return e.setMode("existing")}}},[e._v(" Existing chat ")])])]),i("div",{staticClass:"modal-body"},[e.mode==="new"?i("div",{staticClass:"form-section"},[i("label",{attrs:{for:"talk-room-name"}},[e._v("Chat name")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.roomName,expression:"roomName"}],attrs:{id:"talk-room-name",type:"text",placeholder:"Chat with bot"},domProps:{value:e.roomName},on:{input:function(s){s.target.composing||(e.roomName=s.target.value)}}})]):e._e(),e.mode==="existing"?i("div",{staticClass:"form-section"},[i("div",{staticClass:"section-header"},[i("label",[e._v("Talk conversation")]),i("button",{staticClass:"refresh-button",attrs:{type:"button",disabled:e.loadingRooms},on:{click:e.loadRooms}},[e._v(" Refresh ")])]),e.loadingRooms?i("div",{staticClass:"room-state"},[i("span",{staticClass:"icon-loading"}),i("span",[e._v("Loading Talk conversations...")])]):e.roomsError?i("div",{staticClass:"error-state"},[e._v(" "+e._s(e.roomsError)+" ")]):e.rooms.length===0?i("div",{staticClass:"room-state"},[e._v(" No Talk conversations available. ")]):i("div",{staticClass:"room-list"},e._l(e.rooms,function(s){return i("label",{key:s.token,staticClass:"room-option",class:{selected:e.selectedRoomToken===s.token}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.selectedRoomToken,expression:"selectedRoomToken"}],attrs:{type:"radio",name:"talk-room"},domProps:{value:s.token,checked:e._q(e.selectedRoomToken,s.token)},on:{change:function(a){e.selectedRoomToken=s.token}}}),i("span",{staticClass:"room-copy"},[i("span",{staticClass:"room-title"},[e._v(e._s(s.displayName))]),i("span",{staticClass:"room-meta"},[e._v(" "+e._s(s.isModerator?`You can activate ${e.APP_DISPLAY_NAME} here`:`Only moderators can activate ${e.APP_DISPLAY_NAME} here`)+" ")])])])}),0),e.selectedRoom&&!e.selectedRoom.isModerator?i("div",{staticClass:"warning-state"},[e._v(" If "+e._s(e.APP_DISPLAY_NAME)+" is not active in this room yet, a moderator needs to activate it before you can use this bot there. ")]):e._e()]):e._e(),i("div",{staticClass:"form-section"},[i("label",{attrs:{for:"talk-first-message"}},[e._v("First message")]),i("textarea",{directives:[{name:"model",rawName:"v-model",value:e.message,expression:"message"}],attrs:{id:"talk-first-message",rows:"4",placeholder:"@bot What can you help me with?"},domProps:{value:e.message},on:{input:function(s){s.target.composing||(e.message=s.target.value)}}})]),i("label",{staticClass:"send-option"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.sendMessage,expression:"sendMessage"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.sendMessage)?e._i(e.sendMessage,null)>-1:e.sendMessage},on:{change:function(s){var a=e.sendMessage,o=s.target,l=!!o.checked;if(Array.isArray(a)){var r=null,d=e._i(a,r);o.checked?d<0&&(e.sendMessage=a.concat([r])):d>-1&&(e.sendMessage=a.slice(0,d).concat(a.slice(d+1)))}else e.sendMessage=l}}}),i("span",[e._v(" Send this message immediately as me "),e.mode==="existing"?i("small",[e._v("Recommended only when the selected room expects this message.")]):e._e()])]),e.error?i("div",{staticClass:"error-state"},[e._v(" "+e._s(e.error)+" ")]):e._e()]),i("div",{staticClass:"modal-footer"},[i("button",{staticClass:"button",attrs:{disabled:e.submitting},on:{click:function(s){return e.$emit("close")}}},[e._v(" Cancel ")]),i("button",{staticClass:"button primary",attrs:{disabled:e.submitDisabled},on:{click:e.submit}},[e.submitting?i("span",{staticClass:"icon-loading"}):e._e(),e._v(" "+e._s(e.submitLabel)+" ")])])])])},xe=[],we=u(ye,_e,xe,!1,null,"1bd149f6");const ze=we.exports,Se={name:"PublicBotList",components:{PublicBotCard:me,BotDetailModal:Ce,BotTalkStartModal:ze},data(){return{bots:[],loading:!1,selectedBot:null,talkStartBot:null}},computed:{createBotsUrl(){return v.generateUrl("/settings/user/educai")},sortedBots(){return this.bots.slice().sort((e,i)=>{const s=e.visibility||(e.is_public?"global":"groups"),a=i.visibility||(i.is_public?"global":"groups"),o=l=>l==="personal"?0:l==="global"?1:l==="teams"?2:l==="groups"?3:4;return o(s)-o(a)})}},mounted(){this.loadBots()},methods:{async loadBots(){this.loading=!0;try{const e=await y.get(v.generateUrl("/apps/educai/api/v1/public-bots"));this.bots=e.data}catch(e){console.error("Failed to load bots:",e)}finally{this.loading=!1}},openDetailModal(e){this.selectedBot=e},closeDetailModal(){this.selectedBot=null},openTalkStartModal(e){this.talkStartBot=e},closeTalkStartModal(){this.talkStartBot=null}}};var Pe=function(){var e=this,i=e._self._c;return i("div",{staticClass:"public-bot-list"},[i("div",{staticClass:"header"},[e._m(0),i("a",{staticClass:"create-bots-button",attrs:{href:e.createBotsUrl}},[i("span",{staticClass:"icon"},[e._v("✏️")]),e._v(" Create & Edit Bots ")])]),e.bots.length>0?i("div",{staticClass:"bot-grid"},e._l(e.sortedBots,function(s){return i("PublicBotCard",{key:s.id,attrs:{bot:s},on:{"show-details":e.openDetailModal,"speak-in-talk":e.openTalkStartModal}})}),1):e._e(),e.bots.length===0&&!e.loading?i("div",{staticClass:"empty-state"},[i("div",{staticClass:"empty-icon"},[e._v("🤖")]),i("h3",[e._v("No bots available")]),i("p",[e._v("When bots are published and you have access, they will appear here.")])]):e._e(),e.loading?i("div",{staticClass:"loading-state"},[i("span",{staticClass:"icon-loading"}),i("p",[e._v("Loading available bots...")])]):e._e(),e.selectedBot?i("BotDetailModal",{attrs:{bot:e.selectedBot},on:{close:e.closeDetailModal}}):e._e(),e.talkStartBot?i("BotTalkStartModal",{attrs:{bot:e.talkStartBot},on:{close:e.closeTalkStartModal}}):e._e()],1)},De=[function(){var e=this,i=e._self._c;return i("div",{staticClass:"header-content"},[i("h2",[e._v("All Available Bots")]),i("p",{staticClass:"subtitle"},[e._v("Browse bots you have access to and learn more about their capabilities")])])}],ke=u(Se,Pe,De,!1,null,"295e9ac6");const Me=ke.exports,Ee={name:"App",components:{NcContent:gt,NcAppContent:ae,PublicBotList:Me}};var Ne=function(){var e=this,i=e._self._c;return i("NcContent",{attrs:{"app-name":"educai"}},[i("NcAppContent",[i("PublicBotList")],1)],1)},Te=[],Ae=u(Ee,Ne,Te,!1,null,"7bdf2b3a");const $e=Ae.exports;h.mixin({methods:{t,n}});const Re=h.extend($e);new Re().$mount("#content"),W();
|
||
//# sourceMappingURL=educai-main.mjs.map
|